• Nie Znaleziono Wyników

krypt08.pdf ,

N/A
N/A
Protected

Academic year: 2021

Share "krypt08.pdf ,"

Copied!
98
0
0

Pełen tekst

(1)

Kryptografia

z elementami kryptografii kwantowej

Ryszard Tanaś

http://zon8.physd.amu.edu.pl/~tanas

Wykład 8

(2)

Spis treści

13 Szyfrowanie strumieniowe i generatory ciągów

pseudo-losowych

3

13.1 Synchroniczne szyfrowanie strumieniowe

. . . .

3

13.2 Samosynchronizujące (asynchroniczne) szyfrowanie

stru-mieniowe

. . . .

5

13.3 Generatory ciągów pseudolosowych

. . . .

8

13.4 LFSR — Linear Feedback Shift Register

. . . .

9

13.5 Generatory sterowane zegarem

. . . .

17

13.6 Generatory, których bezpieczeństwo oparte jest na

trudnościach obliczeniowych

. . . .

20

(3)

13 Szyfrowanie strumieniowe i generatory ciągów

pseudolosowych

13.1 Synchroniczne szyfrowanie strumieniowe

Ciąg bitów klucza generowany jest niezależnie od szyfrowanej

wiadomości i kryptogramu.

• Musi być zachowana synchronizacja pomiędzy nadawcą i odbiorcą. • Zmiana bitu kryptogramu (przekłamanie) nie wpływa na możliwość

deszyfrowania pozostałych bitów.

• Dodanie lub usunięcie bitu powoduje utratę synchronizacji.

• Istnieje możliwość zmiany wybranych bitów kryptogramu, a co za tym idzie zmiany deszyfrowanej wiadomości.

(4)

13 Szyfrowanie strumieniowe i generatory ciągów

pseudolosowych

13.1 Synchroniczne szyfrowanie strumieniowe

Ciąg bitów klucza generowany jest niezależnie od szyfrowanej

wiadomości i kryptogramu.

• Musi być zachowana synchronizacja pomiędzy nadawcą i odbiorcą.

• Zmiana bitu kryptogramu (przekłamanie) nie wpływa na możliwość deszyfrowania pozostałych bitów.

• Dodanie lub usunięcie bitu powoduje utratę synchronizacji.

• Istnieje możliwość zmiany wybranych bitów kryptogramu, a co za tym idzie zmiany deszyfrowanej wiadomości.

(5)

13 Szyfrowanie strumieniowe i generatory ciągów

pseudolosowych

13.1 Synchroniczne szyfrowanie strumieniowe

Ciąg bitów klucza generowany jest niezależnie od szyfrowanej

wiadomości i kryptogramu.

• Musi być zachowana synchronizacja pomiędzy nadawcą i odbiorcą.

• Zmiana bitu kryptogramu (przekłamanie) nie wpływa na możliwość deszyfrowania pozostałych bitów.

• Dodanie lub usunięcie bitu powoduje utratę synchronizacji.

• Istnieje możliwość zmiany wybranych bitów kryptogramu, a co za tym idzie zmiany deszyfrowanej wiadomości.

(6)

13 Szyfrowanie strumieniowe i generatory ciągów

pseudolosowych

13.1 Synchroniczne szyfrowanie strumieniowe

Ciąg bitów klucza generowany jest niezależnie od szyfrowanej

wiadomości i kryptogramu.

• Musi być zachowana synchronizacja pomiędzy nadawcą i odbiorcą. • Zmiana bitu kryptogramu (przekłamanie) nie wpływa na możliwość

deszyfrowania pozostałych bitów.

• Dodanie lub usunięcie bitu powoduje utratę synchronizacji.

• Istnieje możliwość zmiany wybranych bitów kryptogramu, a co za tym idzie zmiany deszyfrowanej wiadomości.

(7)

13 Szyfrowanie strumieniowe i generatory ciągów

pseudolosowych

13.1 Synchroniczne szyfrowanie strumieniowe

Ciąg bitów klucza generowany jest niezależnie od szyfrowanej

wiadomości i kryptogramu.

• Musi być zachowana synchronizacja pomiędzy nadawcą i odbiorcą. • Zmiana bitu kryptogramu (przekłamanie) nie wpływa na możliwość

deszyfrowania pozostałych bitów.

• Dodanie lub usunięcie bitu powoduje utratę synchronizacji.

• Istnieje możliwość zmiany wybranych bitów kryptogramu, a co za tym idzie zmiany deszyfrowanej wiadomości.

(8)
(9)

Szyfrowanie

(10)

Szyfrowanie

GK

(11)

