レジデント準備完了 静的コンパニオン
kari_mikumao 研究室

Systems

Mirai Guide:誰も追跡せずに「どこから来たか」の地球儀を作る

3つに分けた端末の識別子、署名前に丸める約100kmのセル、そしてデプロイを止める利用状況の開示。

  • mirai-guide
  • プライバシー
  • 暗号

企画展には、来場者がどこから来たかにピンを刺す壁の地図があります。そのデジタル版が、来場者1人につき1つの点を、選んだキャラクターの色で表示する回転する地球儀です。作るにあたって、壁の地図には不要だった問いに答える必要がありました。その端末がこれまで発したすべての発言を地理的に特定可能にせずに、「出身地」をどう集めるか。

意図的に分けた3つの識別子

端末はすでに2つの鍵を持っていました。Ed25519の報告鍵は在庫報告に署名し、その報告者ハッシュは在庫・行列・快適さのピンなど、その端末が出したすべてに横串で残ります。もう1つ、テレメトリのインストールIDがあり、位置情報は収集しないと約束する開示文が公開されています。

出身地をどちらに結びつけても何かが壊れます。報告鍵で「ソウルから来た」に署名すれば、その端末の過去の在庫報告すべてが同じ表空間で地理的に特定可能になります。インストールIDに付ければ、これから公開する開示文と矛盾します。

そこで地球儀には、最初のピンで生成する3つ目の鍵ペアを与えます。代償は現実にあり、受け入れています。コミュニティ面は報告面から信頼の履歴を引き継ぎません。ここではそれで構いません。重み付けすべき合意はなく、あるのは存在だけだからです。

署名の前に、構造として粗く

通信ペイロードに生のタップ位置は決して入りません。クライアントは署名の前に、およそ100km四方の固定グローバルグリッドへ位置を丸め、送られるのはセルIDだけです。表示する重心はセルIDから導かれ、誰かのタップからは導かれません。

グリッドは緯度1度×(1度÷緯度の余弦)の経度で、極付近で細長く潰れず面積がほぼ等しく保たれます。セルIDにはバージョン接頭辞が付くので、古い行を黙って読み替えることなく方式を変更できます。

重要なのはこの性質です。点は常に「このセルのどこか」を意味し、「この人の町」を意味しません。しかもそれは、表が漏れても成り立ちます。 これがプライバシーポリシーとプライバシーの性質との違いです。

集計は存在のみで、全体の合計とセルごとの合計だけです。キャラクター別の内訳はどこにもなく、成果物の件数には上限があります。キャラクターの語彙は既存のロスター表から複製せず導出した閉じた集合で、キーとローカライズ名は単一の出所を保ち、サーバーが検証します。

開示文がデプロイを止める

商品ごとの購入事実を集めるようになったことで、利用状況の開示に書くべき内容が変わりました。そこで開示自体をリリースのゲートにしました。提供するすべての言語でその節が公開されるまで、機能は本番に出ません。開示は次を述べます。IDは匿名で群衆報告と紐づかないこと。商品ごとの購入事実を収集すること。第二の目的が在庫予測のためのコーパスであるため、データがイベント後も保持されること。収集しないもの――身元、カートの中身、価格、位置情報、検索語――の境界。そして運営が収集を停止できること。

保持についての一文は、定型文なら書き落とすところであり、第二の目的を誠実にしている一文でもあります。