問題タブ [luks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
70 参照

c - LUKS ヘッダーを解析して整数値フィールドを正しく読み取る

ここで指定された仕様に従って、luks ボリュームがインストールされているデバイスから生データを読み取って luks ヘッダーを解析しようとしています: https://gitlab.com/cryptsetup/cryptsetup/wikis/LUKS-standard/on -disk-format.pdf、具体的には、各場所に存在するデータ、そのデータの種類、および単一の値に対してそれらのデータ型がいくつ存在するかを示す表を含む6ページ。

たとえば、hash-spec 文字列は位置 72 にあり、32 型の char バイトが含まれています。これを配列に集めて結果を出力するのは簡単ですが、バージョンやキーバイト (おそらくキーの長さ) などの数値の表で詳しく説明されているように、これらの値は複数の整数にまたがっています。バージョンには 2 つの unsigned short があり、key-bytes には値を表す 4 つの unsigned int があります。

私はこれにやや混乱しており、正しい値を取得するためにそれをどのように解釈すべきか. luks で暗号化された USB スティックをスキャンし、これらのフィールドの読み取りから取得したものを表示する、面倒なテスト スクリプトを作成しました。

これは非常に紛らわしいです。ハッシュ スペック フィールドには期待値が保持され、文字列そのものが保持されるからです。しかし、バージョン フィールドまたはキーバイト フィールドをどのように解釈すればよいのでしょうか。これらは両方とも完全に乱数のように見えますが、私が知る限り、仕様にはこれを説明するものは何もありません. これは、これを行うためのコードを実際にどのように記述しているかに問題がある可能性があると考えました。以下は、これらの値を表示するために使用されるスクリプトです。

どんな助けでも感謝します、ありがとう。

0 投票する
2 に答える
570 参照

json - LUKSヘッダーの開始バイトと終了バイトをプログラムで見つける方法は?

ブロックストレージデバイスの LUKS ヘッダーの正確な開始バイトと正確な終了バイトをプログラムで特定するにはどうすればよいですか?

フル ディスク暗号化 (FDE) に Linux Unified Key Setup (LUKS) を使用しているため、ドライブ上のすべてのデータは、パスフレーズから派生したものではない強力なマスター キーを使用して暗号化されています。パニック/緊急シャットダウン状況でドライブをワイプします (つまり、誰かがあなたのラップトップを物理的に盗んでいます)。

1000T ドライブがあり、緊急シナリオで時間が短すぎて (~30 秒)、ドライブを実際にランダムなバイトで満たすことができないとします。代わりに、ヘッダー (マスター キーとソルトを含むキースロットを含む) が失われると、ドライブ上のすべてのデータが無価値になるため、ヘッダーを上書きしたいと思います。 .

LUKS ヘッダーの開始バイトと終了バイトをプログラムで安全に決定して、何を上書きすればよいかを知るにはどうすればよいですか?

注: 提供されるソリューションは、 LUKS1 (2014 年にリリース) とLUKS2 (2018 年にリリース)の両方で有効である必要があります。

LUKS1 では、開始が 0 であり、終了はpayload-offsetコンテナーのバイナリ ヘッダーのフィールドに 512 を掛けることで決定されることがわかりました。たとえば、

この場合、LUKS1 ヘッダーは byte 4096 * 512=で終了します2097152

LUKS2 では、LUKS ヘッダーの JSON メタデータ オブジェクトを解析する必要があるため、はるかに複雑です。