세션 키 저장
참고 항목
이 섹션에서는 사용자가 퍼블릭/프라이빗 키 쌍 집합 을 보유하고 있다고 가정합니다. 키 쌍을 만드는 지침 및 예제는 C 프로그램 예제: 키 컨테이너 만들기 및 키 생성에서 찾을 수 있습니다.
세션 키를 저장하려면
- CryptExportKey 함수를 사용하여 간단한 키 BLOB을 만듭니다. 그러면 CSP에서 애플리케이션의 메모리 공간으로 세션 키가 전송됩니다. EXCHANGE 공개 키를 사용하여 키 BLOB에 서명하도록 지정합니다.
- 서명된 키 BLOB을 디스크에 저장합니다. 모든 디스크는 안전하지 않다고 가정합니다.
- 키가 필요한 경우 디스크에서 키 BLOB을 읽습니다.
- CryptImportKey 함수를 사용하여 키 BLOB을 CSP로 다시 가져옵니다.
세션 키를 만들고 해당 키를 디스크 파일에 쓸 수 있는 간단한 키 BLOB으로 내보내는 예제는 C 프로그램 예제: 세션 키 내보내기를 참조하세요.
이 절차는 최소한의 보안만 제공합니다. 저장된 세션 키를 사용하여 나중에 데이터를 암호화하는 경우 이전 절차는 적절한 보안을 제공하지 않습니다.
보안을 강화하려면 디스크에 저장되기 전에 Exchange 프라이빗 키를 사용하여 키 BLOB에 서명합니다. 나중에 디스크에서 키 BLOB을 읽는 경우 해당 서명의 유효성을 검사하여 키 BLOB이 그대로 유지되는지 확인할 수 있습니다.
키 BLOB에 서명되지 않은 경우 키가 저장된 디스크 또는 기타 미디어에 액세스할 수 있는 모든 사용자가 새 세션 키를 만들 수 있습니다.
새 세션 키는 원래 사용자의 공개 키 교환 키로 암호화할 수 있으며 이 새 키를 원래 키로 대체할 수 있습니다. 사용자가 무의식적으로 대체 세션 키를 사용하여 파일 및 메시지를 암호화하는 경우 대체 키를 만든 개인이 쉽게 암호를 해독할 수 있습니다.
디지털 서명은 해시 및 디지털 서명에서 자세히 설명합니다.