기술 가이드

SoftHSM 설치 및 초기화 가이드

5 min read 보안 업데이트됨 22 Sep 2025
SoftHSM 설치 및 초기화 가이드
SoftHSM 설치 및 초기화 가이드

핵심 정의

  • HSM: 비밀키를 외부에 노출하지 않고 생성·보관·연산을 수행하는 장치입니다.
  • PKCS#11: 암호화 토큰(HSM/스마트카드)을 표준화된 API로 접근하는 인터페이스입니다.

목적 및 적용 범위

이 문서는 SoftHSM v2를 기준으로 설명합니다. SoftHSM은 OpenDNSSEC 프로젝트의 요구를 충족하기 위해 개발되었고, 다른 PKCS#11 호환 제품과 함께 사용할 수 있습니다. 실제 하드웨어 HSM을 구매하기 어렵거나 테스트·개발 환경에서 HSM 동작을 모사할 때 유용합니다.

重要: SoftHSM은 소프트웨어 구현체입니다. 실서비스에서의 키 보호 수준은 하드웨어 HSM과 다르므로 중요 키는 하드웨어 장치에서 보관하는 것을 권장합니다.

목차

  • Dependencies (종속성)
  • Installation (설치)
  • 구성 파일
  • 소프트 토큰 초기화
  • 백업 및 복원
  • OpenSC 유틸리티와 사용
  • 보안 강화 권장사항
  • 마이그레이션 및 호환성 팁
  • 문제 해결 체크리스트
  • 운영자/개발자/보안팀 체크리스트
  • 결론

Dependencies

SoftHSM은 암호화 백엔드로 OpenSSL 또는 Botan을 지원합니다. Botan을 선택할 경우 GNU MP 지원(–with-gnump)을 활성화하면 공개키 연산 성능이 개선될 수 있습니다.

권장 항목

  • OpenSSL 개발 헤더 (openssl-dev 또는 libssl-dev)
  • pkg-config
  • make, gcc 등 빌드 도구
  • SQLite3 (마이그레이션 도구 또는 DB object store 사용 시)

Installation

SoftHSM 소스는 OpenDNSSEC 배포 사이트에서 제공됩니다. wget으로 소스를 내려받는 예:

wget https://dist.opendnssec.org/source/softhsm-2.3.0.tar.gz

SoftHSM 소스 아카이브 다운로드 화면

아카이브를 추출합니다:

tar xzf softhsm-2.3.0.tar.gz

tar로 아카이브 추출하는 예시 화면

추출 후에는 configure 스크립트로 의존성 및 빌드 옵션을 확인합니다:

./configure

configure 실행 중 의존성 검사 예시

만약 OpenSSL 헤더가 없다고 나온다면 시스템 패키지로 설치합니다. (Ubuntu/Debian 계열 예시)

sudo apt-get install libssl-dev pkg-config build-essential

OpenSSL 개발 패키지 설치 예시

설치 후 configure가 모든 요구를 만족한다고 표시하면 빌드합니다:

make

make 빌드 진행 화면

그 다음 설치합니다:

sudo make install

make install 설치 화면

configure 옵션 참고

configure 스크립트는 여러 빌드 옵션을 제공합니다. 전체 목록은 다음으로 확인하세요:

./configure --help

예시 옵션(원문 유지):

--disable-ecc       Disable support for ECC (default enabled)
--disable-gost      Disable support for GOST (default enabled)
--disable-visibility    Disable hidden visibilty link mode [enabled]
--with-crypto-backend   Select crypto backend (openssl|botan)
--with-openssl=PATH Specify prefix of path of OpenSSL
--with-botan=PATH   Specify prefix of path of Botan
--with-migrate      Build the migration tool. Used when migrating
        a SoftHSM v1 token database. Requires SQLite3
--with-objectstore-backend-db
            Build with database object store (SQLite3)
--with-sqlite3=PATH Specify prefix of path of SQLite3
--disable-p11-kit   Disable p11-kit integration (default enabled)
--with-p11-kit=PATH Specify install path of the p11-kit module, will
            override path given by pkg-config

