내가 이해한 게 맞다면, 이건 개인 키를 백업할 수 없다는 뜻임
Secure Enclave 안에 저장되므로 노트북을 잃으면 키도 함께 사라짐
공개 키만 내보낼 수 있는 것 같음. 물론 다른 접근 방법이나 관리자 리셋이 가능하겠지만, 그래도 약간 불안한 구석이 있음
나중에 OP가 답변을 달고 웹페이지를 업데이트한다고 함
man sc_auth를 참고하면 됨. Secure Enclave에서 직접 생성하는 대신 암호화된 내보내기용 키를 만들 수 있음
예시 명령어로 sc_auth create-ctk-identity -l ssh-exportable -k p-256 -t bio 등을 실행하고, 이후 export-ctk-identity로 .pem 파일을 만들 수 있음
다른 기기에서 import-ctk-identities로 다시 불러올 수 있음. 이 내용을 가이드에 추가할 예정임
원래 키는 ‘내보내는’ 게 아님. 키를 옮길 때마다 노출 위험이 생김 PKI의 핵심은 공개 키만 이동하고, 개인 키는 한 곳에만 존재해야 함
맞음. 여러 개의 키를 백업용으로 만들어두는 게 좋음
이렇게 하면 어떤 경우에도 키가 유출되지 않음
개인 키를 내보낼 수 없는 건 YubiKey와 동일한 개념임
YubiKey에서 생성된 개인 키도 백업할 수 없음
원칙적으로는 여러 키를 사용하는 게 맞음
기기를 잃거나 도난당해도 문제없게, 기기별로 하나씩 두는 게 이상적임
나는 PIN으로 보호된 YubiKey를 금고에 보관해둠. 만약 노트북, 폰, 일상용 YubiKey가 모두 사라져도 대비가 됨
조금 더 나아가면 ECDSA 기반 GPG 서명도 가능함
다만 버그 때문에 패치된 GPG와 SSH agent가 필요함
macOS용 UI가 포함된 패키지 버전이 있고 (KeetaNetwork/agent),
같은 백엔드가 Linux에서도 PKCS#11을 통한 TPM으로 작동함
GPG와 SSH의 차이는 키와 서명을 감싸는 방식뿐이며, 근본적으로는 모두 ECDSA임
Secretive가 설정은 더 간단하지만, 이 방식으로 바꿔서 앱을 하나 줄일 생각임
Windows 11에서 TPM 기반 SSH 키를 설정하는 방법을 내 블로그에 정리했음
Linux에서도 TPM에 ssh-key를 저장할 수 있는지 궁금함
꽤 멋진 기능임
나는 Secretive를 오랫동안 사용해왔고, 물리 키나 카드보다 훨씬 편했음
SSH 키가 사용될 때마다 버튼을 누르거나 지문 인식을 해야 해서 언제 사용되는지 명확히 알 수 있음
ssh-agent 터널을 유지해 원격 서버에서도 안전하게 git 서명을 할 수 있음
다만 Tahoe 버전은 버그가 많고 자주 멈춤. 디버깅할 여유가 없어서 그냥 두고 있음
Smart Card 기반 SSH UX는 예전에 고생했던 기억이 있지만, 안정적이라면 시도해볼 만함
나도 Secretive를 좋아하지만, ssh-agent의 확인 기능은 OpenSSH에서도 오래전부터 지원함 ssh-askpass를 통해 각 개인 키 사용 시 확인할 수 있음. 다만 로컬/원격 구분은 안 됨
이 방식은 NSA가 백도어를 심었다는 의심이 있는 커브를 사용하므로 주의해야 함
Secure Enclave 안에 저장하는데 왜 개인 키 파일이 필요한지 궁금함
OpenSSH의 sk 구현도 마찬가지임. “resident key” 옵션이 있어도 개인 키 파일이 필요함
이는 단순히 FIDO 자격 증명에 대한 참조일 뿐, 실제 비밀 키 데이터는 포함하지 않음
비거주형 sk 키의 경우 하드웨어 인증기가 상태를 저장하지 않기 때문에 파일이 필요함
macOS의 구현이 상태 저장형인지 비저장형인지는 확실치 않음. OS 재설치 시 깨질 수도 있음
facebookincubator/sks라는 프로젝트가 있음
다양한 하드웨어 기반 SSH 키를 추상화하는 golang 라이브러리로, Linux, Windows, macOS를 지원함
하지만 golang 라이브러리만으로는 ssh-agent가 작동하지 않음
그래서 나는 예전에 ssh-tpm-agent를 직접 만들기 시작했음
iPhone에서도 같은 개인 키로 이메일이나 파일 서명을 하고 싶음
iCloud가 이를 처리해줄 수 있을까 궁금함
이런 키들은 iCloud로 동기화되지 않음
대신 Passkey가 동기화됨. Passkey API와 통신하는 SecurityKeyProvider를 새로 만들어야 함
Passkey는 특정 앱 번들 ID나 도메인에 묶여 있음
예를 들어 Secretive가 Passkey를 지원한다면, 그 키쌍은 다른 앱에서는 사용할 수 없지만
같은 앱의 여러 기기 간에는 동기화됨
이제 KeyMux에 새로운 기능을 추가할 때가 됨
이 도구는 SSH, SSL, PGP용 enclave 키를 지원하며,
예를 들어 Secure Enclave 기반 SSL 인증으로 Vault 서버에 접속해 비내보내기형 Vault 개인 키로 SSH 인증을 수행할 수 있음 keymux.com과 App Store 링크에서 확인 가능함
Hacker News 의견
내가 이해한 게 맞다면, 이건 개인 키를 백업할 수 없다는 뜻임
Secure Enclave 안에 저장되므로 노트북을 잃으면 키도 함께 사라짐
공개 키만 내보낼 수 있는 것 같음. 물론 다른 접근 방법이나 관리자 리셋이 가능하겠지만, 그래도 약간 불안한 구석이 있음
나중에 OP가 답변을 달고 웹페이지를 업데이트한다고 함
man sc_auth를 참고하면 됨. Secure Enclave에서 직접 생성하는 대신 암호화된 내보내기용 키를 만들 수 있음예시 명령어로
sc_auth create-ctk-identity -l ssh-exportable -k p-256 -t bio등을 실행하고, 이후export-ctk-identity로.pem파일을 만들 수 있음다른 기기에서
import-ctk-identities로 다시 불러올 수 있음. 이 내용을 가이드에 추가할 예정임PKI의 핵심은 공개 키만 이동하고, 개인 키는 한 곳에만 존재해야 함
이렇게 하면 어떤 경우에도 키가 유출되지 않음
YubiKey에서 생성된 개인 키도 백업할 수 없음
기기를 잃거나 도난당해도 문제없게, 기기별로 하나씩 두는 게 이상적임
나는 PIN으로 보호된 YubiKey를 금고에 보관해둠. 만약 노트북, 폰, 일상용 YubiKey가 모두 사라져도 대비가 됨
조금 더 나아가면 ECDSA 기반 GPG 서명도 가능함
다만 버그 때문에 패치된 GPG와 SSH agent가 필요함
macOS용 UI가 포함된 패키지 버전이 있고 (KeetaNetwork/agent),
같은 백엔드가 Linux에서도 PKCS#11을 통한 TPM으로 작동함
GPG와 SSH의 차이는 키와 서명을 감싸는 방식뿐이며, 근본적으로는 모두 ECDSA임
Secretive가 설정은 더 간단하지만, 이 방식으로 바꿔서 앱을 하나 줄일 생각임
Windows 11에서 TPM 기반 SSH 키를 설정하는 방법을 내 블로그에 정리했음
꽤 멋진 기능임
나는 Secretive를 오랫동안 사용해왔고, 물리 키나 카드보다 훨씬 편했음
SSH 키가 사용될 때마다 버튼을 누르거나 지문 인식을 해야 해서 언제 사용되는지 명확히 알 수 있음
ssh-agent 터널을 유지해 원격 서버에서도 안전하게 git 서명을 할 수 있음
다만 Tahoe 버전은 버그가 많고 자주 멈춤. 디버깅할 여유가 없어서 그냥 두고 있음
Smart Card 기반 SSH UX는 예전에 고생했던 기억이 있지만, 안정적이라면 시도해볼 만함
ssh-askpass를 통해 각 개인 키 사용 시 확인할 수 있음. 다만 로컬/원격 구분은 안 됨이 방식은 NSA가 백도어를 심었다는 의심이 있는 커브를 사용하므로 주의해야 함
Secure Enclave 안에 저장하는데 왜 개인 키 파일이 필요한지 궁금함
sk구현도 마찬가지임. “resident key” 옵션이 있어도 개인 키 파일이 필요함이는 단순히 FIDO 자격 증명에 대한 참조일 뿐, 실제 비밀 키 데이터는 포함하지 않음
비거주형
sk키의 경우 하드웨어 인증기가 상태를 저장하지 않기 때문에 파일이 필요함macOS의 구현이 상태 저장형인지 비저장형인지는 확실치 않음. OS 재설치 시 깨질 수도 있음
facebookincubator/sks라는 프로젝트가 있음
다양한 하드웨어 기반 SSH 키를 추상화하는 golang 라이브러리로, Linux, Windows, macOS를 지원함
그래서 나는 예전에 ssh-tpm-agent를 직접 만들기 시작했음
iPhone에서도 같은 개인 키로 이메일이나 파일 서명을 하고 싶음
iCloud가 이를 처리해줄 수 있을까 궁금함
대신 Passkey가 동기화됨. Passkey API와 통신하는 SecurityKeyProvider를 새로 만들어야 함
Passkey는 특정 앱 번들 ID나 도메인에 묶여 있음
예를 들어 Secretive가 Passkey를 지원한다면, 그 키쌍은 다른 앱에서는 사용할 수 없지만
같은 앱의 여러 기기 간에는 동기화됨
이제 KeyMux에 새로운 기능을 추가할 때가 됨
이 도구는 SSH, SSL, PGP용 enclave 키를 지원하며,
예를 들어 Secure Enclave 기반 SSL 인증으로 Vault 서버에 접속해 비내보내기형 Vault 개인 키로 SSH 인증을 수행할 수 있음
keymux.com과 App Store 링크에서 확인 가능함