- macOS의 Tahoe 버전에서 Secure Enclave를 이용한 SSH 키 생성 및 사용 기능이 기본 지원됨
-
/usr/lib/ssh-keychain.dylib라이브러리가 기존 스마트카드용 PKCS11Provider 외에 SecurityKeyProvider 인터페이스를 구현해, FIDO2 장치 대신 Secure Enclave와 직접 통신 가능 -
sc_auth명령으로 Touch ID 기반 생체인증 키 생성,ssh-keygen또는ssh-add를 통해 보안 영역에서 직접 키 불러오기 및 사용 가능 -
.zprofile에SSH_SK_PROVIDER환경변수를 설정하면 SSH, ssh-agent, ssh-keygen 모두에서 자동 인식 - 외부 도구 없이 macOS 기본 기능만으로 보안성과 편의성을 동시에 확보한 SSH 인증 구조 구현 가능
Secure Enclave 기반 SSH 키 지원 개요
- macOS Tahoe는 Secure Enclave 기반 SSH 키 생성 및 사용을 지원
- 기존에는
secretive같은 외부 프로젝트가 필요했으나, 이제 macOS 기본 기능으로 대체 가능
- 기존에는
-
/usr/lib/ssh-keychain.dylib이 SecurityKeyProvider를 구현해 FIDO2 장치와 유사한 방식으로 Secure Enclave 접근 가능 - 이 기능을 통해 YubiKey 등 외부 하드웨어 없이 macOS 내장 보안 칩으로 SSH 인증 수행 가능
키 생성 및 관리
-
sc_auth create-ctk-identity -l ssh -k p-256-ne -t bio명령으로 Touch ID 인증이 필요한 Secure Enclave 키 생성-
list-ctk-identities명령으로 생성된 키 목록과 해시 확인 가능 -
delete-ctk-identity명령으로 키 삭제 가능
-
-
list-ctk-identities -t ssh옵션으로 SSH 키 지문(fingerprint) 확인 가능
SSH에서의 사용
-
ssh-keygen -w /usr/lib/ssh-keychain.dylib -K -N ""명령으로 Secure Enclave에서 키 쌍 불러오기- PIN 입력은 필요 없으며, Touch ID로 인증
- 생성된 “private key”는 실제 비밀키가 아닌 FIDO 자격 증명 참조값
-
ssh-copy-id로 공개키를 서버에 복사 후,
ssh -o SecurityKeyProvider=/usr/lib/ssh-keychain.dylib localhost명령으로 접속 가능
ssh-agent 연동
-
ssh-add -K -S /usr/lib/ssh-keychain.dylib명령으로 Secure Enclave 키를 ssh-agent에 직접 등록 가능- 등록된 키는
ssh-add -L로 확인 - 이후
ssh -o SecurityKeyProvider=/usr/lib/ssh-keychain.dylib명령으로 인증 수행
- 등록된 키는
기본 SecurityKeyProvider 설정
-
.ssh/config에 직접 지정하거나,.zprofile에
export SSH_SK_PROVIDER=/usr/lib/ssh-keychain.dylib추가 시 자동 인식 - 이후 단순히
ssh-add -K또는ssh my-server명령으로 보안키 기반 SSH 접속 가능
내보내기 가능한 키 (Exportable Keys)
-
sc_auth create-ctk-identity -l ssh-exportable -k p-256 -t bio명령으로 Secure Enclave로 암호화된 내보내기용 키 생성 가능-
export-ctk-identity로 PEM 파일로 내보내고,
import-ctk-identities로 다른 장치에 재등록 가능
-
- 이 방식은 보안성은 다소 낮지만 백업에 유리
개발자 토론 및 코드 확장
- 댓글에서
.biometryCurrentSet플래그 사용 가능 여부가 논의됨- 현재는 “생체인증 사용 여부(on/off)”만 지원, 세부 제어 불가
- 작성자는
ssh-keychain.dylib을 역공학(reverse-engineering) 하여sk_enroll()함수에 biometryCurrentSet 기능 추가 가능성을 검토 - 제안된 코드 예시는 Apple Developer Program 계정으로 코드 서명(codesign) 해야 Secure Enclave 접근 가능
- 코드에는 키 생성, 서명, 등록(sk_enroll, sk_sign 등) 로직이 포함되어 있으며,
ECDSA P-256 키를 Secure Enclave에서 생성하고 서명하는 과정이 구현됨
요약
- macOS는 이제 Secure Enclave를 직접 활용한 SSH 인증을 네이티브로 지원
- Touch ID 기반 생체인증과 FIDO2 호환 구조를 통해 보안성과 편의성 향상
- 외부 하드웨어나 추가 소프트웨어 없이 시스템 내장 기능만으로 SSH 키 관리 가능
- 개발자들은
ssh-keychain.dylib을 확장해 세분화된 생체인증 제어를 실험 중