Teoria informacji/TI Wykład 6: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Stromy (dyskusja | edycje)
Nie podano opisu zmian
m Zastępowanie tekstu – „<math> ” na „<math>”
 
(Nie pokazano 6 wersji utworzonych przez 4 użytkowników)
Linia 1: Linia 1:
===Doskonale bezpieczne szyfrowanie===
===Doskonale bezpieczne szyfrowanie===


Pokażemy teraz jak przy pomocy teorii informacji możemy udowodnić że jakiś system kryptograficzny jest całkowicie bezpieczny.  
Pokażemy teraz, jak przy pomocy teorii informacji możemy udowodnić, że jakiś system kryptograficzny jest całkowicie bezpieczny.  




Linia 15: Linia 15:
(czyli z szyfru i klucza uzyskuje się w sposób jednoznaczny pierwotną wiadomość).
(czyli z szyfru i klucza uzyskuje się w sposób jednoznaczny pierwotną wiadomość).


Kryptosystem jest '''idealnie bezpieczny''' jeśli <math>I(C;M)=0</math>.
Kryptosystem jest '''idealnie bezpieczny''', jeśli <math>I(C;M)=0</math>.




Linia 25: Linia 25:
Gdzie <math>\oplus</math> oznacza XOR po bitach (np. <math>101101 \oplus 110110 = 011011</math>). Tym samym <math>\mathit{Dec} (v,w) = v \oplus w</math>
Gdzie <math>\oplus</math> oznacza XOR po bitach (np. <math>101101 \oplus 110110 = 011011</math>). Tym samym <math>\mathit{Dec} (v,w) = v \oplus w</math>


Dodatkowo zakładamy że K jest wybierana z rozkładem jednostajnym na <math>\{0,1\}^n</math>, czyli <math>\forall_{v \in \{0,1\}^n} p(K=v)=\frac{1}{2^n}</math>, i że M jest zmienną niezależną od K.
Dodatkowo zakładamy, że K jest wybierana z rozkładem jednostajnym na <math>\{0,1\}^n</math>, czyli <math>\forall_{v \in \{0,1\}^n} p(K=v)=\frac{1}{2^n}</math>, i że M jest zmienną niezależną od K.




Przy powyższych założeniach Szyfr Vernama jest idealnie bezpieczny. Aby to udowodnić, wystarczy pokazać że M i C są niezależne, czyli że <math> p (C = w \, \wedge \, M = u) = p (C = w) \cdot p ( M = u)</math>  
Przy powyższych założeniach Szyfr Vernama jest idealnie bezpieczny. Aby to udowodnić, wystarczy pokazać że M i C są niezależne, czyli że <math>p (C = w \, \wedge \, M = u) = p (C = w) \cdot p ( M = u)</math>  
(patrz [[Teoria informacji/TI Wykład 5#do_łącznej|twierdzenie o entropii łącznej]]).
(patrz [[Teoria informacji/TI Wykład 5#do_łącznej|twierdzenie o entropii łącznej]]).


Zaczynamy od:
Zaczynamy od:
<center><math>\aligned
<center><math>\begin{align}
p(C = w) & = \sum_{u \in {\mathcal M}} p (K = u \oplus w | M = u) \cdot p(M = u)\\
p(C = w) & = \sum_{u \in {\mathcal M}} p (K = u \oplus w | M = u) \cdot p(M = u)\\
& = \sum_{u \in {\mathcal M}}  p (K = u \oplus w) \cdot p(M = u) \mbox{ (bo M i K są niezależne) } \\
& = \sum_{u \in {\mathcal M}}  p (K = u \oplus w) \cdot p(M = u) \mbox{ (bo M i K są niezależne) } \\
& = \sum_{u \in {\mathcal M}} \frac{1}{2^n} \cdot p(M = u) \\
& = \sum_{u \in {\mathcal M}} \frac{1}{2^n} \cdot p(M = u) \\
& = \frac{1}{2^n}
& = \frac{1}{2^n}
\endaligned
\end{align}
</math></center>
</math></center>


Jeśli teraz skorzystamy z definicji C i niezależności M i K dostajemy:
Jeśli teraz skorzystamy z definicji C i niezależności M i K, dostajemy:
<center><math>\aligned
<center><math>\begin{align}
p (C = w \, \wedge \, M = u) & = p (K = w \oplus v \, \wedge \,  M = u)\\
p (C = w \, \wedge \, M = u) & = p (K = w \oplus v \, \wedge \,  M = u)\\
& = \frac{1}{2^n} \cdot p ( M = u)
& = \frac{1}{2^n} \cdot p ( M = u)
\endaligned
\end{align}
</math></center>}}
</math></center>}}


Linia 57: Linia 57:
<center><math>L_r (K) \ge H_r (K) \ge  H_r (M) \ge L_r (M)-1</math></center>}}
<center><math>L_r (K) \ge H_r (K) \ge  H_r (M) \ge L_r (M)-1</math></center>}}