Szyfrowanie GK -K k-i

mi ?

(12)

Szyfrowanie GK -K k-i

mi ? - ci

(13)

Szyfrowanie GK -K k-i

mi ? - ci

Tekst jawny szyfrowany jest bit po bicie (one-time pad).

Losowo generowane bity k1, k2, . . . , ki stanowią bity klucza, które są

dodawane modulo 2 (operacja xor) do bitów wiadomości m1, m2, . . . , mi

w sposób ciągły dając kolejne bity kryptogramu c1, c2, . . . , ci, gdzie

(14)

Szyfrowanie GK -K k-i

mi ? - ci

Tekst jawny szyfrowany jest bit po bicie (one-time pad).

Losowo generowane bity k1, k2, . . . , ki stanowią bity klucza, które są

dodawane modulo 2 (operacja xor) do bitów wiadomości m1, m2, . . . , mi

w sposób ciągły dając kolejne bity kryptogramu c1, c2, . . . , ci, gdzie

ci = mi ⊕ ki

(15)

Szyfrowanie GK -K k-i

mi ? - ci

Tekst jawny szyfrowany jest bit po bicie (one-time pad).

Losowo generowane bity k1, k2, . . . , ki stanowią bity klucza, które są

dodawane modulo 2 (operacja xor) do bitów wiadomości m1, m2, . . . , mi

w sposób ciągły dając kolejne bity kryptogramu c1, c2, . . . , ci, gdzie

ci = mi ⊕ ki

Deszyfrowanie

(16)

Szyfrowanie GK -K k-i

mi ? - ci

Tekst jawny szyfrowany jest bit po bicie (one-time pad).

Losowo generowane bity k1, k2, . . . , ki stanowią bity klucza, które są

dodawane modulo 2 (operacja xor) do bitów wiadomości m1, m2, . . . , mi

w sposób ciągły dając kolejne bity kryptogramu c1, c2, . . . , ci, gdzie

ci = mi ⊕ ki

Deszyfrowanie

GK

(17)

Szyfrowanie GK -K k-i

mi ? - ci

Tekst jawny szyfrowany jest bit po bicie (one-time pad).

Losowo generowane bity k1, k2, . . . , ki stanowią bity klucza, które są

dodawane modulo 2 (operacja xor) do bitów wiadomości m1, m2, . . . , mi

w sposób ciągły dając kolejne bity kryptogramu c1, c2, . . . , ci, gdzie

ci = mi ⊕ ki Deszyfrowanie GK -K k-i

ci ?

(18)

Szyfrowanie GK -K k-i

mi ? - ci

Tekst jawny szyfrowany jest bit po bicie (one-time pad).

Losowo generowane bity k1, k2, . . . , ki stanowią bity klucza, które są

dodawane modulo 2 (operacja xor) do bitów wiadomości m1, m2, . . . , mi

w sposób ciągły dając kolejne bity kryptogramu c1, c2, . . . , ci, gdzie

ci = mi ⊕ ki Deszyfrowanie GK -K k-i

ci ? - mi

(19)

13.2 Samosynchronizujące (asynchroniczne) szyfrowanie

strumieniowe

• CFB (Cipher Feedback) z blokiem jednobitowym

• Utrata lub dodanie bitu w kryptogramie powoduje utratę tylko kawałka wiadomości — samosynchronizacja.

• Ograniczona propagacja błędów.

• Zmiana bitu kryptogramu powoduje, że kilka innych bitów będzie deszyfrowanych błędnie — łatwiej wykryć taką zmianę.

• Jednak na skutek samosynchronizacji wykrycie zmian w

kryptogramie jest trudniejsze (jeśli zmiany dotyczą tylko części kryptogramu, to dalsza część jest deszyfrowana poprawnie).

(20)

13.2 Samosynchronizujące (asynchroniczne) szyfrowanie

strumieniowe

• CFB (Cipher Feedback) z blokiem jednobitowym

• Utrata lub dodanie bitu w kryptogramie powoduje utratę tylko kawałka wiadomości — samosynchronizacja.

• Ograniczona propagacja błędów.

• Zmiana bitu kryptogramu powoduje, że kilka innych bitów będzie deszyfrowanych błędnie — łatwiej wykryć taką zmianę.

• Jednak na skutek samosynchronizacji wykrycie zmian w

kryptogramie jest trudniejsze (jeśli zmiany dotyczą tylko części kryptogramu, to dalsza część jest deszyfrowana poprawnie).

(21)

13.2 Samosynchronizujące (asynchroniczne) szyfrowanie

strumieniowe

• CFB (Cipher Feedback) z blokiem jednobitowym

