I think this could work: - All javascript would be held in an encrypted strings. This encryption will have taken place on the server.
- The password would evaluate to the Private Key. - If the correct password is entered, the javascript is decrypted and exectuated using eval(). - If the incorrect password is entered, then the javascript cannot be decrypted and the user has no access to the system. > -----Original Message----- > From: Darío Vasconcelos [SMTP:[EMAIL PROTECTED]] > Sent: Thursday, November 29, 2001 10:58 PM > To: Dynapi-Help > Subject: Re[2]: [Dynapi-Help] theoretical javascript question > > Josh, > > I absolutely agree with you. But there's one case where you would want > to encrypt the e-mail with your private key: whenever you want to > "sign" your message, that is, when you want the receiver to > acknowledge that you're the one that sent the e-mail, since nobody > else in the world has your private key but you. > > Actually, I've heard that a double-encryption scheme can be used in > this cases: I can encrypt my text with my private key and then encrypt > it again using your public key. That way, the only one that could read > the message would be you and the only one that could have composed it > would be me (you would decrypt the text first with your private key > and then with my public key). > But this last paragraph wasn't interesting to the discussion. Please > ignore it :-) > > BTW, I visited the URL that James Sloey posted and I must say that it > is very impressive. I guess the secret is that the scheme is > simmetrical, as opposed to RSA, and the password is never included in > the message. But i still can't imagine how to adapt this to > authorization/authentication. > > Regards, > > Dario > > JC> I don't mean to be harsh, but did you read the link that you gave > JC> (http://www.orst.edu/dept/honors/makmur/ ) or were you just feeling > lucky > JC> with google? I don't profess to be a RSA encryption expert by any > means, > JC> but it's quite clear that you encrypt using a known public key, and > decrypt > JC> using the cipher's private key. This is one of the fundamentals of > JC> key-based encryption/decryption. Please keep reading if this isn't > quite > JC> clear. > JC> Here's a encryption/decryption scenario of users sending emails, as I > JC> understand it: > JC> 1) You send an encrypted email to me by using my public key. You also > JC> include your public key for me to encrypt the message when I reply > back to > JC> you. > JC> 2) I receive the message. Noone along the way is able to decipher the > JC> message unless they have my private key. When I want to view the > message, I > JC> use my private key to decrypt it. > JC> 3) When I reply back to you, my mail program encrypts the message > using your > JC> public key provided on your original message. > JC> 4) You receive the email message. Noone along the way is able to > decipher > JC> the message unless they have your private key. When you want to view > my > JC> reply, you use your private key to decrypt it. > JC> 5) and on and on. > > JC> Now this is the idea as I understand it. If I'm way off base, someone > please > JC> set me straight ;) > JC> To relate this idea to using javascript for encryption/decryption, > let's > JC> take a look at a scenario of client-side password validation as Jonah > had > JC> originally specified. Let's make the example simple and say we have a > JC> variable defined in javascript (var passwd = "fdjX3!bc@") that > represents an > JC> encrypted password. The user will be presented a form in which to > enter a > JC> password. The javascript password variable will then be decrypted and > JC> compared to the password the user entered. In order for this > decryption to > JC> occur, the javascript will need the private key that they password was > JC> originally generated with. Hence, the client will need access to the > JC> private key, which indeed makes the key a PRIVATE KEY THAT IS PUBLIC. > JC> Obviously, this is not good. Like I mentioned, there may be > workarounds for > JC> this. But to have a pure client-side validation technique I think > would be > JC> difficult to do. By all means, I hope this is wrong, because it would > be > JC> very cool to see encryption/decryption done "securely" with > javascript. > > JC> --JC > > JC> ----- Original Message ----- > JC> From: "Doug Melvin" <[EMAIL PROTECTED]> > JC> To: "Josh Chu" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>; > JC> "Dynapi-Help" <[EMAIL PROTECTED]> > JC> Sent: Thursday, November 29, 2001 4:02 PM > JC> Subject: Re: [Dynapi-Help] theoretical javascript question > > > >> uh, private key? the private key is PRIVATE.. > >> you use the public key to decrypt. > >> > >> Simply put, aside from SSH and SSL, I don't believe you will find a > better > >> solution. > >> Sorry. > >> That is just _my_ opinion tho. > >> :-) > >> ----- Original Message ----- > >> From: "Josh Chu" <[EMAIL PROTECTED]> > >> To: "Doug Melvin" <[EMAIL PROTECTED]>; > >> <[EMAIL PROTECTED]>; "Dynapi-Help" > >> <[EMAIL PROTECTED]> > >> Sent: Thursday, November 29, 2001 4:58 PM > >> Subject: Re: [Dynapi-Help] theoretical javascript question > >> > >> > >> > Again the problem , especially with using key-based encryption > JC> algorithms > >> > like RSA, is that you have to have the public and private keys in > order > JC> to > >> > perform the encryption/decryption. Encryption isn't the problem, > since > >> you > >> > can encrypt the password or field just using the public keys. The > JC> problem > >> > lies when you need to decrypt the cipher, which requires using a > private > >> > key, which is really hard to make private if you have a .js file out > on > >> the > >> > web that contains this key. To make this more clear, if you have a > >> > javascript program that is running on a users browser, then to > decrypt a > >> > cipher, that program will have to read the private key from somewhere > on > >> the > >> > web. Hence, anyone who can run this javascript can also do view the > >> > private key necessary to decrypt the cipher. Obviously this is not > very > >> > secure. I guess one workaround for this would be to store the private > JC> key > >> on > >> > the client (via a cookie -- document.cookie manipulation) and always > >> decrypt > >> > using the private key stored on the client. I've never attempted > this > >> > however, so if you can get a prototype working, that would be very > >> > interesting. > >> > --JC > >> > > >> > > >> > ----- Original Message ----- > >> > From: "Doug Melvin" <[EMAIL PROTECTED]> > >> > To: <[EMAIL PROTECTED]>; "Dynapi-Help" > >> > <[EMAIL PROTECTED]> > >> > Sent: Thursday, November 29, 2001 3:07 PM > >> > Subject: Re: [Dynapi-Help] theoretical javascript question > >> > > >> > > >> > > two words: > >> > > RSA encription. > >> > > http://www.orst.edu/dept/honors/makmur/ > >> > > > >> > > ----- Original Message ----- > >> > > From: "Jonah" <[EMAIL PROTECTED]> > >> > > To: "Dynapi-Help" <[EMAIL PROTECTED]> > >> > > Sent: Thursday, November 29, 2001 2:31 PM > >> > > Subject: [Dynapi-Help] theoretical javascript question > >> > > > >> > > > >> > > > Would it be possible, in theory, to securely validate a password > >> client > >> > > > side? > >> > > > > >> > > > Obviously, simple string matching would not work because the > client > >> > could > >> > > > view the source to find the correct password. > >> > > > > >> > > > But I have this vague notion (my upper level math skills are very > >> > rusty): > >> > > > > >> > > > Parsing the password up into characters perhaps, converting the > JC> chars > >> > > > to numbers, and then passing the numbers into the variables of a > set > >> > > > of non-linear equations that must be solved simulataneously (in > >> > > javascript, > >> > > > a set of functions that must return true simultaneously). I have > no > >> > idea > >> > > > how you could generate the necessary difficult-to-solve set of > >> equations > >> > > > given a particular password, but am curious to know if such an > >> approach > >> > > > is viable even in theory. Anyone have any ideas? > >> > > > > >> > > > Thanks, > >> > > > Jonah > >> > > > > >> > > > > >> > > > _______________________________________________ > >> > > > Dynapi-Help mailing list > >> > > > [EMAIL PROTECTED] > >> > > > https://lists.sourceforge.net/lists/listinfo/dynapi-help > >> > > > >> > > > >> > > _______________________________________________ > >> > > Dynapi-Help mailing list > >> > > [EMAIL PROTECTED] > >> > > https://lists.sourceforge.net/lists/listinfo/dynapi-help > >> > > > >> > >> > > JC> _______________________________________________ > JC> Dynapi-Help mailing list > JC> [EMAIL PROTECTED] > JC> https://lists.sourceforge.net/lists/listinfo/dynapi-help > > > > -- > Best regards, > Darío mailto:[EMAIL PROTECTED] > > > > _________________________________________________________ > Do You Yahoo!? > Get your free @yahoo.com address at http://mail.yahoo.com > > > _______________________________________________ > Dynapi-Help mailing list > [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/dynapi-help _______________________________________________ Dynapi-Help mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/dynapi-help