Czyli aby uzyskać idealną tajność, musimy użyć klucza równie długiego jak przesyłana wiadomość.  
Czyli aby uzyskać idealną tajność, musimy użyć klucza równie długiego, jak przesyłana wiadomość.  
Jest to oczywiście bardzo niepraktyczne, ale w niektórych zastosowaniach konieczne.
Jest to oczywiście bardzo niepraktyczne, ale w niektórych zastosowaniach konieczne.


Linia 63: Linia 63:
<center><math>H(M) = H(M| C,K) + \underbrace{I(M;C)}_{=H(M) - H(M|C)} + \underbrace{I(M;K|C)}_{=H(M|C) - H(M|K,C)}</math></center>
<center><math>H(M) = H(M| C,K) + \underbrace{I(M;C)}_{=H(M) - H(M|C)} + \underbrace{I(M;K|C)}_{=H(M|C) - H(M|K,C)}</math></center>


Ale z definicji M jest funkcją (C,K), czyli <math>H(M|C;K)=0</math>. Wymagamy żeby <math>I(M;C)=0</math>, a więc:
Ale z definicji M jest funkcją (C,K), czyli <math>H(M|C;K)=0</math>. Wymagamy, żeby <math>I(M;C)=0</math>, a więc:
<center><math>H(M)=I(M;K|C)</math></center>
<center><math>H(M)=I(M;K|C)</math></center>


Rozpisując analogicznie H(K) uzyskujemy:
Rozpisując analogicznie H(K), uzyskujemy:
<center><math>H(K) = H(K | M,C) + I(K;C) + \underbrace{I(K;M|C)}_{=H(M)}</math></center>}}
<center><math>H(K) = H(K | M,C) + I(K;C) + \underbrace{I(K;M|C)}_{=H(M)}</math></center>}}




Ważną cechą informacji jest niemożliwość jej powiększenia przez lokalne obliczenia. Niech A i B będą zmiennymi losowymi. Przykładowo wyobraźmy sobie że A określa jakieś dane eksperymentalne, a B naszą wiedzę o nich. Okazuje się że wszelkie operacje jakich dokonamy na B (analiza, przetwarzanie danych itp.) mogą jedynie zmniejszyć naszą informację o A.
Ważną cechą informacji jest niemożliwość jej powiększenia przez lokalne obliczenia. Niech A i B będą zmiennymi losowymi. Przykładowo, wyobraźmy sobie, że A określa jakieś dane eksperymentalne, a B naszą wiedzę o nich. Okazuje się, że wszelkie operacje, jakich dokonamy na B (analiza, przetwarzanie danych itp.), mogą jedynie zmniejszyć naszą informację o A.




Linia 80: Linia 80:
<center><math>\underbrace{I(A; (B,C))}_{=H(A) - H(A|B,C)}= \underbrace{I(A;C)}_{=H(A) - H(A|C)} + \underbrace{I(A; B|C)}_{=H(A|C) - H(A|B,C)}</math></center>
<center><math>\underbrace{I(A; (B,C))}_{=H(A) - H(A|B,C)}= \underbrace{I(A;C)}_{=H(A) - H(A|C)} + \underbrace{I(A; B|C)}_{=H(A|C) - H(A|B,C)}</math></center>


Z symetrii, używając niezależności warunkowej A i C dostaniemy:
Z symetrii, używając niezależności warunkowej A i C, dostaniemy:
<center><math> I(A; (B,C)) = I(A;B) + \underbrace{I(A; C | B)}_{=0}</math></center>}}
<center><math>I(A; (B,C)) = I(A;B) + \underbrace{I(A; C | B)}_{=0}</math></center>}}


Zauważmy że nierówność staje się równością, o ile dodatkowo A i B są warunkowo niezależne przy danym C (czyli <math>I(A;B|C)=0</math>).
Zauważmy, że nierówność staje się równością, o ile dodatkowo A i B są warunkowo niezależne przy danym C (czyli <math>I(A;B|C)=0</math>).




Linia 90: Linia 90:


{{dowod|||Na podstawie lematu, gdyż
{{dowod|||Na podstawie lematu, gdyż
<center><math>I(A; f(B) | B) = \underbrace{H (f(B) | B)}_{=0}-\underbrace{H (f(B) | A, B)}_{=0} = 0 </math></center>}}
<center><math>I(A; f(B) | B) = \underbrace{H (f(B) | B)}_{=0}-\underbrace{H (f(B) | A, B)}_{=0} = 0</math></center>}}
 


===Kryptografia kwantowa===
===Kryptografia kwantowa===


