cryptography 101. manage who can view data (secrecy) make sure data is unmodified...

32
Cryptography 101

Upload: scott-melton

Post on 15-Jan-2016

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

Cryptography 101

Page 2: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

• Manage WHO can view data (Secrecy)

• Make sure data is unmodified (Authentication/data integrity)

• Know the origin of the data(Non-Repudiation)

Cryptography: Goals

Page 3: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

Alice & Bob Are two persons who want to communicate without anybody

else knows the content

Eve Eavesdropper, normally a passive person that will try to listen

in on Alice and Bob (perhaps an ex-girlfriend or wife)

Oscar Opponent, an active person that will try to send messages in

the name of Bob or Alice, or modify messages in transit

Dramatis Personæ

Page 4: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

Hash functionsSymmetric encryptionAsymmetric encryption

What is in our toolbox?

Page 5: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

Hash FunctionsA cryptographic hash function takesas input a binary string of arbitrarylength and returns a binary stringof a fixed length. Hash functionswhich satisfy some security proper-ties are very important in cryptog-raphy and are widely used in cryp-tographic applications such as dig-ital signatures, public-key encryp-tion systems, password protectionschemes, and conventional messageauthentication. Some of these ap-plications are shown in the follow-ing chapters.Let H : {0, 1} ! {0, 1}n denote ahash function which returns a stringof length n, see Figure 6.1.

H 0101...010111001

H : {0, 1}* {0, 1}n

Oscar cannot “tweak” the text and have same hash.Oscar cannot find two texts with same hash.

Hash Algorithms: MD2,MD4,MD5 WhirlPool,SHA1,SHA256

Page 6: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

Keyed Hash FunctionsA cryptographic hash function takesas input a binary string of arbitrarylength and returns a binary stringof a fixed length. Hash functionswhich satisfy some security proper-ties are very important in cryptog-raphy and are widely used in cryp-tographic applications such as dig-ital signatures, public-key encryp-tion systems, password protectionschemes, and conventional messageauthentication. Some of these ap-plications are shown in the follow-ing chapters.Let H : {0, 1} ! {0, 1}n denote ahash function which returns a stringof length n, see Figure 6.1.

H 0101...010111001

MAC :{0,1} k x {0, 1}* {0, 1}n

Key

Message Authentication Code

Page 7: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

Both Alice and Bob use the same keyfor encryption and decryption

Example of Cipher Algorithms:DES, 3-DES, BlowFish, RC2,

RC4, AES and Cameillia

Symmetric encryption

Page 8: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

Alice and Bob each have a Key Pair:A Public key and a Private Key

Each Key Pair is constructed so that data encrypted with either key can be

decrypted with the other.

Asymmetric encryption

Page 9: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

• Public keys are published for all to see, private keys kept secret, thus:

• If Alice encrypts with her private key, anyone can decrypt the message

• If Alice encrypts with Bobs public key, only Bob can decrypt the messages with his private key

• Examples: RSA, DSA and EC elliptic curves.

Asymmetric encryption

Page 10: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

Symmetric vs Asymmetric

Speed SlowFast

# of Keys

2 per person {2×⍵}

Many {.5×⍵×⍵-1}

Key Distribution

Easy Public key

Needs secure communicati

on

Page 11: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

Alice creates MACMAC ← AuthSym(SymKeyAlice&Bob, Data)

Bob verifies MACMAC ≡ AuthSym(SymKeyAlice&Bob, Data)

Authentication: Symmetric

Page 12: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

Alice creates Signaturesig←Encrypt(PrivKeyAlice,Hash(data))

Bob verifies SignatureDecrypt(PubKeyAlice,sig) ≡ Hash(data)

Also non-repudiation

Authentication: Asymmetric

Page 13: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

Alice EncryptsCipherText ← Encrypt(SymKeyAlice&Bob,PlainText)

Bob DecryptsPlainText ← Decrypt(SymKeyAlice&Bob,CipherText)

Secrecy: Symmetric

Page 14: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

Alice EncryptsCipherText ← Encrypt(PubKeyBob,PlainText)

Bob DecryptsPlainText ← Decrypt(PrivKeyBob,CipherText)

Secrecy: Asymmetric

Page 15: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

Alice EncryptsSymKey←Random

CipherText ←Encrypt(SymKey,PlainText)EncSymKey←Encrypt(PubKeyBob,SymKey)

Bob DecryptsSymKey←Decrypt(PrivKeyBob,EncSymKey)PlainText←Decrypt(SymKey,CipherText)

Better Secrecy: Asymmetric

Page 16: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

Alice EncryptsSymKey←Random

