Ansible Vault如何检测错误的密码?

pmoubed

Ansible Vault使用什么机制来检测错误的Vault密码?换句话说,如果用户输入了错误的库密码,则Ansible会在下面显示错误消息。怎么样?

Decryption failed (no vault secrets were found that could decrypt)

保险柜有效载荷是否有Ansible用来检测错误密码的任何部分

西蒙

ansible-vault相关部分的代码可以在以下位置找到:https : //github.com/ansible/ansible/blob/devel/lib/ansible/parsing/vault/ init .py#L736

概括而言,它使用指定的密码和库ID解密文件。因此它将在文件库中查找文件库ID,然后尝试解密密码。crytpo部分将只返回一个字节的字符串时,解密成功,返回预期的格式(PKCS7):

  • 因此,首先,分析保管库的内容(十六进制格式转换为实际字节):
b_ciphertext, b_salt, b_crypted_hmac = parse_vaulttext(b_vaulttext)
  • 然后,从salt和密码生成相关密钥:
b_password = secret.bytes
b_key1, b_key2, b_iv = cls._gen_key_initctr(b_password, b_salt)
  • 正如您正确指出的_decrypt_cryptography那样,该函数所做的第一件事是使用从上面的密码派生的密钥之一来检查HMAC是否正确:
hmac = HMAC(b_key2, hashes.SHA256(), CRYPTOGRAPHY_BACKEND)
hmac.update(b_ciphertext)
try:
  hmac.verify(_unhexlify(b_crypted_hmac))
except InvalidSignature as e:
  raise AnsibleVaultError('HMAC verification failed: %s' % e)
  • 然后,发生实际的解密:
cipher = C_Cipher(algorithms.AES(b_key1), modes.CTR(b_iv), CRYPTOGRAPHY_BACKEND)
decryptor = cipher.decryptor()
unpadder = padding.PKCS7(128).unpadder()
b_plaintext = unpadder.update(
  decryptor.update(b_ciphertext) + decryptor.finalize()
) + unpadder.finalize()
  • b_plaintext则返回。

因此,当您使用错误的密码时,加密功能将返回非PKCS7数据,然后导致出现上述消息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Ansible如何重播通知

来自分类Dev

如何使用Ansible输入私钥密码

来自分类Dev

ansible命令:模块返回错误

来自分类Dev

ansible local_action返回错误“无效输出为:[通过ansible的sudo,密钥= xxx]密码:”

来自分类Dev

“奇数字符串”的Ansible-Vault错误

来自分类Dev

如果忘记密码,请恢复ansible-Vault密码

来自分类Dev

Ansible:ansible-playbook委托错误

来自分类Dev

Ansible:SSH错误:ControlPath太长

来自分类Dev

Ansible命令执行错误

来自分类Dev

How to automate ansible vault decryption?

来自分类Dev

如何自动进行Ansible Vault解密?

来自分类Dev

如何在Ansible命令中传递用户名/密码

来自分类Dev

Ansible:没有密码的sudo

来自分类Dev

如何分配ansible模块?

来自分类Dev

Ansible成为密码

来自分类Dev

如何获取Ansible库存并填充Ansible变量?

来自分类Dev

我如何放慢ansible?

来自分类Dev

Ansible Galaxy角色路径错误

来自分类Dev

如何使用Ansible设置Postgres密码

来自分类Dev

如何获取Ansible库存并填充Ansible变量?

来自分类Dev

Ansible如何重播通知

来自分类Dev

Ansible错误:KeyError:“ ApiVersion”

来自分类Dev

Ansible:Ansible-Playbook委托错误

来自分类Dev

Ansible命令执行错误

来自分类Dev

Ansible:如何通过Ansible获取服务状态?

来自分类Dev

如何阻止根密码触发Ansible中的更改条目?

来自分类Dev

Ansible角色YAML错误

来自分类Dev

如何根据Ansible事实对Ansible进行分组?

来自分类Dev

如何修复Ansible中的内存错误?