Senselink


moshGUI/OpenCL対応の次に予定しているのがコラボレーション支援機能で、これを搭載したmosh窓の杜に載せるのが当面の目標。
もともとmoshにはSchemeオブジェクトをシリアライズする機能があるので、そのオブジェクトをノード間でやりとりする部分を抽象化してSchemeオブジェクトをやりとりするアプリケーションを手軽に書けるようにする。
サービスのディスカバリにはBonjourを採用する予定だけど、問題は"自分の信頼しているノードとだけ通信したい"ケースが往々にして有ること。
もちろん、MACアドレスIPアドレスを指定して通信するのも良いけど*1、それだと微妙に面倒。
そこで、Bluetoothのような"ペアリング"機能を持たせる(senselink)。

  1. ノード同士を物理的に横に並べ、
  2. キーボード/画面を連続して撫でる("くぁwせdrftgyふじこlp"の要領で、しかし、キーボード境界を越えて隣のマシンも連続して撫でる。)
  3. 端のノードにキーワード(ランダムな写真)が出現し、撫でられた方向に画面中を移動する
  4. それを目で追いかけて自分のノードに同じものが出現することを確かめる

ことで、触られたタイミング情報と画像を元にノード同士で認証する。(画像とタイミングが十分にランダムであることを期待している。ハッカーがこのネットワークに侵入するためには出現する画像と移動速度を予測する必要がある。)
この操作はコンピュータセキュリティの上で完全に合理的な訳では無い(= ボタンを同時に押しても同様の結果を得られる)が、

  • 行動が直感的で入力デバイスを問わない
  • 物理的な位置関係を同時に得られる

というメリットがある*2。つまり、Senselinkでリンクしたノード同士なら、"ファイルを右のマシンにコピー"という操作を実現できる。

*1:ここのリストにホスト名が無いことに注意。ホスト名は簡単に偽装できる。

*2:もっとも、"バカみたい"というのがsenselinkの最大のメリットであり、デメリットでもある。