DoS & DDoS を実世界で例える

最近セキュリティ*1について興味を持った友人がいるのですが、彼がDoS(Denial of Service)と DDoS(Distributed Denial of Service)について説明を求めてきたので説明してあげました。その時に使った例をちょっとメモしておきましょう。

あるところに道路を挟んでスーパーが 2 件ありました。このスーパーをそれぞれ A 店と B 店とします。今 A 店は経営難でして、B 店が邪魔で仕方がありません。そこで A 店はなんとかして B 店の営業を邪魔してやろうともくろみます。

B 店を偵察したところ、B 店にはレジが 4 台あり、従業員はレジ 1 台につき 1 人のようです。そこで A 店は考えました、「B 店に行き、従業員一人を質問攻めにすれば B 店はレジが 3 台しか使えない。客は待つのが嫌だから A 店にくるはず」。

これはうまくいきました。微量ながら客が流れてきたようです。次の日、これに味をしめた A 店はさらにもう一人を質問攻めにします。さらに次の日はもう一人を質問攻めにします。これが DoS アタックになります。意図的に相手の正常なサービスを麻痺させる事が目的です。

しかし、B 店も黙って見ているわけにはいきません。レジが 1 台しか使えなくなってしまった B 店はこれ以上邪魔されるわけにはいかないので A 店の人間を立ち入り禁止にしました。さらに念には念を入れてレジを倍の 8 台に増やしました。これでは A 店の人間が変装して侵入しても大きなダメージは見込めません。根本的な財政で負けている A 店はこれ以上攻めても勝ち目はありませんでした。

そこで DDoS の登場です。A 店は近所の子供たち全員に次のようなビラを撒きました。

B 店の従業員に合い言葉を言えば、お菓子がもらえるよ! 合い言葉はポケモンのテーマ曲を歌う事
B 店店長より

いつもは夕飯の食材にする魚・肉・野菜などをもった主婦が並ぶ夕方、その日は町中の小学生が従業員の前で歌を歌っています。客である以上退けるわけにもいかず、レジの従業員は最後まで聞くしかありません。レジには何を買うわけでもない小学生の長蛇の列。買い物をする気でいた主婦は空いている A 店に行ってしまい、B 店は潰れましたとさ。

じゃんじゃん。

噛み砕いて言えば、DoS アタックは自分で相手のサービスを麻痺させる事なんです。この例では A 店は自分の店の従業員を B 店に行かせて B 店の従業員を正常な業務(レジ打ち)から遠ざけました。ところがこの攻撃は相手が自分よりも強い時はうまく行きません*2。自分の従業員が 4 人しかいなければ 相手の 4 人分しか封じる事が出来ないからです。

そこで DDoS の登場です。この攻撃のポイントは『不特定多数の一般ユーザ』による攻撃であるということです。この例では町中の子供が何の悪気もなく B 店の従業員の前で熱唱しています。これを店内立ち入り禁止にするわけには行きません。なぜなら攻撃してきているのは一般のユーザ(客)だからです。これを立ち入り禁止にする事は、誰一人として店に入れなくなる恐れがあります。

実際の DDoS はユーザは気付かないうちに DoS アタックに加担しているという点でこの例とは異なるもののわりと良いところを捕らえているのではないでしょうか。

*1:というよりも広義のハッキング・クラッキング

*2:コンピュータの世界では SYN Flood などを利用して強い相手を落とす事も可能だが。