3. Cryptography
제조사는 암호화 알고리즘 및 프로토콜 구현해야 함.
보안 목표 (Security Objectives)ENCryptographic algorithms and protocols are recommended to be implemented to achieve the secure by design objectives.KR보안 목표를 달성하기 위해 암호화 알고리즘과 프로토콜을 구현하는 것이 권장됩니다.
암호화 체계 선택 및 구현을 위한 권고사항
인증 체계 구현을 위한 추가 권고사항
- Select industry-standard cryptographic algorithms and protocols, and select appropriate key generation, distribution, management and protection, as well as robust nonce mechanisms.
- 업계 표준의 암호화 알고리즘 및 프로토콜을 선택하고, 적절한 키 생성, 분배, 관리 및 보호 방법과 강력한 논스(nonce) 메커니즘을 선택합니다.
- Use current NIST recommended standards for cryptography (e.g., FIPS 140-3) or equivalent-strength cryptographic protection that are expected to be considered cryptographically strong throughout the service life of the device.
- 장치의 전체 서비스 수명 동안 암호학적으로 강력하다고 간주될 것으로 예상되는 현재 NIST 권장 암호화 표준(예: FIPS 140-3) 또는 동등한 수준의 암호화 보호를 사용합니다.
- Manufacturers should not implement cryptographic algorithms that have been deprecated or disallowed in applicable standards or best practices (e.g., NIST SP 800-131A, Transitioning the Use of Cryptographic Algorithms and Key Lengths). Implementation of algorithms with a status of “legacy use” should be discussed with FDA during a pre-submission meeting.
- 제조사는 관련 표준이나 모범 사례에서 사용 중단되었거나 금지된 암호화 알고리즘(예: NIST SP 800-131A, 암호화 알고리즘 및 키 길이 전환 지침)을 구현해서는 안 됩니다. “레거시 사용(legacy use)” 상태의 알고리즘을 구현하려는 경우, 사전 제출 회의에서 FDA와 논의해야 합니다.
- Design a system architecture and implement security controls to prevent a situation where the full compromise of any single device can result in the ability to reveal keys for other devices.
- 단일 장치가 완전히 침해되었을 때, 다른 장치의 키가 노출되는 상황을 방지할 수 있도록 시스템 아키텍처를 설계하고 보안 통제를 구현합니다.
- For example, avoid using master-keys stored on device, or key derivation algorithms based solely on device identifiers or other readily discoverable information.
- 예를 들어, 장치에 저장된 마스터 키나 장치 식별자 또는 쉽게 파악 가능한 정보만을 기반으로 한 키 파생 알고리즘 사용은 피해야 합니다.
- For example, avoid using device serial numbers as keys or as part of keys. Device serial numbers may be disclosed by patients seeking additional information on their device or might be disclosed during a device recall to identify affected products and should be avoided as part of the key generation process (e.g., public key cryptography can be employed to help meet this objective).
- 또한, 장치 일련번호를 키 또는 키의 일부로 사용하는 것도 피해야 합니다. 장치 일련번호는 환자가 자신의 장치에 대한 추가 정보를 요청할 때나 제품 리콜 시 영향을 받은 제품을 식별하기 위해 공개될 수 있으므로, 키 생성 과정에서 사용해서는 안 됩니다(예: 공개 키 암호화를 활용하면 이러한 목표 달성에 도움이 될 수 있습니다).
- Implement cryptographic protocols that permit negotiated parameters/versions such that the most recent, secure configurations are used, unless otherwise necessary.
- 협상 가능한 매개변수/버전을 허용하는 암호화 프로토콜을 구현하여, 특별한 사유가 없는 한 최신의 안전한 구성 설정이 사용되도록 합니다.
- Do not allow downgrades, or version rollbacks, unless absolutely necessary for safety reasons, and log and document the event. Downgrades can allow attackers to exploit prior, less protected versions and should be avoided.
- 안전상의 이유로 반드시 필요한 경우를 제외하고는 버전 다운그레이드 또는 롤백을 허용하지 말고, 해당 이벤트를 기록하고 문서화해야 합니다. 다운그레이드는 공격자가 이전의 보호 수준이 낮은 버전을 악용할 수 있게 하므로 피해야 합니다.
논스 (Nonce)
견고한 논스 매커니즘
- 용어 정의
- 논스(Nonce - Number Used Once)
- 암호화 통신에서 '단 한 번만 사용되는 임의의 숫자(난수)'를 의미합니다.
- 데이터를 암호화하거나 인증할 때, 평문(명령어)이 같더라도 이 Nonce 값을 매번 다르게 섞어줌으로써 결과적으로 매번 다른 암호문이 생성되도록 만듭니다.
- 견고한 매커니즘
- 단순히 C언어의 rand() 함수처럼 예측 가능한 소프트웨어적 난수를 쓰지 말고, 하드웨어 기반의 진난수 생성기(TRNG)나 암호학적으로 안전한 의사난수 생성기(CSPRNG)를 사용하여 해커가 다음 Nonce 값을 예측할 수 없도록 설계하는 요구사항입니다.
- 논스(Nonce - Number Used Once)
- 악용 시나리오 및 통제 방어 매트릭스
- 재전송 공격 (Replay Attack)
- 악용: 해커가 정상적인 "방사선 조사 시작" 또는 "약물 5ml 주입" 암호화 패킷을 가로챈 뒤, 동일한 패킷을 반복 전송하여 기기를 무단 강제 구동함.
- 통제 전략: 패킷에 **'일회성 Nonce + 타임스탬프 + 시퀀스 번호'**를 결합하여 암호화. 이전에 수신된 Nonce가 다시 들어오면 즉시 드롭(Drop) 처리.
- 초기화 백터 재사용 (IV Reuse in AES-GCM)
- 악용: 동일한 Nonce(IV)로 두 개의 다른 데이터를 암호화할 경우, 수학적 취약점이 발생해 비밀 키(Key)가 평문으로 노출됨.
- 통제 전략: 임베디드 환경의 소프트웨어 난수 한계를 극복하기 위해, MCU 내부의 **하드웨어 TRNG(진난수 생성 칩)**를 사용하여 예측 불가능한 Nonce 강제 할당.
- 새션 하이재킹 (Session Hijacking)
- 악용: 관리자 로그인 시 발급되는 세션 토큰(Nonce)을 유추하여 권한 상승(Elevation of Privilege).
- 통제 전략: 세션 발급 시 256-bit 이상의 고엔트로피(Entropy) 난수를 사용하고, 세션 타임아웃 시 Nonce를 영구 폐기(Out of Scope 처리).
- 재전송 공격 (Replay Attack)
FIPS 140-3
FIPS 140-3
- 용어 정의
- FIPS 140-3
- 미국 국립표준기술연구소(NIST)가 승인한 '암호화 모듈'에 대한 보안 요구사항. 알고리즘 자체(AES 등)뿐만 아니라, 그 알고리즘을 구동하는 소프트웨어/하드웨어 모듈이 안전하게 구현되었는지 인증하는 제도입니다. (예: FIPS 인증을 받은 OpenSSL 버전 사용)
- 동등한 강도의 암호화 보호 (Equivalent-strength cryptographic protection)
- 하드웨어 용량이나 OS 제약으로 인해 FIPS 인증 '모듈'을 설치할 수 없을 때, NIST가 권장하는 '알고리즘 및 키 길이(예: AES-256, RSA-3072 이상)'를 하드웨어 가속기나 경량화 코드로 직접 구현하여, 수학적 해독 난이도를 FIPS와 동일하게 맞추는 대체 통제(Alternative Control) 방식입니다.
- 서비스 기간 내내 안전한 암호 강도 (Strong throughout the service life)
- 컴퓨터 성능 향상(및 양자 컴퓨팅 발전)으로 인해 시간이 지나면 뚫립니다. 기기 수명이 10년이라면, "10년 뒤에도 뚫리지 않을 넉넉한 키 길이(Key Length)를 지금 적용해 두었는가?"를 묻는 지표입니다. (이를 '암호 민첩성(Crypto Agility)'이라고 부릅니다.)
- FIPS 140-3
- 대응 시나리오
- PC 기반 기기 (풍부한 리소스) (Windows, Linux 등)
- 대응: FIPS 140-3 인증 모듈 적용. Windows CNG FIPS 모드 활성화 또는 OpenSSL FIPS Object Module 사용.
- 임베디드/RTOS (제한된 메모리) (FIPS 모듈 탑재 불가)
- 대응: NIST 승인 알고리즘 자체/경량 구현. MCU에 내장된 하드웨어 암호화 가속기(Crypto Coprocessor) 활용. AES-256-GCM 적용.
- 긴 기대수명 (10년 이상)
- 대응: 오버 스펙 키 길이 선제 적용 및 암호 민첩성(Agility) 설계. RSA-2048 대신 RSA-3072 또는 ECC-256 적용. TLS 1.3 강제.
- PC 기반 기기 (풍부한 리소스) (Windows, Linux 등)