blog.stackframe.dev

Solokey에서 yubiKey로 전환

이전부터 MFA에 solokey를 주로 사용해오고 있었고 킥스타터에서 새롭게 공모된 solo 2까지 후원했었다. 하지만 solo2의 개발은 작년 1월을 마지막으로 더 이상 추가되는 커밋이 없었고 제조사 측에서도 앞으로의 지원이나 계획에 관해 언급이 없는 상황이다. 따라서 개인적으로 solokey는 프로젝트가 죽었다고 생각하고 있다.

그렇기에 예전에 yubiKey를 구입하고 이런저런 적용이나 테스트를 해보면서 사용했지만 완전한 교체를 시도하지 않았다. 일단 기존의 사용하던 solo1은 문제가 없고 교체해야 하는 강한 동기가 없었기에 계속 쓰는 상황이었다. 그러다가 노트북의 SSD를 새롭게 추가하고 리눅스 시스템을 다시 셋업해야하는 계기가 있어 이번 기회에 교체를 추진하게 되었다.

나는 다양한 부분에서 FIDO를 활용하고 있다. 인터넷 계정들의 MFA, SSH 인증, 스토리지 복호화, 시스템 로그인 등등 사용이 가능하다면 최대한 적용해왔다. 이렇게 다양한 부분에 적용된 설정들을 모두 yubiKey로 변경했다. 작업을 하면서 알게 된 것은 NFC를 통한 FIDO2 인증은 적어도 안드로이드에서는 제대로 작동하지 않는다는 점이다.

인증을 진행할 수 없다.

처음에는 스마트폰 혹은 yubiKey 문제인가 싶어서 이리저리 시도해 보았지만 실패했고 USB-C 타입 yubiKey로 직접 연결해서 해보니 성공했다. 이 때 FIDO2 PIN을 입력하는 화면이 나왔는데 아마도 NFC를 통한 인증 프로세스 때 PIN 코드를 받는 부분의 구현이 되어 있지 않은 것이 원인이 아닐까 싶었다.

USB로 연결했을 때 표시된 PIN 입력 화면

FIDO 이외의 부분으로는 OpenPGP 서명, 복호화 키를 yubiKey에 프로비저닝했다. 예전에 만들어 두었던 PGP 키를 yubiKey에 두고 이메일 서명이나 복호화를 할 때 키를 통해 처리하게 했다.

Thunderbird에서 암호화된 이메일을 보려할 때 표시되는 PIN 입력 창

이 작업을 하면서 맞닥뜨린 문제는 바로 PIV와 충돌이었다. PIV와 OpenPGP card는 기본적으로 신용카드로 흔히 사용되는 스마트카드 기반으로 동작하기에 하나의 yubiKey에 동일한 기술로 접근하게 된다. 그런데 OpenPGP는 장치에 대해 CCID로 직접 접근을 하고 PIV는 pcscd를 통해 접근하기에 충돌이 발생한다. 이를 완화하기 위해 ~/.gnupg/scdaemon.confccid-disable 라인을 추가했다. 이렇게 하면 CCID를 통한 접근을 하지 않고 fallback으로 pcscd를 통해 연결하게 된다. 하지만 충돌은 여전히 존재하는데 그 이유는 GnuPG는 exclusive하게 장치를 사용하기에 OpenPGP를 사용하면 PIV를 사용하지 못하고, PIV를 사용하면 OpenPGP를 사용하지 못하는 상황이 발생한다. 이것을 우회하는 방법은 위의 파일에 pcsc-shared 라인을 추가하는 것이다. 이렇게 하면 연결을 공유하기에 둘 다 사용할 수 있지만 문제는 로그인 세션을 유지하지 못하기에 OpenPGP PIN을 매번 입력해야 동작하게 된다. 이렇게 된다면 실생활에 사용이 어렵기에 나는 그냥 pcsc-shared는 추가하지 않고 필요 시 재연결하는 방법으로 일단 사용하려 한다. 이 문제에 관한 자세한 내용은 OpenSC에 올라온 이슈를 확인하면 좋다. Yubikey is known to have the PIV applet and the OpenPGP applet. OpenSC can handle both to access keys and certificates, but only one at a time. #1849

PIV는 미국 정부 인증 시스템에서 사용되는 표준인데 이를 통해 PKI 기반의 인증체계를 구축할 수 있고 나의 큰 관심거리 중 하나였다. 거기다 firefox에서 OpenSC PKCS#11 모듈을 가져다 사용하면 인증서 기반의 사용자 인증 또한 가능하기에 정부가 아닌 개인 사용에 적용할 수 있어 매우 범용성도 좋다고 생각한다. 한가지 단점으로는 PIV는 RSA 2048까지만 지원이 된다는 점이었지만 YubiKey 펌웨어 5.7에서 RSA 4096 지원이 들어간다는 발표가 있었다.

문제는 이 발표를 보기 전에 YubiKey 5를 추가 구매해 버렸다는 점이다.

구매해버렸다

YubiKey는 보안을 이유로 펌웨어 업데이트를 지원하지 않기에 이전 버전이 오면 그대로 사용해야한다. 배송이 늦어져서 5.7 버전이 왔으면 하는 바램이 있는데 과연 그렇게 될 지...


안타깝게도 5.7 펌웨어가 탑재된 키가 오지 않았다. 그래서 큰 맘먹고 2개를 추가로 더 주문했다.

추가 지출 100%

댓글