Deformowalność (kryptografia)

Deformowalność – własność pewnych algorytmów kryptograficznych[1]. Algorytm jest deformowalny, jeśli adwersarz ma możliwość zmiany szyfrogramu bez znajomości tekstu jawnego. Innymi słowy: mając szyfrogram komunikatu m {\displaystyle m} adwersarz może wygenerować inny szyfrogram, który będzie odpowiadał komunikatowi f ( m ) {\displaystyle f(m)} dla pewnej funkcji f , {\displaystyle f,} bez znajomości m . {\displaystyle m.}

W kryptosystemach ogólnego przeznaczenia deformowalność jest często cechą niepożądaną, ponieważ umożliwia adwersarzowi zmianę zawartości komunikatu. Załóżmy dla przykładu, że bank używa szyfru strumieniowego do ukrycia informacji finansowych. Użytkownik wysyła zaszyfrowany komunikat z informacją „PRZELEJ 0000100,00 ZŁ NA KONTO NR 199”. Jeśli adwersarz może zmodyfikować szyfrogram oraz zna format komunikatu, mógłby on zmienić kwotę oraz adresata transakcji na, dajmy na to, „PRZELEJ 0100000,00 ZŁ NA KONTO NR 227”.

Z drugiej strony istnieją kryptosystemy celowo projektowane jako deformowalne. Innymi słowy, w niektórych przypadkach, możliwość zmiany szyfrogramu komunikatu m {\displaystyle m} na poprawny szyfrogram f ( m ) {\displaystyle f(m)} (dla pewnych ograniczonych klas funkcji f {\displaystyle f} ) bez znajomości m {\displaystyle m} może być pożądana. Takie schematy szyfrowania znane są pod nazwą szyfrowania homomorficznego.

Kryptosystem może być semantycznie bezpieczny wobec ataków z wybranym tekstem jawnym, lecz nadal deformowalny. Podatność na adaptywny atak z wybranym szyfrogramem jest natomiast jednoznaczna z niedeformowalnością.

Przykłady systemów z deformowalnością

W szyfrach strumieniowych szyfrogram jest wynikiem działania alternatywy wykluczającej na tekście jawnym m {\displaystyle m} oraz pseudolosowego strumienia bitów S : {\displaystyle S{:}} E ( m ) = m S ( k ) , {\displaystyle E(m)=m\oplus S(k),} gdzie k {\displaystyle k} jest kluczem. Adwersarz może skonstruować szyfrogram m t {\displaystyle m\oplus t} dla dowolnego t , {\displaystyle t,} ponieważ E ( m ) t = m t S ( k ) = E ( m t ) . {\displaystyle E(m)\oplus t=m\oplus t\oplus S(k)=E(m\oplus t).}

W algorytmie RSA tekst jawny m {\displaystyle m} jest zaszyfrowany za pomocą przekształcenia E ( m ) = m e mod n , {\displaystyle E(m)=m^{e}{\bmod {n}},} gdzie ( e , n ) {\displaystyle (e,n)} jest kluczem publicznym. Mając taki szyfrogram adwersarz może skonstruować szyfrogram komunikatu m t {\displaystyle mt} dla dowolnego t , {\displaystyle t,} ponieważ E ( m ) t e mod n = ( m t ) e mod n = E ( m t ) . {\displaystyle E(m)\cdot t^{e}{\bmod {n}}=(mt)^{e}{\bmod {n}}=E(mt).} Z tego powodu RSA jest zazwyczaj używane ze schematami OAEP lub PKCS1.

W algorytmie ElGamal tekst jawny m {\displaystyle m} jest zaszyfrowany funkcją E ( m ) = ( g b , m A b ) , {\displaystyle E(m)=(g^{b},mA^{b}),} gdzie ( g , A ) {\displaystyle (g,A)} jest kluczem publicznym. Mając do dyspozycji szyfrogram ( c 1 , c 2 ) , {\displaystyle (c_{1},c_{2}),} adwersarz może obliczyć ( c 1 , t c 2 ) , {\displaystyle (c_{1},t\cdot c_{2}),} co jest poprawnym szyfrogramem komunikatu t m , {\displaystyle tm,} dla dowolnego t . {\displaystyle t.} Dla odmiany kryptosystem Cramera-Shoupa (oparty na ElGamalu) jest niedeformowalny.

W kryptosystemach ElGamal oraz RSA można tak połączyć szyfrogramy komunikatów m 1 {\displaystyle m_{1}} oraz m 2 , {\displaystyle m_{2},} aby uzyskać poprawny szyfrogram komunikatu m 1 m 2 . {\displaystyle m_{1}m_{2}.}

Całkowita niedeformowalność

W 2005 roku Fishlin zdefiniował pojęcie całkowitej niedeformowalności jako zdolność systemu do pozostania niedeformowalnym nawet w przypadku, gdy adwersarz otrzymuje możliwość wybrania nowego klucza publicznego. Oznacza to, że adwersarz nie powinien mieć możliwości wygenerowania szyfrogramu, którego odpowiadający mu tekst jawny jest związany z oryginalnym komunikatem relacją uwzględniającą klucz publiczny.

Przypisy

  1. Danny Dolev, Cynthia Dwork, Moni Naor. Nonmalleable Cryptography. „SIAM Journal on Computing”. 30 (2), s. 391–437, 2000. DOI: 10.1137/S0097539795291562.