140 likes | 333 Views
Learn about the complexities of key management in cryptography, including generating secure keys, avoiding poor key choices, using passphrases, and transferring keys securely.
E N D
Chapter 8: Key Management Dulal C Kar Based on Bruce Schneier
Introduction • Hardest part of cryptography • Keeping keys secret is hard • Cryptanalysts often attack key management protocols and algorithms
Generating Keys • Security rests on keys • Key generation algorithm can be under attack • Reduced key spaces • DES has a 56-bit key • Fixing some of the bits reduces key space • Example: Key for Norton Discreet for MS-DOS actually reduces to a 40-bit key, 10000 times easier to break
Generating Keys (cont’d) • Poor Key Choices • Same as poor password choices • Subject to dictionary attack • Dictionary attack is much more effective when used against a key of files and not a single key
Generating Keys (cont’d) • Random Keys • Best keys but how to generate them • Use reliable random source such as noise from audio or radioactive decay or cryptographically secure pseudo random-bit generator • Discard weak keys. DES has only 16 weak keys. • Generating keys for public-key cryptography is harder due to math
Generating Keys (cont’d) • Pass Phrases • Use easy to remember phrase • Then use a one-way hash function to obtain a pseudo-random-bit string from the phrase • Information theory • About 1.3 bits of info per character in standard English • For 64-bit key, a pass phrase of about 49 characters should be sufficient
Generating Keys (cont’d) • ANSI X9.17 Key generation • “Not east to remember” keys • Suitable for sessions • Uses triple-DES to generate keys • Algorithm Let EK(X) be triple-DES encryption of X with key K. K: special key reserved for key generation V0: secret 64-bit seed T: timestamp To generate random key Ri, calculate Ri = EK(EK(Ti) xor Vi) To generate Vi+1, calculate Vi+1 = EK(EK(Ti) xor Ri) To turn Ri into DES key, simply adjust every eight bit for parity.
Generating Keys (cont’d) • DoD Key generation • Recommends using DES in OFB (output feedback) mode • Generate a DES key from system interrupt vectors, system status registers, and system counters • Generate an initialization vector from the system clock, system ID, and date and time • For plaintext, use an externally generated 64-bit quantity (or type eight characters) • Use the output as your key
Transferring Keys • Public key cryptography solves the problem • Some systems use alternate channels known to be secure • Two types of keys by X9.17 standard • Data keys (distributed more often) • Key encryption keys (manually distributed, tamper proof smart card) • Key distribution • Split key using secret splitting scheme • Send each share over a different channel
Transferring Keys (cont’d) • Key distribution in large networks • Total number key exchanges for n-users is n(n-1)/2 • Better to create a central key server (or servers)
Verifying Keys • When Bob receives a key, how does he know it came from Alice and not from some-one pretending to be Alice? • Alice can use a digital signature protocol to sign the key • Bob has to trust public-key database to verify Alice’s signature • KDC can sign Alice’s public key • Bob has to trust KDC’s public key he has • In this sense, some people argue that public-key cryptography is useless
Verifying Keys (cont’d) • Error detection during key transmission • Send key as well as a known constant 2 to 4 bytes encrypted by the key • At the receiving do the same to verify • Key-error detection during decryption • For ASCII plaintext, decrypt and see whether you can read • For random plaintext • Attach a verification block header, a known header encrypted by the key • Decrypt at the receiver to verify