Korzystanie z szyfru Vernama jest bardzo niewygodne z powodu konieczności wcześniejszego ustalenia klucza równie długiego jak przesyłana wiadomość. Dlatego w większości zastosowań rezygnuje się z idealnej tajności na rzecz ''bezpieczeństwa złożonościowego''. W takich metodach (stosowanych praktycznie wszędzie w sieci) bezpieczeństwo opiera się na trudności obliczeniowej rozwiązania pewnych problemów algorytmicznych. Odszyfrowanie wiadomości bez znajomości klucza jest możliwe, ale zakłada się że nikt nie dysponuje wystarczająco potężną mocą obliczeniową aby tego dokonać. Z punktu widzenia teorii informacji zaszyfrowane wiadomości zawierają jednak pełną informację, czyli <math>I(C;M)=H(M)</math>.
Korzystanie z szyfru Vernama jest bardzo niewygodne z powodu konieczności wcześniejszego ustalenia klucza równie długiego, jak przesyłana wiadomość. Dlatego w większości zastosowań rezygnuje się z idealnej tajności na rzecz ''bezpieczeństwa złożonościowego''. W takich metodach (stosowanych praktycznie wszędzie w sieci) bezpieczeństwo opiera się na trudności obliczeniowej rozwiązania pewnych problemów algorytmicznych. Odszyfrowanie wiadomości bez znajomości klucza jest możliwe, ale zakłada się że nikt nie dysponuje wystarczająco potężną mocą obliczeniową, aby tego dokonać. Z punktu widzenia teorii informacji, zaszyfrowane wiadomości zawierają jednak pełną informację, czyli <math>I(C;M)=H(M)</math>.


Obecnie jedyną metodą pozwalającą uzyskać idealną tajność bez wcześniejszego ustalenia klucza jest zastosowanie '''kryptografii kwantowej'''. W ogólności kwantowa teoria informacji nie mieści się w zakresie tego kursu, ale ogólne idee postaramy się tu przedstawić.
Obecnie jedyną metodą pozwalającą uzyskać idealną tajność bez wcześniejszego ustalenia klucza jest zastosowanie '''kryptografii kwantowej'''. W ogólności kwantowa teoria informacji nie mieści się w zakresie tego kursu, ale ogólne idee postaramy się tu przedstawić.
Linia 101: Linia 100:


W kwantowej teorii zastępuje się klasyczne bity ich odpowiednikami, tzw. '''kubitami'''. Kubit jest najmniejszą  
W kwantowej teorii zastępuje się klasyczne bity ich odpowiednikami, tzw. '''kubitami'''. Kubit jest najmniejszą  
porcją kwantowej informacji. Tak jak klasyczny bit może przyjmować wartości <math>0</math> i <math>1</math>. W odróżnieniu od niego może jednak przyjmować też dowolną '''superpozycję''' tych wartości, czyli być w stanie „pomiędzy” <math>0</math> a <math>1</math>. Formalnie jego stan można opisać wektorem z dwuwymiarowej przestrzeni
porcją kwantowej informacji. Tak jak klasyczny bit może przyjmować wartości <math>0</math> i <math>1</math>. W odróżnieniu od niego, może jednak przyjmować też dowolną '''superpozycję''' tych wartości, czyli być w stanie „pomiędzy” <math>0</math> a <math>1</math>. Formalnie jego stan można opisać wektorem z dwuwymiarowej przestrzeni
<center><math>|\psi\rangle = \alpha|0\rangle + \beta|1\rangle</math></center>
<center><math>|\psi\rangle = \alpha|0\rangle + \beta|1\rangle</math></center>


Linia 107: Linia 106:




'''Pomiar''' takiego kubitu daje w wyniku <math>0</math> z prawdopodobieństwem <math>|\alpha|^2</math> i <math>1</math> z prawdopodobieństwem <math>|\beta|^2</math> (zawsze <math>|\alpha|^2+|\beta|^2=1</math>).  
'''Pomiar''' takiego kubitu daje w wyniku <math>0</math> z prawdopodobieństwem <math>|\alpha|^2</math> i <math>1</math> z prawdopodobieństwem <math>|\beta|^2</math> (dlatego zawsze <math>|\alpha|^2+|\beta|^2=1</math>).


Po dokonaniu pomiaru stan kubitu ustala się na zmierzonym wektorze (a więc po pomiarze <math>|\psi\rangle = |0\rangle</math> lub <math>|\psi\rangle = |0\rangle</math>). Ta własność jest kluczowa dla bezpieczeństwa kryptografii kwantowej.
Po dokonaniu pomiaru stan kubitu ustala się na zmierzonym wektorze (a więc po pomiarze <math>|\psi\rangle = |0\rangle</math> lub <math>|\psi\rangle = |1\rangle</math>). Ta własność jest kluczowa dla bezpieczeństwa kryptografii kwantowej.


