2020 年の初めに誰かが私たちに、これがもたらしたすべての不幸と世界中での私たちの生活の根本的な変化を含めて、私たちが経験したことすべてを今年経験することになると言ったとしても、おそらく信じなかったでしょう。
COVID-19 またはコロナウイルス病 2019 は、中国の武漢で 60 人以上に影響を及ぼした肺炎の流行を受けて、2019 年 12 月に初めて聞いた感染症です。今年の最後の日。 12月30日、中国疾病予防管理センターがサンプルを採取しに行き、翌日WHO(世界保健機関)に通知された。 1月7日、このウイルスは既知のものではなく、1月12日にゲノムがWHOに提出されたSARS(重症急性呼吸器症候群)の変異種であることが確認された。
新型コロナウイルス感染症(COVID-19)ウイルスは、発見からわずか数か月で世界中に広がり、人類の最近の歴史において前例のない状況を引き起こしました。
ご覧のとおり、起源、広がり、そして世界情勢は非常に短期間に生成されています。そして、鳥インフルエンザなど、前年からの他の流行は、証拠を参照するとすべてが手遅れになるまで、当局がこの問題を必要以上に真剣に受け止めなかったことを意味しました。
現在、試験期間中のワクチンはありますが、明確な治療法はなく、ウイルスについて少しずつ分かってきています。私たちが知っていることは、その蔓延と感染を防ぐ最も明確な方法の 1 つは、感染の疑いのある症例や感染が疑われる症例を追跡し隔離することによって、いわゆる集団免疫を獲得しようとすることです。
このウイルスに関する重要な事実は、ウイルスに対する抗体が得られる前 (新型コロナウイルス感染症検査で陽性反応が出る前) 48 ~ 72 時間の間に、私たちは感染して伝染する可能性があるということです。したがって、検査では陰性であっても、ウイルスを伝染させている可能性があります。これにより、感染が疑われる患者を隔離することが重要になります。なぜなら、陽性反応を示した人と接触したことがある場合、感染していればすでに感染しており、後で陽性反応を示す可能性があるからです。
このニーズをカバーするために、世界で最も広く使用されているオペレーティング システムの所有者である大手テクノロジー企業である Google と Apple は、世界のさまざまな国や保健当局にソリューションを提供するツールを作成する共同プロジェクトに合意しました。人々を監視できるテクノロジー。接触追跡により、誰とどのくらいの期間一緒にいたのか、一緒にいた人が陽性反応を示した場合に感染のリスクがあるかどうかを常に知ることができ、必要な情報にアクセスできるようになります。病気に関する情報と、感染源になることができた場合にそれを防ぐためにどのように行動するか。
この記事では、Apple と Google の曝露通知ライブラリがどのように機能するか、またスペイン 新型コロナウイルスレーダーアプリのベースとなっているDP -3T 開発キットを分析し、段階的に見ていきます。アプリ自体がどのように動作するかについても説明しますが、まだ公開されていないため、ソース コードを監査することができませんでした (ただし、近日中に公開する予定です)。
何よりもプライバシー: 個人データも位置情報も重視しない
個人データを使用せずに連絡先を追跡するにはどうすればよいですか?これは、スイスのローザンヌ連邦工科大学の教授であり、電気通信技術者であり、プライバシーを専門とするスペインの研究者であるカルメラ・トロンコソ教授が率いる、さまざまな分野の専門家からなるチームが自問した大きな疑問です。そして、それは DP-3T (プライバシー保護分散型近接追跡) プロジェクトの種となりました。
いくつかの基本的な柱を持つプロジェクト:情報の漏洩、侵害、またはその情報の悪用の試みを受ける可能性のある個人情報をサーバーに保存しない (そのため、「分散型」という用語が付けられています) 。このプロセスのすべての情報はデバイスに保存され、いかなる形でもプライバシーを侵害できないデータのみが集中システムに送られます。
DP-3T は、誰とどのくらいの期間一緒にいたのかを知ることができる匿名で安全な方法を見つけるために作成されました。また、一緒にいた人が陽性反応を示したかどうかを知り、それに応じて行動することができます(その人を知っているかどうかに関係なく)私たちは側にいます)。
彼らが見つけた解決策は Bluetooth プロトコルを使用することでしたが、すぐに、iPhone ではオペレーティング システムのせいで Bluetooth でのバックグラウンド プロセスが許可されないという難しい問題に遭遇しました。彼らは Android については解決策を思いつくことができましたが、iOS については解決できませんでした。 Apple と Google が、ヨーロッパのプロジェクトで開発された成果に触発されたプロジェクトを発表することを決定するまで。しかし今回、Apple から提供された API (パブリック システム ライブラリ) が組み込まれており、必要な情報を送信する Bluetooth のバックグラウンド プロセスを作成します。
最終的に、DP-3T (スペイン政府に対するトロンコソ教授自身のアドバイスを受けて、Radar COVID アプリの基礎として使用されたプロジェクト) は、効率を向上させるために Apple と Google のソリューションを統合することになりました。システムの作成者が作成したライブラリに直接依存するため、常に効率的になります。
DP-3T は、データベース、追跡データ、画面テンプレート、ユーザー インターフェイス フローを処理するための、より簡単で統合されたクロスシステムの方法を提供します。 DP-3T が、構造、フロー、操作の点で非常に似た方法で Android と iOS の両方での開発を容易にする統合アプリ「テンプレート」をセットアップできたとします。ユーザー抽象化レイヤー、インターフェイス、およびExposure Noticeのデータ管理が提供されており、これにより、アプリを作成する国のタスクが容易になります。これは、アプリを作成する国ではすでにフロー全体が完了しており、独自のコンテンツをプレースホルダーに配置するだけでよいためです。これから説明するように、対応するキーを作成し、独自のキー サーバーに接続します。
匿名で追跡する方法
Apple と Google の API は次のことを行います。24時間ごとに、暗号的に安全な乱数を生成します。どのタイプのデバイス要素 (クロックやコンポーネントなど) にも依存しないため、特定のタイプのデータに基づいて予測することが「不可能」な乱数。これらの行の下には、キーを返すCCRandomGenerateBytesを呼び出してキーを生成するコードがあります。この関数は 24 時間ごとに呼び出されます。
デバイスに乱数を要求すると、通常は時計から乱数を取得します。そして、データを要求する瞬間に応じて、システムが従うパターンを見つければ、将来どのような数値が与えられるかを予測することができます。しかし、暗号的に安全な数値は計算時にいかなるパターンにも従わず、配信時にも暗号化されるため、数値自体が実際に何であるかを知ることはできません。これは、100% の実際の非予測ランダム性を得るために 2 つの概念を組み合わせたものです。
この番号は携帯電話に 14 日間保存され、24 時間ごとに新しい番号が作成されます。 14 日後に削除されます。なぜなら?なぜなら、いかなる場合においても14日以上の接触が感染を引き起こすことはないことが証明されているからです。したがって、歴史はいわばその日数に限定されます。この暗号的に安全な乱数は、一時公開キーと呼ばれます。
私たちの電話には Bluetooth チップが搭載されており、それを識別するネットワーク アドレスがあります。あなたのMAC。しかし、プライバシー上の理由から、バージョン 4.2 以降、Bluetooth チップにはそのネットワーク番号を偽装し、時間の経過とともに送信されるさまざまな信号が誰から来たのかが分からないようにする別の番号を生成する機能が備わっています。この機能により、「匿名」送信の実行時に Bluetooth ネットワーク アドレスを 10 ~ 20 分間隔で変更できます。携帯電話を Bluetooth デバイスとペアリングすることに同意した場合 (私たちが自主的に行うことです)、実際の MAC が通信されますが、ペアリングされていない場合は、セキュリティとプライバシーのために変更されます。
電話機が Bluetooth アドレスを変更するたびに (約 15 分)、一時露出キーから乱数またはローリング近接識別子が生成されます。このコードは、わずか 16 バイトのパケットで Bluetooth (暗号化) 経由で送信されます。これには、距離を決定するための Bluetooth 信号強度データも含まれています。
ビーコン(閉鎖空間内の位置を三角測量し、近くのデバイスを検出するために使用される Bluetooth データ送信ソース) に非常によく似た形式に従って、私たちの携帯電話は、他の携帯電話に聞こえるように、この回転する近接識別子を数秒ごとに連続的に発信します。あなたの周りに。そして、私たちが言うように、15 分後には、Bluetooth ネットワーク カード識別子と生成された乱数 (回転近接識別子) の両方が一時公開キーから変更されます。
新しいローテーション近接識別子は、24 時間ごとに変更される一時的な暴露キーに基づいて、約 15 分ごとに生成されます。いかなる場合でも、当社または当社のデバイスを特定できるデータは送信されません。
さらに、新しい一時キーが作成されると、カウンタが 0 に設定され、生成されてから経過した秒数が格納され、新しい近接識別子ごとに保存されます。この時間は識別子を生成するためのキーの 1 つであり、後でデータを送信せずに再生成するために必要になります。
これらの行のコードには key 関数があります。一時キー data を使用してENGenerateRPIKを呼び出してキーを生成し、それをccecb_one_shotで暗号化し、関数の最後から 2 番目のパラメータに入る出力メモリバッファoutBufferに返します。
連絡はいつ行われたとみなされますか?別の携帯電話が、私が送信したのと同じ信号を 10 分間以上受信し、その信号強度は危険な距離にあることを示します。これが起こった瞬間に、他のモバイルは送信された近接識別子を保存します。他には何もありません。 14 日後にシステムから削除される識別子。
これが追跡プロセス全体です。他には何もありません。個人データ、ネットワーク識別子、モバイル オペレーティング システムなどのその他のデータはまったくありません。小さな 16 バイトのパケット内の乱数と Bluetooth 信号強度値だけです。数秒ごとに発光するため、電池の消耗はほとんどありません。携帯電話の電池が切れても、その残余エネルギーを利用して送信され続ける価値。
これはセキュリティとプライバシーの専門家によって証明されており、実際に送信されるのはそれだけであり、それ以上のものではありません。そして、すべては私たちのデバイス、または10分以上接触を検出したデバイスに保存されます。他には何もありません。私の場合、私が行ったようにコードを監査し、すべてのドキュメントを読むことで、私が話したすべてを検証できます。トラップや段ボールはありません。
陽性反応が出た場合、新型コロナウイルスレーダーではどうなるでしょうか?
新型コロナウイルス感染症の検査で陽性反応が出た場合、私たちはそれを報告するかどうかを決定します。同様に、私たちにも追跡 API を使用するかどうかを決定する権限があります。 Radar COVID をインストールすると、アプリは追跡の許可を与えているかどうかをすぐに確認します。これを行うために、 ENManagerクラスを使用します。ENManager クラスを使用すると、この機能の承認ステータスや考えられるリクエストについて問い合わせることができ、システムとアプリ間の通信センターとなります。
DP-3T プロジェクトの SDK は、このクラスを独自の機能で拡張して、これらのキーを回復するより単純な関数を提供するため、より複雑な Objective-C または C API を呼び出す必要がありません。
許可を与えた場合は、システムにあるデータベースに問い合わせてください。データベースはアプリ自体からは隠されています。これを理解することが重要です。どのアプリも近接 ID データにアクセスできません。はい、一時的な暴露キー (暗号化されていますが) にアクセスできますが、それはこれから説明するように陽性を報告する場合に限られます。そのため、政府のアプリや保健当局は、Bluetooth を介して何が送信されたかを知り、そのデータを何らかの方法で使用しようとすることはできません。これはシステムのプライベート データであり、アクセスできません。
検査結果が陽性であり、それを報告したい場合、システムは (スペインの場合) 新型コロナウイルス感染症検査の検証コードを要求します。偽陰性を回避する方法。このサービスは REST API (ネットワーク上のサーバー) であり、受信するデータは検査結果が陽性であることを確認する 12 桁のコードのみです。他には何もありません。誤検知を避けるために、私はそう主張します。
肯定的な結果が正しいことが確認されると、(アプリと通信できるようにするために) 各国が特定の仕様に従って作成する必要があるキー サーバーと通信します。このサーバーは、(米国を除く) Apple と Google が国ごとに 1 つのアプリのみを許可していることを考慮して、アプリが存在する各地理的エリアにサービスを提供します。米国では、州ごとに 1 つが許可されています。
鍵サーバーには何が送信されますか?過去 14 日間の一時暴露キーの合計と、各近接識別子を作成するためにキーが生成されてから経過した時間。しかし、すでに述べたように、これらは決して公開されるわけではなく、アプリにさえ公開されません。他の携帯電話に対して私たちを識別するために発行されたデータは、私たちのデバイスから離れることはなく、アクセスすることもできません。また、一時キーは暗号化されており、システムだけが一時キーを復号化できます。
その後、すべてのモバイルに接続されると (バックグラウンドでダウンロードされます)、露出時間キーと間隔から生成された近接識別子が計算されます。このプロセスは API の内部にあり、アプリに対しては不透明です。 Radar COVID アプリも他のアプリも、一時キーと時間から近接識別子を取得する式を知っています。単純に、このデータ セットがデバイスの API に送信され、内部で近接識別子が再生成され、デバイスの非表示データベースと比較されて、保存した近接識別子のいずれかが、作成したばかりの近接識別子と一致するかどうかがわかります。感染者。
データは常に完全に匿名です。私たちの近くにいた感染者が誰であるかは決してわかりませんし、彼らも私たちが誰であるかを知ることはありません。政府でも誰でもない。
偶然があるのでしょうか?そうですね、それは私たちが感染者にさらされたことを意味します。ただし、システムはまだプラスを与えないことに注意してください。リスク要因がユーザーに通知するのに十分であるかどうかは、アプリと各当局によって異なります。 (たとえば) 12 日前に接触があった人から陽性結果が出た場合、当局が慎重であると判断すれば、何も言われないのが通常です。この基準は各国ごとに決められています。ただし、期限が近づいている場合は、システムで陽性が報告されます。 「感染者と濃厚接触したことがある」という情報を持つ陽性者。他には何もありません。誰が、いつ、ということは決して分かりません。
接触追跡アプリでの仕組み
アプリは内部的にいくつかのデータ構造を使用して各国のサーバーと通信し、その動作を設定します。現在の最小リスク、接触の減衰期間閾値、減衰値、最後の暴露からの日数、感染リスク値、および常に各国の特定の状況に合わせてアプリを構成する一連の値。
各国の当局は、キーサーバーを検証する署名証明書を作成し、これを Apple と Google に渡す必要があります。これにより、そのキーサーバーが認可されたサービスに含まれ、他の異なるサーバーへの接続が許可されなくなります。
システムは、診断キーのデータ構造、キー自体の保存場所、キーが有効であった期間、キーが作成された時間間隔番号、および送信リスク レベルを保存します。これらの値は、暴露通知ライブラリの典型的なものであり、システムが肯定的なレポートから値を再作成し、マネージャーに渡されるため、マネージャーは、そのデータとの一致があるかどうかを知らせることができます。店舗とそれは不透明です。
理解しておくべき重要な点は、アプリは近接識別子や一時暴露キーの生成のライフサイクルをまったく管理しないということです。アプリは、肯定的な報告をするために必要な情報を回復するための単なるゲートウェイです。このため、 getDiagnosisKeysというメソッドからアプリマネージャーに一時キーのセット (24 時間ごとに生成されるもの) を要求します。その中で、各エリアが決定する時間しきい値に基づいて送信リスク値を測定し、その基準を満たすキーを時間データとともに送信します。
ほとんどの作業は Google と Apple API によって行われます。アプリは、システム自体によって制御される半自動プロセスを管理する単なる情報インターフェイスです。
ただし、当社はいかなる方法でも近接識別子を管理したり、アクセスしたりすることはありません。そしてキーは暗号化されます。また、一時キーから識別子がどのように生成されるのかも不明です。私たちは肯定的な情報のみを管理し、何よりも、それが肯定的な場合に提供された情報を管理します。
また、明確にすることが重要ですが、いかなる場合でも私たちの位置を特定するために GPS が使用されることはありません。実際、私たちが許可を求めた場合、Apple はアプリを App Store にアップロードするときにそのアプリを拒否するでしょう (そして Google も Play で店)。また、(検証済み) コードでは、API の使用時に GPS を使用したり、いかなる方法でも送受信したりしません。
iOS 13.7 のエクスプレス暴露通知分析
iOS 13.7 のリリースにより、Apple と Google は、この追跡システムの使用を促進し、政府のアプリがある種の制御に使用できると考える人々を安心させるために、新たな一歩を踏み出しました (この事実は、ソース コードとその使用方法を見ると完全に無視されています)それは動作します)。ただし、それでもRadar COVID アプリや我が国で使用されているアプリをダウンロードしたくない場合は、アプリを必要としない高速構成を使用できます。
アプリを提供する認可された政府または保健当局は、オペレーティング システムと直接通信するサーバーを作成できるため、ユーザーはアプリをダウンロードする必要がなくなります。確かに、構成ファイルを提供するには、その地域にアプリが存在する必要があります。しかし、引き下げるかどうかは国民の判断です。ダウンロードせずに暴露通知を使用する場合は、国または保健当局が次のフローを作成すれば、ダウンロードできます。
アプリがすでに使用しているキーサーバーに加えて、国は Apple のガイドラインに従って、新型コロナウイルス感染症検査用の検証サーバーを作成する必要があります。この新しいサーバーは、アプリがすでに使用しているキーサーバーと同様に、すべての陽性テストケースを一元管理し、レポートを報告した人を検証するために機能します。
当局が検査で陽性反応を示すと、このサーバーにアップロードされ、関係者に電子的に送信される検証コードが返されます。受信後、関係者が陽性を報告したい場合は、コードを入力するか、コードを検証する URL をクリックする必要があります。この URL は、テストを検証するためにテストからの追加データを要求し、テストを使用して陽性の信頼性を検証する匿名 JWT (または JSON Web トークン) と、キー サーバーに入るために使用されるセッションを作成します。アプリを使用するには 。
Exposure Notice Express は、オペレーティング システムに、接触追跡と肯定的なコミュニケーション情報のフロー全体を管理する責任を与えます。 Android の場合、Google は Google Play サービスを通じてデバイスにインストールされる自動アプリを生成します。
アクセスが検証されると、システムは生成時刻とともに一時キーのセットをアップロードして肯定的な結果を報告します。これで完了です。他には何もありません。陽性反応を報告しない人の側では、システムは X 時間ごとにすべての陽性キーをキー サーバーからダウンロードする責任を負い、常に各国のリスク基準に従って、一致があったかどうかを報告します。
Appleの場合、アプリを必要とせずにOSがすべてのフローを実行しますが、 Androidの場合、Google Playが地域ごとの設定でアプリを自動生成し、デバイスにインストールします。自体。
情報源
分析されたこの情報はすべて、 Apple が開発者やセキュリティおよびプライバシーの研究者に提供する公開情報から収集されたものです。このライブラリのコードの一部を Objective-C で見ることができ、 ExposureNotificationManagerなどのクラスを使用して Bluetooth 接続全体がどのように管理され、情報が送信されてローカルに記録され、ローカル データベースに暗号化されるかを確認できます。
API は、Apple CoreCrypto ライブラリ (C で記述) を使用してカウンター モードで AES-128 ブロック暗号を使用し、データはデータベースにそのまま保存されません。その暗号化のキーは証明書ウォレットに保存されます。
この分析が気に入っていただければ幸いです。この開発の質と、それがこの病気や将来出現する可能性のある他の大規模な病気の蔓延を阻止するのにどのように役立つかがより明確になりました。ここですべての情報を確認できます。