blog.stackframe.dev

SmartCard-HSM 보안 카드

비밀번호나 지문만을 보안 인증 요소로 사용하는건 복제나 도용의 위험이 상당히 높다. 따라서 하드웨어적으로 복제가 불가능한 PIV를 사용하기 위해 YubiKey를 구매했었는데 이를 제대로 활용하려면 PKI를 구성해야 한다. 문제는 단순히 PKI를 구성하면 CA 인증서와 키가 복사 가능하게 저장된다.

PIV에 들어있는 키는 하드웨어에만 저장되지만 CA의 키가 복사 가능하게 저장되면 의미가 없어지기에 CA에 사용되는 키 또한 하드웨어적으로 저장할 필요가 있다. PIV 인증키의 슬롯을 원래 용도 이외로 사용한다면 CA 인증서와 키를 저장할 수 있겠지만 아쉽게도 PIV는 사용할 수 있는 키의 종류와 크기가 매우 한정되어 있다. 특히 RSA는 2048 비트 밖에 지원하지 않으므로 유효기간이 긴 CA 인증서로 사용하기엔 좋지 않다. 따라서 RSA 4096 비트를 지원하면서 리눅스에서 사용할 수 있고 스마트카드 형태로 되어있는 SmartCard-HSM을 구매하게 되었다.

SmartCard-HSM 듀얼 인터페이스

구매는 cardomatic.de에서 가능하다. 독일에서 배송되고 기본 배송을 선택하면 준등기로 오기 때문에 꽤 시간이 걸린다. 나는 주문 후 수령까지 약 3주 정도 걸렸다.

RSA는 1024, 1536, 2048, 3072, 4096 비트를 지원하며 ECC는 192, 224, 256, 320, 384, 512, 521 비트까지 지원한다. 데이터시트에는 AES 또한 지원한다고 되어있지만 OpenSC를 통해 키를 생성하지 못하는 것 같다.

이 제품은 IC 리더기로 연결하거나 NFC를 통해 무선으로 통신할 수 있다. PIV와 달리 무선 인터페이스라고 접근할 수 있는 기능에 제한이 걸리지 않는다. 즉 카드 초기화 또한 무선으로 가능하다. 다만 모든 작업은 PIN을 입력해야 하기 때문에 자신도 모르게 데이터가 변조되는 일은 일어나지 않지만, PIN 인증 시도 초과로 카드가 잠겨버릴 수 있다. 거기다 SO-PIN의 인증 시도를 초과하면 카드 초기화조차 못하게 된다. 누군가가 무선으로 PIN, SO-PIN 인증 시도 횟수를 소비해버린다면 순식간에 쓸모없는 카드가 되어버리므로 주의해야 한다.

제조사 사이트의 데이터시트에는 RSA 4096 키 생성에는 120초가 걸린다고 되어있지만 내가 실험해보니 24초만에 생성되었다. 아마도 데이터시트를 작성한 시기의 자바 카드보다 더 좋은 성능을 내는 자바 카드를 변경되었기 때문일 것이다.

RSA 4096 키 쌍 생성에 23.893초 소요

SmartCard-HSM의 큰 장점은 제조사에서 OpenSC를 통해 직접적으로 지원한다는 점이다. 다른 HSM이나 카드들을 보면 설정할 때는 제조사에서 제공하는 툴을 사용해야 하고 이 툴은 특정 사용자에게만 제공되는 등 개인 사용자는 이용하기 곤란한 경우가 많다. 하지만 SmartCard-HSM은 OpenSC에서 대부분의 설정을 할 수 있고 PKCS11 라이브러리를 제공하기에 소스 공개가 되지 않은 프로그램을 설치하지 않아도 된다. 사용하는 방법은 OpenSC 위키에 있으므로 참고하면 된다.

댓글