ハッシュ(HASH)値から接触日を調べる方法

 
 
iOS 14, 接触確認アプリCOCOA 1.1.4 にアップデートした後の照合で陽性者との判定基準での接触ありがでた場合、接触確認アプリで接触日が表示される可能性がありますので、まだの方はお早めにアップデートなさることをおすすめします(9/25修正)。
 
厚生労働省Q&A Q4-7によると、iOSの「一致したキーの数」が1以上という表示は、「1メートル以内で15分以上という判定基準よりも広範な」範囲での陽性者との接触を示すそうです。この広範な範囲での陽性者との接触日(非公式)を知りたい方向けに、引き続き、HASHによる接触日シート別冊の更新を続けます(9/25追記)。
 
1m以上の「広範」は、スマホのbluetoothによる距離測定なので、ほぼ3m以内と思われます。長くて10mでしょう。15分という時間の方は、よほどのプログラムのミスがないかぎり15分以上の接触と思われます(9/25追記)。
 

1. 接触日(候補,非公式)の調べ方

一致があるのに、接触確認アプリCOCOAでは接触なしと表示されていますか。
非公式ですが、iOSにあるデータ(一致があるキーのHASH)を調べて、「接触日シート別冊」にいき、そのHASHで接触日の候補を推定する方法があります。
 
なお、iOSの一致の方は上記広範な接触である可能性がありますが、最新でないバージョンのOSとCOCOAでは、接触確認アプリCOCOAは、判定基準内の接触があるのに、接触なしと表示する可能性もあります(9/25追記)。
 

1.1 一致のあるHASHをみつけます。

(1)「接触チェックの記録」画面でみる

[iOS 13.6まで] 設定→プライバシー→ヘルスケア→COVID-19接触ログの記録→接触チェックの記録
 
[iOS 13.7] 設定→接触通知→接触のログ記録の状況→接触チェックの記録
 
接触チェックの記録
 
この接触チェックの記録画面で、一致のある日時(タイムスタンプ)開いて、「チェックの詳細」画面にて一致したキーの数が1以上の画面を探してください(表示例は0です)。キーの数1以上で、一致があったら、画面のスクショをとってください。
 
その画面のHASHが、目的のHASHです。画面例では、70DF….です。
 
1日13個のタイムスタンプがあるので、3日分だと39回タップしないといけません。大変ですね。
ファイルへの検索でチェックすることもできます。
 

(2).「接触チェックの記録を書き出す(ExportChecks.json)

「接触チェックの記録」画面の一番したの方に、「接触チェックの記録を書き出す」というボタンがあります。これをタップすると、ExportChecks.json というファイルをメールしたり、保存したり、DropBoxやGoogleDriveで自分の Mac / PC に送ることができます。
 

(3). “MatchCount” : 1 (一致)

“MatchCount” : 1 と、MatchCountが0ではない組みのHASHを特定します。
1つのExportChecks.jsonに複数の一致が含まれていることがありますので、複数の一致を見落とさないようにご注意ください。
 
 
ExportChecks V1
 
 
ExportChecks V2
 
“Files” : [] のあるものが、iOS 13.7から採用されたバージョン2のフォーマットです。
またバージョン2では、画面の「提供されたキーの数」は”KeyCount”に対応します。
 
バージョン1では、「提供されたキーの数」は “RandomIDCount” です。13.6で受信したデータも13.7にアップデート後はバージョン2で書き出されます。
 

1.2 HASHから接触候補日(非公式)を推定します。

この接触日シート別冊に移動して、[HASH値 次で始まる 値を入力] の「値を入力」欄に、調べたHASHの例えば最初5つの文字を入力してください。ここでは 70DF と4文字、入力しました。
 
 
接触日シート別冊 初期画面
 
 
行が絞られて1つになりましたでしょうか。
 
 
接触日シート別冊 検索結果ヒット
 
 
そうしたら、鈴木健治は、アプリが正常に動作していたら、その行の「接触候補日」(非公式)を表示しただろうと、推定します。この画面のスクショをとっておいてください。
 
一致が2以上みつかった場合、1つずつ繰り返してください。
 
なお、接触の時刻は、正常なアプリであっても、誰にも表示しない仕様となっています。
 
ハッシュ値を大文字ではなく、小文字、例えば、 70df と入力すると、ヒットしないのでご注意ください。
 
 
接触日シート別冊 検索結果ヒットせず
 
 

接触日シート別冊

 
 
HASHから接触日を調べる方は、上の「接触日シート別冊」をクリック(タップ)して移動してください。
 
 
以下、一致の情報からわかることや、このHASHの求め方などご説明しています。
 
 
 

