보안
PKCS#11
MDanderson
2024. 12. 9. 16:05
PKCS#11은 암호학적 작업 및 키 관리 작업을 위한 암호화 토큰 인터페이스 표준입니다. Public-Key Cryptography Standards (PKCS) 중 하나로, 하드웨어 보안 모듈(Hardware Security Module, HSM), 스마트카드, USB 토큰 등과 같은 보안 장치에서 암호화 서비스를 제공하는 표준 인터페이스입니다.
PKCS#11은 애플리케이션과 암호화 장치 간의 통신을 정의하며, 주요 기능으로 암호화/복호화, 디지털 서명, 키 생성 및 관리 등이 있습니다.
여기서 **"인터페이스"**란, 소프트웨어(애플리케이션)와 하드웨어(보안 장치) 간의 상호작용을 가능하게 하는 규칙이나 방법을 말합니다. 쉽게 말해, 두 시스템 간의 의사소통을 위한 공통된 언어와 약속이라고 이해할 수 있습니다
PKCS#11에서 "인터페이스"는 암호화 장치(예: HSM, 스마트카드 등)와 애플리케이션이 상호작용하기 위해 사용하는 함수와 데이터 구조의 집합입니다. 이를 통해 애플리케이션은 보안 장치의 기능을 호출하고, 필요한 작업(암호화, 복호화, 키 생성 등)을 수행할 수 있습니다.
인터페이스의 역할
- 애플리케이션과 하드웨어 간의 통신을 가능하게 함:
- 예: 애플리케이션이 HSM에 요청하여 암호화 작업을 수행하거나 키를 생성.
- 표준화된 방법 제공:
- 다양한 제조사의 HSM이나 보안 장치가 있어도 동일한 PKCS#11 인터페이스를 사용하면 호환 가능.
- 예: A사의 HSM에서 사용하던 코드가 B사의 HSM에서도 동작.
- 장치의 복잡성을 추상화:
- 애플리케이션 개발자는 장치 내부 구현을 알 필요 없이 PKCS#11 API를 호출하기만 하면 됨.
PKCS#11 인터페이스의 구성 요소
PKCS#11 인터페이스는 함수, 데이터 타입, 데이터 구조로 이루어진 표준입니다.
인터페이스 표준의 중요성
- 다양한 하드웨어 간의 호환성:
- PKCS#11은 제조사나 장치 유형에 상관없이 동일한 방식으로 기능을 호출할 수 있도록 표준을 정의.
- 예: HSM, 스마트카드, USB 토큰 등 다양한 장치에서 동일한 코드로 동작.
- 애플리케이션 개발 간소화:
- 개발자는 PKCS#11 표준 인터페이스만 알면 다양한 보안 장치를 손쉽게 사용할 수 있음.
- 장치 내부의 복잡한 동작이나 프로토콜을 몰라도 작업 가능.
- 보안성 보장:
- 장치의 핵심 데이터(예: 개인키)는 외부로 노출되지 않고 보안 장치 내부에서 안전하게 처리.
PKCS#11에서 "인터페이스"는 애플리케이션과 보안 장치가 서로 소통하는 규칙과 약속입니다. 이를 통해 애플리케이션은 보안 장치의 복잡성을 추상화하고, 키 관리나 암호화 같은 작업을 쉽게 수행할 수 있습니다. 표준화된 인터페이스 덕분에 제조사나 하드웨어에 종속되지 않는 개발이 가능하며, 보안성과 호환성을 모두 확보할 수 있습니다.
PKCS#11의 주요 특징
- 장치 독립성:
- 다양한 제조사의 HSM이나 보안 장치에서도 동일한 인터페이스를 사용 가능.
- 애플리케이션은 PKCS#11 API를 통해 특정 장치에 의존하지 않고 암호화 작업을 수행.
- 하드웨어 보안:
- 중요한 암호화 키(예: 개인키)는 HSM 또는 보안 토큰 내부에 저장되며, 외부로 유출되지 않음.
- PKCS#11은 키 생성 및 관리 작업을 보안 장치에서 수행.
- 범용 암호화 API:
- 암호화, 복호화, 서명 생성 및 검증, 해시 계산 등 다양한 암호화 작업을 지원.
- RSA, AES, SHA-256 등의 암호화 알고리즘 사용 가능.
PKCS#11의 구성 요소
- 토큰(Token):
- 암호화 작업을 처리하거나 키를 저장하는 물리적 또는 논리적 장치.
- 예: HSM, 스마트카드, USB 보안 토큰.
- 슬롯(Slot):
- 보안 장치가 연결된 물리적 또는 논리적 포트.
- 슬롯마다 하나 이상의 토큰이 연결될 수 있음.
- 세션(Session):
- 애플리케이션과 토큰 간의 활성 연결.
- 세션을 통해 애플리케이션은 토큰과 상호작용하며, 암호화 작업을 수행.
- 객체(Object):
- 암호화 키, 인증서, 데이터 등 토큰에 저장된 정보.
- 객체는 공개, 개인, 비밀로 분류될 수 있음.
PKCS#11 주요 기능
- 암호화 및 복호화:
- 대칭키(예: AES)와 비대칭키(예: RSA)를 사용한 데이터 암호화 및 복호화.
- 디지털 서명 및 검증:
- 개인키를 사용해 서명을 생성하고, 공개키를 사용해 서명을 검증.
- 키 관리:
- 암호화 키 생성, 저장, 검색, 삭제 등 작업.
- 키는 HSM 내부에서 생성되어 외부로 유출되지 않음.
- 인증(Authentication):
- 토큰 사용 전에 PIN 입력 등으로 사용자 인증 수행.
- 난수 생성:
- 보안 장치에서 안전한 난수를 생성.
- 해시(Hash) 및 MAC:
- 데이터 무결성 확인을 위한 해시 계산(SHA-256 등) 및 MAC(Message Authentication Code) 생성.
PKCS#11 사용 사례
- HSM 통합:
- PKCS#11은 HSM에서 암호화 키를 안전하게 관리하고 사용하기 위해 널리 사용됨.
- 예: 데이터 암호화, 키 보관, 디지털 서명.
- 스마트카드 인증:
- 스마트카드를 통한 사용자 인증 및 디지털 서명 작업.
- SSL/TLS:
- PKCS#11을 통해 SSL/TLS 인증서 및 키를 안전하게 관리.
- PKI(Public Key Infrastructure):
- 인증서 관리 및 디지털 서명 생성.
- 데이터 암호화:
- AES와 같은 대칭키 암호화를 사용해 민감한 데이터를 보호.