Na kubitach można dokonywać operacji ''unitarnych'' (to znaczy takich które nie zmieniają <math>|\alpha|^2+|\beta|^2=1</math>). Przykładem takiej operacji jest ''bramka Hadamarda''
Na kubitach można dokonywać operacji ''unitarnych'' (to znaczy takich, które nie zmieniają wartości <math>|\alpha|^2+|\beta|^2</math>). Przykładem takiej operacji jest ''bramka Hadamarda''
<center><math> H = \frac{1}{\sqrt{2}}\left( \begin{matrix} 1 & 1 \\ 1 & -1 \end{matrix}\right)</math></center>
<center><math>H = \frac{1}{\sqrt{2}}\left( \begin{matrix} 1 & 1 \\ 1 & -1 \end{matrix}\right)</math></center>


Warto zauważyć że ta bramka jest inwolucją
Warto zauważyć, że ta bramka jest inwolucją
<center><math> H^2 = \frac{1}{\sqrt{2}} \left( \begin{matrix} 1 & 1 \\ 1 & -1 \end{matrix}\right)\cdot\frac{1}{\sqrt{2}}\left( \begin{matrix} 1 & 1 \\ 1 & -1 \end{matrix}\right)= \frac{1}{2}\left( \begin{matrix} 1+1 & 1-1 \\ 1-1 & 1+1 \end{matrix}\right) = \left( \begin{matrix} 1 & 0 \\ 0 & 1 \end{matrix}\right)</math></center>
<center><math>H^2 = \frac{1}{\sqrt{2}} \left( \begin{matrix} 1 & 1 \\ 1 & -1 \end{matrix}\right)\cdot\frac{1}{\sqrt{2}}\left( \begin{matrix} 1 & 1 \\ 1 & -1 \end{matrix}\right)= \frac{1}{2}\left( \begin{matrix} 1+1 & 1-1 \\ 1-1 & 1+1 \end{matrix}\right) = \left( \begin{matrix} 1 & 0 \\ 0 & 1 \end{matrix}\right)</math></center>




Analogicznie opisuje się układy wielu kubitów: dwa bity mogą przyjmować 4 możliwe wartośći, dlatego układ dwóch kubitów opisywany jest jako wektor z czterowymiarowej przestrzeni. Układ trzech kubitów opisywany jest jako wektor z ośmiowymiarowej przestrzeni itd. Jedyne dopuszczalne ingerowanie w takie układy to pomiary oraz operacje unitarne.
Układy wielu kubitów opisuje się analogicznie do jednego kubitu: dwa bity mogą przyjmować 4 możliwe wartości, dlatego układ dwóch kubitów opisywany jest jako wektor z czterowymiarowej przestrzeni. Układ trzech kubitów opisywany jest jako wektor z ośmiowymiarowej przestrzeni itd. Również w tym przypadku jedyne dopuszczalne operacje na takich układach to pomiary oraz operacje unitarne.


Istotną cechą operacji unitarnych jest ich odwracalność - dla każdej z nich istnieje macierz odwrotna. Pociąga to za sobą krytyczną własność informatyki kwantowej, nie mającą odpowiednika w informatyce klasycznej:
Istotną cechą operacji unitarnych jest ich odwracalność - dla każdej z nich istnieje macierz odwrotna. Pociąga to za sobą krytyczną własność informatyki kwantowej, nie mającą odpowiednika w informatyce klasycznej:


{{twierdzenie|[Brak klonowania]|brak_klonowania|
{{twierdzenie|[Brak klonowania]|brak_klonowania|
Nie istnieje operacja kwantowa kopiująca wiernie dowolne kubity, tzn. taka <math>U</math> że dla dowolnego <math>|\psi\rangle</math>:
Nie istnieje operacja kwantowa kopiująca wiernie dowolne kubity, tzn. taka <math>U</math>, że dla dowolnego <math>|\psi\rangle</math>:
<center><math>U |\psi\rangle |0\rangle = |\psi\rangle |\psi\rangle</math></center>}}
<center><math>U |\psi\rangle |0\rangle = |\psi\rangle |\psi\rangle</math></center>}}