• Utrata lub dodanie bitu w kryptogramie powoduje utratę tylko kawałka wiadomości — samosynchronizacja.

• Ograniczona propagacja błędów.

• Zmiana bitu kryptogramu powoduje, że kilka innych bitów będzie deszyfrowanych błędnie — łatwiej wykryć taką zmianę.

• Jednak na skutek samosynchronizacji wykrycie zmian w

kryptogramie jest trudniejsze (jeśli zmiany dotyczą tylko części kryptogramu, to dalsza część jest deszyfrowana poprawnie).

(22)

13.2 Samosynchronizujące (asynchroniczne) szyfrowanie

strumieniowe

• CFB (Cipher Feedback) z blokiem jednobitowym

• Utrata lub dodanie bitu w kryptogramie powoduje utratę tylko kawałka wiadomości — samosynchronizacja.

• Ograniczona propagacja błędów.

• Zmiana bitu kryptogramu powoduje, że kilka innych bitów będzie deszyfrowanych błędnie — łatwiej wykryć taką zmianę.

• Jednak na skutek samosynchronizacji wykrycie zmian w

kryptogramie jest trudniejsze (jeśli zmiany dotyczą tylko części kryptogramu, to dalsza część jest deszyfrowana poprawnie).

(23)

13.2 Samosynchronizujące (asynchroniczne) szyfrowanie

strumieniowe

• CFB (Cipher Feedback) z blokiem jednobitowym

• Utrata lub dodanie bitu w kryptogramie powoduje utratę tylko kawałka wiadomości — samosynchronizacja.

• Ograniczona propagacja błędów.

• Zmiana bitu kryptogramu powoduje, że kilka innych bitów będzie deszyfrowanych błędnie — łatwiej wykryć taką zmianę.

• Jednak na skutek samosynchronizacji wykrycie zmian w

kryptogramie jest trudniejsze (jeśli zmiany dotyczą tylko części kryptogramu, to dalsza część jest deszyfrowana poprawnie).

(24)

13.2 Samosynchronizujące (asynchroniczne) szyfrowanie

strumieniowe

• CFB (Cipher Feedback) z blokiem jednobitowym

• Utrata lub dodanie bitu w kryptogramie powoduje utratę tylko kawałka wiadomości — samosynchronizacja.

• Ograniczona propagacja błędów.

• Zmiana bitu kryptogramu powoduje, że kilka innych bitów będzie deszyfrowanych błędnie — łatwiej wykryć taką zmianę.

• Jednak na skutek samosynchronizacji wykrycie zmian w

kryptogramie jest trudniejsze (jeśli zmiany dotyczą tylko części kryptogramu, to dalsza część jest deszyfrowana poprawnie).

(25)
(26)

Szyfrowanie

(27)

Szyfrowanie

Rejestr przesuwający ? Szyfrowanie -K n

(28)

Szyfrowanie

Rejestr przesuwający ? Szyfrowanie -K n ? Kryptogram n

(29)

Szyfrowanie

Rejestr przesuwający ? Szyfrowanie -K n ? Kryptogram n ?

mi -ki

(30)

Szyfrowanie

Rejestr przesuwający ? Szyfrowanie -K n ? Kryptogram n ?

mi -ki ci

(31)

-Szyfrowanie

Rejestr przesuwający ? Szyfrowanie -K n ? Kryptogram n ?

mi -ki ci -? 

(32)
(33)

Deszyfrowanie

(34)

Deszyfrowanie

Rejestr przesuwający ? Szyfrowanie -K n

(35)

Deszyfrowanie

Rejestr przesuwający ? Szyfrowanie -K n ? Kryptogram n

(36)

Deszyfrowanie

Rejestr przesuwający ? Szyfrowanie -K n ? Kryptogram n ci 6 

(37)

Deszyfrowanie

Rejestr przesuwający ? Szyfrowanie -K n ? Kryptogram n ci 6   ?

ki

(38)

Deszyfrowanie

Rejestr przesuwający ? Szyfrowanie -K n ? Kryptogram n ci 6   ?

ki mi 

(39)

13.3 Generatory ciągów pseudolosowych

Do generowania klucza potrzebny jest generator losowego ciągu bitów. Generowanie prawdziwie losowego ciągu jest trudne, więc zwykle stosuje się ciągi pseudolosowe.

Ciągi pseudolosowe to ciągi, które spełniają statystyczne własności ciągów losowych, ale generowane są w sposób deterministyczny:

generator startujący z takiego samego stanu początkowego generuje taki sam ciąg bitów. Z tego względu ciągi pseudolosowe używane w kryptografii muszą spełniać warunki znacznie ostrzejsze niż np. ciągi pseudolosowe używane w symulacjach.

