수동 세션 키 교환
메모
이 섹션에서 설명하는 절차에서는 사용자(또는 CryptoAPI 클라이언트)가 이미공용/프라이빗 키 쌍 집합을 소유하고 있으며서로의공개 키도 획득했다고 가정합니다.
다음 그림에서는 이 절차를 사용하여 암호화된 메시지를 보내는 방법을 보여 줍니다.
암호화된 메시지
이 방법은 하나 이상의 일반적인 형태의 공격에 취약합니다. 도청은 하나 이상의 암호화된 메시지와 암호화된 키의 복사본을 가져올 수 있습니다. 그런 다음, 나중에 도청자는 이러한 메시지 중 하나를 수신자에게 보낼 수 있으며 수신자는 메시지가 원래 보낸 사람에게서 직접 오지 않았다는 것을 알 방법이 없습니다. 이 위험은 모든 메시지를 타임스탬핑하거나 일련 번호를 사용하여 줄일 수 있습니다.
암호화된 메시지를 다른 사용자에게 보내는 가장 쉬운 방법은 수신자의 키 교환 공개 키암호화된 세션 키와 함께 임의 세션 키로 암호화된 메시지를 보내는 것입니다.
다음은 암호화된 세션 키를 보내는 단계입니다.
암호화된 세션 키 보내려면
- CryptGenKey 함수를 사용하여 임의 세션 키 만듭니다.
- 세션 키를 사용하여 메시지를 암호화합니다. 이 절차는 데이터 암호화 및 암호 해독설명합니다.
- CryptExportKey 함수를 사용하여 세션 키를 키 BLOB 내보내고, 대상 사용자의 키 교환 공개 키로 키를 암호화할 것을 지정합니다.
- 암호화된 메시지와 암호화된 키 BLOB을 모두 대상 사용자에게 보냅니다.
- 대상 사용자는 CryptImportKey 함수를 사용하여 키 BLOB을 CSP로 가져옵니다. 3단계에서 대상 사용자의 키 교환 공개 키를 지정한 경우 세션 키의 암호가 자동으로 해독됩니다.
- 그런 다음, 대상 사용자는 데이터 암호화 및 암호 해독설명된 절차에 따라 세션 키를 사용하여 메시지의 암호를 해독할 수 있습니다.