Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Nuta
Procedura opisana w tej sekcji zakłada, że użytkownicy (lub klienci CryptoAPI) mają już własny zestaw par kluczy publicznych/prywatnych , a także uzyskali kluczy publicznych.
Poniższa ilustracja przedstawia sposób wysyłania zaszyfrowanej wiadomości przy użyciu tej procedury.
Takie podejście jest narażone na co najmniej jedną typową formę ataku. Podsłuchiwanie może uzyskać kopie co najmniej jednego zaszyfrowanego komunikatu i zaszyfrowanych kluczy. Następnie, w pewnym czasie, podsłuchiwanie może wysłać jeden z tych komunikatów do odbiornika, a odbiorca nie będzie mógł wiedzieć, że komunikat nie pochodzi bezpośrednio od oryginalnego nadawcy. To ryzyko można zmniejszyć przez sygnaturę czasową wszystkich komunikatów lub przy użyciu numerów seryjnych.
Najprostszym sposobem wysyłania zaszyfrowanych komunikatów do innego użytkownika jest wysłanie wiadomości zaszyfrowanej przy użyciu klucza sesji losowej wraz z kluczem sesji zaszyfrowanym za pomocą klucza klucza publicznego wymiany klucza odbiorcy.
Poniżej przedstawiono kroki wysyłania zaszyfrowanego klucza sesji.
Aby wysłać zaszyfrowany klucz sesji
- Utwórz losowy klucz sesji przy użyciu funkcjiCryptGenKey.
- Szyfruj komunikat przy użyciu klucza sesji. Ta procedura została omówiona w Szyfrowanie danych i odszyfrowywanie.
- Wyeksportuj klucz sesji do klucza blOB za pomocą funkcji CryptExportKey, określając, że klucz zostanie zaszyfrowany przy użyciu klucza docelowego użytkownika wymiany klucza publicznego.
- Wyślij zarówno zaszyfrowany komunikat, jak i zaszyfrowany klucz BLOB do użytkownika docelowego.
- Użytkownik docelowy importuje klucz BLOB do swojego dostawcy CSP przy użyciu funkcji CryptImportKey. Spowoduje to automatyczne odszyfrowywanie klucza sesji, pod warunkiem, że klucz publiczny wymiany klucza docelowego użytkownika został określony w kroku 3.
- Użytkownik docelowy może następnie odszyfrować komunikat przy użyciu klucza sesji, wykonując procedurę opisaną w szyfrowanie danych i odszyfrowywanie.