====================================== ◆Twitter魚拓 加工判定の仕組みの説明書 ver1.0◆ ====================================== 画像偽造検証機能についての解説。 Twitter魚拓で生成したPNGは偽造加工を検知する為の仕組みとして、 画像内に電子署名を埋め込んでいます。 ◆「加工判定」誕生のきっかけ 従来、スクリーンショットは画像加工が簡単な事もあり、 裁判や事件などにおいてその信憑性について問われるケースが多々ありました。 そこで、魚拓サービスでは「URL・発言日時」を含んだツイート画像に加え、 「元画像データのハッシュ値」を埋め込む電子署名技術を用い、 スクリーンショットの改竄を検出可能とする実装を行いました。 ◆「電子署名」とは 「電子署名」とは、画像データに特定の情報を埋め込む技術で、 一般的には著作権の保護や不正コピーの検知のために用いられることもある技術です。 Twitter魚拓のPNG画像には下記4点の情報が暗号化され埋め込まれています。 ・TwitterのURL ・作成日時(UnixTime値) ・オリジナル画像のハッシュ値 ・オリジナル画像のサイズ(Byte) これらの情報と、アップロードされた画像の情報との比較を行うことで、 画像の改変や加工を検知できる仕組みを実現しています。 ◆「オリジナル画像のハッシュ値」とは ハッシュ値とは、データの内容を元に割り出された固定長の文字列の事です。 データが1bit(最小単位)でも変化した場合、その文字列も変化します。 データが同じである場合、値は絶対に変わらない性質を持っています。 このような性質から、一般的には暗号や認証に使われる技術です。 Twitter魚拓では、この仕組みを用いて、ツイート撮影時点の、 オリジナルの画像のハッシュ値と現在の画像のハッシュ値を比較し、画像加工の有無を検証しています。 ◆検証ページの公開について 検証結果ページはURLを第三者に伝える事で、検証結果を他者と共有する事ができます。 サーバ上では検証結果のページを一定期間(少なくとも3か月間程度)保持ことを努めますが、 仮に削除されてしまった場合でも、再度画像をアップロードすることで、同じURLで再開する事ができます。 検証用のページのURLは、画像データのハッシュ値がキーとなっています。 これによって、削除されても同じURLで再表示させる事ができます。 ◆検証用JSONデータ それぞれの検証ページでは画像データを含むJSONデータを公開しています。 データを用いて第三者が技術検証を行うこともできます。 JSONデータの構造は下記のとおりです。 { "meta" : { "version" => "1.0", "url" => "ツイッターのURL", "time" =>"撮影したタイム値", "date" =>"撮影した日時", "author" => "https://twtr.satoru.net", }, "diff" => { "hash" => { "img" => "画像のハッシュ値", "org" => "オリジナルのハッシュ値", }, "size" => { "img" => "画像のサイズ(byte)", "org" => "オリジナルの画像サイズ(byte)", }, data" => "BASE64化された画像データ", ); } ◆お問い合わせ 技術的な仕様やご不明な点がありましたら サイト運営者までお気軽にDMください https://twitter.com/satorunet/ 2020/6/18