TrustSnap

1. TrustSnap が証明できること

TrustSnap の署名は、次の2つを証明します。

  • 保証1(完全性): 署名された画像が、署名以降にピクセル単位で改変されていないこと。 1ピクセルでも変わると検証は失敗します。
  • 保証2(署名者の同一性): その画像が、特定の公開鍵(=特定の秘密鍵の持ち主)によって署名されたこと。

検証結果は2段階に分かれています。この違いを理解することが、なりすましを見抜く鍵になります。

  • レベル1(署名が有効): 画像に埋め込まれた署名データが暗号学的に正しいことだけを確認した状態です。 「誰かの」鍵で署名されていることは分かりますが、それが本人の鍵かどうかまでは分かりません。 第三者が自分の鍵で勝手に署名を付け直すことも技術的には可能なため、レベル1だけでは「本人が作った」ことの証明にはなりません。
  • レベル2(指紋一致=本人確認): 検証URL(公式SNSプロフィール等、本人性が確立した場所に掲示されたもの)に含まれる公開鍵指紋と、 画像の署名に使われた鍵の指紋が一致した状態です。ここまで確認できて初めて「本人が作った」と言えます。 演出(認証スタンプ等)や隠しメッセージの表示はレベル2でのみ行われます。なりすまし署名を「本物らしく」見せないためです。

2. 証明できないこと

TrustSnap は次のことを保証しません。設計上の限界として、あらかじめご理解ください。

  • 署名日時の正しさ: タイムスタンプは署名者の自己申告です。第三者による事後改ざんは防げますが(署名対象に含まれるため)、 署名者自身が実際と異なる日時を申告することは防げません。
  • 鍵漏洩後の失効: 秘密鍵が漏洩した場合でも、証明書のような「失効」の仕組みはありません。 クリエイターは新しい鍵を生成し、SNSプロフィールと検証URLを差し替えて対応します(鍵を漏らしてしまったらを参照)。
  • 再圧縮後の画像: SNS投稿などで再圧縮・リサイズされた画像は検証に失敗します。これは仕様です(詳細)。
  • 「作成者証明」ではないこと: TrustSnap の署名が証明するのは「誰が署名したか」(署名者証明)であり、 「誰が作ったか」(作成者証明)ではありません。他人が撮影・作成した画像に無断で署名する行為は、利用規約で禁止しています。

3. プライバシーについて

TrustSnap はサーバーを持たない静的サイトです。画像・秘密鍵・パスフレーズ・隠しメッセージなど、 あなたが入力したデータがどこかのサーバーに送信されることはありません。

  • 鍵の生成・保存・署名・検証・画像の編集は、すべてこのブラウザの中だけで行われます。
  • 秘密鍵はブラウザの IndexedDB に、取り出しできない(non-extractable)形式で保存されます。
  • アクセス解析やアカウント登録は行っていません。

4. 使い方(署名・配布・検証)

  • 検証URLの掲示場所: 検証URL(公開鍵指紋を含む `/verify?pk=...` の形式)は、 公式SNSプロフィール(Bio)など、あなたの本人性がすでに確立している場所に掲示してください。 誰でもリンクを作れてしまうため、掲示場所そのものの信頼性が、なりすまし対策の要になります(偽URL対策)。
  • 配布方法: SNSに画像を直接投稿すると、多くの場合サービス側の再圧縮によって署名が壊れます。 署名済みファイルを渡すときは、ファイル便やクラウドストレージなど、原本のまま送れる手段を推奨します(詳細)。

対応ブラウザ一覧

TrustSnap は Web Crypto API・IndexedDB など比較的新しいブラウザ機能を使用します。次のバージョン以降での利用を推奨します。

  • Google Chrome 90 以降
  • Mozilla Firefox 88 以降
  • Safari 14.1 以降 / iOS Safari
  • Microsoft Edge 90 以降
  • Android 版 Chrome

対応ブラウザでも実装差異により結果が変わることがないよう、複数ブラウザでの相互検証テストを行っています。

5. SNSの再圧縮で署名が消えるのはなぜですか

TrustSnap の署名は、画像のピクセル(色情報そのもの)から計算したハッシュ値に対して行われます。 多くのSNSは投稿時に画像を再圧縮・リサイズし、ファイルサイズを縮小します。この処理でピクセルが (見た目にはほぼ分からない程度でも)変化すると、ハッシュ値が変わり、署名は無効になります。

これはTrustSnapの不具合ではなく、仕様です。「1ピクセルも変わっていないこと」を検証するという性質上、 非可逆な変換を経た画像は必ず検証に失敗します。署名済みファイルを配布するときは、再圧縮されない方法(ファイル便等)を利用してください。

6. 隠しメッセージの保護水準について

隠しメッセージは「検証プロセスを通過した人にだけ表示する」ための仕組みであり、暗号学的な秘匿(誰にも読めなくすること)を 目的としたものではありません。メッセージは画像のピクセルハッシュから導出した鍵で暗号化されていますが、 正しいピクセルハッシュを計算できる人(=検証パイプラインを実行できる人)なら誰でも復号できます。

つまり、メタデータをそのまま覗いただけでは平文は見えませんが、本気で解析すれば読めるカジュアルな保護水準です。 他人に知られたくない機密情報の送信には使用しないでください。

7. 鍵とパスフレーズの管理

  • 鍵生成時にダウンロードした .key ファイルと、そのときに設定したパスフレーズの両方が揃わないと、 同じ鍵でのバックアップ復元(リストア)はできません。どちらか一方でも失うと、その鍵で二度と署名できなくなります。
  • .key ファイルは、パスワードマネージャーやクラウドストレージなど、日常使いのブラウザとは別の場所に 最低1箇所は保管することを推奨します。
  • パスフレーズは他のサービスで使っているものを使い回さず、TrustSnap 専用の新しいものを設定してください。
  • 日常利用の秘密鍵はブラウザの IndexedDB に、取り出しできない(non-extractable)形式で保存されます(プライバシーについても参照)。

8. 鍵を漏らしてしまったら

TrustSnap には証明書のような失効の仕組みがないため、秘密鍵(または .key ファイルとパスフレーズの組)が漏洩した場合は、 新しい鍵へのローテーションで対応します。マイページから新しい鍵を生成すると、旧鍵はそのまま 「過去の署名を検証するためだけの鍵」として残ります。

ローテーション後は、次のチェックリストに沿って、外部に掲示している情報を新しい鍵のものに差し替えてください。

  • SNSプロフィール(Bio)等に掲載している検証URLを、新しい鍵の検証URLに差し替える
  • SNS等に掲載している公開鍵指紋の表示を、新しい鍵の指紋に差し替える
  • 今後の作品は新しい鍵で署名する(旧鍵での署名は行わない)
  • フォロワー等、関係者への周知(旧URL・旧指紋は今後の検証には使わない旨)

旧鍵で署名済みの過去の画像自体は、旧鍵の検証URL・指紋であれば引き続き検証できます(署名の有効性自体は変わりません)。

9. 利用規約について

  • TrustSnap の署名が証明するのは「誰が署名したか」(署名者証明)であり、「誰が作ったか」(作成者証明)ではありません。 自分が権利を持たない画像(他人が撮影・作成した画像等)に無断で署名する行為は禁止します。
  • 他人になりすまして鍵を生成・署名する行為、および本サービスを著作権侵害その他の違法行為に利用する行為を禁止します。
  • 本サービスは無保証で提供されます。署名・検証結果の利用によって生じた損害について、開発者は責任を負いません (証明できないことも参照)。

10. よくある質問

トップページへ戻る