14.4.1. 개념: 신뢰, 키, 그리고 파일 형식

어떤 명령을 다루기 전에, 이 섹션의 다른 모든 페이지에 적용되는 세 가지 배경 지식을 살펴봅니다.

14.4.1.1. 신뢰 모델

TLS 연결은 점점 높아지는 세 가지 수준의 보증을 제공할 수 있습니다:

  • 암호화만 – 트래픽은 암호화되지만 어느 쪽도 자신이 누구인지 증명하지 않습니다. 설정이 쉽지만(인증서 검증 없음) 중간자 공격에 취약합니다. 로컬 테스트에만 사용하십시오.

  • 서버 인증 – 클라이언트가 신뢰하는 인증서와 대조하여 서버의 인증서를 검증합니다(익숙한 HTTPS 모델). OpenMV Cam은 클라이언트(원격 서버를 검증) 역할이나 서버(자신의 인증서를 제시) 역할 중 하나로 동작할 수 있습니다.

  • 상호 인증(mTLS) – 양쪽 끝이 모두 인증서를 제시하고 검증합니다. 서버도 클라이언트의 신원을 확신해야 하는 곳에서 사용됩니다.

14.4.1.2. 키 유형 선택하기

카메라의 mbedTLS 빌드는 NIST/SEC 소수 곡선에서의 ECDSA와 RSA를 지원합니다. 키를 만드는 실용적인 방법은 세 가지가 있으며, ECDSA P-256(prime256v1)이 권장됩니다:

  • ECDSA P-256(prime256v1) – 256비트 키로 약 128비트 보안을 제공합니다. 키와 서명이 매우 작으며, Cortex-M에서 지원되는 옵션 중 단연 가장 빠른 핸드셰이크를 제공합니다(타원 곡선 연산이 RSA 개인 키 연산보다 훨씬 저렴합니다). TLS 피어에서 보편적으로 지원됩니다. 임베디드 장치에서 보안, 속도, RAM/플래시 사용량, 호환성의 균형이 가장 좋으며, 그래서 여기서 기본 선택입니다.

  • ECDSA P-384(secp384r1) – 약 192비트 보안. 여전히 타원 곡선이라 합리적으로 효율적이지만, 일반적인 IoT 배포에는 필요 없는 보안 여유를 위해 P-256보다 더 크고 느립니다. 수명이 긴 인증서나 규정 준수 요구 사항이 이를 필요로 할 때만 사용하십시오.

  • RSA-2048 – 약 112비트 보안. 매우 오래된 피어를 포함하여 보편적으로 호환되지만, RSA 키와 인증서는 훨씬 크고 RSA 개인 키 연산(인증서를 제시하는 쪽이 수행)은 마이크로컨트롤러에서 가장 느리고 가장 많은 메모리를 사용하는 옵션입니다. 피어가 ECDSA를 할 수 없을 때만 사용하십시오.

참고

Ed25519 / Curve25519 키는 지원되지 않습니다. OpenMV Cam의 mbedTLS 빌드는 EdDSA나 Curve25519를 활성화하지 않으므로, Ed25519 인증서나 키는 로드나 핸드셰이크에 실패합니다. 위의 세 가지 옵션 중 하나를 사용하십시오.

14.4.1.3. 파일 형식: DER을 사용하십시오

OpenMV Cam이 사용하는 mbedTLS 빌드에는 PEM 파싱이 포함되어 있지 않으므로, 카메라는 인증서와 키를 DER 형식(바이너리 인코딩)으로만 읽습니다. 대부분의 도구는 기본적으로 PEM 형식(base64 텍스트)을 내보내므로, 카메라로 향하는 모든 파일은 먼저 DER로 변환됩니다. 이 섹션의 각 레시피는 그 변환 단계로 끝납니다. 다음이 필요합니다:

  • 개인 키 – 비밀로 유지되며, 인증서를 제시하는 쪽이 사용합니다.

  • 인증서 – 공개 부분으로, 핸드셰이크 중에 상대방에게 제시됩니다.

  • CA / 신뢰 인증서 – 피어가 신뢰되는지 판단하기 위해 검증하는 쪽이 로드하는 인증서입니다. 자체 서명 설정에서는 단순히 상대방 자신의 인증서입니다.