Cats and Dogs

現像ノートSeason 6STIL.HUB第 2 話 / 全 6 話

現像ノート

同じ部屋でしか、話さない ── 六桁の合言葉

これまでの家族は「あなたのデータを外に出さない」道具でした。STIL.HUB は逆向きの怖さを持っています。この道具は、Mac を操作できてしまう。だから今回は「出さない」だけでは足りず、「入って来させない」を設計する必要がありました。六桁の合言葉と、部屋の外に出ない通信の話です。

同じ部屋でしか、話さない ── 六桁の合言葉

前回、STIL.HUB は iPhone と Mac の二人組だと書きました。今日は、その二人が話す言葉の設計の話です。この家族でずっと書いてきたプライバシーの話と、地続きで、少しちがう話でもあります。

逆向きの怖さ

これまでの家族の道具は、写真や名刺やレシートや声 ── あなたのデータを預かって、外に出さないことが約束でした。

STIL.HUB の怖さは、逆向きです。このアプリは、Mac のアプリを立ち上げ、キーを打ち、ファイルを開くことができてしまう。もし見知らぬ誰かが、あなたの Mac にボタンを押せたら。それは、データが漏れるのとは別種の、でも同じくらい嫌な事故です。

だから今回の設計は、「出さない」に加えて、**「入って来させない」**が要りました。

部屋の外に、経路がない

まず、土台から。iPhone と Mac は、同じネットワークの中で、直接話します。iPhone が「相棒はいますか」と同じ部屋に呼びかけて、Mac 側の相棒が名乗り出る。あいだにサーバーはありません。クラウドを経由しない、というより、経由できる場所がそもそも存在しない作りです。

インターネットの向こう側から STIL.HUB の Mac に触る経路は、ないままにしました。外から操作できる便利さより、「同じ部屋にいる二台しか話せない」という分かりやすさを取りました。

初対面は、六桁の合言葉

同じ部屋にいるだけでは、まだ足りません。同じ Wi-Fi には、家族の他の端末も、来客の端末もいます。

だから、初対面には合言葉を使います。Mac の画面に六桁の数字が出て、それを iPhone に打ち込む。両方の画面を同時に見られる人、つまりその部屋にいて Mac の前に座れる人だけが、この関門を通れます。一度通れば、二台はお互いを覚えて、次からは挨拶だけでつながります。

その「覚え方」も、合鍵を渡すようなやり方にしました。二度目からの接続では、Mac が iPhone に「合鍵を持っているなら、この問いに答えられるはず」という確認(チャレンジレスポンス)をします。合鍵そのものは iPhone の鍵置き場(Keychain)にしまわれて、通信の上を流れません。

公開の前に、鍵をかけた

正直に書くと、作りはじめの版は、この「本人確認」まででした。同じ部屋の中の通信だし、まず動くものを ── といういつもの順番です。

でも、公開してユーザーが一人でも生まれる前に、通信そのものに鍵をかけることにしました。当初は OS 標準の TLS という方式(の事前共有鍵版)を試したのですが、この構成では接続が安定せず、断念。かわりに、標準の暗号部品(AES-GCM)を使って、接続のたびに二台だけのセッション鍵を作り、最初の挨拶以外のすべての通信を暗号化する形にしました。合言葉をまちがえた相手は、復号に失敗した時点で、静かに切断されます。

「Data Not Collected」の、もうひとつの意味

App Store のプライバシー欄で、STIL.HUB も家族の他のアプリと同じく「データは収集されません」です。ただ、今回この表示には、もうひとつの意味が乗っています。収集しない、だけでなく、収集する場所がない。サーバーがなく、アカウントがなく、通信は部屋の外に出ない。

データの話で書いた「持たないものは、漏れない」は、操作の道具では「届かない場所からは、押せない」になりました。言い方は変わっても、芯は同じです。

次回

信頼の土台の話をしたので、次は現場の話です。ちゃんと繋がっているのに、PDF が開かない。ログを見ると、全部「ok」── その ok を疑った話をします。

STIL.HUB は App Store で公開しています。

App Store で STIL.HUB を入手