Układy wielu kubitów teoretycznie pozwalają na znacznie efektywniejsze obliczenia niż przy użyciu klasycznych komputerów. Praktyczna ich implementacja jest jednak bardzo trudna, i do tej pory nikomu nie udało się przeprowadzić dużego obliczenia kwantowego. Operowanie na pojedynczych kubitach jest za to dosyć proste, i istnieją komercyjne urządzenia używające ich do bezpiecznego przesyłania danych. W takich urządzeniach kubity realizowane są jako pojedyncze fotony. Najprostszy protokół ustalania klucza wygląda następująco:
Przy pomocy operacji unitarnych na układach kubitów można projektować bardzo efektywne algorytmy, w niektórych przypadkach wykładniczo efektywniejsze od najlepszych znanych algorytmów klasycznych (jak algorytm faktoryzacji Shora). Praktyczna ich implementacja jest jednak bardzo trudna i do tej pory nikomu nie udało się przeprowadzić dużego obliczenia kwantowego. Operowanie na pojedynczych kubitach jest za to dosyć proste; istnieją komercyjne urządzenia używające ich do bezpiecznego przesyłania danych. W takich urządzeniach kubity realizowane są jako pojedyncze fotony, przesyłane pomiędzy nadawcą a odbiorcą.  
 
Przykładowy protokół uzgadniania klucza przy ich użyciu wygląda następująco:


  '''Protokół BB84'''
  '''Protokół BB84'''
Linia 136: Linia 138:
  4. Gracz B do każdego otrzymanego kubitu aplikuje z prawdopodobieństwem <math>\frac{1}{2}</math> bramkę Hadamarda.
  4. Gracz B do każdego otrzymanego kubitu aplikuje z prawdopodobieństwem <math>\frac{1}{2}</math> bramkę Hadamarda.
  5. Gracz B dokonuje pomiaru wszystkich kubitów.
  5. Gracz B dokonuje pomiaru wszystkich kubitów.
  6. Gracze A i B ogłaszają publicznie do których kubitów aplikowali bramkę Hadamarda
  6. Gracze A i B ogłaszają publicznie, do których kubitów aplikowali bramkę Hadamarda
  7. Tajnym kluczem stają się wartości kubitów przy których obaj gracze zachowali się tak samo  
  7. Tajnym kluczem stają się wartości kubitów, przy których obaj gracze zachowali się tak samo  
  (to znaczy obaj aplikowali bramkę lub obaj nie aplikowali).
  (to znaczy obaj aplikowali bramkę lub obaj nie aplikowali).


Ustalony w ten sposób klucz gracze mogą wykorzystać do zwykłego zaszyfrowania wiadomości (np. szyfrem Vernama).
Ustalony w ten sposób klucz gracze mogą wykorzystać do zwykłego zaszyfrowania wiadomości (np. szyfrem Vernama).


Dla każdego bitu dla którego gracze zachowali się tak samo, wynik pomiaru B powinien być identyczny ze stanem w jakim A początkowo przygotował qubit. W przypadku gdy tylko jeden z graczy zaaplikował bramkę Hadamarda, wynik pomiaru powinien być dokładnie losowy (dać <math>0</math> i <math>1</math> z prawdopodobieństwem <math>\frac{1}{2}</math>).
Dla każdego bitu, dla którego gracze zachowali się tak samo, wynik pomiaru B powinien być identyczny ze stanem w jakim A początkowo przygotował kubit. W przypadku, gdy tylko jeden z graczy zaaplikował bramkę Hadamarda, wynik pomiaru powinien być dokładnie losowy (dać <math>0</math> i <math>1</math> z prawdopodobieństwem <math>\frac{1}{2}</math>).


Trzeci gracz, usiłujący podsłuchać przesyłany klucz, musi to zrobić w punkcie 3. Teoretycznie może tu przeprowadzić dowolną kombinację operacji unitarnych i pomiarów. Gdyby wiedział na których kubitach gracz A użył bramki Hadamarda, mógłby  odwrócić jej działanie, zmierzyć wartości kubitów, przygotować je ponownie i przesłać do B. Nie mając tej informacji i nie mogąc skopiować wiernie przesyłanych bitów, ryzykuje że zaburzy przygotowane wcześniej stany.  
Trzeci gracz, usiłujący podsłuchać przesyłany klucz, musi to zrobić w punkcie 3. Teoretycznie może tu przeprowadzić dowolną kombinację operacji unitarnych i pomiarów. Gdyby wiedział, na których kubitach gracz A użył bramki Hadamarda, mógłby  odwrócić jej działanie, zmierzyć wartości kubitów, przygotować je ponownie i przesłać do B. Nie mając tej informacji i nie mogąc skopiować wiernie przesyłanych bitów, ryzykuje że, zaburzy przygotowane wcześniej stany.  
Do wykrycia podsłuchującego wystarczy zatem że po zakończeniu protokołu A i B ogłoszą kilka bitów ustalonego przez siebie klucza (usuwając je z klucza) - jeśli część z nich nie będzie się zgadzać, oznacza to że kanał komunikacyjny nie jest bezpieczny. Formalnie dowód tego bezpieczeństwa jest bardziej skomplikowany, tutaj pokażemy tylko jak to wygląda z punktu widzenia teorii informacji. Jeśli przesyłane pierwotnie wiadomości oznaczymy jako <math>X_A</math>, informacje które docierają do B jako <math>X_B</math> a informacje odczytane przez C jako <math>X_C</math>, to otrzymamy następującą interesującą własność:
Do wykrycia podsłuchującego wystarczy zatem, że po zakończeniu protokołu A i B ogłoszą kilka bitów ustalonego przez siebie klucza (usuwając je z klucza) - jeśli część z nich nie będzie się zgadzać, oznacza to, że kanał komunikacyjny nie jest bezpieczny. Formalnie dowód tego bezpieczeństwa jest bardziej skomplikowany, tutaj sygnalizujemy tylko, jak to wygląda z punktu widzenia teorii informacji. Jeśli przesyłane pierwotnie wiadomości oznaczymy jako <math>X_A</math>, informacje które docierają do B jako <math>X_B</math>, a informacje odczytane przez C jako <math>X_C</math>, to otrzymamy następującą interesującą własność:
<center><math>H(X_A) \ge I(X_A;X_B) + I(X_A;X_C)</math></center>
<center><math>H(X_A) \ge I(X_A;X_B) + I(X_A;X_C)</math></center>


