다음을 통해 공유


수동 세션 키 교환

참고

이 섹션에 설명된 절차에서는 사용자(또는 CryptoAPI 클라이언트)가 이미 자체 퍼블릭/프라이빗 키 쌍 집합을 보유하고 있으며 서로의 공개 키도 획득했다고 가정합니다.

 

다음 그림에서는 이 절차를 사용하여 암호화된 메시지를 보내는 방법을 보여 줍니다.

암호화된 메시지 보내기

이 접근 방식은 하나 이상의 일반적인 공격 형태에 취약합니다. 도청은 하나 이상의 암호화된 메시지와 암호화된 키의 복사본을 가져올 수 있습니다. 그런 다음, 나중에 도청자는 이러한 메시지 중 하나를 수신자에게 보낼 수 있으며 수신자는 메시지가 원래 보낸 사람으로부터 직접 오지 않았다는 것을 알 방법이 없습니다. 이 위험은 모든 메시지를 타임스탬핑하거나 일련 번호를 사용하여 줄일 수 있습니다.

다른 사용자에게 암호화된 메시지를 보내는 가장 쉬운 방법은 수신자의 키 교환 공개 키로 암호화된 세션 키와 함께 임의의 세션 키로 암호화된 메시지를 보내는 것입니다.

다음은 암호화된 세션 키를 보내는 단계입니다.

암호화된 세션 키를 보내려면

  1. CryptGenKey 함수를 사용하여 임의 세션 키를 만듭니다.
  2. 세션 키를 사용하여 메시지를 암호화합니다. 이 절차는 데이터 암호화 및 암호 해독에서 설명합니다.
  3. 대상 사용자의 키 교환 공개 키로 키를 암호화할 것을 지정하여 CryptExportKey 함수를 사용하여 세션 키를 키 BLOB으로 내보냅니다.
  4. 암호화된 메시지와 암호화된 키 BLOB을 모두 대상 사용자에게 보냅니다.
  5. 대상 사용자는 CryptImportKey 함수를 사용하여 키 BLOB을 CSP로 가져옵니다. 3단계에서 대상 사용자의 키 교환 공개 키를 지정한 경우 세션 키의 암호가 자동으로 해독됩니다.
  6. 그런 다음, 대상 사용자는 데이터 암호화 및 암호 해독에 설명된 절차에 따라 세션 키를 사용하여 메시지의 암호를 해독할 수 있습니다.