(40)

13.3 Generatory ciągów pseudolosowych

Do generowania klucza potrzebny jest generator losowego ciągu bitów. Generowanie prawdziwie losowego ciągu jest trudne, więc zwykle stosuje się ciągi pseudolosowe.

Ciągi pseudolosowe to ciągi, które spełniają statystyczne własności ciągów losowych, ale generowane są w sposób deterministyczny:

generator startujący z takiego samego stanu początkowego generuje taki sam ciąg bitów. Z tego względu ciągi pseudolosowe używane w kryptografii muszą spełniać warunki znacznie ostrzejsze niż np. ciągi pseudolosowe używane w symulacjach.

(41)

13.3 Generatory ciągów pseudolosowych

Do generowania klucza potrzebny jest generator losowego ciągu bitów. Generowanie prawdziwie losowego ciągu jest trudne, więc zwykle stosuje się ciągi pseudolosowe.

Ciągi pseudolosowe to ciągi, które spełniają statystyczne własności ciągów losowych, ale generowane są w sposób deterministyczny:

generator startujący z takiego samego stanu początkowego generuje taki sam ciąg bitów. Z tego względu ciągi pseudolosowe używane w kryptografii muszą spełniać warunki znacznie ostrzejsze niż np. ciągi pseudolosowe używane w symulacjach.

(42)

13.4 LFSR — Linear Feedback Shift Register

(Rejestr przesuwający z liniowym sprzężeniem zwrotnym)

• LFSR posiada rejestr przesuwający o długości

n

bitów, który

na początku zawiera losowe bity.

• Niektóre bity rejestru są poddawane operacji

xor

(

) i wynik

zastępuje najstarszy bit rejestru, jednocześnie pozostałe bity

przesuwane są o jedną pozycję w prawo i

najmłodszy bit

staje

się kolejnym bitem generowanego ciągu.

(43)

13.4 LFSR — Linear Feedback Shift Register

(Rejestr przesuwający z liniowym sprzężeniem zwrotnym)

• LFSR posiada rejestr przesuwający o długości

n

bitów, który

na początku zawiera losowe bity.

• Niektóre bity rejestru są poddawane operacji

xor

(

) i wynik

zastępuje najstarszy bit rejestru, jednocześnie pozostałe bity

przesuwane są o jedną pozycję w prawo i

najmłodszy bit

staje

się kolejnym bitem generowanego ciągu.

(44)

13.4 LFSR — Linear Feedback Shift Register

(Rejestr przesuwający z liniowym sprzężeniem zwrotnym)

• LFSR posiada rejestr przesuwający o długości

n

bitów, który

na początku zawiera losowe bity.

• Niektóre bity rejestru są poddawane operacji

xor

(

) i wynik

zastępuje najstarszy bit rejestru, jednocześnie pozostałe bity

przesuwane są o jedną pozycję w prawo i

najmłodszy bit

staje

się kolejnym bitem generowanego ciągu.

(45)
(46)

LFSR — Linear Feedback Shift Register

Rejestr przesuwający b1 b2 · · · bk−1 bk bk+1 · · · bn−2 bn−1 bn

(47)

LFSR — Linear Feedback Shift Register

Rejestr przesuwający b1 b2 · · · bk−1 bk bk+1 · · · bn−2 bn−1 bn

 -@ @ @ @ @ @ @ R       

(48)

LFSR — Linear Feedback Shift Register

Rejestr przesuwający b1 b2 · · · bk−1 bk bk+1 · · · bn−2 bn−1 bn

 -@ @ @ @ @ @ @ R        - - bi

(49)

Przykład:

Weźmy rejestr 4-bitowy, którego pierwszy i czwarty bit są

poddawane operacji xor i niech początkowo rejestr zawiera same jedynki. Wtedy otrzymujemy następujące stany rejestru:

(50)

Przykład:

Weźmy rejestr 4-bitowy, którego pierwszy i czwarty bit są

poddawane operacji xor i niech początkowo rejestr zawiera same jedynki. Wtedy otrzymujemy następujące stany rejestru:

1 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 1 0 0 0 1 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 1 0 0 1 1 1 0

(51)

czyli:

(52)

czyli:

1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 . . .

Ponieważ n-bitowy rejestr może znaleźć się w jednym z 2n − 1 stanów, więc teoretycznie może on generować ciąg o długości 2n − 1 bitów.

Potem ciąg się powtarza. (Wykluczamy ciąg samych zer, który daje niekończący się ciąg zer)

(53)

