|
|
Nanoka (2005-01-05) Random block cipher. Nanoka usage: nanoka <keyfile> <e|d> <infile> <outfile> <keyfile> File containing encryption/decryption key. <e|d> Specify encrypt (e) or decrypt (d) mode. <infile> Input file. <outfile> Output file. To encrypt a message: ./nanoka key.txt e plaintext.txt ciphertext.txt To decrypt a message: ./nanoka key.txt d ciphertext.txt plaintext.txt Nanoca usage: nanoca <keyfile> [-e <out.c>] [-d <out.c>] [-t <out.c>] [-g <out.ps>] <keyfile> File containing encryption/decryption key. Key file can be any file of any finite size. Both the sender and receiver need to agree on the same key file. Thus /dev/random won't work because it's not reproducible, and it's not of finite size. /dev/null is a valid key, though. -e <out.c> Write C encoder source to <out.c> -d <out.c> Write C decoder source to <out.c> Output program will take arguments <infile> <outfile>, and takes no other arguments -- keys are embedded in the source file itself. These files should never be exchanged, given either the encoder source and the decoder source can be generated easily and vice versa. Encoder adds padding and initialization vector for cipher block chaining, thus the encrypted file is always larger than the original file. To compile encoder/decoder on big-endian machines, define BIG_ENDIAN. The logic should work but I don't have a big endian machine to test. To be safe, only transmit messages between machines of the same endianness. -t <out.c> Write C diffusion test source to <out.c> Output program takes two arguments, number of threads and number of seconds to run. Statistics are printed at the end. Bias - difference between 0.5 and the probability of ciphertext bits changing, for any one bit change in the plaintext. The closer to zero this number is, the better the cipher. Entropy - general randomness in output frequencies. The higher this number is (8 maximum), the better the cipher. -g <out.ps> Write Feistel network graph to <out.ps> Allow you to visually see the complexity of the generated ciphers. You will need a PostScript viewer for this. To encrypt a message: ./nanoca key.txt -e enc.c gcc enc.c -o enc rm enc.c ./enc plaintext.txt ciphertext.txt To decrypt a message: ./nanoca key.txt -d dec.c gcc dec.c -o dec rm dec.c ./dec ciphertext.txt plaintext.txt Description: Nanoka is an encryption/decryption utility, different from most other such utilities in that the internal structures are random. Instead of trying to find keys to a known cipher, an attacker would have to figure out the internals of the cipher itself. Nanoca is a random block cipher generator. Basically both Nanoka and Nanoca use the same random core, except Nanoka interprets it at run time while Nanoca dumps it to disk. Those with access to C compilers should use Nanoca, since the encryption/decryption process will be *much* faster (like about 40 times faster). The structure used is a random Feistel network, operated in cipher block chaining mode. Details on generation of the Feistel network can be found in source/design.txt ... there is one place in computer science where random code is still highly desirable ^_^; Program named after Nanoka (Nanoca Flanka), the inventor girl from "Aoi Umi no Tristia". Restrictions: This software is not for commercial use... if you want to pay me for it then please talk to me about it ^_^; This software is also not for use outside of the United States due to US crypto export laws. I have submitted TSU notifications to BIS and NSA and have yet to hear back from them. Until then, don't get me in trouble, especially if you are a in a country that the US doesn't like. -- omoikane@uguu.org - http://uguu.org/
RAR | ZIP | / | |
2023-03-27 |