信頼できる時刻とスマホの時刻:写真の時刻偽装の手口

写真のタイムスタンプが偽装される手口(時計の変更、EXIFの編集、再スタンプ)と、サーバー同期時刻と単調増加クロックによる対策、その限界を解説します。

普通のスマートフォンでは、写真に印字される時刻はスマートフォン自身の時計から取得されます。そのため誰でも設定を開いて時計を戻し、実際は9:30なのに「7:55に撮影」した写真を作れます。信頼できる時刻は、サーバーと同期し、その後は内部の単調増加クロックで経過時間を数えることで、電波がなくてもこの問題を解決します。以下では、タイムスタンプが偽装されるよくある手口、信頼できる時刻の仕組み、そしてできないことを解説します。

注意:本記事は一般的な情報であり、法的助言ではありません。写真が証拠としてどの程度の価値を持つかは、個々のケースで関係機関が判断します。

写真のタイムスタンプが偽装される3つのよくある手口

イラスト:写真の時刻は編集でき、GPSは偽装でき、古い写真を新しい写真として再送できる

1. スマートフォンの時計を変える

最も簡単な手口です。時刻の自動設定をオフにして時計を戻し、カメラやタイムスタンプアプリを開いて撮影し、時刻の自動設定を元に戻します。システム時刻を読むアプリはすべて、EXIFも含めて間違った値を記録します。タイムゾーンを変えてもほぼ同じ効果があります。

2. EXIFメタデータを編集する

JPEGファイルはEXIFデータにDateTimeOriginalという項目を持っています。無料のパソコン用・スマートフォン用ツールの多くが、数秒でこれを書き換えられます。さらに、チャットアプリやSNSはEXIFを丸ごと削除することが多いので、受け取った人には比較するものがありません。

3. 古い写真に再スタンプする

昨日の写真を編集アプリで開き、新しい日付と時刻を書き込みます。古い写真を表示した画面をタイムスタンプカメラで撮影するという変形もあります。どちらの場合も、もっともらしいスタンプ付きの撮りたてに見える画像ができあがります。

手口 手間 受け取った人が気づける点
スマートフォンの時計を変える ごくわずか 画像だけではほぼ何もわからない
EXIFを編集する 簡単 元のファイルがなければ何もわからない
古い写真に再スタンプする 簡単 フォントの不一致、天気に合わない光
画面を撮影する 中程度 画面の縁、モアレ、ピントの甘さ

共通点は、撮影者が時計をコントロールしていることです。解決策は、撮影者がコントロールできない時刻源です。

信頼できる時刻の仕組み

信頼できる時刻の3ステップ:サーバーと同期し、スマートフォンの単調増加クロックに紐づけ、撮影時の時刻を計算する。例:08:00に同期し、時計を戻しても、写真には実際の09:00が表示される

ステップ1:サーバーと同期する

オンラインのとき、アプリはサーバーに現在時刻を問い合わせ、往復にかかった時間を測ります。非常に遅い接続でのサンプルは捨てられます。残りのサンプルから、応答が届いた瞬間のサーバー時刻を推定します。その誤差は、勤怠や現場報告で問題になるどんな差よりもはるかに小さいものです。同期はアプリを開いている間に定期的に、また接続が戻るたびに繰り返されます。

ステップ2:単調増加クロックに紐づける

どのスマートフォンにも単調増加クロックがあります。端末の起動からの時間を数えるカウンターで、画面がオフでも動き続け、ユーザーが時計を編集しても変わりません。Androidでは起動からの経過時間がこれにあたり、iOSにも同等の連続カウンターがあります。

アプリは基準点として、同じ瞬間のサーバー時刻と単調増加クロックの値を保存します。

ステップ3:撮影時の時刻を計算する

シャッターを押すと、信頼できる時刻は「基準のサーバー時刻+その後に単調増加クロックが数えた時間」になります。例:

  • 同期が08:00に完了し、単調増加カウンターの値はA。
  • 作業員がデータ通信をオフにし、スマートフォンの時計を2時間戻す。
  • 実際の09:00には、単調増加カウンターは60分進んでいる。
  • スマートフォンの時計が何を示していても、写真には08:00+60分=09:00と表示される。

撮影の瞬間にネットワークは不要なので、地下、山間部、電波のない新しい現場でも機能し続けます。オフラインでの流れ全体はオフラインでの写真による証明をご覧ください。