• LFSR ma słabą wartość kryptograficzną gdyż znajomość

2n

kolejnych bitów ciągu pozwala na znalezienie wartości

generowanych od tego miejsca.

• LFSR działa jednak bardzo szybko, zwłaszcza jeśli jest to układ

hardware’owy, i stąd jest on bardzo atrakcyjny w praktycznych

zastosowaniach. Można konstruować bardziej skomplikowane

układy zawierające kilka LFSR i nieliniową funkcję

f

(54)

• LFSR ma słabą wartość kryptograficzną gdyż znajomość

2n

kolejnych bitów ciągu pozwala na znalezienie wartości

generowanych od tego miejsca.

• LFSR działa jednak bardzo szybko, zwłaszcza jeśli jest to układ

hardware’owy, i stąd jest on bardzo atrakcyjny w praktycznych

zastosowaniach. Można konstruować bardziej skomplikowane

układy zawierające kilka LFSR i nieliniową funkcję

f

(55)
(56)

Układ kilku LFSR i nieliniowej funkcji

f

LFSR 1 LFSR 2 r r r LFSR n

(57)

Układ kilku LFSR i nieliniowej funkcji

f

LFSR 1 LFSR 2 r r r LFSR n f

(58)

-Układ kilku LFSR i nieliniowej funkcji

f

LFSR 1 LFSR 2 r r r LFSR n f -- bi

(59)
(60)

Przykład:

Generator Geffe

LFSR 1 x1 LFSR 2 x2 LFSR 3 x3 -A A

(61)

-Przykład:

Generator Geffe

LFSR 1 x1 LFSR 2 x2 LFSR 3 x3 -A A -    x1 ∧ x2 ¬ x2 ∧ x3

? 6

(62)

Przykład:

Generator Geffe

LFSR 1 x1 LFSR 2 x2 LFSR 3 x3 -A A -    x1 ∧ x2 ¬ x2 ∧ x3

? 6 -f (x1, x2, x3) f (x1, x2, x3) = (x1 ∧ x2) ⊕ (¬ x2 ∧ x3)

(63)

• Generator Geffe ma słabe własności kryptograficzne ze

względu na korelacje pomiędzy generowanymi bitami i bitami

LFSR 1 lub LFSR 2

(64)

• Generator Geffe ma słabe własności kryptograficzne ze

względu na korelacje pomiędzy generowanymi bitami i bitami

LFSR 1 lub LFSR 2

Niech y(t) = f (x1(t), x2(t), x3(t)), wtedy

P (y(t) = x1(t)) = P (x2(t) = 1) + P (x2(t) = 0) · P (x3(t) = x1(t)) = 12 + 12 · 12 = 34, i podobnie dla x3(t).

(65)

13.5 Generatory sterowane zegarem

Generator o zmiennym kroku, przemienny Stop-and-Go

(66)

13.5 Generatory sterowane zegarem

Generator o zmiennym kroku, przemienny Stop-and-Go

alternating step generator, Stop-and-Go

(67)

13.5 Generatory sterowane zegarem

Generator o zmiennym kroku, przemienny Stop-and-Go

alternating step generator, Stop-and-Go

-Zegar LFSR 1 -A A -   

(68)

-13.5 Generatory sterowane zegarem

Generator o zmiennym kroku, przemienny Stop-and-Go

alternating step generator, Stop-and-Go

-Zegar LFSR 1 -A A -    -LFSR 2 LFSR 3

? 6 -Bity

(69)

• LFSR

1

jest przesuwany w każdym takcie

zegara.

• Jeśli na wyjściu LFSR

1

jest

1

to LFSR

2

jest przesuwany;

LFSR

3

nie jest przesuwany (poprzedni bit jest powtarzany).

• Jeśli na wyjściu LFSR

1

jest

0

to LFSR

3

jest przesuwany;

LFSR

2

nie jest przesuwany (poprzedni bit jest powtarzany).

• Wyjściowe bity LFSR

2

i LFSR

3

są dodawane modulo

2

(

)

(70)

• LFSR

1

jest przesuwany w każdym takcie

zegara.

• Jeśli na wyjściu LFSR

1

jest

1

to LFSR

2

jest przesuwany;

LFSR

3

nie jest przesuwany (poprzedni bit jest powtarzany).

• Jeśli na wyjściu LFSR

1

jest

0

to LFSR

3

jest przesuwany;

LFSR

2

nie jest przesuwany (poprzedni bit jest powtarzany).

• Wyjściowe bity LFSR

2

i LFSR

3

są dodawane modulo

2

(

)

(71)

• LFSR

1

jest przesuwany w każdym takcie

zegara.

