Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

「他人認証」の話

だいぶ前から温めてたアイディアなんだけど、パスワードの類って「なりすまし」を抑える薬にはなるけど「自作自演」には効かないんだよね。で、自作自演を防ぐような仕組みが作れないか、という話。
「自作自演」を抑える薬としてまず思いつくのは、国なり自治体なりに配布された背番号。但し、ランダムに作った背番号を 100 個並べても実在の人物にマッチしないようなものであることが必要だし、「その番号は実在の人物に該当するか」ということが何らかの方法でチェックできなくてはいけない。それに、チェックのアルゴリズムは秘密にしておかないといけない。他にも、複数のウェブサイトを横断して個人が特定されてしまう、とかいう「やりすぎ」な点もある。
次に思いつく方法として CA certificated な署名を使う(二つ用意するのは面倒だから抑止力になるよね)とかがあるけど、CA に身分証明書を送るなり、あるいは常日頃から署名に使う鍵の fingerprint を周りに配っておくなりしないといけない。面倒だし、第一「自作自演」を防ぎたいのは鍵を持っている人ではなくて、鍵を持っている人が書き込みをする掲示板の管理人じゃないか、と。
とりあえずは「掲示板等への書き込み」のみをターゲットとしましょうか。script kiddy と言われる人達の知識がどの程度か分からないけれど、個人情報の類を手作業で消去してるとすると、罠は多ければ多い方がいいよね。次のものを推測に使うことにしましょう。

  • ブラウザに保存したクッキー(これが残れば決定的、だけどアンチウィルスソフトに弾かれるかも)
  • IP アドレス(割と簡単に変えられるし、proxy 等で被ることも考えられる)
  • リモートで arp 実行して結果を持ってこられないかな(無理っぽいし、arp はルータを越えられないはず)
  • ブラウザの UA 文字列(割と簡単に変えられる。セッション毎に自動的に変更したりも割と簡単)
  • 書き込み時間帯(生活リズムが一定している人じゃないと……閑散期に集中していれば可能性高し?)
  • 書き込み内容の特徴を分析(句読点や記号の量、漢字-ひらがな-カタカナ比率、改行のクセ等)
  • 隠しパラメータ( みたいにして、ブラウザのキャッシュに残るのを狙う)
  • ローカルの情報を元に、送信する文章に適宜スペース等を混ぜる、電子透かしもどき(セキュリティの問題を回避して使える情報はあるのか?)
  • 鍵生成のときの「マウスをランダムに動かしてください」の情報を一切使わずに鍵生成するプログラム(マルウェアじゃねぇか)

他に何かあるかな? っていうか誰か実装してみませんか?
あと、同一人物であることが判明した後の対処ってのはまた別の問題ね。荒らしっぽい書き込みをすると、その書き込みは「書き込んだ人からしか見えない書き込み」になる掲示板、ってのがたしかあったよね。アホしか見えない書き込み、逆はだかの王様システム。