OpenSSH의 PKCS#11 공급자: PIN을 캐시할 수 있습니까?

OpenSSH의 PKCS#11 공급자: PIN을 캐시할 수 있습니까?

스마트 카드의 OpenSSH 클라이언트와 함께 RSA 키를 사용하고 있습니다. 스마트 카드는 PIN 패드가 있는 스마트 카드 리더로 읽혀집니다. 키는 PIN 코드로 보호됩니다.

어떻게든 PIN 코드를 캐시할 수 있나요? 저는 ssh를 사용할 때마다 카드 리더 키보드를 사용하여 PIN을 작성하는 것을 정말 좋아하지 않습니다... 짜증스러울 뿐만 아니라 다른 사람들의 눈에는 IMHO가 너무 많은 가능성을 열어줍니다.

내 설정은 Debian/Devuan + OpenSC + .ssh/config의 일반적인 "PKCS11Provider /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so"입니다.

opensc.conf, 프레임워크 pkcs15에 다음 줄을 추가하려고 시도했지만 아무 소용이 없습니다.

use_pin_caching = true;
pin_cache_counter = 64;
pin_cache_ignore_user_consent = true;

OpenBSD에서 동일한 구성을 사용하고 있으며 결과는 동일합니다.

저는 Aventra MyEID 4.5.5를 스마트 카드로 사용하고 있습니다. 이 기술을 프로덕션에 사용하기 전에 최대한 많은 것을 배우려고 노력하고 있기 때문에 Cherry, Gemalto(현 Thales), SCM/Identiv 등 다양한 리더기를 사용해 볼 수 있었습니다.

답변1

ssh-agent-tPIV 자격 증명( ssh-agent 또는 ssh-add를 통해)은 일정 기간 동안 캐시됩니다 .

SSH 클라이언트는 이미 스마트 카드/piv를 사용하여 성공적으로 인증할 수 있으므로 다음 ssh-add명령은 이를 ssh-agent에 캐시할 수 있습니다.

ssh-add -s <path to shared library pkcs11>  #add keys provided by pkcs11
#          for me, /usr/lib/ssh-keychain.dylib

캐시된 ID가 만료되면 SSH 오류는 다음과 같습니다.

sign_and_send_pubkey: signing failed for RSA "<id>" from agent: agent refused operation

그런 다음 다음 명령을 사용하여 이전 캐시 항목을 지울 수 있습니다.

ssh-add -e <path to shared library pkcs11>  #removed keys provided by pkcs11
#          again, for me, /usr/lib/ssh-keychain.dylib

ssh-add -D                                  #delete all identities from agent (may not be needed, ymmv)

자세한 내용은 리소스를 참조하세요 man ssh-add. 하지만 2024년 2월 현재 -s 및 -e 외에 다른 PIV 관련 옵션은 없습니다.

ssh-addpkcs15를 사용하고 있다는 점에 유의하세요. /와의 상호 운용성 은 확실하지 않지만 ssh-agent올바른 라이브러리를 전달하는 한 필요할 수 있습니다.

관련 정보