Zrozumiałem proces podpisu cyfrowego
- nadawca daje odpowiedź jako dane + hash danych (zaszyfrowany algorytmem powiedzmy X i podpisany kluczem prywatnym)
- Odbiornik obliczyć skrót danych, które odbiornik otrzymał od kroku 1 za pomocą algorytmu X.
- Jeśli hash, dostaliśmy odpowiedź w kroku 1 od nadawcy (decry pt przy użyciu klucza publicznego), a licznik hash obliczony na podstawie otrzymanych danych jest taki sam, jesteśmy dobrzy, ale jeśli jest inny, dane są przerabiane.
do tej pory wszystko jest w porządku. ale moje pytanie brzmi: Jak odbiorca lub nadawca decyduje, który algorytm do haszowania. w powyższym przypadku jaka jest wartość X. Jak o tym zdecydować?
Zgodnie z moim rozumieniem, odbiorca powinien powiedzieć jako część żądania do nadawcy, który algorytm hash musi użyć. mam rację?
Proszę dać mi znać o poglądach na ten temat.
Odpowiedzi:
1 dla odpowiedzi № 1Podpis cyfrowy zawiera zarówno algorytm trawienia, jak i wartość skrótu kodowanego w ASN.1. Widzieć RFC 3447 PKCS # 1 v2.1.
A.2.4 RSASSA-PKCS1-v1_5
DigestInfo ::= SEQUENCE { digestAlgorithm DigestAlgorithm, digest OCTET STRING }
Tak więc w procesie weryfikacji można określić, czy użyty algorytm digest jest oczekiwany.
Ale zwykle jest tak, że algorytm podpisu jest zawarty jako atrybut w samym formacie podpisu, więc część weryfikacyjna może zastosować odpowiednią.
Jeśli używasz formatu, który nie zawiera algorytmu podpisu, nadawca i odbiorca powinni to wcześniej uzgodnić