구성 파일

기본 설정 파일 위치는 /etc/softhsm2.conf 입니다. 경로를 변경하려면 환경 변수 SOFTHSM2_CONF를 설정하세요.

export SOFTHSM2_CONF=/path/to/softhsm2.conf

기본 구성 파일 예시 화면

구성 파일에는 토큰 저장 경로, 로그, 오브젝트 스토어 타입(SQLite/파일) 같은 설정이 있습니다. 프로덕션에서는 토큰 파일이 저장되는 디렉터리의 접근 권한을 엄격히 제한하세요.

소프트 토큰 초기화

SoftHSM 토큰은 softhsm2-util 유틸리티 또는 PKCS#11 인터페이스로 초기화합니다. 기본 예시:

softhsm2-util --init-token --slot 0 --label "Token-1"

토큰 초기화 실행 예시

초기화 과정에서 Security Officer (SO) PIN과 User PIN을 설정합니다. SO PIN은 토큰 재초기화·관리용이며, User PIN은 애플리케이션(예: 브라우저)에서 토큰을 사용할 때 제공합니다. 토큰 초기화 후 새로운 미초기화 슬롯이 자동으로 추가됩니다.

토큰을 찾을 때는 슬롯 목록 또는 토큰 라벨/시리얼을 검색해서 접근하는 것을 권장합니다.

softhsm2-util 다른 옵션 예시 화면

슬롯 목록 확인 예시:

토큰 슬롯 목록 예시 화면

백업 및 복원

SoftHSM의 토큰과 오브젝트는 softhsm2.conf에 지정된 디렉터리에 파일 형태로 저장됩니다. 따라서 정기 백업은 파일 복사로 수행할 수 있습니다. 권장 절차:

  1. 토큰을 사용 중인 프로세스 중지(또는 토큰 잠금)
  2. 구성 파일에서 지정한 저장소(예: /var/lib/softhsm/tokens/) 전체를 안전한 위치로 복사
  3. 백업 파일의 권한과 소유자 제한
  4. 복원 테스트 수행

복원 시 권장 방법은 백업을 원위치에 복사한 뒤 파일 권한을 복구하고 서비스 재시작입니다. 백업 파일이 노출되면 키가 유출될 수 있으므로 암호화된 오프사이트 백업을 권장합니다.

SoftHSM을 OpenSC 유틸리티로 접근하기

OpenSC의 PKCS#11 유틸리티로 SoftHSM 토큰을 테스트할 수 있습니다. 설치 예시(Ubuntu/Debian):

sudo apt-get install opensc

OpenSC 설치 예시 화면

토큰 테스트 예시:

pkcs11-tool --module /usr/local/lib/softhsm/libsofthsm2.so -l -t

-t 스위치는 메커니즘 테스트용입니다.

pkcs11-tool 테스트 예시 화면

보안 강화 권장사항

  • 물리적 HSM 사용 권장: 민감한 주요 키는 하드웨어 HSM에서 보관하세요.
  • PIN 정책: 복잡도와 재시도 제한을 설정하고, SO PIN은 최소 권한자만 보유하세요.
  • 파일 권한: 토큰 저장 디렉터리에 대해 root 전용 접근 권한을 설정하세요.
  • 백업 보호: 백업은 암호화하고 오프사이트로 보관하세요.
  • 감사 로그: PKCS#11 호출과 관리 작업을 감사 로그로 남기세요.
  • p11-kit: 시스템의 PKCS#11 모듈 관리를 위해 p11-kit 통합을 검토하세요.

중요: SoftHSM에서의 키 연산은 소프트웨어 레벨에서 수행되므로 메모리 덤프나 스왑(swap)에 의한 키 노출 위험을 고려해야 합니다.

