ansible ではパスワードなど重要な情報を保全するために、ファイル単位で暗号化する ansible-vault というコマンドがある。 この暗号方式について調べたのでメモ。 3行でまとめると Entrypt-then-MAC(EtM)の認証付き暗号 ファイルの対称暗号方式は AES-CTR MAC は HMAC-SHA256 暗号処理の流れ 0. 前提 インプットとしては 暗号化するファイル ユーザーが入力したパスワード がある 1. salt の生成 /dev/urandom で salt を生成 2. 暗号鍵 の生成 salt パスワード をもとに、 PBKDF2 を使って暗号鍵を生成(ラウンド数は 10000, PRF は HMAC-SHA256) この鍵を、 key1 key2 IV(nonce) に分割 3. ファイルデータの暗号 key1 IV(をもとにした counter