10/07/16 22:19:10 /OqHTpSI0
●鯖は、正規ユーザーからの認証であった場合は
「●ID、認証クライアントIP、鍵1」を鍵2を使って暗号化(処理負担が小さいもの)
して、生成された文字列をセッションIDとして返す。
2ちゃんねるに●を用いた書き込みがあった際は、
まず鍵2を用いてセッションIDを復号化する。
そして鍵1が含まれていたら改ざんされていないと判断し、
IPをチェック。認証時のIPと●使用時のIPが異なっていたら拒否。
┌───┐(1) 認証. ┌──┐
│. クライアント1├───→│ ●鯖 │
│. (IPアドレス1)│←───┤ tora3.net│
└─┬──┘(2) セッションID └──┘
↑ │
(4).│ │(5)●使用
OK│ │読み書き
│ │
│ ├───→[盗聴] [クライアント2](IPアドレス2)
│ │(6) 盗聴 │
..┌┴-┴─-┐ │(7) セッションハイジャック
..│ .2ch │ × ←───┘
..│ (bbs.cgi) │ 認証時とIPが異なるので拒否
..└──┘
鍵1と鍵2は定期的に変更する。
これがそのままセッションIDの有効期限になるし、
また鍵2を総当りで突破された場合でも
定期的に鍵が変わるので被害は少ない。
┌─┐
│鍵1 │(3) 鍵の同期
│鍵2 │←──────┐
└─┘ │
↑(1) 12時間ごと(セッションID │
│の有効期限ごと)に更新. │
┌──┐. ┌─┴─┐
│ .2ch │(2) 鍵の変更通知. │ ●鯖 │
│ (bbs.cgi) ├────→│ tora3.net│
└──┘. └──┘
この方法のメリット
・VivaSambaが不要になるのでその分のリソースが空く
・2chサーバーで必要な処理が一度の復号化とIP、鍵1の比較のみと
処理負担が今と比べても増えない
・何度か問題になっていたセッションハイジャック(セッションIDを盗んで成りすまし)を防げる
・総当りに対して強い
(今まではセッションIDの仕組みがバレたら書き換えし放題だった。
この方法ならそれができるのは鍵が変わるまでの間のみ)