마이그레이션 및 호환성 팁

  • SoftHSM v1에서 v2로 마이그레이션하려면 마이그레이션 툴(–with-migrate)과 SQLite3가 필요합니다.
  • OpenSSL/Libtool 경로를 커스터마이즈해야 할 경우 configure의 –with-openssl 옵션을 사용하세요.
  • 애플리케이션이 특정 PKCS#11 모듈 경로를 요구하면 설치된 libsofthsm2.so 경로를 확인하여 설정하세요.

문제 해결 체크리스트

  • configure 단계에서 “OpenSSL header not found” 오류가 나면 libssl-dev 설치 여부 확인
  • softhsm2-util의 토큰이 보이지 않으면 SOFTHSM2_CONF 경로 및 토큰 디렉터리 권한 확인
  • pkcs11-tool 인증 실패 시 PIN 오타 또는 모듈 경로 오류 확인
  • 복원 후 토큰이 인식되지 않으면 파일 권한(소유자/모드)과 SELinux/AppArmor 정책 확인

운영자/개발자/보안팀 체크리스트

  • 운영자

    • 토큰 저장소 정기 백업과 복원 점검
    • 구성 파일 변경 시 변경 로그 기록
    • 패키지/라이브러리 보안 업데이트 적용
  • 개발자

    • PKCS#11 모듈 경로를 하드코딩하지 말고 구성으로 처리
    • 테스트 환경과 프로덕션 환경의 키 분리
    • 연산 실패 시 상세 로그를 남기도록 구현
  • 보안팀

    • SO PIN·관리 정책 수립
    • 키 생성/폐기 프로세스 검토
    • 규정 준수(감사·로그 보존기간) 점검

간단 체크명령 치트시트

  • 토큰 초기화
softhsm2-util --init-token --slot 0 --label "Token-1"
  • 슬롯/토큰 정보 조회
softhsm2-util --show-slots
  • PKCS#11 모듈 테스트
pkcs11-tool --module /usr/local/lib/softhsm/libsofthsm2.so -l -t
  • configure 도움말
./configure --help

언제 SoftHSM이 적합하지 않은가

  • 고가용성·내구성·강력한 키보호가 필수인 프로덕션 시스템에서는 하드웨어 HSM이 필요합니다.
  • 외부 규제(예: 특정 금융 규정)에서 하드웨어 기반 키 보관을 요구하는 경우 SoftHSM은 적합하지 않습니다.

결론

이 글에서는 SoftHSM의 역할과 설치, 초기화, 운영에서 지켜야 할 기본 원칙을 설명했습니다. SoftHSM은 PKCS#11 호환 소프트웨어 HSM으로 개발·테스트 용도로 효율적입니다. 단, 실제 운영에서 민감한 키는 하드웨어 HSM에 보관하는 것이 안전합니다.

요약

  • SoftHSM은 PKCS#11을 통해 암호화 키를 관리하는 소프트웨어 HSM입니다.
  • Ubuntu에서 소스 빌드·설치 후 softhsm2-util로 토큰을 초기화합니다.
  • 토큰 파일은 softhsm2.conf에 지정된 경로에 저장되며, 파일 백업으로 복원할 수 있습니다.
  • 프로덕션 보안 요구사항에 따라 하드웨어 HSM 사용을 검토하세요.

추가 자료 및 참조는 OpenDNSSEC 및 SoftHSM 공식 문서를 확인하세요.

공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

Snapchat 후면 카메라 문제 해결 가이드
앱 가이드

Snapchat 후면 카메라 문제 해결 가이드

안드로이드 네트워크 데이터 캡처 가이드
안드로이드 보안

안드로이드 네트워크 데이터 캡처 가이드

iOS 12.1.2 아이폰 셀룰러 데이터 버그와 해결법
모바일

iOS 12.1.2 아이폰 셀룰러 데이터 버그와 해결법

안드로이드에서 네트워크 데이터 캡처하기
Android

안드로이드에서 네트워크 데이터 캡처하기

거실용 PC 게임 콘솔 구축 가이드
PC 게임

거실용 PC 게임 콘솔 구축 가이드

Android 배터리 충전·방전 속도 측정 가이드
모바일

Android 배터리 충전·방전 속도 측정 가이드