Преглед ЗАШТИТА ПОДАТАКА Шифровање јавним кључем и хеш функције RSA алгоритам Биће објашњено: RSA алгоритам алгоритам прорачунски аспекти ефикасност коришћењем јавног кључа генерисање кључа сигурност проблем факторизације временски напади 2/18 RSA алгоритам RSA алгоритам (2) смишљен 1977. године на MIT-у од стране Rivest, Shamir & Adleman (отуда назив) најпознатији и највише коришћен алгоритам шифровања помоћу јавног кључа RSA алгоритам је блок алгоритам за шифровање у коме су оригинални подаци и шифровани подаци цели бројеви између 0 и n- 1 за неко n. Типична величина за n је 1024 бита, или 309 децималних цифара. Односно n је мање од 2 1024. Размотрићемо RSA алгоритам, почевши од објашњења алгоритма, а затим и неких прорачунских и криптоаналитичких аспеката. Алгоритам користи израз са експонентима Оригинална порука се шифрира у блоковима, таквим да сваки блок има бинарну вредност мању од неког броја n. Односно, величина блока мора бити мања или једнака log 2 (n). Практично, величина блока је i бита, где је 2 i < n <= 2 i+1 Шифровање и дешифровање су следећег облика, за неку оригиналну поруку M и одговарајућу шифровану поруку C: C = M e mod n M = C d mod n = (M e mod n) d mod n = = (M e ) d mod n = M ed mod n 3/18 4/18
RSA алгоритам (3) RSA алгоритам (4) И пошиљалац и примаоц поруке морају да знају вредност n. Пошиљалац мора да зна вредност e, и само примаоц зна вредност d. Дакле, ово је алгоритам за шифровање са јавним кључем PU = {e, n} и приватним кључем PR = {d, n}. Да би овај алгоритам задовољио услове шифровања са јавним кључем, морају бити испуњени следећи услови: 1. Могуће је наћи вредности за e, d, n такве да је M ed mod n = M за свако M < n. 1. Релативно је једноставно израчунати M e mod n и C d за све вредности M < n. 2. Незамисливо је да се може одредити d ако су познати e и n. M ed mod n = M, ће важити уколико су e и d мултипликативно инверзни по модулу ф(n), где је ф(n) Euler-ова Totient функција. за просте p и q важи: ф(pq) = (p-1)(q-1) Релација између e и d може се изразити као: ed mod f(n) = 1 Ово је еквивалентно са: ed = 1 mod ф(n) d = e -1 mod ф(n) Односно e и d су мултипликативно инверзни по mod ф(n). Ово је тачно само ако су d и e узајамно прости у односу на ф(n), тј. gcd(ф(n),d) = 1 5/18 6/18 RSA алгоритам (5) RSA прављење кључа Сада можемо да искажемо RSA алгоритам. Састоји се од следећег: p,q, два проста броја (тајни, бирају се) n = pq (јавно, срачунато) e, тако да је gcd(ф(n),e) = 1;1 < e < ф(n) (јавно, бира се) d = e -1 (mod ф(n)) (тајни, срачунат) Приватни кључ се састоји од {d, n}, а јавни кључ се састоји од {e, n}. Ако претпоставимо да је корисник A објавио свој јавни кључ и да корисник B жели да пошаље поруку M кориснику A. Тада B срачунава C = M e mod n и шаље C. По пријему шифрованог текста, корисник A дешифрује израчунавајући M = C d mod n. 7/18 8/18
RSA употреба RSA пример 1. Избор простих бројева: p=17 и q=11 2. Рачунање n = pq =17 11=187 3. Рачунање ф(n)=(p 1)(q- 1)=16 10=160 4. Избор e : gcd(e,160)=1; бирамо e=7 5. Одређујемо d: de=1 mod 160 и d < 160 Вредност је d=23 како је 23 7=161= 10 160+1 6. Објављује се јавни кључ PU={7,187} 7. Чува се тајни кључ PR={23,187} 9/18 10/18 RSA пример (2) Прорачунски аспекти - експонентизација може се користити квадрат и множење алгоритам брз и ефикасан алгоритам за експонентизацију концепт се заснива на узастопном дизању базе на квадрат и множењу оних који су потребни да се израчуна резултат пример: 88 7 mod 187 = [(88 4 mod 187) x (88 2 mod 187) x x (88 1 mod 187)] mod 187 88 1 mod 187 = 88 88 2 mod 187 = 7744 mod 187 = 77 88 4 mod 187 = 77 2 mod 187 = 5929 mod 187 = 132 88 7 mod 187 = (88 x 77 x 132) mod 187 = 894,432 mod 187 = 11 11/18 12/18
Прорачунски аспекти - експонентизација (2) Ефикасност коришћењем јавног кључа Да би се убрзало коришћење RSA алгоритма са јавним кључем обично се користи специфични избор вредности e. Најчешћи избор је 65537 (2 16 +1) Друга два популарна избора су 3 и 17. Сваки од ових избора има само два бита која су јединице тако да је број мултипликација које су неопходне за експонентизацију минималан. Међутим, у случају избора малих кључева, као што су 3 и 17, алгоритам остаје рањив за једноставне нападе, па се зато најчешће бира 65537, али се мора водити рачуна да су p и q конгруентни са 1 (mod 65537), како би било испуњено gcd(ф(n),e) = 1. 13/18 14/18 RSA генерисање кључа корисници RSA морају: изабрати два случајна проста броја - p, q изабрати или e или d и израчунати други прости p,q не смеју бити лако изведени из N=pq значи да морају бити довољно велики типично се користе тестови засновани на вероватноћи експоненти e, d су инверзни, па се користи инверзни алгоритам да се израчуна један од другога RSA сигурност четири су могућа напада на RSA: претрага свих кључева (незамисливо узевши у обзир величину бројева) математички напади (засновани на тежини израчунавања Ф(N), рачунањем фактора N тј. p и q) временски напади (засновани на времену трајања дешифровања) напади на изабрану шифру (засновани на структури алгоритма) 15/18 16/18
Проблем факторизације математички напади се јављају у три облика: нађу се фактори N=pq, пронађе се ф(n) и затим d налажење ф(n) директно, без одређивања p и q и затим се нађе d проналажење d директно верује се да су сви еквивалентни факторизацији Временски напади развијени су средином 90-их година користе варијације у трајању извршавања операција нпр. множење малог са великим бројем претпоставља се величина операнда на основу потрошеног времена Код RSA варијације потрошеног времена се јављају приликом експонентизације против мере користити константно време експонентизације додавати случајна закашњења пре експонентизације помножити шифру са случајном вредношћу 17/18 18/18