時刻を検証できなくなるとき

既知の弱点が1つあります。単調増加クロックはスマートフォンの再起動でリセットされます。オフライン中に電源が切れたり再起動したりすると、古い基準点は無効になります。推測する代わりに、アプリは2つのことを行います:

  1. スタンプには端末の時計を使い、時刻の取得元を「端末時刻、未検証」として記録します。
  2. 次に同期に成功するまで、サーバーと管理者にわかるよう写真にフラグを付けます。

同様に、スマートフォンが非常に長い間オフラインで基準点が古くなりすぎた場合も、写真は未検証とされます。根拠のない数字を自信ありげに印字するより、限界を正直に示すほうがよいのです。

サーバーがさらにチェックすること

端末での信頼できる時刻は最初の層です。写真がアップロードされると、サーバーが再度チェックします:

チェック 目的
時計のずれ スマートフォンの時刻と補正済みの時刻を比べ、大きな差にフラグを付ける
遅延アップロード 撮影から15分以上経ってサーバーに届いた写真にフラグを付ける
root化・脱獄した端末 システムの保護が解除されていると改ざんしやすくなる
不正なアプリビルド 写真が公式のビルドから来ていない

出勤写真では、システムは信頼できる撮影時刻とサーバーが受信した時刻の両方を保存します。遅刻や労働時間には撮影時刻が使われ、2つの差から、どの写真が遅れて送られたかが管理者にわかります。詳しくは勤怠の不正を防ぐ方法をご覧ください。

正直な限界

  • 認定されたタイムスタンプではありません。SnapID Markの信頼できる時刻は、RFC 3161などの規格に基づくタイムスタンプ局が発行するものではなく、電子署名も付いていません。
  • スマートフォンからの信号は改ざんされうる。改造アプリやroot化したスマートフォンは偽のデータを送れます。サーバーは再チェックしてフラグを付けますが、すべてを保証することはできません。
  • 正しい時刻は正しい内容を証明しない。信頼できる時刻がわかるのは写真がいつ撮られたかであって、写っている場面が本物かどうかではありません。印刷した写真を撮影することもできます。
  • 最初の同期の前は基準点がないため、端末時刻しか使えません。

SnapID Markでの信頼できる時刻の使い方

SnapID Markはすべての写真に、日付、天気、GPS座標、住所、ミニマップ、QRコード付きのSnapIDコードとともに、信頼できる時刻をスタンプします。写真の詳細では、撮影時刻の行にその取得元が表示されます:「ネットワーク時刻 · 端末の時計は無視」または「端末時刻 · 未検証」。QRコードを読み取った人には、画像上の文字だけでなく、システムが記録した撮影時刻が表示されます。オフラインで撮った写真は端末に保存され、後でアップロードされます。詳しくはセキュリティと機能をご覧ください。

写真の詳細画面:SnapIDコード、「未バックアップ」ラベル、「ネットワーク時刻 · 端末の時計は無視」と表示された撮影時刻

アプリでは、撮影時刻に「ネットワーク時刻 · 端末の時計は無視」と表示されます。

時計を調整しても変えられない撮影時刻がチームに必要なら、SnapID Markをダウンロードして、スマートフォンの時刻を変えてから写真を撮ってみてください。

よくある質問

スマートフォンの時計を変えると、SnapID Markの写真の時刻も変わりますか?

スマートフォンの前回の起動以降にアプリがサーバーと同期していれば、変わりません。スタンプはサーバーの基準点に、単調増加クロックが数えた時間を加えたものです。

1日中オフラインでも時刻は正確ですか?

はい、スマートフォンが再起動していなければ正確です。単調増加クロックはネットワークがなくても、画面がオフでも数え続けます。

写真に「端末時刻、未検証」と表示されるのはなぜですか?

通常は、オフライン中にスマートフォンが再起動したか、一度も同期していなかったためです。オンラインに戻るとアプリが同期し、以降の写真では再び信頼できる時刻が使われます。

出張でタイムゾーンが変わると影響しますか?

記録される瞬間は変わりません。タイムゾーンが影響するのは、スタンプでの時刻の表示方法だけです。

信頼できる時刻は法的に電子署名と同等ですか?

いいえ。確認を容易にする技術的な証拠であり、認定されたタイムスタンプではありません。ベトナムでタイムスタンプ付き写真は証拠になるかをご覧ください。