나는 이 용도로 Secretive를 쓰는데, 운영체제 기본 도구만으로 전부 가능하다는 건 몰랐음.
macOS에 이 작업을 기본으로 처리할 도구가 모두 포함된 것은 최근의 일임. 개인적으로는 서드파티 도구 의존을 피하는 편이지만, 조사하면서 Secretive에 대한 좋은 평가도 접했음.
글쓴이임. 많은 실험을 거쳐 정리한 내용이라, 전문가들의 견해도 듣고 싶음!
Secure Enclave나 Apple 특유의 기술에 익숙하지 않아 글을 훑어봤는데, 키를 사용할 때마다 생체 인증이 필요한지, 아니면 일정 시간 인증을 기억하는지 궁금함.
데스크톱에서는 보통 SSH 키 암호를 로그인 암호와 같게 설정하고, 로그인 시 운영체제가 자동으로 키 잠금을 해제하도록 구성함. SSHFS나 Ansible 등으로 여러 호스트에 자동 접속하는 일이 많아서, 이 방식이 적당히 안전하면서도 매우 편리함.
그렇다면 -t bio 대신 -t none 을 쓰면 됨. 현재 구성과 같은 방식으로 동작함.
키 관리는 사용 환경에 따라 달라지는 듯함. 나는 여러 기기에서 SSH 키를 공유해서 1Password로 잘 관리하고 있지만, 일부 시스템 지원이 부족하다는 등의 단점도 있음.
노트북마다 별도 키를 쓰는 이유도 충분히 이해함. 다만 내 경우 Apple 노트북 약 3대를 포함해 SSH 접속에 쓰는 시스템이 총 5대 정도이고, 접속 대상도 Raspberry Pi, Linux 장비, 라우터 등 10대가 넘어서 키 배포가 상당히 번거로워짐.
나도 MacBook 몇 대와 Linux 시스템을 쓰지만, 기기마다 별도 SSH 키를 발급함. 그러면 기기 단위로 접근 권한을 더 세밀하게 제어할 수 있음.
1Password에는 개인 키를 저장해 두고 새 기기로 복사하는 것인지, 아니면 1Password 자체가 SSH 보안 키 제공자 역할을 하는 것인지 궁금함.
일반적으로 개인 키를 생성한 기기 밖으로 복사하는 것은 피해야 함. 임시 디렉터리나 USB에 실수로 남겨 둘 수 있고, 기기 하나가 도난당하거나 침해될 수도 있음.
원하는 해결책은 SSH 인증서임. 인증 기관(CA)을 구성해 호스트와 사용자 공개 키에 서명하면, 사용자 키를 공유·배포할 필요가 없어지고 처음 호스트에 접속할 때의 최초 사용 시 신뢰(TOFU) 취약점도 해결됨. 솔직히 키 지문을 확인하는 사람은 사실상 없음. 초기 CA 구성과 키 서명에는 약간의 작업이 필요하지만 자동화할 수 있음.
개인 키를 추출하거나 표시할 수 없고 도난도 불가능하다면, 개인 키 백업도 불가능하다는 뜻인가? GPG보다는 SSH에서 덜 중요하겠지만, 나는 하드웨어 고장에 대비해 중요한 키를 종이로도 출력해 보관함.
예전에 YubiKey를 SSH 키로 쓰려다가 비슷한 고민을 했음. 이 글처럼 Secure Enclave 내부에서 키를 생성하면 키가 밖으로 나온 적이 없어 가로채일 수 없다는 점에서 기밀성은 가장 높지만, 백업할 방법이 없어 가용성 측면에서는 최선이 아님.
나는 YubiKey 밖에서 키를 생성하고, 암호로 보호한 USB에 백업해 금고에 넣은 뒤 YubiKey로 가져오는 방식을 택했음. 키가 한때 메모리에 평문으로 존재해 악성코드 등에 가로채일 가능성을 감수하는 대신, 백업을 확보하는 절충임.
직접 시도하지는 않았지만 sc_util 매뉴얼에 import-ctk-identities와 import-ctk-certificate 하위 명령도 있음. 특히 import-ctk-identities에는 PKCS#12 아카이브 안의 개인 키 보호 방식을 지정하는 옵션이 있음. 이를 보면 외부에서 개인 키를 생성해 Enclave로 가져온 다음, 기기의 키 데이터를 삭제하거나 저장 매체를 분리하는 비슷한 절차도 가능할 것 같음.
개인 키를 Enclave에 보관한 채 Git에서 GPG 커밋 서명을 하는 것도 가능한가?
Git은 SSH 키로도 서명할 수 있으므로, 반드시 GPG 키를 써야 하는 것이 아니라면 가능함.
좀 더 조사해야겠지만, 이론적으로는 가능할 것 같음. 실제로 구현하려면 약간의 조정이 필요할 수도 있음.
Anthropic 덕분에 이제 NIST P-256도 믿을 수 있게 됐겠군. ;).
참고로 Secure Enclave는 P-256 키만 지원함.