2. 一致の意味や日付の関係

2.1 一致したキーが1つのとき

(1). 日付の関係

ExposureChecks(チェックの詳細)のタイムスタンプは、あなたの端末で、陽性者のキーと、過去14日間にあなたの端末と接触があった端末のキーを照合した日時です(照合日)。自動なら深夜から未明、手動なら接触確認アプリの起動時です。
 
接触日シート(別冊)にあるタイムスタンプは、陽性者のキー(提供キー,診断キーのこと)がサーバーから配信された日時(配信開始日)です。日付けの変わる0時直後に、昨日登録分がサーバーから配信され始めます。
 
陽性登録日は、陽性と診断された陽性者さんが、処理番号を入力して陽性登録した日で、配信開始日の前日です。
 
陽性者さんが、検査で陽性となった日は、陽性登録日の数日前から当日と考えられます。検査を受けたのはさらにその前です。
 

(2). 接触日に陽性者さんが感染していた可能性

接触日が配信開始日の2日前であれば、その接触した人は感染していた可能性が高いと思われます。
 
それ以前は、わかりません。接触したときには、陽性者さんは感染していなかった可能性もあります。
 

(3). 接触時刻はわからないの?

Apple | Googleの仕様で、日付のみ開示するようになっています。陽性登録者さんのプライバシー保護を厳重にするための思われます。
 

2.2 一致したキーが2つ以上のとき

(1). 照合日が同じ日に、複数の一致があった場合

→陽性者さんが同一人物の可能性はあります。
 
一致が1日と3日の2回で、照合日が5日の場合、3日の接触と1日の接触は同じ人である可能性はあります。もちろん別人の可能性もあります。
 

(2). 照合日が違う日に、複数の一致があった場合

→陽性者さんは異なる人の可能性がとても高いです。
 
陽性者さんが陽性登録したあと、接触があっても通知されません(プライバシー保護の仕様,今後の開発対象として検討されている形跡はあるが、通知するようになるとしても当分先)。
 
一度接触ありと通知された陽性者さんとの接触が、再度、一致として通知されるのは、その陽性者さんが治癒なさって、ふたたび感染し、陽性登録した場合のみです。
 
2日に照合して一致、6日に照合して一致、という場合、1日に陽性登録して、すぐ治癒して、さらに感染して5日に検査結果でて陽性登録という日程の場合に、同一人物となりますが、考えにくいです。
 
 

3. ハッシュ値などの求め方のメモ

3.1 iOSの「チェックの詳細」画面に表示されるHASH

このHASHは、接触があったか照合するための元となる陽性者のキーが入っているファイル(export.bin)を特定する値です。
通知サーバーからzipファイルをダウンロードして、zipファイルを解凍、export.binのHashを”SHA 256″でとった値です。
 

3.2 現在の日本の運用と推定の検証

zipファイル (export.bin)には、現在の日本の運用では、接触日が同一のキーが集められています。一致がでた記録について、zip番号がわかれば接触日の候補(非公式)を推定できます。
 
具体的には、キーの使用開始日時である “rolling_start_interval_number” から開始する24時間が接触日です。”rolling_start_interval_number”は、1つのzipファイルに含まれる複数のキーで、運用上、すべて同一です。日本時間で入力されていると想定しています。
 
この求め方で求めた接触日を、2020年8月15日から9月13日まで、100名にお伝えしてきました。
 
接触候補日をお伝えした際に、「違和感がありますか」と質問をして、自らご回答ただいた範囲で、どの接触で一致がでたか、話し合ってきております。
2週間のうちその日しか外出していないとの方も10名程度おり、また、深夜から早朝までの行動を知らせてくださった方、2日連続して一致がでる方がほぼいなかったなどの対話から、この推定結果は確からしいと考えています。
 
接触確認アプリCOCOAの不具合は、アプリ側とOS側を通したテストをすることが難しい点にあると分析しています。そのため、実際のユーザーの声に耳を傾け、一緒に考えながら、アプリとOSを通した動作の整合性を検討してきております。
 

4. 著作権表示

本文書及び公開している接触日シートの著作権及び著作者人格権は鈴木健治が保持しております。
 
 

twitterやそのDMで対話してくださった全ての皆様に感謝します。

 
 
 
Copyright 2020, Kenji Suzuki
2020年9月13日-14日執筆, 9月15日図を追加し前後の文章を調整。h3,h4の設定ミスを修正。9月25日厚労省QA 4-7に対応。