Photo by iStock
ブルーバックス

サイバー攻撃を仕掛けるハッカーの頭の中は、こうなっている

秘密はこうして盗まれる

開発者 vs. アタッカー

まずは表面についた端子をはぎ取る。ドライヤーで表面を熱すると、本体と端子を接着していた糊が溶け、端子がはがれ落ちる。硝酸の溶液に本体を浸す。パッケージが溶け落ち、回路があらわになる。信号線にステージ台を取り付け、マイクロプローバの針を当てる。電源を入れれば、いよいよオシロスコープに信号の変化が現れる――。

Photo by iStock

これはマイクロ手術。サイドチャネルアタックという暗号解読技術の一つだ。サイドチャネルアタックは裏口から暗号を破る技術であり、マイクロ手術は中でも本格的な攻撃だ。

ほかに、暗号処理の間の消費電力を観測して暗号の秘密鍵を割り出したり、わざと誤動作させて、正常動作との違いから秘密鍵を推定したりするアタックもある。

マイクロ手術と比べて、こちらは意外に簡単だ。暗号を処理するICチップに何の対策も施されていなければ、気の利いた理系学生なら秘密鍵を取り出せてしまうだろう。

もともと暗号は、戦争で軍事的な通信を秘匿するために作られた技術だった。長らく一般人の生活とは無縁のものだったが、今や暗号なしに生活することは極めて難しい。インターネットショッピングも携帯電話もWi−FiもICカードも、生活に欠かせないものになった――とは、このところ雑誌などでよく目にするフレーズだ。

暗号の話は歴史的経緯を中心に語られやすいが、実際はそうシンプルな話ではない。最近の暗号業界の様子を伝えるため、開発者とアタッカーのストーリー仕立てにしてみよう。

開発者「電子署名の処理をもっと早くしたい。そうだ、秘密鍵の一部を短くしよう。そうすれば、処理速度が一気に何倍にもなる」

アタッカー「考えなしに秘密鍵を短くしたな。連分数(数学的な技術)を使えば、鍵を暴き出せるのも知らずに」
開発者「暗号の鍵や電子署名を作るために、乱数生成関数を使おう」

アタッカー「秘密素数が求まったぞ。ってことは、ソフトウェアに標準装備されている乱数生成関数を使ったな。乱数が十分なランダム性を持たないのに、それに気付かず不完全な乱数を使って秘密素数を作ったって訳だ。公開鍵の証明書を比較すれば、秘密素数はすぐにバレてしまうんだが」
開発者「画像データを強力な暗号で暗号化してみた」

アタッカー「ははは、データをバラバラに暗号化してやがる。画像が丸見えだ」
開発者「ICカードは強力な暗号を使っているから安心だ」

アタッカー「ICカードの消費電力を統計処理にかけたら、鍵がわかったぞ!」

これらの大半は、実際に行われたアタックが元ネタになっている。

私達の生活は、穴の空いた危うい基盤の上に成り立っているのだ。だが、暗号システムの穴は、知識がなければ見えてこない。精巧な仕組みを徹底的に知り抜いて初めて、その先の穴が姿を見せる。どこに隙があるのか、完璧に見える暗号がどこから破られるのか――。

これらを明るみに出せるのは、解読の原理を知る者だけである。