Diffie–Hellman-Merkle

Key Exchange

Plain:    ABCDEFGHIJKLMNOPQRSTUVWXYZ
Key:     23
Cipher:   XYZABCDEFGHIJKLMNOPQRSTUVW

encrypt(x) = x + key % 26

Plaintext:  THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
Ciphertext: QEB NRFZH YOLTK CLU GRJMP LSBO QEB IXWV ALD

decrypt(x) = x - key % 26

 

Enigma

Enigma Codebook

..., DES, AES, ...

def encrypt(plaintext, key):

    return ciphertext

 

def decrypt(ciphertext, key):

    return plaintext

557d3b34675d2f73755f6d2436622a2b75487e5d3e5d593f742569404f

def encrypt(plaintext, key):

    return ciphertext

 

def decrypt(ciphertext, key):

    return plaintext

Key Exchange


Plaintext:  THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG

Alice: encrypt(Plaintext, 23) -> CiphertextA
CiphertextA: QEB NRFZH YOLTK CLU GRJMP LSBO QEB IXWV ALD

Bob: encrypt(CiphertextA, 2) -> CiphertextB
CiphertextB: SGD PTHBJ AQNVM ENW ITLOR NUDQ SGD KZYX CNF

Alice: decrypt(CiphertextB, 23) -> CiphertextC
CiphertextC: VJG SWKEM DTQYP HQZ LWORU QXGT VJG NCBA FQI

Bob: decrypt(CiphertextC, 2) -> Plaintext
THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
KeyA: OTZXBIAUQHNJFSGWCKEVPMYDLR
KeyB: SMOCQAXTBIVPHGWUYNZJKREDLF

THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG

c1 = encrypt(p, keyA) : VUB CPQZN TKGYS IGD HPFWE GMBK VUB JORL XGA

c2 = encrypt(c1, keyB) : RKM OUYFG JVXLZ BXC TUAEQ XHMV RKM IWNP DXS

p1 = decrypt(c2, keyB) : VUB CPQZN TKGYS IGD HPFWE GMBK VUB JORL XGA

p = decrypt(p1, keyA) : THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
KeyA: LWRDKHGYAXZUPSVOMTJCQFBIEN
KeyB: HTGEJIYDXKQBWOMCNPFSUVRLAZ

THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG

c1 = encrypt(p, keyA) : CYK MQARZ WTVBS HVI XQPOJ VFKT CYK ULNE DVG

c2 = encrypt(c1, keyB) : GAQ WNHPZ RSVTF DVX LNCMK VIQS GAQ UBOJ EVY

p1 = decrypt(c2, keyA) : GIU BZFMK CNORV DOJ AZTQE OXUN GIU LWPS YOH

wtf = decrypt(p1, keyB) : CFU LZSOJ PQNWV HNE YZBKD NIUQ CFU XMRT GNA

??

f(x) = Y (mod P)
x
f(x) = 7 (mod 11)
x
A = 3
B = 6
a = f(3) = 2
b = f(6) = 4

Alice: hey Bob, a = 2

Bob: hey Alice, b = 4

a = f(3) = 2
key = b (mod 11)=9
A
key = a (mod 11)=9
B

c = encrypt(p, 9)

p = decrypt(c, 9)

Diffie-Helman-Merkle

By Fergal Walsh

Diffie-Helman-Merkle

Presented @ HipoTalks March 3 2016

  • 984