• Jeśli na wyjściu LFSR

1

jest

1

to LFSR

2

jest przesuwany;

LFSR

3

nie jest przesuwany (poprzedni bit jest powtarzany).

• Jeśli na wyjściu LFSR

1

jest

0

to LFSR

3

jest przesuwany;

LFSR

2

nie jest przesuwany (poprzedni bit jest powtarzany).

• Wyjściowe bity LFSR

2

i LFSR

3

są dodawane modulo

2

(

)

(72)

• LFSR

1

jest przesuwany w każdym takcie

zegara.

• Jeśli na wyjściu LFSR

1

jest

1

to LFSR

2

jest przesuwany;

LFSR

3

nie jest przesuwany (poprzedni bit jest powtarzany).

• Jeśli na wyjściu LFSR

1

jest

0

to LFSR

3

jest przesuwany;

LFSR

2

nie jest przesuwany (poprzedni bit jest powtarzany).

• Wyjściowe bity LFSR

2

i LFSR

3

są dodawane modulo

2

(

)

(73)
(74)

Generator obcinający (shrinking generator)

(75)

Generator obcinający (shrinking generator)

-Zegar LFSR 1 x1 LFSR 2 x2 -? f

(76)

Generator obcinający (shrinking generator)

-Zegar LFSR 1 x1 LFSR 2 x2 -? f Bity -f =  wyślij x2 jeśli x1 = 1 opuść x2 jeśli x1 = 0

(77)

13.6 Generatory, których bezpieczeństwo oparte jest na

trudnościach obliczeniowych

13.6.1 Generator Blum-Micali

W generatorze tym wykorzystuje się trudność w obliczaniu logarytmu dyskretnego. Wybieramy dwie liczby pierwsze a i p oraz liczbę x0

(zarodek), a następnie obliczamy

xi+1 = axi (mod p) dla i = 1, 2, 3, . . .

Pseudolosowy ciąg bitów tworzymy w następujący sposób:

ki =



1 jeżeli xi < (p − 1)/2

(78)

13.6 Generatory, których bezpieczeństwo oparte jest na

trudnościach obliczeniowych

13.6.1 Generator Blum-Micali

W generatorze tym wykorzystuje się trudność w obliczaniu logarytmu dyskretnego. Wybieramy dwie liczby pierwsze a i p oraz liczbę x0

(zarodek), a następnie obliczamy

xi+1 = axi (mod p) dla i = 1, 2, 3, . . .

Pseudolosowy ciąg bitów tworzymy w następujący sposób:

ki =



1 jeżeli xi < (p − 1)/2

(79)

13.6 Generatory, których bezpieczeństwo oparte jest na

trudnościach obliczeniowych

13.6.1 Generator Blum-Micali

W generatorze tym wykorzystuje się trudność w obliczaniu logarytmu dyskretnego. Wybieramy dwie liczby pierwsze a i p oraz liczbę x0

(zarodek), a następnie obliczamy

xi+1 = axi (mod p) dla i = 1, 2, 3, . . .

Pseudolosowy ciąg bitów tworzymy w następujący sposób:

ki =



1 jeżeli xi < (p − 1)/2

(80)

13.6.2 Generator RSA

Generator oparty na trudności z faktoryzacją liczb.

Wybieramy dwie liczby pierwsze p i q (N = pq) oraz liczbę e

względnie pierwszą z (p − 1)(q − 1). Wybieramy losową liczbę (zarodek) x0 mniejszą od N, a następnie obliczamy

xi+1 = xei (mod N )

(81)

13.6.2 Generator RSA

Generator oparty na trudności z faktoryzacją liczb.

Wybieramy dwie liczby pierwsze p i q (N = pq) oraz liczbę e

względnie pierwszą z (p − 1)(q − 1). Wybieramy losową liczbę (zarodek) x0 mniejszą od N, a następnie obliczamy

xi+1 = xei (mod N )

(82)

13.6.2 Generator RSA

Generator oparty na trudności z faktoryzacją liczb.

Wybieramy dwie liczby pierwsze p i q (N = pq) oraz liczbę e

względnie pierwszą z (p − 1)(q − 1). Wybieramy losową liczbę (zarodek) x0 mniejszą od N, a następnie obliczamy

xi+1 = xei (mod N )

(83)

13.6.2 Generator RSA

Generator oparty na trudności z faktoryzacją liczb.

Wybieramy dwie liczby pierwsze p i q (N = pq) oraz liczbę e

względnie pierwszą z (p − 1)(q − 1). Wybieramy losową liczbę (zarodek) x0 mniejszą od N, a następnie obliczamy

xi+1 = xei (mod N )

