鍵整合性チェックなしのファイル暗号化ユーティリティ(対称鍵)

鍵整合性チェックなしのファイル暗号化ユーティリティ(対称鍵)

対称キーを使用してファイルを暗号化するとき、最も一般的なユーティリティ(gpg、mcryptなど)は、復号化中にキーの整合性を検証するために使用できる情報を暗号化されたメッセージに保存します。たとえば、復号化中に間違ったキーを入力すると、gpg は次を返します。

gpg:復号化失敗:無効なキー

ランダムな文字列を含むファイルを暗号化するとします。その後、標準ユーティリティで使用される主要な整合性チェックにより、脆弱性が追加されます。

キー/メッセージの整合性を確認するために情報や冗長性を保存しない一般的なユーティリティはあります(したがって、確認のために暗号化されたファイルを「復号化する」)どのキー提供)?

ベストアンサー1

私の交換でその他の回答、他のものを提案したいと思います。何か美しいです... DM-crypt。

一般的なdm-crypt(LUKSなし)はキーに関する情報を保存しません。代わりに、cryptsetup通常のデバイスを開いて使用するためにパスワードを使用することをお勧めします。たとえば、見てみましょう。

[root:tmp]# fallocate -l 16M cryptfile
[root:tmp]# cryptsetup --key-file - open --type plain cryptfile cfile-open <<<"pa55w0rd"

注:cryptfileサイズは512バイト以上でなければなりません。最小セクタサイズの施行が考えられますcryptsetup

この時点では、すべてのランダムなデータを/dev/mapper/cfile-open。 Obscurityはセキュリティを追加し、ユーザーが書き込むデータの量を正確に記録します。 (これはデフォルトのチャンクがすでに半ランダムである場合にのみ実際に機能します。つまり、ファイルを完全に埋めようとしない場合は、代わりににまたはを使用してopenssl rand作成する必要があります。)... Somewhereを使用してデバイスから書き込みを開始することもできます。途中で。dd if=/dev/urandomfallocatedd

それでは、もう少し簡単なことをしましょう。

[root:tmp]# cryptsetup status cfile-open
/dev/mapper/cfile-open is active.
  type:    PLAIN
  cipher:  aes-cbc-essiv:sha256
  keysize: 256 bits
  device:  /dev/loop0
  loop:    /tmp/cryptfile
  offset:  0 sectors
  size:    32768 sectors
  mode:    read/write
[root:tmp]# b $((32768*512))
B         KiB      MiB    GiB  TiB  PiB  EiB
16777216  16384.0  16.00  .01  0    0    0
[root:tmp]# ll cryptfile
-rw-r--r--. 1 root root 16777216 Feb 21 00:28 cryptfile
[root:tmp]# openssl rand -out /dev/mapper/cfile-open $((32768*512))
[root:tmp]# hexdump -n 16 -C /dev/mapper/cfile-open
00000000  00 1d 2d 11 ac 38 c4 d3  cc 81 4f 32 de 64 01 ca  |..-..8....O2.d..|
00000010
[root:tmp]# cryptsetup close cfile-open

この時点で、暗号化されたファイルを16MiBのランダムデータで埋めました。間違ったパスワードで再度開くと、何が起こるかを確認してください。正しいパスワードで再度開くと、元のデータがそのまま残っていることがわかります。

[root:tmp]# cryptsetup --key-file - open --type plain cryptfile cfile-open <<<"pass"
[root:tmp]# hexdump -n 16 -C /dev/mapper/cfile-open
00000000  89 97 91 26 b5 46 87 0c  67 87 d8 4a cf 78 e6 d8  |...&.F..g..J.x..|
00000010
[root:tmp]# cryptsetup close cfile-open
[root:tmp]# cryptsetup --key-file - open --type plain cryptfile cfile-open <<<"pa55w0rd"
[root:tmp]# hexdump -n 16 -C /dev/mapper/cfile-open
00000000  00 1d 2d 11 ac 38 c4 d3  cc 81 4f 32 de 64 01 ca  |..-..8....O2.d..|
00000010
[root:tmp]# 

楽しんでください。

おすすめ記事