TECH 으로 돌아가기
TECH HACKER NEWS 어제 10분 읽기 64 READS

FIPS 140-3 인증서는 보안 보증서가 아니다: 감사자들이 실제로 보는 것

한 대형 HSM 벤더의 세일즈 엔지니어는 최근, FIPS 지원 HSM을 구매한 고객의 90퍼센트 이상이 정작 FIPS 모드를 꺼둔 채 장비를 운영한다고 털어놓았다. 인증서를 얻기 위해 프리미엄을 지불한 뒤, 그 인증서가 기술하는 바로 그 설정을 스스로 비활성화하는 것이다. 흔히 비웃음을 살 만한 이야기처럼 들리지만, 상당수의 경우 이것은 합리적인 엔지니어링 판단에 가깝다.

타이밍도 이 논의를 피할 수 없게 만든다. 2026년 9월 21일이면 남아 있는 FIPS 140-2 인증서가 모두 NIST의 '히스토리컬(historical)' 목록으로 넘어가고, 이 목록에 오른 모듈은 신규 연방 조달에서 배제된다. 조달 담당자들은 벤더에게 FIPS 140-3 서류를 재촉하고, 벤더는 검증 대기열에서 여름을 보내고 있다. 막대한 돈과 관심이 '인증서'라는 한 장의 종이로 흘러 들어가는 지금이야말로, 그 인증서가 실제로 무엇을 보장하는지 냉정하게 짚어볼 때다.

인증서가 실제로 증명하는 것

FIPS 140-3 검증은 암호 모듈 경계(cryptographic module boundary) 안쪽에만 적용된다. 즉 특정 펌웨어 버전, 특정 설정에서 승인된 알고리즘이 올바르게 구현되었고, 키를 소거(zeroize)할 수 있으며, 전원 인가 시 자체 시험을 수행하고, 레벨 2~4에서는 물리적 변조에 저항하거나 대응한다는 사실을 확인한다. 그것이 범위의 전부다. 모듈을 호출하는 애플리케이션, 그 주변의 접근 제어, 키 관리 정책, 운영자 카드를 쥔 사람, 최초의 키를 집어넣은 세리머니(ceremony)는 모두 경계 바깥에 있어 검사 대상이 아니다.

검증은 또한 하나의 스냅숏이다. 정확한 펌웨어 버전과 설정에 묶이기 때문에, 레거시 클라이언트를 위해 비승인 모드를 켜거나 다른 펌웨어를 올리는 순간 그 장비는 더 이상 인증서상의 물건이 아니게 된다. 원문 필자의 경험상 대부분의 HSM 운영 환경은 몇 달 안에 검증된 설정에서 벗어나지만, 그 순간 대시보드가 빨갛게 변하는 곳은 어디에도 없다.

인증받은 채로 출하된 결함들

검증이 보안 보증이 아니라는 가장 강력한 증거는, 인증을 받고도 수년간 악용 가능한 결함을 실은 채 출하된 모듈들의 목록이다. 2017년 ROCA는 인피니온의 RSA 키 생성 결함으로, 고정된 구조의 소수를 만들어 공개키만으로 1024·2048비트 키를 사실상 인수분해할 수 있게 했다. 문제의 라이브러리는 최소 2012년부터 FIPS 140-2와 커먼크라이테리아 EAL5+ 인증을 받은 칩에 실려 있었고, 검증이 존재하는 바로 그 이유인 키 생성 함수 안에서 5년간 아무것도 걸러지지 않았다. 에스토니아는 이 때문에 국가 신분증을 중단했다.

2024년 EUCLEAK는 인피니온 ECDSA 구현의 비-상수시간 모듈러 역원 연산이 전자기 부채널을 통한 개인키 추출을 허용한 사례로, 14년과 약 80건의 최고 등급 커먼크라이테리아 평가를 통과하는 동안 발견되지 않았다. YubiKey 5 FIPS 시리즈와 YubiHSM 2 FIPS가 영향을 받았고, 펌웨어를 현장에서 갱신할 수 없어 수정은 곧 하드웨어 교체를 의미했다. 2004~2014년의 Dual_EC_DRBG는 NSA 백도어가 의심되는 난수 생성기가 10년간 NIST 승인 알고리즘이자 RSA의 FIPS 검증 BSAFE 라이브러리 기본 RNG였던 사례다. 그동안 모든 인증서는 정확했다. 알고리즘은 승인되었고, 구현도 올바랐다.

가장 아이러니한 것은 2019년 YubiKey FIPS 시리즈다. 여기서는 FIPS 요구사항이 결함을 놓친 정도가 아니라 결함을 만들어냈다. 펌웨어 4.4.2와 4.4.4에서 전원 인가 후 난수 버퍼에는 FIPS 자체 시험의 잔여물인 예측 가능한 값이 남았고, 256비트 논스를 쓰는 ECDSA 연산에서 최대 80비트가 예측 가능해 실용적 키 복구 범위에 들어갔다. 이 문제는 FIPS 시리즈에만 존재했고 일반 소비자용 YubiKey는 멀쩡했다. 인증받은 제품이 같은 진열대의 비인증 제품보다 측정 가능할 만큼 덜 안전했던 것이다.

스냅숏의 대가와 실무적 의미

검증이 일회성 서류 작업인 데다 CMVP 대기열이 제출부터 인증까지 통상 12~18개월 걸린다는 점은 구조적 함정을 낳는다. 보안 패치를 지금 내보내고 1년 넘게 검증 목록에서 빠지느냐, 아니면 알려진 결함이 있는 검증 빌드를 계속 출하하느냐. 활성 인증서를 계약으로 요구하는 고객은 사실상 벤더에게 후자를 택하도록 대가를 지불하는 셈이다. 2019년 YubiKey에서 이미 수정 펌웨어가 존재했음에도 새 버전 인증이 날 때까지 교체품을 내보낼 수 없었던 것이 그 메커니즘이다. Go 역시 오랫동안 BoringCrypto·레드햇·마이크로소프트의 비공식 포크 세 갈래로 갈렸다가 Go 1.24에서 순수 Go로 작성된 네이티브 암호 모듈(CMVP #5247)을 얻었지만, 인증서는 Go 1.24에서 동결된 v1.0.0을 덮고 있고 v1.26.0은 여전히 진행 목록에 있다. 오늘 인증 모듈로 빌드한 바이너리는 두 개 메이저 릴리스 뒤처진 암호 코드를 돌린다.

FIPS가 무의미하다는 뜻은 아니다. 이 프로그램은 한 세대의 사이비 암호를 몰아냈고, '검증 없으면 구매 없음'은 여전히 합리적인 조달 하한선이다. 다만 FIPS 140-3는 산술과 그 주변의 의례(무결성 자체 검사, 사용 전 KAT, 키 쌍마다의 쌍별 일관성 시험, SP 800-90A DRBG, RSA 2048비트·HMAC 112비트 하한)를 규정할 뿐, 공격자가 실제로 악용하는 상수시간·부채널 저항은 일반 등급에서 요구하지 않는다. EUCLEAK가 14년을 버틴 이유가 그것이다. 다만 난수 영역만은 예외적으로 깊이 규정하는데, SP 800-90B의 엔트로피 평가와 상시 건강 시험 요구는 올여름 콜드카드 지갑을 비운 조용한 약한 생성기 폴백 같은 실패를 표면화하기 위해 훔쳐올 만한 대목이다.

의례에는 측정 가능한 성능 비용도 따른다. Go 1.25.1에서 GODEBUG=fips140=on/off를 비교하면, 대칭 암호와 서명은 연산별 시험이 없어 그대로지만 키 생성은 매번 서명·검증 한 사이클을 도는 PCT를, 난수는 읽을 때마다 DRBG 구성 비용을 문다. 이는 TLS 핸드셰이크의 임시 키에도 영향을 준다. 여기에 승인 모드는 AES 가속이 없는 하드웨어에서 ChaCha20-Poly1305를, 그리고 Argon2 비밀번호 해싱을 기술적 우열과 무관하게 금지하는 조용한 세금까지 얹는다.

디지털 자산 진영에서의 구조적 충돌

서두의 통계, 즉 FIPS HSM 구매자 열에 아홉이 모드를 끄고 쓴다는 이야기는 암호화폐 업계에서 일화가 아니라 구조다. 비트코인과 이더리움이 서명에 쓰는 secp256k1 곡선은 NIST 승인 집합에서 빠졌다. FIPS 186-5 초안에 곡선 추가를 요청하자 NIST는 '권고 곡선 대비 뚜렷한 이점이 없다'면서도 SP 800-186이 블록체인·DLT 용도의 사용은 허용한다고 답했다. 그러나 '블록체인 허용'은 '승인'이 아니며, 벤더도 그렇게 구현한다. AWS CloudHSM은 secp256k1과 Ed25519 서명을 비-FIPS 모드 클러스터에서만 제공하고 그 모드는 클러스터 생성 시 고정된다. 이더리움의 Keccak-256도 표준화된 SHA-3 이전의 패딩을 쓰기에 승인된 FIPS 202 함수가 아니다. 결국 BIP32 지갑 유도 같은 비트코인 도구는 인증 경로 위에서 그대로 깨진다. 감사자가 인증서에서 실제로 눈길을 두는 곳은 인증서가 덮지 않는 나머지 전부, 즉 운영 설정의 표류, 키 세리머니의 증적, 엔트로피의 출처다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://808bits.com/articles/fips-140-3-not-a-security-guara...
SHARE
처리 중...