HSM(Hardware Security Module)은 암호화 키를 안전하게 생성·저장·관리하고 암호 연산을 수행하는 전용 하드웨어 장치다. 물리적 변조 방지(tamper-resistance) 기능을 갖추고 있다.
HSM 종류
| 종류 | 형태 | 대표 제품 | 사용 환경 |
|---|
| 네트워크 HSM | 랙마운트 서버 | Thales Luna, nCipher nShield | 대형 데이터센터 |
| PCIe HSM | 확장 카드 | Thales payShield | 은행 서버 |
| USB HSM | 포터블 | YubiHSM 2, Nitrokey HSM | 개발/소규모 |
| 클라우드 HSM | 서비스형 | AWS CloudHSM, Google Cloud HSM | 클라우드 |
핵심 기능
1. 키 생성 (TRNG 기반 진정한 난수)
2. 키 저장 (메모리 내 보호, 비휘발성 암호화 저장)
3. 암호 연산 수행 (키가 HSM 밖으로 나가지 않음)
4. 물리적 보안
- 변조 감지: 개봉 시 자동 키 삭제 (Zeroization)
- 물리적 강화: 드릴/X-ray 방어
- 환경 센서: 온도/전압 이상 감지
5. FIPS 140-2/140-3 인증 (레벨 1~4)
AWS CloudHSM 사용 예시
python
# PKCS#11 라이브러리를 통한 HSM 접근
from pkcs11 import lib
hsm = lib('/opt/cloudhsm/lib/libcloudhsm_pkcs11.so')
token = hsm.get_token(token_label='my-hsm')
# 세션 열기
with token.open(user_pin='password', rw=True) as session:
# RSA 키페어 생성 (HSM 내부에 저장)
public, private = session.generate_keypair(
pkcs11.KeyType.RSA,
key_length=2048,
store=True,
label='my-signing-key'
)
# 서명 (개인키 HSM 탈출 없음)
signature = private.sign(
b'데이터',
mechanism=pkcs11.Mechanism.SHA256_RSA_PKCS
)
# 검증
public.verify(b'데이터', signature,
mechanism=pkcs11.Mechanism.SHA256_RSA_PKCS)
FIPS 140-3 보안 레벨
| 레벨 | 요구사항 | 사용 환경 |
|---|
| 1 | 소프트웨어 암호화 모듈 | 일반 앱 |
| 2 | 변조 증거(tamper-evident) | 일반 서버 |
| 3 | 변조 방지, 신원 기반 인증 | 금융/정부 |
| 4 | 물리적 완전 보호, 환경 공격 방어 | 고보안 시설 |
관련 문서
- •[[tpm|TPM (신뢰 플랫폼 모듈)]]
- •[[secure-enclave|보안 엔클레이브]]
- •[[key-management|키 관리 시스템 (KMS)]]