(84)

13.6.3 Generator Blum-Blum-Shub — BBS

Znajdujemy dwie duże liczby pierwsze p i q, takie, że p ≡ 3 (mod 4) oraz q ≡ 3 (mod 4); N = pq.

Wybieramy losową liczbę x względnie pierwszą z N, a następnie obliczamy

x0 = x2 (mod N ) x0 stanowi zarodek dla generatora.

Liczymy

xi+1 = x2i (mod N )

(85)

13.6.3 Generator Blum-Blum-Shub — BBS

Znajdujemy dwie duże liczby pierwsze p i q, takie, że p ≡ 3 (mod 4) oraz q ≡ 3 (mod 4); N = pq.

Wybieramy losową liczbę x względnie pierwszą z N, a następnie obliczamy

x0 = x2 (mod N ) x0 stanowi zarodek dla generatora.

Liczymy

xi+1 = x2i (mod N )

(86)

13.6.3 Generator Blum-Blum-Shub — BBS

Znajdujemy dwie duże liczby pierwsze p i q, takie, że p ≡ 3 (mod 4) oraz q ≡ 3 (mod 4); N = pq.

Wybieramy losową liczbę x względnie pierwszą z N, a następnie obliczamy

x0 = x2 (mod N ) x0 stanowi zarodek dla generatora.

Liczymy

xi+1 = x2i (mod N )

(87)

13.6.3 Generator Blum-Blum-Shub — BBS

Znajdujemy dwie duże liczby pierwsze p i q, takie, że p ≡ 3 (mod 4) oraz q ≡ 3 (mod 4); N = pq.

Wybieramy losową liczbę x względnie pierwszą z N, a następnie obliczamy

x0 = x2 (mod N ) x0 stanowi zarodek dla generatora.

Liczymy

xi+1 = x2i (mod N )

(88)

13.6.3 Generator Blum-Blum-Shub — BBS

Znajdujemy dwie duże liczby pierwsze p i q, takie, że p ≡ 3 (mod 4) oraz q ≡ 3 (mod 4); N = pq.

Wybieramy losową liczbę x względnie pierwszą z N, a następnie obliczamy

x0 = x2 (mod N ) x0 stanowi zarodek dla generatora.

Liczymy

xi+1 = x2i (mod N )

(89)

13.7 Generator RC 4

• Generator RC 4 został opracowany przez Rona Rivesta w

1987 r. Przez kilka lat był to algorytm tajny. W 1994 r. ktoś

w Internecie opublikował program realizujący ten algorytm. Od

tego czasu algorytm nie stanowi tajemnicy.

• Algorytm ten pracuje w trybie

OFB (Output Feedback)

.

• Ciąg generowany przez RC 4 jest losowym ciągiem bajtów.

(90)

13.7 Generator RC 4

• Generator RC 4 został opracowany przez Rona Rivesta w

1987 r. Przez kilka lat był to algorytm tajny. W 1994 r. ktoś

w Internecie opublikował program realizujący ten algorytm. Od

tego czasu algorytm nie stanowi tajemnicy.

• Algorytm ten pracuje w trybie

OFB (Output Feedback)

.

• Ciąg generowany przez RC 4 jest losowym ciągiem bajtów.

(91)

13.7 Generator RC 4

• Generator RC 4 został opracowany przez Rona Rivesta w

1987 r. Przez kilka lat był to algorytm tajny. W 1994 r. ktoś

w Internecie opublikował program realizujący ten algorytm. Od

tego czasu algorytm nie stanowi tajemnicy.

• Algorytm ten pracuje w trybie

OFB (Output Feedback).

• Ciąg generowany przez RC 4 jest losowym ciągiem bajtów.

(92)

13.7 Generator RC 4

• Generator RC 4 został opracowany przez Rona Rivesta w

1987 r. Przez kilka lat był to algorytm tajny. W 1994 r. ktoś

w Internecie opublikował program realizujący ten algorytm. Od

tego czasu algorytm nie stanowi tajemnicy.

• Algorytm ten pracuje w trybie

OFB (Output Feedback)

.

• Ciąg generowany przez RC 4 jest losowym ciągiem bajtów.

(93)

Algorytm używa dwóch wskaźników i, j przyjmujących wartości

0, 1, 2, . . . , 255 oraz S-boksu z wartościami S0, S1, . . . , S255, które tworzą permutację liczb 0, 1, . . . , 255.

Inicjalizacja: Na początku i = j = 0, Sl = l dla l = 0, 1, . . . , 255, kolejna 256-bajtowa tablica wypełniana jest bajtami klucza, przy czym klucz jest używany wielokrotnie, aż do wypełnienia całej tablicy K0, K1, . . . , K255.

