ЗАШТИТА ПОДАТАКА Шифровање јавним кључем и хеш функције Diffie-Hellman размена кључева
Преглед Биће објашњено: Diffie-Hellman размена кључева 2
Diffie-Hellman размена кључева први алгоритам са јавним кључем предложили су га Diffie и Hellman 1976. године заједно са концептима о јавним кључевима познато је данас да је James Ellis (UK CESG) предложио исти концепт у тајности 1970. године ово је практична метода за јавну размену тајних кључева искоришћен је у великом броју комерцијалних производа 3
Diffie-Hellman размена кључева(2) алгоритам за дистрибуцију кључева са јавним кључем не може се користити за размену порука уместо тога може се користити да се успостави заједнички тајни кључ који знају само учесници у комуникацији вредност кључа зависи од учесника (и њихових информација о јавном и тајном кључу) заснован је на експонентизацији у коначном (Galois) пољу (по модулу простог броја или полинома) сигурност се ослања на тежини израчунавања дискретних логаритама (слично као факторизација) 4
Diffie-Hellman алгоритам 5
Diffie-Hellman алгоритам (2) За овај алгоритам постоје 2 јавно позната броја: примарни број q и цео број који је примитивни корен од q. Рецимо да корисници A и B желе да размене кључ. Корисник A бира случајан цео број X A < q и израчунава Y A = α X A mod q. Слично томе, корисник B независно бира случајан цео број X B < q и израчунава Y B = α X B mod q. Сваки корисник задржава X вредност као приватну и поставља Y вредност јавно доступном, како би и други корисник имао. Корисник A израчунава кључ као K = (Y B ) X A mod q. Корисник B израчунава кључ као K = (Y A ) X B mod q. Последња два прорачуна дају идентичан резултат. 6
Diffie-Hellman алгоритам (3) K =(Y B ) X A mod q = (α X B mod q) X A mod q = (α X B) X A mod q - по правилу модуларне аритметике = α X B X A mod q = (α X A) X B mod q = (α X A mod q) X B mod q - по правилу модуларне аритметике = (Y A ) X B mod q Резултат је тај да су две стране замениле тајну вредност. 7
Diffie-Hellman алгоритам (4) Чак, како су X A и X B приватни, противник има на располагању само следеће вредности: q, α, Y A и Y B. Те је стога, противник принуђен да користи дискретне логаритме да би пронашао кључ. Нпр. ако хоће да нађе тајну вредност за B мора да користи X B = dlog α,q (Y B ) Затим може да искористи добијену вредност да нађе кључ на исти начин као и корисник B. Сигурност Diffie-Hellman размене кључева лежи у чињеници да иако је релативно лако наћи експоненте по модулу простог броја, јако је тешко наћи дискретне логаритме. За велике просте бројеве, ово друго постаје незамисливо. 8
Diffie-Hellman пример Изабрани прост број је q = 353 Прост корен за 353 је α = 3. Корисници A и B бирају тајне кључеве X A =97 и X B =233, респективно. Сваки од њих израчунава јавни кључ: Корисник A израчунава Y A = 3 97 mod 353= 40 Корисник B израчунава Y B = 3 233 mod 353= 248. Након што размене јавне кључеве, свако од њих може да израчуна тајни кључ. Корисник A израчунава K= (Y B ) X A mod 353= 248 97 mod 353=160. Корисник B израчунава K= (Y A ) X B mod 353= 40 233 mod 353=160. 9
Diffie-Hellman пример (2) Претпоставимо да нападач има на располагању следеће информације: q = 353; α = 3; Y A = 40; Y B = 248 У овом једноставном примеру, могло би се brute force методом доћи до тајног кључа 160. Нападач може да открије заједнички кључ решавањем или једначине 3 a mod 353 = 40 или једначине 3 b mod 353 = 248. brute force метод би подразумевао да се ради степеновање 3-ке по модулу 353, док резултат не буде 40 или 248. Жељени резултат се постиже када се дође до експонента 97, који даје 3 97 mod 353 = 40. Са великим бројевима, овакво разбијање алгоритма 10 постаје непрактично.
Diffie-Hellman протокол 11
Man-in-the-Middle напад пример Ана и Пера желе да размене кључеве, али ту је Тома њихов противник. 1. Тома припрема два случајна приватна кључа X D1 и X D2 и израчунава коресподентне јавне кључеве Y D1 и Y D2. 2. Aна шаље Y A за Перу. 3. Тома пресреће Y A и шаље Y D1 Пери. Тома такође израчунава K2 = (Y A ) X D2 mod q. 4. Пера прима Y D1 и израчунава K1 = (Y D1 ) X B mod q. 5. Пера шаље Y B за Aну. 6. Тома пресреће Y B и шаље Y D2 Ани. Тома такође израчунава K1 = (Y B ) X D1 mod q. 7. Ана прима Y D2 и израчунава K2 = (Y D2 ) X A mod q. 12
Man-in-the-Middle напад пример(2) У овом тренутку Ана и Пера мисле да имају заједнички тајни кључ, а уместо тога Пера и Тома имају један заједнички тајни кључ и Ана и Тома имају други заједнички тајни кључ. Свака комуникација између Ане и Пере нарушена је на следећи начин: 1. Ана шаље шифровану поруку M: E(K2, M). 2. Тома пресреће шифровану поруку и дешифрује је, да би добио оригиналну поруку M. 3. Тома шаље Пери E(K1, M) или E(K1, M'), где је M' било која порука. У првом случају Тома само прислушкује комуникацију, док се у другом случају меша у комуникацију. Протокол за размену кључева рањив је, јер не постоји аутентикација учесника у комуникацији. 13
Elgamal 1984. Elgamal је објавио варијацију Diffie-Hellman алгоритма која може да се користи за шифровање овај алгоритам се користи у појединим стандардима попут DSS и S/MIME 14
Elgamal алгоритам За овај алгоритам постоје 2 јавно позната броја: прост број q и цео број α који је прост корен од q. Корисник A генерише пар кључева на следећи начин: бира случајан цео број X A тако да је 1< X A < q-1 израчунава Y A = α X A mod q Приватни кључ је X A, а јавни {q, α, Y A } 15
Elgamal алгоритам Корисник B шифрује поруку користећи јавни кључ корисника А на следећи начин: представи поруку као цео број М у опсегу 0 М q-1 одабере насумичан цео број к такво да је 1 к q-1 израчуна кључ за једнократну употребу К = (Y A ) к mod q Шифрује М као пар целих бројева (C 1, C 2 ) kao: C 1 = α к mod q; C 2 = KM mod q; 16
Elgamal алгоритам Корисник А дешифрује поруку користећи свој приватни кључ на следећи начин: дохвата једнократни кључ К = (C 1 ) X A mod q израчунава оригиналну поруку М = (C 2 K -1 ) mod q Доказ да алгоритам функционише: К = (Y A ) к mod q = ; дефиниција = (α X A mod q) к mod q = ; замена Y A = α X A mod q = α кx A mod q = ; правила модуларне аритметике = (C 1 ) X A mod q ; замена C 1 = α к mod q C 2 = KM mod q; (C2 K -1 ) mod q = KMK -1 mod q = M mod q = M 17
Elgamal пример q = 19, α = 10 X A = 5; Y A = α X A mod q = 10 5 mod 19 = 3 M = 17; к = 6; К = (Y A ) к mod q = 3 6 mod 19 = 7; C 1 = α к mod q = 10 6 mod 19 = 11; C 2 = KM mod q = 7*17 mod 19 = 5; К = (C 1 ) X A mod q = 11 5 mod 19; 7*K -1 1 mod 19; K -1 = 11; М = (C 2 K -1 ) mod q = 5*11 mod 19 = 17; 18
Elgamal напомена Уколико се оригинална порука мора разбити на више блокова, мора се користити различито к за сваки блок Сигурност Elgamal алгоритма заснива се на тежини израчунавања дискретних логаритама Уколико се користе довољно велики бројеви, алгоритам је сигуран (барем 300 цифара за q) 19