• klucz-publiczny
  • klucz-prywatny
  • kryptografia-asymetryczna
  • kryptografia-symetryczna

Klucz publiczny, klucz prywatny i kryptografia asymetryczna

W tym artykule przedstawiliśmy pojęcia kluczy publicznych, kluczy prywatnych oraz zasady szyfrowania asymetrycznego. Porównaliśmy ich zalety i wady w stosunku do szyfrowania symetrycznego, a także różnice w scenariuszach ich użycia.

Darcy Ye
Darcy Ye
Developer

Możesz słyszeć o kluczach prywatnych i publicznych w wielu kontekstach, ale czy naprawdę wiesz, czym one są?

Kryptografia asymetryczna vs kryptografia symetryczna

Klucze prywatne i klucze publiczne to pojęcia w kryptografii asymetrycznej (znanej również jako kryptografia klucza publicznego, PKC).

Kryptografia asymetryczna odnosi się do metody szyfrowania lub podpisywania danych za pomocą dwóch różnych kluczy (klucz prywatny + klucz publiczny), co odpowiada potrzebie odszyfrowania lub weryfikacji podpisu. Klucz publiczny jest widoczny dla każdego, natomiast klucz prywatny jest dostępny tylko dla właściciela klucza. Możesz łatwo to odgadnąć z nazw kluczy.

Podobnie, możesz prawdopodobnie domyślić się, że kryptografia symetryczna odnosi się do metody szyfrowania i odszyfrowywania danych za pomocą tego samego klucza.

Stąd używamy prostych oznaczeń, aby przedstawić proces szyfrowania/odszyfrowywania zarówno w kryptografii symetrycznej, jak i asymetrycznej.

Szyfrowanie i odszyfrowywanie

Ważne jest, aby zauważyć, że funkcje szyfrowania/odszyfrowywania w algorytmach szyfrowania symetrycznego i asymetrycznego są różne i często używają różnych algorytmów. Do powszechnych algorytmów szyfrowania symetrycznego należą DES, AES, RC2, RC4 i inne, podczas gdy powszechne algorytmy szyfrowania asymetrycznego to RSA i EC.

Logto używa algorytmu EC do szyfrowania i odszyfrowywania transmisji danych, ponieważ jest bardziej wydajny i bezpieczny niż RSA. Możesz przeczytać ten post dla więcej szczegółów. Logto z zamiarem wspierać RSA w następnej wersji dla lepszej kompatybilności z niektórymi starszymi systemami.

Dlaczego używać kryptografii asymetrycznej?

Kryptografia asymetryczna rozwiązuje problem dystrybucji klucza w kryptografii symetrycznej.

Ponieważ szyfrowanie symetryczne używa tego samego klucza, dystrybucja klucza za pośrednictwem niezabezpieczonego połączenia sieciowego może grozić ujawnieniem klucza nieuczciwym osobom trzecim. Nieuczciwa osoba trzecia mogłaby użyć skradzionego klucza do dostępu do wszelkich informacji zaszyfrowanych tym kluczem, co stanowiłoby poważne zagrożenie dla bezpieczeństwa.

Dwa typowe przypadki użycia kryptografii asymetrycznej

Wysyłanie zaszyfrowanych danych

Nadawca może użyć klucza publicznego odbiorcy, aby zaszyfrować informacje, a odbiorca używa swojego klucza prywatnego, aby odszyfrować informacje.

Ponieważ klucze publiczne są teoretycznie dostępne dla wielu osób, w idealnym scenariuszu odbiorca może otrzymywać zaszyfrowane informacje od wielu nadawców. Co więcej, wielu nadawców nie może wiedzieć, jakie informacje inni nadawcy przesłali do odbiorcy, ponieważ tylko odbiorca (posiadacz klucza prywatnego) może odszyfrować i odzyskać informacje.

Klucze publiczne i prywatne są często generowane jednocześnie. To, o czym wspomnieliśmy powyżej, to generacja kluczy prywatnych i publicznych po jednej stronie, a następnie dystrybucja klucza publicznego do użytkowników. Jeśli chcesz zapewnić bezpieczną komunikację między obiema stronami, obie strony muszą wygenerować własne klucze prywatne i publiczne, a następnie wymienić się swoimi kluczami publicznymi. W ten sposób obie strony mają klucze publiczne drugiej strony i mogą używać własnych kluczy prywatnych oraz kluczy publicznych drugiej strony do szyfrowania i odszyfrowywania.

Użycie podpisu do zapewnienia integralności danych

W kryptografii asymetrycznej, strona posiadająca klucz prywatny może podpisać dane, które wysyła. Następnie, odbiorca z kluczem publicznym może zweryfikować zgodność danych i podpisu podczas odbierania danych, zapewniając, że dane nie zostały zmodyfikowane podczas transmisji.

Używając oznaczeń zdefiniowanych w poprzedniej sekcji, podpis i weryfikacja podpisu mogą być przedstawione w następujący sposób:

Podpis i weryfikacja

Weryfikacja podpisu cyfrowego dowodzi, że strona, która wygenerowała podpis, zna odpowiadający jej klucz prywatny.

Prawdopodobnie te dwa przypadki użycia wydają się dobrze znane. W naszym codziennym życiu prawie wszystkie usługi z architekturą klient-serwer używają kryptografii asymetrycznej, aby zapewnić bezpieczeństwo danych.

Jako szybko rozwijające się ramy tożsamości użytkowników, Logto również szeroko stosuje PKC, aby zapewnić bezpieczeństwo danych użytkowników. Po zakończeniu procesu logowania, Logto wydaje użytkownikom token dostępu, aby przyznać im określone uprawnienia do dostępu do wymaganych zasobów. Opublikowany klucz publiczny Logto jest używany do weryfikacji, że token dostępu został rzeczywiście wydany przez Logto i nie został zmieniony przez nieuczciwych atakujących.

Wady kryptografii asymetrycznej

Zasadniczo, długość klucza dla szyfrowania symetrycznego wynosi 128 lub 256 bitów, podczas gdy długość klucza dla szyfrowania asymetrycznego może sięgać 4096 bitów. Jest to spowodowane tym, że klucz prywatny i klucz publiczny są matematycznie powiązane i tworzą unikalne pary kluczy. W teorii, znajomość klucza publicznego pozwala na obliczenie wartości klucza prywatnego, ale z powodu złożoności zaangażowanych algorytmów często zajmuje to dużo czasu. Aby uczynić zadanie „złamania” klucza prywatnego „niemożliwym”, używanie dłuższych długości klucza to proste podejście.

Wnioski

Szyfrowanie asymetryczne pochłania więcej zasobów obliczeniowych i czasu w porównaniu z szyfrowaniem symetrycznym podczas obliczeń, jak omówiono w poprzedniej sekcji. W aplikacjach, gdzie komunikacja jest częsta, powszechne stosowanie szyfrowania asymetrycznego może wpłynąć na wydajność i doświadczenie użytkownika.

W scenariuszach biznesowych, szyfrowanie symetryczne i asymetryczne często są używane razem, aby zrównoważyć wydajność i bezpieczeństwo danych. Tworząc własną usługę, możesz rozważyć wymagania dotyczące bezpieczeństwa danych na każdym etapie i wybrać odpowiednie algorytmy szyfrowania zgodnie z tymi wymaganiami.