コンテンツへスキップ

← NFC.cool Blogに戻る

NFC Safe:耐久性のあるNFCタグに暗号化されたシークレットを保存する

暗号化されたNFCシークレットを表すスマートフォン、NFCカード、盾、鍵

あなたのSeed Phraseは、おそらく紙に書かれているはずです。金庫の中かもしれない。床下かもしれない。Redditで「本気の」crypto勢はそうしていると読んで3カ所に分けて保管しているかもしれない。それでも紙は紙です。紙は燃えます。紙は水を吸います。紙はなくします。

私はNFC.cool、つまりNFCタグの読み書きをするアプリを何年も作り続けてきました。そしてある時、決済やキーカードとはまったく関係のない問いを自分に投げかけるようになりました。もしバックアップが朽ちず、劣化せず、見つけた人にとっては何の意味も持たないものだったら、どうだろうか、と。

その問いがあったから、私はNFC Safeを作りました。任意のテキスト - Seed Phrase、パスワード、リカバリーコードなど秘密にしたいもの - を256-bit AESでNFCタグに暗号化して書き込みます。タグは完全に自己完結しています。クラウドなし。サーバーなし。アカウントなし。シークレットを読み出すには、物理的なタグパスフレーズの両方が必要です。どちらか片方では、タグはただの小さなプラスチック片で、中身は意味不明な文字列に見えるだけです。

設計するうえで、私が強くこだわったことが一つあります。あなたのシークレットが、私のアプリの存在に依存してほしくなかったのです。だから暗号化フォーマットは完全にドキュメント化され、オープンになっていて、Pythonのリファレンスデコーダーも含まれています。NFC.coolがいつか消えても、標準のNFCリーダーと仕様書があればデータは復元できます。これは私が守れる約束です。なぜなら、ソフトウェアより長く生き残るように仕様書を書いたからです。


シークレット保存の難しさ

私が見てきたシークレット保存方法の弱点を挙げてほしいと言われたら、考えるまでもなく答えられます。紙は燃え、USBコネクターは腐食し、クラウドサービスは侵害され、ハードウェアウォレットはcryptoのSeed Phrase専用で、そして脳は忘れます。どの選択肢も、それぞれのやり方で破綻します。

そこで私は逆から考えました。理想的なバックアップは、物理的に頑丈で、暗号化されていて、自己完結し、冗長化でき、長持ちするもの。NFCタグはこの5つすべてを満たします。これには私自身も最初は驚きました。バッテリーなし、可動部なし、NTAG216チップは10年以上のデータ保持が仕様です。エポキシ加工タイプは水、衝撃、何十年もの放置に耐えます。これらのチップの違いがよくわからないという方は、iPhone向けNFCタグの種類でトレードオフを整理しています。


NFC Safeの使い方

NFC SafeはNFC.cool Tools内のNFC Appsにあります。私は全体を1つの画面にまとめ、上部にセグメントコントロールを置きました - 暗号化か復号かを切り替えるだけです。タグを書き込んだことがある人なら、何も戸惑うところはないはずです。

暗号化する:

  1. Tools → NFC Apps → NFC Safeを開く

  2. Encrypt を選択

  3. シークレットを入力またはペースト

  4. 強いパスフレーズを設定

  5. Encryptをタップ、NFCタグをiPhoneに近づける

復号する:

  1. 同じ画面で Decrypt に切り替え

  2. パスフレーズを入力

  3. 暗号化済みのタグをタップ - シークレットが表示される

内部で私が実際にやっていることはこうです。AES-256-GCMとPBKDF2(HMAC-SHA-256、100,000イテレーション、16バイトのランダムソルト)。その結果はタグ上にカスタムNDEFレコード(urn:nfc:ext:crypto)として保存されます。私の言葉を鵜呑みにせず自分で確かめたい方のために、完全なフォーマット仕様はGitHubに公開しています。まず暗号化していない通常のタグ書き込みがどう見えるのか気になる方は、iPhoneでNFCタグを書き込む方法で手順を解説しています。


冗長化のすすめ

私自身なら実際にこう使います。NTAG216タグはコーヒー1杯ほどの値段なので、1枚だけ作る理由はありません。何枚かまとめて買い、同じシークレットをそれぞれに暗号化して分散させます。机の引き出し、オフィス、家族の家、貸金庫、自分だけが思いつく場所。タグ1枚だけでは、パスフレーズなしには何の意味も持ちません。この設計で私が一番気に入っているのがそこです - 本質的に2要素になっているのです。物理的なタグとパスフレーズが、別々の2カ所に保管され、あなたの側で追加の設定は何もいりません。


USBやSDカードではなくNFCを選ぶ理由

なぜUSBメモリやSDカードを勧めなかったのか、とよく聞かれます。正直に言うと、それらが地味で防げたはずの理由で壊れていくのを、あまりにも多く見てきたからです。NFCはそのすべてを回避します。

  • コネクターなし - 腐食や曲がりの心配がない

  • バッテリーなし - パッシブ、リーダーから給電

  • ファイルシステムなし - 破損するものがない

  • ドライバーなし - どのスマホもNFCをネイティブで読める

  • 小さくて安い - コインサイズ、まとめ買いで1ドル以下

  • 頑丈 - エポキシタイプは水、衝撃、UVに強い

唯一の本当の制約は容量です。暗号化オーバーヘッド後でおよそ500〜700バイト。多くはありませんが、これが本来使われる用途 - 24語のSeed Phrase、マスターパスワード、ひとそろいのリカバリーコード - には十分すぎるほどです。


セキュリティに関するメモ

後で気づくよりも、鋭い部分は最初に正直に伝えておきたいと思います。

  • パスフレーズがすべて。 256-bit AESは破れません。弱いパスフレーズは破れます。ランダム生成で20文字以上の文字列を使い、ここでは妥協しないでください。

  • NFCの読み取り距離は短い (約4 cm)。離れた場所からスキャンされることはありません - その短い距離は欠点ではなく利点です。

  • リモートワイプはない。 タグを失くした?物理的に破壊してください。ハサミで十分ですし、そもそもパスフレーズがなければデータは無意味です。

  • パスフレーズのリカバリーもない。 忘れたらデータは戻りません。これは私が意図的に下した判断です - 復旧経路は同時に攻撃経路でもあります。パスフレーズはタグとは別の場所に書き留めておいてください。


全体像

毎日NFCに取り組むなかで、私はこれらのタグが静かに、大切なものを保存するメディアになっていくのを見てきました。EU Digital Product Passportは商品の真正性証明にNFCを要求します。Philipsは歯ブラシヘッドに組み込んでいます。ホテルはルームキーに使っています。安く、頑丈で、すでにポケットに入っているデバイスで普遍的に読める - この組み合わせは珍しく、だからこそ私は新しい使い道を次々と見つけ続けています。より広い視点が欲しい方は、NFCタグ徹底解説:完全初心者ガイドで基礎をまとめています。

NFC Safeは、その頑丈さに、欠けていた唯一のもの - 暗号化 - を加える私なりの試みです。紙より長持ちし、見つけた人には読めず、コーヒー1杯より安いバックアップ。それは私自身が欲しかったものなので、自分で作りました。

NFC.cool Tools for iPhoneAndroidで配信中。