Innymi słowy, tyle informacji ile gracz C „podsłucha” musi być przez B „stracone”. Jest to konsekwencja zasady nieoznaczoności, i powoduje że gracze A i B są w stanie z dużym prawdopodobieństwem wykryć ingerencję w kanał.
Innymi słowy, tyle informacji, ile gracz C „podsłucha”, musi być przez B „stracone”. Jest to konsekwencja zasady nieoznaczoności i powoduje, że gracze A i B są w stanie z dużym prawdopodobieństwem wykryć ingerencję w kanał.


Inne kwantowe protokoły kryptograficzne wykorzystują teleportację kwantową, ale ich zasada jest bardzo podobna. Bezpieczeństwo zawsze opiera się na zasadzie nieoznaczoności, i odrzucaniu komunikatów które zostały zmodyfikowane przez podsłuchującego.
Istnieją bardziej skomplikowane kwantowe protokoły kryptograficzne, np. wykorzystujące teleportację kwantową. Ich zasada działania jest jednak bardzo podobna. Bezpieczeństwo zawsze opiera się na zasadzie nieoznaczoności i wykrywaniu komunikatów, które zostały zmodyfikowane przez podsłuchującego.

Aktualna wersja na dzień 22:12, 11 wrz 2023

Doskonale bezpieczne szyfrowanie

Pokażemy teraz, jak przy pomocy teorii informacji możemy udowodnić, że jakiś system kryptograficzny jest całkowicie bezpieczny.


Definicja [Kryptosystem]

Kryptosystemem nazywamy trójkę zmiennych losowych:
  • M – ze skończonego zbioru wartości (wiadomości)
  • K – ze skończonego zbioru wartości 𝒦 (klucze)
  • C – ze skończonego zbioru wartości 𝒞 (zaszyfrowane wiadomości)

Dodatkowo musi istnieć funkcja deszyfrującaDec:𝒞×𝒦:

M=Dec(C,K)

(czyli z szyfru i klucza uzyskuje się w sposób jednoznaczny pierwotną wiadomość).

Kryptosystem jest idealnie bezpieczny, jeśli I(C;M)=0.


Przykład [Szyfr Vernama (one-time pad)]

Definiujemy =𝒦=𝒞={0,1}n dla pewnego n i

C=MK

Gdzie oznacza XOR po bitach (np. 101101110110=011011). Tym samym Dec(v,w)=vw

Dodatkowo zakładamy, że K jest wybierana z rozkładem jednostajnym na {0,1}n, czyli v{0,1}np(K=v)=12n, i że M jest zmienną niezależną od K.


Przy powyższych założeniach Szyfr Vernama jest idealnie bezpieczny. Aby to udowodnić, wystarczy pokazać że M i C są niezależne, czyli że p(C=wM=u)=p(C=w)p(M=u) (patrz twierdzenie o entropii łącznej).

Zaczynamy od:

p(C=w)=up(K=uw|M=u)p(M=u)=up(K=uw)p(M=u) (bo M i K są niezależne) =u12np(M=u)=12n

Jeśli teraz skorzystamy z definicji C i niezależności M i K, dostajemy:

p(C=wM=u)=p(K=wvM=u)=12np(M=u)


Twierdzenie [Pesymistyczne Twierdzenie Shannona]

Każdy idealnie bezpieczny kryptosystem musi zapewniać:

H(K)H(M)

W konsekwencji (na postawie kodowania Shannona-Fano):

Lr(K)Hr(K)Hr(M)Lr(M)1

