PuTTY CAC est un fork de PuTTY, un terminal Secure Shell (SSH) populaire. PuTTY CAC ajoute la possibilité d'utiliser les bibliothèques Windows Certificate API (CAPI), Public Key Cryptography Standards (PKCS) ou Fast Identity Online (FIDO) pour effectuer une authentification par clé publique SSH à l'aide d'une clé privée associée à un certificat stocké sur un jeton matériel.
PuTTY CAC peut être utilisé avec de nombreux types de jetons cryptographiques tels que les Yubikeys et les modèles de cartes à puce populaires. Le « CAC » dans « PuTTY CAC » fait référence à Common Access Card, un jeton de carte à puce utilisé pour les installations du gouvernement américain qui a été l'un des premiers moteurs du développement de PuTTY CAC.
PuTTY CAC est géré indépendamment du gouvernement américain par la communauté open source.
Vous pouvez télécharger la dernière version de PuTTY CAC ici : https://github.com/NoMoreFood/putty-cac/releases
Le code source et les binaires de PuTTY CAC sont libres d'utilisation à toutes fins. La licence peut être trouvée ici : https://github.com/NoMoreFood/putty-cac/blob/master/code/LICENCE
Vous pouvez trouver un ensemble d'instructions de base sur l'utilisation du site Web de gestion des identités du gouvernement des États-Unis dans la section « SSH utilisant PuTTY-CAC » :
https://playbooks.idmanagement.gov/piv/engineer/ssh/
PuTTY CAC prend en charge les mêmes options de ligne de commande que PuTTY avec quelques options supplémentaires spécialisées pour PuTTY CAC spécifiquement.
Au lieu d'un chemin de fichier de clé PuTTY pour tout utilitaire PuTTY, vous pouvez spécifier une empreinte numérique de certificat ou un identifiant d'application. Par exemple:
putty.exe user@host -i CAPI:716B8B58D8F2C3A7F98F3F645161B1BF9818B689
putty.exe user@host -i PKCS:B8B58D8F2C3A7F98F3F645161B1BF9818B689716=C:PKCS.dll
putty.exe user@host -i FIDO:ssh:MyFidoKey
Les exécutables PuTTY (putty.exe, pageant.exe, psftp.exe) prennent en charge les options de ligne de commande supplémentaires suivantes. La plupart de ces options sont axées sur le fonctionnement de Pageant et sont également réglables depuis son interface utilisateur. Une fois définies, ces options s'appliqueront automatiquement aux exécutions ultérieures, sauf si elles sont spécifiquement désactivées. Les paramètres qui filtrent les boîtes de dialogue de sélection de certificat Pageant affecteront également les boîtes de dialogue de sélection de certificat de filtre dans l'application PuTTY standard :
-autoload
, -autoloadoff
-savecertlist
, -savecertlistoff
-forcepincache
, -forcepincacheoff
-certauthprompting
, -certauthpromptingoff
-trustedcertsonly
, -trustedcertsonlyoff
-ignoreexpiredcerts
, -ignoreexpiredcertsoff
-allowanycert
, -allowanycertoff
Pour les besoins de PuTTY CAC, le certificat est simplement un moyen pratique de référencer une paire de clés privée/publique. Si vous souhaitez utiliser PuTTY CAC pour vous connecter en toute sécurité à votre système et que vous n'avez pas accès à une autorité de certification (CA), le certificat peut être auto-signé. À l’inverse, PuTTY CAC peut être utilisé conjointement avec des serveurs SSH gérés pour appliquer l’authentification multifacteur. Cela peut être fait en garantissant que le fichier OpenSSH approved_keys contient uniquement les clés publiques associées aux jetons matériels, soit de manière procédurale, soit en créant un index de tous les certificats émis et en les recherchant via des directives OpenSSH telles que AuthorizedKeysCommand.
Le code spécifique utilisé pour s'interfacer avec le jeton matériel utilise les bibliothèques cryptographiques Microsoft qui sont à leur tour régies par les paramètres FIPS au niveau du système (voir le site Web de Microsoft). De même, le jeton matériel utilisé pour signer les défis d'authentification est assuré d'utiliser des algorithmes conformes à la FIPS si la clé matérielle est certifiée FIPS ; consultez le site Web du fabricant du jeton matériel pour plus d'informations. PuTTY lui-même utilise un cryptage et un hachage exclusifs une fois la session SSH établie, qui n'a pas fait l'objet d'une évaluation de conformité ou de certification FIPS.