Re: New encryption thread
- Posted by Hawke' <mdeland at GEOCITIES.COM> Dec 13, 1998
- 384 views
Davi Figueiredo wrote: >After understanding your algorithm >(don't ask me how, it's a secret ;), *snicker* >I was able to find a password that will work:'alecramiroden' >Many other passwords will work as well; hrmmmmm..... take a look: C:\>ex try alecramiroden you don't got it and for verification of the password found at the bottom of that email message containing crypto.e: C:\>ex try elvenbelvedere you got it #1: your password is not the same length, so it's 99.9% chance of it not possibly working at all... #2: it failed to decrypt.... :/ > In crypto.e, you used an algorithm that is a lot better than > the shrouded one, because it cannot be easily cracked by hand, thankee! :) >However, I think a simple change would make it even better: >simply adding the password bytes (in the sumup function) >gives a low range of possible seeds for the random number >generator (using a 20-char password, the maximum seed >will be 255*20=5100). yeah, i thought about that, but wasn't real sure if making the # higher would actually help the strength of the algorithm... >If you use a function that will be able to return a greater >range of seeds, the strength of the function will be increased. >The following function returns a maximum seed of 12418266. but after seeing the code and after your explanation, i understand now how it could help the strength... tnx! {snip code} what about the following? it's kinda sneaky :> func sumup(seq data) int sum for i = 1 to len(data) do sum = sum + data[i] end for set_rand(sum) return rand(1000000000) --1 billion end func simple, fast, and creates *huge* seeds... :) whatdaya think? will it work like i think it will? > Don't worry too much. According to RSA's Cryptography Export Laws > FAQ, you can export strong encryption if its purpose is 'access > control'. kewl! then i'll add the other thoughts I had to magnify the strength, that won't change the "bit strength rating", and then, i'll have fairly strong encryption, assuredly exportable, (even if it does happen to be interpreted as a "high bit strength rating") and itll be fast... then i'll be done with worrying/coding these headache inducing algorithms :) >The only problem would be that, as the source code is >available, someone would be able to change it to create an >encryptor/decryptor. But it wouldn't be easy to do that with the >algorithm you created (I don't know if it would possible at all). ill take that to mean you think highly of the algorithm :) tnx! > Well, if you didn't have to worry about export regulations, you > could just adapt my Blowfish encryption routines yeah, i would have loved to, but, since blowfish is assuredly declared 'verboten', i'm gonna stick with the algorithm I made, not because *I* made it mind you... has nothing to do with that... >Maybe someday (hopefully soon) I will create a homepage for it >outside the U.S. and then anybody will be able to download it directly. ummmm... *ponder*.... ummm.... exporting is defined partially as the process of transferring a file containing an algorithm that implements a particular bit strength encryption. so, unless i am really really way off base, when u goto place the file at that web site that u create, u will be breaking the export laws at that moment... it's a grey area, from what i can tell in my readings, so... be careful, eh? > Now, talking about the need for *very* strong encryption in > EUServer (when it becomes EU_FTP), I agree strong encryption > is important, but is this sooooo crucial? well, i just wanna make sure that examination of the algorithm, since the source is public, will not reveal a method of crtypanalysis that could be used by someone attempting to login as 'root', and that their only option is bruteforce... (either scrolling possibilities or throwing dictionaries...) and, i'll take measures to prevent bruteforceing, since that is relatively easy to do, in fact... first way: similar to the three strikes and u r out, if you botch a PW entry after 3 tries, we disconnect you. if after 3 disconnects (9 tries) u still aint got it, you won't get back to be even _able_ to attempt a PW entry... EUServer has the IP of where u r coming from before it even has sent (nearly) a single byte of data back to you (ie:greet, getname...) and as such, and especially since ban() is already in place :), that ip will not be able to connect again for ohhhh lets say... 72hours? (this way, those with dyn ip that happen to get this losers old dyn ip can connect...) second: naturally, all attempts that fail are logged, no matter what status the log status is at... if we see (or create a log file 'processor' to see) that a certain sub domain name is constantly attempting bruteforce/failing, we can alert that isp... >I mean, the files containing the passwords are not in a >public directory, no, they won't be accessible via remote, even by the sysops... (im debating allowing root access to them remotely... i'm thinking -no-... the root user will still have commands that can alter a users ban/noban states... but i see no reason as yet to even allow the ftp server the ability, at all, to change to that dir) > only the owner would be able to crack the passwords... basically no. but yes.... ummmmm see, there is a weak point, that i actually mention, because i'm hoping that by mentioning it, it raises awareness of this issue with everyone, because the weak point exists on any/all server software (no matter the type) that has open source. ergo:99.9 of most muds... if the source comes precompiled, then this loophole is not easily exploited... with open source comes the ability for the 'owner'/'implementor' to be able to view *everyones* passwords as they type them in. (or be able to view it by logging it and reading the logfile...) think about that... all the diku/merc/envy/circle muds (almost assuredly) that come nowadays can be easily altered to show a user's password... the encryption is 'useless' if you have no morals... same holds for EUServer... an implementor using it without morals can easily adapt the code to show plaintext passwords... even if i took it out, its just too easy to put back in... so i leave it in for certain debugging purposes... however, if the implementor leaves the default logging status alone, then, passwords are fully safe. noone can read them and nothing about it will be mentioned in the logs, and noone will be able to recover them, that i know of... not the implementor and not even myself... _/ _/ _/_/_/ _/ _/ _/ _/ _/_/_/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/_/_/ _/_/_/ _/ _/ _/_/ _/_/ _/ _/ _/ _/ _/_/_/ _/ _/ _/ _/ _/ _/ _/ _/_/_/ _/ _/ _/_/_/ ({<=----------------------------------------=>}) ({<=- http://members.xoom.com/Hawkes_Hovel> -=}) ({<=----------------------------------------=>})