Czyli aby uzyskać idealną tajność, musimy użyć klucza równie długiego, jak przesyłana wiadomość. Jest to oczywiście bardzo niepraktyczne, ale w niektórych zastosowaniach konieczne.

Dowód

Rozpisujemy:
H(M)=H(M|C,K)+I(M;C)=H(M)H(M|C)+I(M;K|C)=H(M|C)H(M|K,C)

Ale z definicji M jest funkcją (C,K), czyli H(M|C;K)=0. Wymagamy, żeby I(M;C)=0, a więc:

H(M)=I(M;K|C)

Rozpisując analogicznie H(K), uzyskujemy:

H(K)=H(K|M,C)+I(K;C)+I(K;M|C)=H(M)


Ważną cechą informacji jest niemożliwość jej powiększenia przez lokalne obliczenia. Niech A i B będą zmiennymi losowymi. Przykładowo, wyobraźmy sobie, że A określa jakieś dane eksperymentalne, a B naszą wiedzę o nich. Okazuje się, że wszelkie operacje, jakich dokonamy na B (analiza, przetwarzanie danych itp.), mogą jedynie zmniejszyć naszą informację o A.


Lemat

Jeśli A i C są niezależne warunkowo przy danym B (czyli I(A;C|B)=0), to
I(A;C)I(A;B).

Dowód

Skorzystajmy z zasady łańcuchowej:

I(A;(B,C))=H(A)H(A|B,C)=I(A;C)=H(A)H(A|C)+I(A;B|C)=H(A|C)H(A|B,C)

Z symetrii, używając niezależności warunkowej A i C, dostaniemy:

I(A;(B,C))=I(A;B)+I(A;C|B)=0

Zauważmy, że nierówność staje się równością, o ile dodatkowo A i B są warunkowo niezależne przy danym C (czyli I(A;B|C)=0).


Wniosek

Dla dowolnej funkcji f,
I(A;f(B))I(A;B)

Dowód

Na podstawie lematu, gdyż
I(A;f(B)|B)=H(f(B)|B)=0H(f(B)|A,B)=0=0

Kryptografia kwantowa

Korzystanie z szyfru Vernama jest bardzo niewygodne z powodu konieczności wcześniejszego ustalenia klucza równie długiego, jak przesyłana wiadomość. Dlatego w większości zastosowań rezygnuje się z idealnej tajności na rzecz bezpieczeństwa złożonościowego. W takich metodach (stosowanych praktycznie wszędzie w sieci) bezpieczeństwo opiera się na trudności obliczeniowej rozwiązania pewnych problemów algorytmicznych. Odszyfrowanie wiadomości bez znajomości klucza jest możliwe, ale zakłada się że nikt nie dysponuje wystarczająco potężną mocą obliczeniową, aby tego dokonać. Z punktu widzenia teorii informacji, zaszyfrowane wiadomości zawierają jednak pełną informację, czyli I(C;M)=H(M).

Obecnie jedyną metodą pozwalającą uzyskać idealną tajność bez wcześniejszego ustalenia klucza jest zastosowanie kryptografii kwantowej. W ogólności kwantowa teoria informacji nie mieści się w zakresie tego kursu, ale ogólne idee postaramy się tu przedstawić.


W kwantowej teorii zastępuje się klasyczne bity ich odpowiednikami, tzw. kubitami. Kubit jest najmniejszą porcją kwantowej informacji. Tak jak klasyczny bit może przyjmować wartości 0 i 1. W odróżnieniu od niego, może jednak przyjmować też dowolną superpozycję tych wartości, czyli być w stanie „pomiędzy” 0 a 1. Formalnie jego stan można opisać wektorem z dwuwymiarowej przestrzeni

|ψ=α|0+β|1

gdzie |0 i |1 oznaczają wektory bazowe, a liczby zespolone α i β nazywane są amplitudami.


Pomiar takiego kubitu daje w wyniku 0 z prawdopodobieństwem |α|2 i 1 z prawdopodobieństwem |β|2 (dlatego zawsze |α|2+|β|2=1).

Po dokonaniu pomiaru stan kubitu ustala się na zmierzonym wektorze (a więc po pomiarze |ψ=|0 lub |ψ=|1). Ta własność jest kluczowa dla bezpieczeństwa kryptografii kwantowej.

Na kubitach można dokonywać operacji unitarnych (to znaczy takich, które nie zmieniają wartości |α|2+|β|2). Przykładem takiej operacji jest bramka Hadamarda

H=12(1111)

Warto zauważyć, że ta bramka jest inwolucją

H2=12(1111)12(1111)=12(1+111111+1)=(1001)


