検証済み書き出し
改ざんを検知できる会話のコピー。私たちの言葉を信じなくても、変更されていないことを誰でも確認できます。
要点
検証済み書き出しは、誰にでも渡せる .zip です。中のすべてのファイルにフィンガープリントがあり、独立した機関がパッケージ全体にタイムスタンプを付けるので、作成後に改変されていないことを誰でも証明できます。これはメッセージではなくファイルについての主張です。何も変更されていないことは示しますが、会話が何を意味するか、どう評価すべきかは示しません。
検証済み書き出しとは
検証済み書き出し(認証付き書き出しとも呼びます)は、1 つの会話、またはアーカイブ全体を、1 つの .zip にまとめたものです。あなた以外の誰かが記録を信頼する必要があるときのためのものです。スクリーンショットとの違いは、改ざんを検知でき、独立して検証できることです。受け取った人は、パッケージが改変されておらず、特定の時点で変更なく存在していたことを、標準的なツールで確認できます。そのどの部分についても、Text2Store を信頼する必要はありません。
Text2Store の購入に含まれています。作成するには、会話を開いて書き出すを選び、検証済み書き出し(.zip)…を選びます。
認証付きバックアップから書き出すと、さらに強くなります。書き出しの証明が、書き出した時点だけでなく、バックアップを作成した時点までさかのぼります。この部分については認証付きバックアップのページをご覧ください。
パッケージの中身
.zip を展開すると、内容が自明な少数のファイルになります。
- transcript.pdf:読みやすく印刷できる記録としてのメッセージ。
- conversation.json:同じメッセージをデータとして。PDF に描けない内容も含みます。
- attachments/:会話のすべての写真、動画、ファイルを元のバイトのまま。
- certificate.pdf:人が読める表紙。デバイス、会話、期間、件数、検証方法。
- manifest.json:中核となるファイル。ほかのすべてのファイルの SHA-256 フィンガープリント。
- VERIFY.txt:すべてを自分で確認するための、平易な英語のコマンド一覧。
- DECLARATION.txt:人が署名できる記入式の宣言書(後述)。
- manifest.json.tsr:オンラインだったときに付く、信頼できるタイムスタンプ。
- tsa/cacert.pem:タイムスタンプ局の証明書。パッケージだけで時刻を検証できます。
- source/backup-timestamp.tsr:認証付きバックアップから書き出した場合にのみ含まれます。バックアップ自体の作成時のタイムスタンプを引き継ぎ、書き出しの証明をバックアップ作成時までさかのぼらせます。
証明できること
- 完全性。すべてのファイルが、SHA-256 フィンガープリントとともに manifest.json に記載されています。どのファイルでもフィンガープリントを再計算すれば、書き出したときとバイト単位で同じであることを確認できます。写真の 1 ピクセルを変えただけでも、検証は失敗します。
- バックアップからの来歴。各添付ファイルには、取り出し元のデバイスバックアップでのフィンガープリントも記録されており、書き出したファイルを、手で入力したものではなく、その特定のバックアップに結び付けます。一致しなくなった添付ファイルがあれば、書き出しの作成を拒否します。
- 時刻。オンラインのときは、独立したタイムスタンプ局が RFC 3161 規格(コード署名のタイムスタンプと同じ仕組み)でパッケージ全体にタイムスタンプを付けます。これにより、パッケージが特定の時点で変更なく存在していたことが証明され、「先週これを編集しただろう」に答えられます。
なぜ変更がすり抜けられないのか
「改ざんを検知できる」は厳密な主張なので、なぜそれが成り立つのかを説明します。ファイルを編集できないという意味ではありません。どんなファイルでも編集はできます。そうではなく、どんな編集も見つかるという意味です。変更を検証にすり抜けさせようとする人は、3 つの壁に順に突き当たります。
- フィンガープリントは偽造できません。各ファイルの SHA-256 フィンガープリントは、そのバイトそのものから計算される 64 文字の値です。どこか 1 バイトでも変えれば、フィンガープリントはまったく別のものになります。SHA-256 を保ったままファイルを改変する方法は知られていないので、変更されたファイルは記録されたフィンガープリントと一致しなくなります。これが 1 つ目の壁です。
- 一覧にもフィンガープリントがあります。次に考えられるのは、manifest.json の中のフィンガープリントを、変更したファイルに合わせて書き換えることです。それも失敗します。マニフェストは自分の一覧に対するコンテンツルートのフィンガープリントを持ち、信頼できるタイムスタンプはマニフェスト全体に対して取られています。一覧を書き換えれば両方が壊れます。2 つ目の壁です。
- タイムスタンプには誰も持っていない鍵が必要です。最後の手は、マニフェストを作り直し、書き換えた版に新しい信頼できるタイムスタンプを取ることです。それにはタイムスタンプ局の署名用秘密鍵が必要で、それは独立した第三者(DigiCert)が保管しています。あなたも、Text2Store も、攻撃者も、それなしには有効なタイムスタンプを作れません。だからこそ Text2Store の検証は、有効な信頼できるタイムスタンプがある場合にだけ検証済みと報告します。タイムスタンプは、その下にあるすべてを書き換えて封印し直すことを不可能にする基点だからです。信頼できるタイムスタンプがないパッケージは、まさにその基点がないために、検証済みではなく未検証と報告されます。3 つ目の壁です。
- 私たちを信頼する必要はありません。これらの確認はすべてオープンな規格(SHA-256、RFC 3161)を使い、Mac と Windows に標準で入っているツールで再現できます。安全性は、Text2Store の言葉を信じることにも、Text2Store のアプリを信じることにさえ依存しません。
正直な境界線ははっきり述べておく価値があります。これは改ざんを検知できるものであって、改ざんを防ぐものではありません。誰でもファイルを変更したり削除したりはできます。できないのは、変更したうえで検証を通すことです。パッケージが検証を通れば、それは書き出したものそのものです。手が加えられていれば、検証がそう示します。
証明できないこと(必ずお読みください)
限界について正直であることは、ほかの部分を信頼できるものにする要素の一つです。検証済み書き出しは、次のことを証明しません。
- メッセージの内容が真実であること、またはバックアップ前に iPhone が改ざんされていなかったこと。証明するのは、書き出し以降にパッケージが変わっていないことで、それ以前に何があったかではありません。
- どう受け取られるか。Text2Store は、検証済み書き出しが特定の受取人や手続きで受け入れられると主張することはなく、「法廷で証拠として認められる」とも「認証済み」とも表現しません。記録がどれだけの重みを持つかは常に受け取る側が決めることで、ソフトウェアにできるのは記録を確認可能にすることだけです。
- 完全さ。検証済み書き出しに含められるのは、アーカイブしたときに iPhone にまだあったものだけです。取り込む前に削除されたメッセージは、単に含まれていません。デバイス上で削除、編集、送信取り消しされたメッセージは、その情報が取り込み時まで残っていれば、記録の中で示されます。
- 各メッセージが送られた正確な時刻(絶対的な意味で)。信頼できるタイムスタンプが証明するのは書き出しがいつ存在したかで、メッセージがいつ送られたかではありません。メッセージの時刻はデバイスから取っています。
パスワードで保護する(任意)
検証済み書き出しは通常の .zip なので、ファイルを持っている人なら誰でもメッセージを読めます。ソフトウェアなしでどこでも開けるので、たいていはそれで十分です。ただ、ファイルを送る必要があるときは、鍵をかけられます。書き出しの作成時にこの .zip をパスワードで保護にチェックを入れると、内容が AES-256 で暗号化されます。既定ではオフで、書き出しごとに選べます。
暗号化と改ざんの検知は別のものです。パスワードは、他人がメッセージを読むのを防ぎます。何も変更されていないことを証明するのはフィンガープリントとタイムスタンプで、どちらの場合もまったく同じように機能します。パスワードを付けても書き出しが検証しやすくなるわけではなく、付けなくても検証しにくくなるわけではありません。
パスワードで保護する前に
- パスワードは復元できません。あなたにも私たちにもできません。パスワードは私たちに送られず、パッケージにも保存されないからです。なくすと、その書き出しは二度と開けません。
- Mac ならそのまま開けます。Finder でダブルクリックし、パスワードを入力すれば、すべて展開されます(macOS 26 で確認)。Windows では 7-Zip が必要です。エクスプローラーは中のファイル一覧は表示しますが、展開はできません(Windows 11 で確認)。Mac では Keka や The Unarchiver も使えます。
- コマンドラインの
unzipは使わないでください。AES に対応していないため、保護された書き出しでは空のフォルダを作り、エラーなしで終了するので、うまくいったように見えてしまいます。代わりに7z xを使うか、Finder で展開してください。 - メールではよく拒否されます。多くのメールサービスや企業のメールフィルタは、スキャナが中身を確認できないため、パスワード付きの添付ファイルを削除または隔離します。共有ドライブ、ファイル転送のリンク、USB メモリのほうが確実です。
- パスワードは別に送りましょう。ファイルと同じメールにパスワードを書いても、何も守れません。
中身はすべて暗号化されます。VERIFY.txt も含むので、保護された書き出しはパスワードなしでは何も明かしません。隠せないことが 1 つだけあります。zip はファイル名の一覧を暗号化しないので、パッケージに記録、マニフェスト、いくつかの添付ファイルが含まれていることは誰でもわかります。ただ名前は汎用的なものなので、誰と話していたか、何が話されたかは何もわかりません。
保護された書き出しを Text2Store で検証するには、いつもどおり選択してください。アプリがロックされていることに気づき、パスワードを尋ねます。手作業で検証するには、まず上のツールのいずれかで展開してから、下の通常の手順に従います。
私たちを信頼せずに検証する方法
方法は 2 つあり、どちらも同じフィンガープリントと同じタイムスタンプを確認します。
アプリで:ファイルメニューから書き出しを検証…を選び、.zip を選択します。Text2Store がすべてのフィンガープリントとタイムスタンプを再確認し、検証済み、改変あり、未検証のいずれかを報告します。「検証済み」は、ファイルが一致し、信頼できるタイムスタンプがパッケージの未変更を証明していることを意味します。「改変あり」は、何かが一致しなくなったことを意味します。「未検証」は、ファイルは内部的に整合しているものの、パッケージに信頼できるタイムスタンプがないため、それだけでは未改変を証明できないことを意味します(信頼できるコピーとマニフェストのフィンガープリントを比べてください)。インターネットもインストールも不要で、Mac でも Windows でも同じように動作します。独立性のため、パッケージ内のものではなく、アプリ自身が固定して持つタイムスタンプ局の証明書を使います。
手作業で:同梱の VERIFY.txt に正確なコマンドが載っています。macOS と Linux では shasum、Windows では PowerShell の Get-FileHash を使います。信頼できる時刻も確認するには openssl を使います。VERIFY.txt 自身に書かれた正直な注意点が 1 つあります。macOS に付属する LibreSSL はこのタイムスタンプの証明書チェーンを検証できないので、完全版の OpenSSL(Homebrew)を入れるか、アプリ内の検証機能を使ってください。Windows では Git for Windows に付属する OpenSSL が使えます。VERIFY.txt はタイムスタンプ局の証明書の SHA-256 も表示するので、証明された時刻に頼る前に、cacerts.digicert.com で公開されている DigiCert のルートと照合できます。
技術的な詳細
要約を信じるのではなく仕組みを確かめたい方へ。以下はすべて公開された規格(SHA-256、RFC 3161、CMS)を使い、標準的なツールで再現できます。独自のものも秘密のものもありません。その開かれていることこそが要点です。自分で確かめられる主張は、信じるしかない主張よりも価値があります。
フィンガープリントとマニフェスト
パッケージ内のすべてのファイルは、そのバイトそのものに対して SHA-256 でハッシュされます。manifest.json は、各ファイルをパスとその SHA-256 で一覧にしています。
{
"format": "text2store/verified-export",
"artifacts": [
{ "path": "transcript.pdf", "sha256": "9f2c..." },
{ "path": "conversation.json", "sha256": "4a1e..." },
{ "path": "attachments/0001.jpg", "sha256": "b7d0...",
"source_backup_sha256": "b7d0..." }
],
"content_root_sha256": "e3b1..."
}
content_root_sha256 は一覧全体に対する 1 つのフィンガープリントで、一覧そのものも改ざんを検知できるようにしています。成果物ごとに path:sha256 の行を 1 行ずつ作り、それらを並べ替え、改行でつなぎ、結果を SHA-256 でハッシュして求めます。誰でもマニフェストから再計算し、一致することを確認できます。
添付ファイルをデバイスのバックアップに結び付ける
各添付ファイルには source_backup_sha256 も記録されます。そのファイルが取り出し元の iPhone や iPad のバックアップで持っていたフィンガープリントです。書き出しはそのバックアップ自身のチェックサムの基準に照らして作られ、一致しなくなった添付ファイルがあれば作成を拒否します。そのため、書き出した写真は、手で入れたものではなく、その特定のデバイスバックアップに結び付きます。
フィンガープリントの一覧に含まれないもの
構造上の理由で、成果物として一覧に載らないファイルは 2 つだけです。manifest.json は自分自身のフィンガープリントを含められず、manifest.json.tsr(タイムスタンプ)はマニフェストのフィンガープリントから作られるため、マニフェストを封印した後に生まれます。それ以外は、人が読める certificate.pdf、VERIFY.txt、DECLARATION.txt、タイムスタンプ局の tsa/cacert.pem も含め、ほかのファイルと同じようにマニフェストにハッシュが記録されます。検証する側はマニフェスト自体の SHA-256 を再計算し、それをパッケージのフィンガープリントとして扱います。
信頼できるタイムスタンプ
manifest.json.tsr は RFC 3161 のタイムスタンプトークンで、CMS の SignedData 構造です。その messageImprint は manifest.json の SHA-256 です。受け入れるには、トークンの署名が有効であること、署名者の証明書が DigiCert のルートまでつながっていること(トークンには末端から中間、ルートまでの署名チェーン全体が含まれています)、証明された時刻に有効期間内だったこと、RFC 3161 が求める重要な拡張鍵用途 id-kp-timeStamping を持つこと、そしてインプリントがこのマニフェストの SHA-256 と一致することを確認します。Text2Store のアプリ内検証機能は、これらすべてをネットワークに接続せずコードだけで行い、パッケージ内の cacert.pem を信頼するのではなく、自分で固定して持つ DigiCert のルートのコピーを使うため、差し替えられた証明書にだまされることはありません。VERIFY.txt はその証明書の SHA-256 を表示するので、cacerts.digicert.com で公開されている DigiCert のルートと照合できます。
自分で正確に確認する
任意のファイルをハッシュし、マニフェスト内の sha256 と比べます。
# macOS / Linux
shasum -a 256 transcript.pdf
# Windows (PowerShell)
Get-FileHash transcript.pdf -Algorithm SHA256
信頼できるタイムスタンプがまさにこのマニフェストを対象とし、タイムスタンプ局につながっていることを確認します。
openssl ts -verify -data manifest.json -in manifest.json.tsr -CAfile tsa/cacert.pem
パッケージの VERIFY.txt には、コンテンツルートの再計算方法も含めてこれらのコマンドが書かれているので、コピーして貼り付けるだけです。
合格とみなす条件
検証する側が検証済みと報告すべきなのは、次のすべてが成り立つときだけです。一覧にあるすべてのファイルが存在してフィンガープリントと一致し、コンテンツルートが再計算で一致し、余分なファイルや重複したファイルがなく、信頼できるタイムスタンプが manifest.json に対して検証を通ること。信頼できるタイムスタンプがないパッケージは未検証です。内部的には整合していても独立した基点がありません。マニフェストは、その外部の署名なしには自らの完全性を証明できないからです。不一致、余分なファイル、検証を通らないタイムスタンプのいずれかがあれば改変ありです。
署名入りの宣言書
記録とともに、人による証言を求める手続きもあります。記録がどう作られたかを、人が書面で述べるものです。ソフトウェアにその証言はできず、できるのは人だけです。そのためパッケージには DECLARATION.txt が含まれています。人(あなた、または記録の管理者)が手を加え、自分で計算したマニフェストのフィンガープリントを記入して完成させられる、簡単な記入式のひな形です。
これはひな形にすぎません。法的助言ではありません。正式な手続きのために何かを準備しているなら、先に弁護士に見てもらってください。
時刻とタイムゾーン
人が読む PDF では、メッセージの時刻は書き出したコンピュータの現地時刻に、UTC からの時差を明記して表示します(例:2026-06-30 21:14 -08:00)。タイムゾーンは冒頭に記載されるので、iPhone で見ていた時刻と一致し、あいまいさもありません。機械が読むデータ(conversation.json)と信頼できるタイムスタンプはすべて UTC で保持するので、専門家は常に正確な時刻を再構成できます。
正直な限界
検証済み書き出しの完全さは、その元になるバックアップ次第です。Text2Store が含められるのは、アーカイブしたときに iPhone にまだあったものだけです。いちばんよい習慣はシンプルです。定期的にバックアップすることで、必要になるずっと前に会話を確実に取り込んでおけます。iOS は削除したメッセージを数週間は復元可能な状態で残すので、最近のバックアップには思った以上のものが入っていることがよくあります。詳しくはよくある質問をご覧ください。
法的助言ではありません
このページと検証済み書き出しに含まれる資料は一般的な情報で、法的助言ではありません。Text2Store を使っても、いかなる専門的な関係も生じません。書き出しを法的な案件で使うつもりなら、それはあなたと、お住まいの法域の資格ある弁護士との間の話です。ここにある内容は、そうすべきか、どうすべきかについての助言ではありません。
レビュー基盤に読み込みたい場合は?
検証済み書き出しは、記録が改変されていないことを証明します。会話を eDiscovery のレビューチームに渡し、彼らの基盤に読み込んでもらう必要があるなら、それは RSMF 書き出し(Relativity Short Message Format)です。2 つは役目が違うので、両方渡すこともできます。証明には検証済み書き出しを、読み込みには RSMF ファイルを。
関連情報
eDiscovery レビュー用の RSMF、PDF に書き出す、バックアップ内の WhatsApp チャット。
ご質問は?
hello@text2store.com までメールでお問い合わせください。