Próbuję lepiej zrozumieć, jak działają klucze publiczne / prywatne. Rozumiem, że nadawca może dodać podpis cyfrowy do dokumentu, używając swojego klucza prywatnego, aby zasadniczo uzyskać skrót dokumentu, ale nie rozumiem, jak można użyć klucza publicznego do zweryfikowania tego podpisu.
Zrozumiałem, że klucze publiczne szyfrują, klucze prywatne odszyfrowują ... czy ktoś może mi pomóc to zrozumieć?
digital-signature
public-key-encryption
private-key
public-key
pki
jcampos8782
źródło
źródło
Odpowiedzi:
Twoje rozumienie pojęcia „szyfrowanie kluczy publicznych, odszyfrowywanie kluczy prywatnych” jest poprawne ... dla SZYFROWANIA danych / wiadomości. W przypadku podpisów cyfrowych jest odwrotnie. Za pomocą podpisu cyfrowego próbujesz udowodnić, że podpisany przez Ciebie dokument pochodzi od Ciebie. Aby to zrobić, musisz użyć czegoś, co tylko TY masz: swojego klucza prywatnego.
Podpis cyfrowy w najprostszym opisie to skrót (SHA1, MD5 itd.) Danych (pliku, wiadomości itp.), Który jest następnie szyfrowany za pomocą klucza prywatnego osoby podpisującej. Ponieważ jest to coś, co tylko podpisujący ma (lub powinien mieć), stąd pochodzi zaufanie. KAŻDY ma (lub powinien mieć) dostęp do klucza publicznego sygnatariusza.
Tak więc, aby zweryfikować podpis cyfrowy, odbiorca
Jeśli pasują, podpis jest uważany za ważny. Jeśli się nie zgadzają, oznacza to, że do podpisania użyto innego klucza lub że dane zostały zmienione (celowo lub nieumyślnie).
Mam nadzieję, że to pomoże!
źródło
Klawisze działają odwrotnie:
Poniżej znajduje się przykładowy skrypt do przetestowania całego przepływu
openssl
.Ten skrypt wyświetla następujące informacje:
źródło
Klucz publiczny szyfruje i tylko klucz prywatny może go odszyfrować, i jest odwrotnie. Obaj szyfrują do różnych skrótów, ale każdy klucz może odszyfrować szyfrowanie drugiego.
Istnieje kilka różnych sposobów sprawdzenia, czy wiadomość pochodzi od określonego nadawcy. Na przykład:
Nadawca wysyła:
Wiadomość
Skrót wiadomości zaszyfrowany ich kluczem prywatnym
Odbiornik:
Jeśli nie są identyczne, oznacza to, że wiadomość została zmodyfikowana lub została podpisana innym kluczem, a nie tym, o którym myśleliśmy ...
Innym przykładem może być użycie przez nadawcę wspólnego skrótu, którego może również używać odbiorca. Na przykład:
Nadawca wysyła:
Odbiornik:
To znowu gwarantuje, że wiadomość nie została zmieniona i pochodzi od oczekiwanego nadawcy.
źródło
Gdybym musiał przeformułować twoje pytanie na podstawie tego, jak je rozumiem, zadajesz następujące pytania:
Inne odpowiedzi zostały już wyjaśnione jak asymetryczne środki kryptograficzne, które można albo :
Wiemy , że działają oba przykłady nr 1 i 2. Przykład nr 1 ma intuicyjny sens, podczas gdy przykład nr 2 nasuwa pierwotne pytanie .
Okazuje się, że kryptografia krzywych eliptycznych (zwana także „mnożeniem krzywych eliptycznych”) jest odpowiedzią na pierwotne pytanie. Kryptografia krzywych eliptycznych to matematyczna zależność, która umożliwia spełnienie następujących warunków:
Dla większości warunki # 1 i # 2 mają sens, ale co z # 3?
Masz dwie możliwości:
Podsumowując, para kluczy publiczny / prywatny jest tworzona za pomocą kryptografii krzywej eliptycznej, która z natury tworzy klucz publiczny i prywatny, które są matematycznie połączone w obu kierunkach, ale nie są matematycznie wyprowadzane w obu kierunkach . Dzięki temu możesz użyć czyjegoś klucza publicznego, aby sprawdzić, czy podpisał on określoną wiadomość, bez ujawniania Ci swojego klucza prywatnego.
źródło
Pomyślałem, że udzielę dodatkowego wyjaśnienia każdemu, kto szuka czegoś bardziej intuicyjnie odkrywającego.
Duża część tego zamieszania wynika z nazywania „kluczy publicznych” i „kluczy prywatnych” jako takich, ponieważ sposób, w jaki te rzeczy faktycznie działają, jest bezpośrednio sprzeczny z tym, jak rozumie się „klucz”.
Weźmy na przykład szyfrowanie. Można to uznać za działające w następujący sposób:
Pozwala to na przesyłanie tajnych wiadomości między stronami, ale z intuicyjnego punktu widzenia „zamek publiczny” jest bardziej odpowiednią nazwą niż „klucz publiczny”.
Jednak w przypadku wysyłania podpisów cyfrowych role są nieco odwrócone:
Następnie, gdy odbiorca otrzyma wiadomość, może ją przeczytać, a następnie użyć klucza publicznego, aby odblokować zablokowaną wiadomość i porównać dwie wiadomości. Jeśli wiadomości są takie same, to wiedzą, że:
Odblokowana wiadomość nie została zmodyfikowana podczas podróży i
Wiadomość musiała pochodzić od osoby, która ma zamek pasujący do klucza publicznego.
I wreszcie, cały ten system działa tylko wtedy, gdy każdy, kto chce zweryfikować podpis podpisującego, ma autorytatywne miejsce, do którego może udać się w celu uzyskania pasującego klucza do zamków podpisującego. W przeciwnym razie każdy może powiedzieć „Hej, oto klucz do takiej a takiej prywatnej blokady”, wysłać wiadomość podszywającą się pod niego, ale zablokować ją swoim prywatnym zamkiem, wykonujesz wszystkie powyższe kroki i uważasz, że wiadomość musi rzeczywiście być od osoby, o której myślałeś, ale dałeś się nabrać, ponieważ zostałeś wprowadzony w błąd co do prawdziwego właściciela klucza publicznego.
Dopóki istnieje godne zaufania źródło odzyskiwania klucza publicznego podpisującego, będziesz wiedzieć, kto jest prawowitym właścicielem klucza publicznego, i będziesz mógł zweryfikować jego podpis.
źródło
Na twoje pytanie - przyglądałem się implementacji RSA. I uzyskałem większą jasność co do sposobu, w jaki klucz publiczny jest używany do weryfikacji podpisu przy użyciu klucza prywatnego. Niewątpliwie klucz prywatny nie jest ujawniany. Oto jak...
Sztuczka polega na ukryciu klucza prywatnego w funkcji. W tym przypadku,
(p-1)*(q-1).
Rozważ p jako klucz prywatny, a e jako klucz publiczny. „p” jest umieszczane w innej funkcji, aby było ukryte.
Wysłane dane = [zaszyfrowane (hash), wiadomość] = [m ^ d, wiadomość]; gdzie m jest komunikatem Załóżmy, że „Dane wysłane” = y. Aby sprawdzić integralność, znajdujemy y ^ e, aby uzyskać m. Od
m ^(d*e) = m ^1 = m
.Mam nadzieję że to pomoże! :)
źródło