Układy wielu kubitów opisuje się analogicznie do jednego kubitu: dwa bity mogą przyjmować 4 możliwe wartości, dlatego układ dwóch kubitów opisywany jest jako wektor z czterowymiarowej przestrzeni. Układ trzech kubitów opisywany jest jako wektor z ośmiowymiarowej przestrzeni itd. Również w tym przypadku jedyne dopuszczalne operacje na takich układach to pomiary oraz operacje unitarne.

Istotną cechą operacji unitarnych jest ich odwracalność - dla każdej z nich istnieje macierz odwrotna. Pociąga to za sobą krytyczną własność informatyki kwantowej, nie mającą odpowiednika w informatyce klasycznej:


Twierdzenie [Brak klonowania]

Nie istnieje operacja kwantowa kopiująca wiernie dowolne kubity, tzn. taka U, że dla dowolnego |ψ:

U|ψ|0=|ψ|ψ


Przy pomocy operacji unitarnych na układach kubitów można projektować bardzo efektywne algorytmy, w niektórych przypadkach wykładniczo efektywniejsze od najlepszych znanych algorytmów klasycznych (jak algorytm faktoryzacji Shora). Praktyczna ich implementacja jest jednak bardzo trudna i do tej pory nikomu nie udało się przeprowadzić dużego obliczenia kwantowego. Operowanie na pojedynczych kubitach jest za to dosyć proste; istnieją komercyjne urządzenia używające ich do bezpiecznego przesyłania danych. W takich urządzeniach kubity realizowane są jako pojedyncze fotony, przesyłane pomiędzy nadawcą a odbiorcą.

Przykładowy protokół uzgadniania klucza przy ich użyciu wygląda następująco:

Protokół BB84
1. Gracz A przygotowuje losowy ciąg kubitów z następującym rozkładem:
|ψ={|0z prawd.12|1z prawd.12
2. Gracz A do każdego kubitu aplikuje z prawdopodobieństwem 12 bramkę Hadamarda.
3. Gracz A wysyła tak przygotowane kubity do gracza B
4. Gracz B do każdego otrzymanego kubitu aplikuje z prawdopodobieństwem 12 bramkę Hadamarda.
5. Gracz B dokonuje pomiaru wszystkich kubitów.
6. Gracze A i B ogłaszają publicznie, do których kubitów aplikowali bramkę Hadamarda
7. Tajnym kluczem stają się wartości kubitów, przy których obaj gracze zachowali się tak samo 
(to znaczy obaj aplikowali bramkę lub obaj nie aplikowali).

Ustalony w ten sposób klucz gracze mogą wykorzystać do zwykłego zaszyfrowania wiadomości (np. szyfrem Vernama).

Dla każdego bitu, dla którego gracze zachowali się tak samo, wynik pomiaru B powinien być identyczny ze stanem w jakim A początkowo przygotował kubit. W przypadku, gdy tylko jeden z graczy zaaplikował bramkę Hadamarda, wynik pomiaru powinien być dokładnie losowy (dać 0 i 1 z prawdopodobieństwem 12).

Trzeci gracz, usiłujący podsłuchać przesyłany klucz, musi to zrobić w punkcie 3. Teoretycznie może tu przeprowadzić dowolną kombinację operacji unitarnych i pomiarów. Gdyby wiedział, na których kubitach gracz A użył bramki Hadamarda, mógłby odwrócić jej działanie, zmierzyć wartości kubitów, przygotować je ponownie i przesłać do B. Nie mając tej informacji i nie mogąc skopiować wiernie przesyłanych bitów, ryzykuje że, zaburzy przygotowane wcześniej stany. Do wykrycia podsłuchującego wystarczy zatem, że po zakończeniu protokołu A i B ogłoszą kilka bitów ustalonego przez siebie klucza (usuwając je z klucza) - jeśli część z nich nie będzie się zgadzać, oznacza to, że kanał komunikacyjny nie jest bezpieczny. Formalnie dowód tego bezpieczeństwa jest bardziej skomplikowany, tutaj sygnalizujemy tylko, jak to wygląda z punktu widzenia teorii informacji. Jeśli przesyłane pierwotnie wiadomości oznaczymy jako XA, informacje które docierają do B jako XB, a informacje odczytane przez C jako XC, to otrzymamy następującą interesującą własność:

H(XA)I(XA;XB)+I(XA;XC)

Innymi słowy, tyle informacji, ile gracz C „podsłucha”, musi być przez B „stracone”. Jest to konsekwencja zasady nieoznaczoności i powoduje, że gracze A i B są w stanie z dużym prawdopodobieństwem wykryć ingerencję w kanał.

Istnieją bardziej skomplikowane kwantowe protokoły kryptograficzne, np. wykorzystujące teleportację kwantową. Ich zasada działania jest jednak bardzo podobna. Bezpieczeństwo zawsze opiera się na zasadzie nieoznaczoności i wykrywaniu komunikatów, które zostały zmodyfikowane przez podsłuchującego.