Następnie wykonujemy: for i = 0 to 255:

j = (j + Si + Ki) (mod 256)

(94)

Algorytm używa dwóch wskaźników i, j przyjmujących wartości

0, 1, 2, . . . , 255 oraz S-boksu z wartościami S0, S1, . . . , S255, które tworzą permutację liczb 0, 1, . . . , 255.

Inicjalizacja: Na początku i = j = 0, Sl = l dla l = 0, 1, . . . , 255, kolejna 256-bajtowa tablica wypełniana jest bajtami klucza, przy czym klucz jest używany wielokrotnie, aż do wypełnienia całej tablicy K0, K1, . . . , K255.

Następnie wykonujemy: for i = 0 to 255:

j = (j + Si + Ki) (mod 256)

(95)

Algorytm używa dwóch wskaźników i, j przyjmujących wartości

0, 1, 2, . . . , 255 oraz S-boksu z wartościami S0, S1, . . . , S255, które tworzą permutację liczb 0, 1, . . . , 255.

Inicjalizacja: Na początku i = j = 0, Sl = l dla l = 0, 1, . . . , 255, kolejna 256-bajtowa tablica wypełniana jest bajtami klucza, przy czym klucz jest używany wielokrotnie, aż do wypełnienia całej tablicy K0, K1, . . . , K255.

Następnie wykonujemy: for i = 0 to 255:

j = (j + Si + Ki) (mod 256)

(96)

Generowanie kolejnego bajtu: i = i + 1 (mod 256) j = j + Si (mod 256) zamień Si z Sj l = Si + Sj (mod 256) K = Sl

Otrzymany bajt K jest dodawany modulo 2 (xor) z kolejnym bajtem wiadomości dając kolejny bajt kryptogramu (przy deszyfrowaniu role tekstu jawnego i kryptogramu się zamieniają).

Algorytm RC 4 jest używany w wielu programach

komercyjnych.

(97)

Generowanie kolejnego bajtu: i = i + 1 (mod 256) j = j + Si (mod 256) zamień Si z Sj l = Si + Sj (mod 256) K = Sl

Otrzymany bajt K jest dodawany modulo 2 (xor) z kolejnym bajtem wiadomości dając kolejny bajt kryptogramu (przy deszyfrowaniu role tekstu jawnego i kryptogramu się zamieniają).

Algorytm RC 4 jest używany w wielu programach

komercyjnych.

(98)

Generowanie kolejnego bajtu: i = i + 1 (mod 256) j = j + Si (mod 256) zamień Si z Sj l = Si + Sj (mod 256) K = Sl

Otrzymany bajt K jest dodawany modulo 2 (xor) z kolejnym bajtem wiadomości dając kolejny bajt kryptogramu (przy deszyfrowaniu role tekstu jawnego i kryptogramu się zamieniają).

Algorytm RC 4 jest używany w wielu programach

komercyjnych.

Cytaty

Powiązane dokumenty

nierozsądnie jest ustawić się dziobem żaglówki w stronę wiatru – wtedy na pewno nie popłyniemy we właściwą stronę – ale jak pokazuje teoria (i praktyka), rozwiązaniem

W przestrzeni dyskretnej w szczególności każdy jednopunktowy podzbiór jest otwarty – dla każdego punktu możemy więc znaleźć taką kulę, że nie ma w niej punktów innych niż

Spoglądając z różnych stron na przykład na boisko piłkarskie, możemy stwierdzić, że raz wydaje nam się bliżej nieokreślonym czworokątem, raz trapezem, a z lotu ptaka

Bywa, że każdy element zbioru A sparujemy z innym elementem zbioru B, ale być może w zbiorze B znajdują się dodatkowo elementy, które nie zostały dobrane w pary.. Jest to dobra

Następujące przestrzenie metryczne z metryką prostej euklidesowej są spójne dla dowolnych a, b ∈ R: odcinek otwarty (a, b), odcinek domknięty [a, b], domknięty jednostronnie [a,

nierozsądnie jest ustawić się dziobem żaglówki w stronę wiatru – wtedy na pewno nie popłyniemy we właściwą stronę – ale jak pokazuje teoria (i praktyka), rozwiązaniem

W przestrzeni dyskretnej w szczególności każdy jednopunktowy podzbiór jest otwarty – dla każdego punktu możemy więc znaleźć taką kulę, że nie ma w niej punktów innych niż

Zbiór liczb niewymiernych (ze zwykłą metryką %(x, y) = |x − y|) i zbiór wszystkich.. Formalnie: