FIPS 140-3 컴플라이언스의 *엔지니어링* 비용 — 한 고객을 위해 6개월
한 미국 연방 고객을 위해 *FIPS 140-3 검증된 암호화* 만 쓰도록 시스템 전체를 다시 짠 6개월. 그 작업의 시간·돈·정치 비용.
작년에 한 미국 연방 고객의 입찰을 위해 우리 시스템 전체 를 FIPS 140-3 검증된 암호화 만 쓰도록 다시 짰다. 6개월 걸렸다.
이 글은 그 진짜 비용 — 코드 라인 수, 의존성 변경, 정치, 그리고 누가 이걸 해야 하나 의 결정.
FIPS 140-3 가 정확히 무엇인가
FIPS 140-3 — FIPS Publication 140-3. 미국 연방 정부가 암호화 모듈 에 요구하는 표준. 검증된 모듈만 사용 가능 — 즉, NIST 가 공식 검증한 라이브러리·하드웨어만.
연방 고객 입찰의 진입 자격 인 경우가 많음. 후일 추가가 거의 불가능 — 처음부터 박혀 있어야.
6개월의 시간 분배
작업 | 기간 | 비용 (인건비)
─────────────────────────────────────────┼──────────┼──────────────
의존성 audit (FIPS 비-검증 라이브러리 식별)| 4주 | $16,000
대체 라이브러리 발굴 + 평가 | 6주 | $24,000
TLS / 암호화 호출의 명시적 wrap | 8주 | $32,000
빌드 시점 FIPS 모드 활성화 | 2주 | $8,000
검증 (FIPS 모드에서 모든 테스트 통과) | 4주 | $16,000
*인증* 자체 (외부 lab + 서류) | 6주 | (외부 비용 별도)
─────────────────────────────────────────┼──────────┼──────────────
총 | 30주 | $96,000 (+ 외부 인증 비용)진짜 비싼 부분 — 의존성
대부분의 시간이 우리 코드 가 아니라 의존성 에 들어갔다. 예시:
Node.js 표준 crypto 모듈
기본 빌드는 FIPS 비-호환. FIPS-builds 의 Node.js 가 따로 있고, 우리는 그것을 base image 에 박아야 함. 이거 자체에 2주.
TLS 라이브러리
OpenSSL 이 FIPS 모드 OK. 우리가 직접 쓴 적 없는 transit 라이브러리들이 각자 자기 TLS 구현 사용 중인 경우 — 그것들 모두 FIPS 호환 버전 으로 교체.
JSON Web Token
jsonwebtoken npm 패키지 — 순수 JS 암호. FIPS 비-호환. node-jose + FIPS Node 빌드로 교체.
Random Generator
Math.random 같은 비-암호적 PRNG 가 어떤 곳에 있는지 우리도 몰랐던 곳에서 발견됨. UUID 생성, slug 생성, 임시 토큰 생성 — 모두 crypto.randomBytes 로 교체.
4 정치적 비용
엔지니어링 비용 외에 정치적 비용 이 있었다.
1. FIPS 검증되지 않은 신기술 채택 보류
새로운 라이브러리 / 서비스가 나와도 FIPS 검증이 없으면 채택 못 함. 이게 기술 결정 을 느리게 만듦. 6개월간 3건의 업그레이드 보류.
2. FIPS 외 고객과 동일 코드베이스 유지 결정
옵션 두 개:
- FIPS 빌드 와 일반 빌드 를 같은 코드베이스 에서 — 복잡, 그러나 유지보수 적음
- 완전히 별도 fork — 단순, 그러나 영구 차이 누적
우리 결정 — 같은 코드베이스 + 빌드 플래그. 결정에 3주.
3. 비-FIPS 의존성 발견 시 정책
새 의존성 추가 PR 마다 FIPS 호환성 점검 강제. 호환 안 되면 PR 거부. 이 정책이 엔지니어링 속도 15% 감소. 합의에 분기 1회 미팅 + CTO 결정.
4. 외부 인증 비용 책임
NIST 검증 lab 비용이 수만 달러. 그 비용을 해당 고객 청구 에 포함할지, 우리 OPEX 로 흡수할지. 이걸 상업 협상 에서 명시해야 함.
그래서 가치 있나
이 한 고객 계약 = 연 수백만 달러. $96,000 + 외부 인증 의 ROI 는 명확히 양수.
다만 한 고객 한 명 만 보고 했으면 후회할 결정. 우리는 FIPS 가 진입 자격 인 추가 잠재 고객 이 3 곳 더 있음을 확인 후 결정. 한 곳만이면 보류했을 것.
미국 연방 / 일부 EU 정부 / FIPS 표준을 채택한 한국 공공기관 입찰을 준비 중인 보안 / 엔지니어링 리드에게 순서는 하나다. FIPS 가 입찰 요건인지 명시적 확인 부터. 요건이 맞으면 위 6개월 + $96,000 이 최소 예산. 그리고 단일 고객을 위해 하지 말 것 — 우리처럼 3 곳 이상 모였을 때 결정.
비슷한 글
"Git은 위험하고 SVN은 안전하다"는 말은 어디까지 맞을까 — 운영 관점 비교표
Git과 SVN의 보안 비교에는 저장소를 어디에 운영하는가와 개발자에게 무엇이 복제되는가라는 두 문제가 섞여 있다. 공식 문서를 근거로 내부 서버 운영, 로컬 복사 범위, 경로별 읽기 분리, 반출, 권한 회수 다섯 항목을 표로 비교하고 형상관리 보안 검토에서 확인할 체크리스트를 정리했다.
백재민
내부망에서 Git을 쓰면 공공기관도 안전한가 — 공개 자료로 확인한 답
"Git은 클라우드라서 폐쇄망에서는 못 쓴다"는 질문을 받고 공식 문서·정부 발표·조달 문서로 확인했다. 답은 "내부망 Git은 안전하게 운영할 수 있다"이고, 그렇게 만들기 위해 설계 단계에서 챙길 두 가지와 보안 심사용 질문 목록을 정리했다.
백재민
소스 수정 전에 락을 겁니다만 — 락 기반 형상관리에서 동시 개발로 넘어간다는 것
공공기관 미팅에서 반복해서 받는 질문이 있다. 지금은 파일에 락을 걸고 수정하는데, 이 솔루션은 어떤 형태냐는 것. 락 모델과 브랜치·머지 모델의 차이, 락 없이 사고를 막는 방법, 그리고 기존 이력을 잃지 않는 전환 경로까지.
백재민