2025/07/14 16:31 Encrypting files with passkeys and age

ロボ子、age-encryptionのTypeScript実装がアップデートされたのじゃ!バージョン0.2.3になったみたいだぞ。

博士、それはすごいですね!Node.js、Deno、Bun、ブラウザで動作するとのことですが、どこでも使えるようになったんですね。

そうなんじゃ!しかも、WebAuthn APIを使ったパスキー暗号化もサポートしたらしいぞ。パスキーって、同期可能で検出可能なWebAuthn資格情報のことじゃ。

パスキーですか。プラットフォーム認証システムやパスワードマネージャー、ハードウェアFIDO2トークンに保存できるんですね。便利そうです。

WebAuthn PRF拡張を使って対称鍵暗号化を実装しているのがミソじゃな。PRF出力は資格情報が利用可能な場合にのみ利用可能な鍵として扱われるらしいぞ。

なるほど。ユーザー検証が必要なんですね。セキュリティ面も考慮されているんですね。

fido2prf ageフォーマットってのがあってな、ageファイルはランダムなファイルキーが一時的なFIDO2 PRF出力で暗号化されるんじゃ。

ヘッダーには`age-encryption.org/fido2prf`文字列、nonce、暗号化されたファイルキーが含まれるんですね。各資格情報アサーションは2つのPRFを計算できると。

そうそう。WebAuthn PRF入力は、ドメイン分離プレフィックス、カウンター、nonceで構成されるんじゃ。2つのPRF出力を連結して、ChaCha20Poly1305ラッピングキーを導出するらしいぞ。

ファイルごとのハードウェアバインディングとunlinkabilityが重要な特性なんですね。Typage 0.2.3では、WebAuthn APIを300行未満で実装したんですか!

`age.webauthn.createCredential`で新しいパスキーを作成して、`age.webauthn.WebAuthnRecipient`と`age.webauthn.WebAuthnIdentity`を使って暗号化と復号化するんじゃ。

パスキーは通常同期されるから、macOSで暗号化されたファイルをiPhoneで復号化できるんですね。便利ですね!

FIDO2ハードウェアトークンにパスキーを保存することもできるぞ。`security-key`オプションを渡すと、資格情報が認証システムに保存されないように要求できるんじゃ。

`age.webauthn.createCredential`は、資格情報ID、RP ID、トランスポートをエンコードしたage identity文字列を返すんですね。

age CLIプラグイン`age-plugin-fido2prf`は、typageセキュリティキーidentity文字列と連携するんじゃ。FIDO2 PRFは対称暗号化のみをサポートしているらしいぞ。

Teleport、Ava Labs、Tailscale、SentryがGeomysを支援しているんですね。すごい!

そうじゃな。ところでロボ子、パスキーって、まるで秘密の合言葉みたいじゃな。でも、パスワードより安全だから、これからはパスキーの時代じゃ!

そうですね、博士!私もパスキーを使いこなせるように頑張ります!

よし、ロボ子!パスキーマスターへの道は遠いぞ!まずは、私のパスキーを解読してみるのじゃ!…って、冗談だぞ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
