Wpis z mikrobloga

Wiadomo czym jest szyfrowanie i deszyfrowanie. Wiadomo również że aby zaszyfrować wiadomość trzeba użyć do tego jakiegoś hasła(klucza). Problem pojawia się z przekazaniem sobie tego klucza. Skoro szyfrujemy wiadomość żeby nikt nieuprawniony nie mógł jej odczytać to jak przekazać sobie na odległość klucz w sposób który będzie bezpieczny. Jeśli ktoś przechwyci nasz klucz, to szyfrowanie wiadomości nie będzie miało sensu ponieważ każdy z kluczem będzie mógł ją odczytać.

W typ przypadku na pomoc przychodzi Protokół Diffiego-Hellmana. Jest to bardzo prosty algorytm który swoje działanie opiera na trudności obliczania logarytmów dyskretnych. Co to logarytm dyskretny już kiedyś pisałem ale tak dla przypomnienia.

Logarytm dyskretny b przy podstawie a to takie c które spełni równanie a^c = b (mod p) Czyli innym słowem do jakiej potęgi musimy podnieść a żeby reszta z dzielenia tej potęgi przez p była równa reszcie z dzielenia b przez p.
Problemem z obliczaniem logarytmu jest fakt że nie zawsze istnieje, a nawet jeśli istnieje to nie musi być jednoznaczny. Może istnieć kilka c które spełnią równanie.

Zam protokół opiera się na dosyć prostych działaniach matematycznych.

Mamy liczby p,q które są jawne.
Osoba 1 wybiera sobie dowolną liczbę a która jest tajna i wysyła W = q^a mod p do Osoby 2
Osoba 2 wybiera sobię dowolną liczbę b która jest tajna i wysyła V = g^b mod p do Osoby 1

Osoba 1 wylicza klucz K1= V^b mod p
Osoba 2 wylicza klucz K2= W^a mod p

K1 = K2 ponieważ (g^a)^b = (g^b)^a (mod p)

Z racji tego że Osoba 1 nigdy nie wysyła swojej tajnej liczby a, oraz Osoba 2 nigdy nie wysyła swojej tajnej liczby B takie uzgadnianie klucza jest bezpieczne nawet jeśli ktoś podsł#!$%@?ę cały proces.

Niestety protokół nie jest odporny na atak typu "Man in the middle" który polega na tym że pomiędzy Osobą 1 oraz Osobą 2 jest jeszcze Szpieg który może przechwytywać i modyfikować wiadomości które są wysyłane pomiędzy Osobą 1 oraz Osobą 2, i te osoby nie są świadome jego istnienia

#ciekawostkizestudiowdelfina #gruparatowaniapoziomu #ciekawostki #matematyka #informatyka #szyfrowanie #kryptologia
  • 13
  • Odpowiedz
@denis-szwarc: Jeśli chodzi ci o zapis to nie bardzo mam możliwosć zapisania potrójnego = do oznaczenia kongruencji ale faktycznie może być mylące, więc poprawię

Edit: Już nie mogę poprawić ;p
  • Odpowiedz
Logarytm dyskretny b przy podstawie a to takie c które spełni równanie a^c = b (mod p) Czyli innym słowem do jakiej potęgi musimy podnieść a żeby reszta z dzielenia tej potęgi przez p była równa reszcie z dzielenia b przez p. (...)

TLDR

Skoro szyfrujemy wiadomość żeby nikt nieuprawniony nie mógł jej odczytać to jak przekazać sobie na odległość klucz w sposób który będzie bezpieczny. Jeśli ktoś przechwyci nasz klucz, to
  • Odpowiedz
@drakkar: Nawet jeśli szyfrujesz innym kluczem niż odszyfrowujesz to przecież ten klucz musisz jakoś przekazać drugiej osobie. Moment przekazania jest tutaj problemem ponieważ jak pisałem jeśli ktoś przechwyci klucz to co prawda nie wyśle fałszywej wiadomości ale będzie mógł je bez problemu odczytywać
  • Odpowiedz
@drakkar: Ja opisuje algorytm wymiany klucza, a ty mi wyskakujesz z SSL -_-
Zdaje sobie sprawę że SSL działa inaczej co nie zmienia faktu że niektóre sposoby szyfrowania wymagają wysyłania klucza drugiej osobie i tutaj wykorzystujemy ten protokół
  • Odpowiedz
@drakkar @Delfin17
Protokół jest używany do ustanowienia klucza sesji. Do potwierdzenia tożsamości wystarczy wykorzystać protokół wiedzy zerowej. Z protokołem wiedzy można skojarzyć algorytm klucza publicznego (np. znajomość faktoryzacji - RSA, znajomość logarytmu - ElGamal) co całkowicie chroni przed men-in-the-middle. Czasami nie chcemy zaczynać protokołu DH jeśli nie mamy pewności do tożsamości.

Po co DH skoro używamy kryptografii klucza publicznego? Mamy pewność, że klucz sesji będzie losowy. Tj. nawet jeśli generator
  • Odpowiedz