문제

저는 데스크톱 애플리케이션과 모바일 장치 간에 작은 바이너리 메시지(1kb 또는 2kb 길이)를 전송하는 작업을 맡았습니다.메시지는 비대칭적으로 암호화되어야 합니다(예: RSA).내가 배운 바에 따르면 이런 종류의 작업에는 하이브리드 암호화 시스템을 사용해야 합니다.

  1. 무작위 대칭 키 생성
  2. 대칭 키로 일반 텍스트 암호화(예: AES 사용)
  3. 공개키로 대칭키 암호화
  4. 암호문 및 암호화된 대칭키 전송

나는 암호 텍스트와 암호화된 대칭 키를 저장하기 위한 자체 형식을 개발하고 싶지 않습니다.그래서 CMS 표준(암호화 메시지 구문)을 우연히 발견했습니다.언뜻보기에 그것은 내가 필요한 것과 정확히 같습니다.표준을 올바르게 이해했다면 암호 텍스트와 암호화된 대칭 키는 물론 사용된 알고리즘에 대한 정보도 포함되어 있습니다.

설명된 작업에 CMS 표준을 사용해야 하는지 여부를 누가 말할 수 있습니까?OpenSSL의 CMS 지원이 내 요구사항에 충분합니까?

건배, 크리스티앙

도움이 되었습니까?

해결책

CMS는 귀하가 찾고 있는 작업 순서를 확실히 지원합니다.단점은 CMS 형식 자체와 이에 대한 OpenSSL API가 모두 다소 복잡하다는 것입니다.

한 가지 사소한 문제는 CMS가 대부분 공개 키가 아닌 X.509 인증서 측면에서 작동한다는 것입니다.실제로 PKI를 롤아웃하거나 자체 서명된 인증서(기본적으로 RSA 키를 전달하는 것과 동일하지만 키와 메타데이터를 바인딩하기 위한 일반 형식이라는 장점이 있음)를 사용하여 시스템에서 이 문제를 처리할 수 있습니다. 어쨌든 가지고 있으면 꽤 유용할 때도 있습니다).

OpenSSL에는 CMS API에 대한 문서가 거의 없습니다.내가 찾을 수 있는 가장 좋은 참조는 OpenSSL 소스 배포판의 apps/ 디렉터리에 있는 cms.c입니다.코드는 1000줄의 주요 기능으로 구성되어 있어 약간 불안하지만 공개 키로 암호화를 수행하므로 이를 가이드로 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top