// glossary / hkdf
HKDF.
「リンク内のランダムなバイト列」と「ノートを開く鍵」との間にある一歩。
// definition
HKDF(HMAC ベースの鍵導出関数)は、入力材料から暗号鍵を導きます。BurnPony はそこへ 32 バイトのフラグメント鍵 — 任意で PBKDF2 で伸長したパスフレーズと組み合わせて — にランダムな 16 バイトのソルトと固定のコンテキスト文字列を与え、AES-256-GCM 鍵を得ます。
これは何か
導出は規律をもたらします。リンク内のバイト列が暗号鍵としてそのまま使われることはありません。それらは入力材料であり、ソルトとバージョン固有のコンテキストで束ねられます。だから、ある用途や書式バージョンの鍵が、別のものと取り違えられることはありません。
なぜ重要か
これはパスフレーズ機能のきれいな接合点でもあります。パスフレーズがなければ HKDF はフラグメント鍵だけを処理し、あれば伸長したパスフレーズが混ぜ込まれます — 導出経路は 1 つ、強度は 2 段階、書式に特別扱いはありません。
// in BurnPony
コンテキスト文字列は v1 エンベロープ用にバージョン管理され、同じ導出がアプリの Swift とビューアの WebCrypto でまったく同一に走ります — 共有のテストベクトルで検証済みで、片方が封印し他方が開く仕組みは、両者が完全に一致してこそ成り立つからです。
関連用語
よくある質問。
なぜフラグメント鍵をそのまま使わないのですか?
そのまま使えば、リンク書式が暗号方式に永久に縛られ、ソルト・パスフレーズ・バージョンを結び付ける場所もなくなります。HKDF は各ノートに適切に導出された鍵を与え、書式に発展の余地を残します。
ソルトは何をするのですか?
エンベロープ内に公然と保存された 16 バイトの新鮮なランダムバイトで、運の悪い状況でも導出鍵がノートごとに一意であることを保証します — 何のコストもかからない、標準的な二重の備えです。
BurnPony を入手
iPhone と Android 向けの無料の自己消滅型暗号化ノート。受信者に必要なのはブラウザだけ。アカウントなし、トラッキングなし。