PKKS 1
W kryptografii PKCS #1 jest pierwszym z rodziny standardów zwanych standardami kryptografii klucza publicznego (PKCS) , opublikowanymi przez RSA Laboratories . Zawiera podstawowe definicje i zalecenia dotyczące implementacji RSA dla kryptografii z kluczem publicznym . Definiuje właściwości matematyczne kluczy publicznych i prywatnych, prymitywne operacje szyfrowania i podpisów, bezpieczne schematy kryptograficzne i powiązane reprezentacje składni ASN.1 .
Obecna wersja to 2.2 (2012-10-27). W porównaniu z wersją 2.1 (2002-06-14), która została ponownie opublikowana jako RFC 3447, wersja 2.2 aktualizuje listę dozwolonych algorytmów haszujących, aby dostosować je do FIPS 180-4, dodając w ten sposób SHA-224, SHA-512/224 i SHA- 512/256.
Klucze
Standard PKCS #1 definiuje matematyczne definicje i właściwości, które muszą posiadać klucze publiczne i prywatne RSA. Tradycyjna para kluczy jest oparta na module n , który jest iloczynem dwóch różnych dużych liczb pierwszych p i q , takich że = .
Począwszy od wersji 2.1, ta definicja została uogólniona, aby umożliwić klucze z wieloma liczbami pierwszymi, w których liczba różnych liczb pierwszych może wynosić dwa lub więcej. Kiedy mamy do czynienia z kluczami o wielu liczbach pierwszych, wszystkie czynniki pierwsze są ogólnie oznaczane jako dla niektórych i , tak że:
- dla
Dla wygody notacji i .
Klucz publiczny RSA jest reprezentowany jako krotka , gdzie liczba całkowita e jest wykładnikiem publicznym.
Klucz prywatny RSA może mieć dwie reprezentacje. Pierwszą zwartą formą jest krotka , gdzie d jest wykładnikiem prywatnym. Druga forma ma co najmniej pięć terminów lub więcej dla kluczy z wieloma liczbami pierwszymi. Chociaż matematycznie redundantne w stosunku do formy zwartej, dodatkowe terminy pozwalają na pewne optymalizacje obliczeniowe podczas używania klucza. W szczególności drugi format umożliwia uzyskanie klucza publicznego.
prymitywy
Norma definiuje kilka podstawowych prymitywów. Operacje prymitywne dostarczają podstawowych instrukcji przekształcania surowych formuł matematycznych w obliczalne algorytmy.
- I2OSP — Integer to Octet String Primitive — Konwertuje (potencjalnie bardzo dużą) nieujemną liczbę całkowitą na sekwencję bajtów (łańcuch oktetów).
- OS2IP - Octet String to Integer Primitive - Interpretuje sekwencję bajtów jako nieujemną liczbę całkowitą
- RSAEP — prymitywne szyfrowanie RSA — szyfruje wiadomość przy użyciu klucza publicznego
- RSADP — prymitywne odszyfrowywanie RSA — odszyfrowuje tekst zaszyfrowany przy użyciu klucza prywatnego
- RSASP1 — RSA Signature Primitive 1 — tworzy podpis nad wiadomością przy użyciu klucza prywatnego
- RSAVP1 — RSA Verification Primitive 1 — weryfikuje podpis wiadomości przy użyciu klucza publicznego
Schematy
Same w sobie prymitywne operacje niekoniecznie zapewniają jakiekolwiek bezpieczeństwo. Koncepcja schematu kryptograficznego polega na zdefiniowaniu algorytmów wyższego poziomu lub zastosowań prymitywów, aby osiągnąć określone cele bezpieczeństwa.
Istnieją dwa schematy szyfrowania i deszyfrowania:
- RSAES-OAEP: ulepszony schemat szyfrowania /deszyfrowania ; oparty na optymalnym asymetrycznym schemacie wypełniania szyfrowania zaproponowanym przez Mihira Bellare'a i Phillipa Rogawaya .
- RSAES-PKCS1-v1_5: starszy schemat szyfrowania/deszyfrowania jako pierwszy znormalizowany w wersji 1.5 PKCS #1.
Uwaga: Wprowadzono niewielką zmianę w RSAES-OAEP w PKCS #1 w wersji 2.1, powodując, że RSAES-OAEP w PKCS #1 w wersji 2.0 jest całkowicie niezgodny z RSA-OAEP w PKCS #1 w wersji 2.1 i 2.2.
Istnieją również dwa schematy postępowania z podpisami:
- PSS : ulepszony probabilistyczny schemat podpisu z dodatkiem; oparty na probabilistycznym schemacie podpisu, pierwotnie wymyślonym przez Bellare i Rogaway.
- RSASSA-PKCS1-v1_5: stary schemat podpisu z dodatkiem jako pierwszy znormalizowany w wersji 1.5 PKCS #1 .
Dwa schematy podpisu wykorzystują oddzielnie zdefiniowane metody kodowania:
- EMSA-PSS: metoda kodowania załącznika do podpisu, probabilistyczny schemat podpisu.
- EMSA-PKCS1-v1_5: metoda kodowania załącznika podpisu jako pierwsza znormalizowana w wersji 1.5 PKCS #1.
Schematy podpisów są w rzeczywistości podpisami z załącznikiem , co oznacza, że zamiast bezpośredniego podpisywania niektórych danych wejściowych, najpierw używana jest funkcja skrótu w celu wytworzenia pośredniej reprezentacji danych, a następnie wynik skrótu jest podpisany. Ta technika jest prawie zawsze używana z RSA, ponieważ ilość danych, które można bezpośrednio podpisać, jest proporcjonalna do rozmiaru kluczy; która jest prawie zawsze znacznie mniejsza niż ilość danych, które aplikacja może chcieć podpisać.
Historia wersji
- Wersje 1.1–1.3, od lutego do marca 1991 r., rozpowszechniane prywatnie.
- Wersja 1.4, czerwiec 1991, opublikowana dla NIST/OSI Implementors' Workshop.
- Wersja 1.5, listopad 1993. Pierwsza publikacja publiczna. Opublikowane ponownie jako RFC 2313 .
- Wersja 2.0, wrzesień 1998. Ponownie opublikowana jako RFC 2437 . Wprowadzono schemat szyfrowania RSAEP-OAEP.
- Wersja 2.1, czerwiec 2002. Ponownie opublikowana jako RFC 3447 . Wprowadzono RSA z wieloma liczbami pierwszymi i schemat podpisu RSASSA-PSS
- Wersja 2.2, październik 2012 r. Ponownie opublikowana jako RFC 8017 .
Implementacje
Poniżej znajduje się lista bibliotek kryptograficznych obsługujących PKCS#1:
Ataki
Wykryto wiele ataków na PKCS #1 v1.5.
W 1998 roku Daniel Bleichenbacher opublikował przełomowy artykuł na temat tego, co stało się znane jako atak Bleichenbachera (znany również jako „atak miliona wiadomości”). PKCS # 1 został następnie zaktualizowany w wersji 2.0, a użytkownikom chcącym nadal korzystać ze starej wersji standardu wydano poprawki. Z niewielkimi zmianami ta luka nadal występuje w wielu nowoczesnych serwerach.
W 2006 roku Bleichenbacher przedstawił nowy atak fałszerstwa na schemat podpisu RSASSA-PKCS1-v1_5.
Zobacz też
Linki zewnętrzne
- RFC 8017 — PKCS #1: Specyfikacje kryptograficzne RSA Wersja 2.2
- PKCS # 1 v2.2: Standard kryptografii RSA w Wayback Machine (archiwum 10 kwietnia 2016 r.)
- Podnoszenie standardu podpisów RSA: RSA-PSS w Wayback Machine (archiwum 2004-04-04)