EncSymKey←Encrypt(PubKeyBob,SymKey) CipherText ←Encrypt(SymKey,PlainText)

sig←Encrypt(PrivKeyAlice,Hash(PlainText))

Bob DecryptsSymKey←Decrypt(PrivKeyBob,EncSymKey)PlainText←Decrypt(SymKey,CipherText)

Decrypt(PubKeyAlice,sig)=Hash(PlainText)

Even Better Secrecy

Page 17: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

How do we keep our keys safe?

Windows Certificate StorePKCS#11 smartcard

From APL: in a PKCS#8

PKCS => Public-Key Cryptographics Standard

Key Problem

Page 18: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

• The DCL is a DLL/so and a set of cover-functions• Provides access to a large set of hashing and

encryption functions• Provides tools for dealing with ”certificates”

containing keys• Cross-platform (but cross Unicode/Classic is

problematic due to translation issues)

Dyalog Cryptographic Library

Page 19: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

• Store certificates and keep private keys secret.

But:• Limits on available algorithms• Mimited tools for Dyalog

• Microsoft.Net• Some Conga support

Certificate Stores

Page 20: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

OO example: Keyed Component file

kf←⎕New KeyedFile ('D:\download\Keyed') kf['Products' 'Sales']←'Many' 'None' kf[⊂'Products'] Many

Samples

Page 21: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

OO example: Keyed Component file

Extended to handle encrypted and compressed components.

Samples

Page 22: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

Based on the Keyed Component ClassWe need to add:

User informationAccess information

Encrypted Component file

Page 23: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

1. User Id2. Public Key3. Salt4. Repetitions5. Initial Vector 6. Encrypted Private Key

User Information

Page 24: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

1. User Id2. Key3. EncryptUserPubKey(

SymKey +Initial Vector +Hash )

Access Information

Page 25: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

∇ AddUser(user para);..... (PrivKey PubKey)←GenerateAsymKeys AsymKeyPairSize Salt←Random SaltSize iv←Random CipherBlockSize rep←PBKDF2Repetitions DerivedKey←DeriveKey para Salt rep CipherKeySize EncPrivKey←PrivKey EncryptSym DerivedKey iv users⍪←user PubKey Salt rep iv EncPrivKey∇

Add New User

Page 26: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

∇ data←apl NewComp key;... (type plain)←Compress Serialize apl symkey←Random CipherKeySize iv←Random CipherBlockSize digest←Hash plain uix←FindUser cuser cipher←plain EncryptSym symkey iv pubkey←⊃users[uix;2] encaccesskey←(symkey,iv,digest)EncryptASym pubkey access⍪←cuser key encaccesskey data←type cipher∇

Append Component

Page 27: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

∇ apl←data DecryptComp key;... (type cipher)←data (secret iv digest)←GetAccess cuser key cpara plain←cipher DecryptSym secret iv apl←Deserialize Decompress type plain∇

Read a Component

Page 28: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

∇ r←GetAccess(user key para);... uix←FindUser user ('User ',user,' not found')⎕SIGNAL(0>uix)/11 aix←FindAccess user key ('User ',user,' has no access to ',key)⎕SIGNAL(0>aix)/11 (user Pubkey Salt rep iv EncPrivKey)←users[uix;]

derivedkey←DeriveKey para Salt rep CipherKeySize privkey←EncPrivKey DecryptSym derivedkey iv accessinfo←⊃access[aix;3] r←SplitAccesskey(accessinfo)DecryptASym privkey∇

Get Access

Page 29: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

∇ data←apl ReplaceComp key;... (type plain)←Compress Serialize apl (secret iv digest)←GetAccess cuser key cpara cipher←plain EncryptSym secret iv data←type cipher∇

Replace Component

Page 30: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

∇ accesskey GiveAccessTo(user key);... uix←FindUser user ('User ',user,' not found')⎕SIGNAL(0>uix)/11 aix←FindAccess user key ('User ',user,' has access to ',key)⎕SIGNAL(0<aix)/11encaccesskey←((⊃,/accesskey))EncryptASym⊃users[uix;2] access⍪←user key encaccesskey∇

Give Access to another user

Page 31: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

Without experience and deep knowledge, it is difficult to

evaluate the security of any mechanism:

Use established standards!

On your own

Page 32: Cryptography 101. Manage WHO can view data (Secrecy) Make sure data is unmodified (Authentication/data integrity) Know the origin of the data (Non-Repudiation)

• RFC for Public Key Cryptography Standard (PKCS#)

• The Handbook of Applied Cryptograhy

• Dyalog Cryptographic Library

Futher infomation