J'ai récemment un Yubikey Neo (et un peu déçu que vous ne pouviez avoir que deux méthodes d'authentification de second facteur activées de tous les énumérées).
Dans les gestionnaires de mots de passe, ceux-ci prennent en charge YUBIKEY, Password Safe est open-source et fonctionne localement. Il peut être configuré pour authentifier à l'aide de YUBIKEY HMAC-SHA1 Challenge-Response . Je suis confus, comment il est possible de faire un mécanisme sécurisé de réponse à la réponse en toute sécurité avec seulement deux parties: (1) mon PC local, et (2) Yubikey. ( Documentation associée )
En fait, quel est l'avantage d'envoyer un mot de passe principal à YUBIKEY, obtenez la réponse et déchiffrer la base de données en l'utilisant? Maintenant, la réponse YUBIKEY est notre mot de passe statique, disponible dans la mémoire et tout le mot de passe principal de Places peut être divulguée.
Ils l'ont mis en œuvre pour s'amuser? Ou je manque quelques points?
Je ne résoutez pas spécifiquement aucune des questions originales ici concernant le but de Yubikey avec le mot de passe en toute sécurité, mais je pense que l'expérience que j'ai effectuée peut éclairer la situation.
J'ai confirmé que @kousha est correct: la réponse YUBIKEY devient simplement le mot de passe statique.
Vérifiez comme décrit ci-dessous. (Je voulais fournir le code suivant pour aider l'affiche à mot de passe Safe Safe forge , mais je n'ai pas de compte à le faire.)
Une réponse YUBIKEYYY peut être générée de manière simple avec HMAC-SHA1 et la clé secrète de YUBIKEY, mais générer le mot de passe Safe Yubikey Response est un peu plus impliquée en raison de caractères NULL et d'incompatibilités du système d'exploitation. (Essentiellement, il faut insérer un octet nul entre tous les octets originaux dans le défi.) En outre, les défis de Yubikey Get analysé . En bref, sur un ordinateur Linux, si key
enregistre la clé secrète de la forme hexadécimale avec 40 hexats et message
stocke le défi, puis la commande suivante doit renvoyer la réponse de votre mot de passe Yubikey:
printf $message |
xxd -p | sed 's/../&00/g' |
sed 's/00$//' | cut -c -63 | xxd -r -p |
openssl dgst -sha1 -mac HMAC -macopt "hexkey:$key" -binary |
xxd -p
Si possible, vous voudrez peut-être écrire une clé secrète temporaire sur Yubikey et utiliser un défi autre que votre mot de passe réel pour la vérification - je ne connais pas comment les ordinateurs stockent des variables ou d'autres problèmes de sécurité connexes. (Je serais heureux d'apprendre si quelqu'un a des connaissances à ce sujet.) Vous pouvez au moins masquer les caractères dactylographiés à l'aide de stty
. Le script suivant invite la clé secrète et le défi sans les afficher, puis génère la réponse de mot de passe Yubikey.
#!/usr/bin/env bash
stty -echo
printf "shared secret key (40 hexits): "
read HMACSHA1_key
if [ -z "$HMACSHA1_key" ]; then
stty echo
printf '\n Empty input. Exiting.\n'
exit 1
fi
if [ ${#HMACSHA1_key} -ne 40 ]; then
stty echo
printf '\n Need exactly 40 characters. Exiting.\n'
exit 1
fi
HMACSHA1_no_space="${HMACSHA1_key/ /}"
if [ ${#HMACSHA1_no_space} -ne 40 ]; then
stty echo
printf '\n No spaces. Exiting.\n'
exit 1
fi
HMACSHA1_key_mod_hex=$(printf "$HMACSHA1_key" | sed 's/\([0-9]\|[a-f]\|[A-F]\)//g')
if [ -n "${HMACSHA1_key_mod_hex}" ]; then
stty echo
printf '\n Invalid characters: %s\n' "${HMACSHA1_key_mod_hex}"
printf '\n Only 0-9, a-f, A-F allowed. Exiting.\n'
exit 1
fi
printf "\n"
printf "message/challenge: "
read HMACSHA1_value
if [ -z "$HMACSHA1_value" ]; then
stty echo
printf '\n Empty input. Exiting.\n'
exit 1
fi
printf $HMACSHA1_value |
xxd -p | sed 's/../&00/g' |
sed 's/00$//' | cut -c -63 | xxd -r -p |
openssl dgst -sha1 -mac HMAC -macopt "hexkey:$HMACSHA1_key" -binary |
xxd -p
Je ne peux pas attendre la portabilité de la commande ci-dessus et du script ci-dessus. Ils sont paré versions de choses qui ont travaillé pour moi, au moins.