- 更新日: 2017年03月16日
- 公開日: 2017年03月03日
【鬼ゆる解説】Google先生が「SHA-1」を破った件を理系女子大生が恋愛に例えてみた。
2月23日、Googleがハッシュ関数「SHA-1」に対する衝突攻撃に成功したことを発表しました。
Google Online Security Blogより引用
私は現在工学部で情報セキュリティ・暗号理論の研究室に所属する恋愛依存症な理系女子大生ライターranranといいます。(…要素が多すぎる)
「SHA-1」はアメリカ標準となっている代表的な暗号学的ハッシュ関数です。ブラウザの安全性の確保などを中心に様々なセキュリティシステムに利用されていましたが、2005年にはSHA-1に対する攻撃方法が発見され、段階的に利用が廃止されてきました。しかし、Googleは今回その実用的な攻撃に成功し、より早急にSHA-1の使用を中止し、安全なSHA-256やSHA-3への移行することを促しています。
…と要約するとこんな感じ(もはや読まなくていいです)なのですが、情報セキュリティに関する知識がない人からすると、「話題にはなっているけど、それがどうしたの?」「なにそれ、やばいの?」という感じのかなーり専門的なニュースです。
私も初めてSHA-1を教科書で見たときも「せんせ〜い!これなんて読むの?…しゃーいち?」という感じでした。ちなみに、SHA-1はシャーワンと読む人が多いです。エスエイチエイワンと読んでもいいし、まあ、結構適当っぽいです。人それぞれ。
暗号技術って…もし無くなったら今の世の中は破綻するどころじゃ済まないくらい凄く凄く大切なテクノロジーです。しかし、普通に生活しているとその存在を意識することはありません。KING OF 縁の下の力持ち系テクノロジーだと思っています。
だからこそ、詳しい技術について理解する必要はありませんが、その重要性やいかに自分の生活に密着している技術なのかを少しでも知ってもらいたいなあ〜と思い、今回はGoogleさんがSHA-1への攻撃に成功した件について、鬼のようにゆるーく解説していきたいと思います。
SHA-1って何に使われてるの?ハッシュ関数って?
一旦、セキュリティなお話からは離れて次のような場面を想像してください!
ぼぶ男くん キャロ子ちゃん…他に好きな人ができたから、俺と別れてほしいんだけど。
きゃろ子ちゃん
…えっ。どうして?好きな人って誰なの?
バイト先の後輩のあり美ちゃんだよ。
…なんで?!?なんで、あんな女なのよ!許さない!!!
きゃろ子ちゃんの呪い1:改ざん
それからぼぶ男くんは大好きなあり美ちゃんに猛アタックしました。そして、あり美ちゃんを射止めることに成功、めでたくカップルに…。
付き合いたてのある日、ぼぶ男くんの元にあり美ちゃんからこんなメッセージが届きました。
あり美ちゃんからのメッセージ
[ 明日、渋谷でデートしない?13時にハチ公の前で待ち合わせでいい? ]
翌日、ぼぶ男くんはワクワクしながら約束の時間よりも少し早くに待ち合わせ場所へ向かいました。待ち合わせ場所に到着すると、既にそこにはあり美ちゃんの姿がありました。
ぼぶ男くん
あり美ちゃん待った?ちょっと早めに来たつもりだったんだけど、俺の方が後だったかあ。
あり美ちゃん
はあ?何が「ちょっと早め」よ!言ってる意味がわかんないんだけど。
えっ?
私、12時にハチ公前ってメッセージ送ったよね?
えっ…13時って書いてあったと思うんだけど。
そんな意味不明な言い訳しないで。もう今日はデートする気失せたから帰るね。
え〜〜!!!
その後、ぼぶ男くんは何度もあり美ちゃんからのメッセージを見直してみましたが、そこに書いてある時間13時でした。
きゃろ子ちゃんの呪い2:なりすまし
この前のことはきっと何かの間違いだろう…とあまり深く考えず、ぼぶ男くんはひたすら謝り倒し、なんとかあり美ちゃんと仲直りすることができました。そんなぼぶ男くんの元に再びあり美ちゃんからメッセージが届きます。
あり美ちゃんからのメッセージ
[この前は私もキツイこと言っちゃってゴメンね。改めてデートしよう!明日、新宿駅の東口で18時に待ってるね!]
ぼぶ男くんは仲直りできた安堵感に包まれながら、前回と同じく約束時間よりも少し早めに待ち合わせ場所に向かいました。
ぼぶ男くん
あれ、あり美ちゃんまだ来ていないのかな?
しかし、約束の時間を過ぎてもあり美ちゃんは現れませんでした。
きゃろ子ちゃん
…Bくん?
突然、名前を呼ばれて振り向くと、そこにはぼぶ男くんが振ったきゃろ子ちゃんが立っていました。
…っ?!なんでここにいるんだ?
だって、18時に新宿駅の東口で待ち合わせてデートする約束したでしょ?
いや、俺は…あり美ちゃんと!ちょっと、あり美ちゃんに連絡しt…
もう遅いと思うけどなあ〜。だって、私、ぼぶ男くんになりすまして…
[ 俺、やっぱりきゃろ子ちゃんのことが忘れられない。明日、きゃろ子ちゃんと会ってくる。 ]
ってメッセージをあり美ちゃんに送ったから。
勘が鋭い方は既にお分かりかもしれませんが…簡単に解説すると、きゃろ子ちゃんの呪い1では、きゃろ子ちゃんがあり美ちゃんがぼぶ男くんに送ったメッセージの待ち合わせ時間を勝手に書き換えていました。このことを改ざんといいます。次に、きゃろ子ちゃんの呪い2では、きゃろ子ちゃんがあり美ちゃんになりすましてぼぶ男くんにメッセージを送っていました。
随分長くなってしまいましたが、(いやいや、メッセージってなんだよ!いまどきLINEだろ?てか、あり美ちゃんに確認したらいいだろ!みたいなツッコミもあるかと思いますが…)インターネットを使う際に、きゃろ子ちゃんのようにメッセージの改ざんやなりすましが簡単にできてしまったら、かなーーーりヤバいと思いませんか?
ハッシュ関数について
このようなきゃろ子ちゃんの呪い(データの改ざんやなりすまし)を防ぐために使われているのがハッシュ関数です。
では、具体的にどうやっているのか?
まず、ハッシュ関数は長いメッセージから固有の短いメッセージを作ることができる関数です。厳密には違いますが、この固有の短いメッセージというのは内緒話をするときの合言葉みたいなイメージです!(ちなみに、情報セキュリティ用語では合言葉のことをハッシュ値といいます。)また、このハッシュ関数は元のメッセージから合言葉を作るのは簡単だけど、合言葉から元のメッセージを出すのはめちゃくちゃ難しいという特徴を持っています。
あり美ちゃんがぼぶ男くんがメッセージを送る場合。まず、あり美ちゃんは送りたいメッセージからハッシュ関数を使ってハッシュ値(A)を出します。そして、ぼぶ男くんにメッセージと共にハッシュ値(A)を送ります。ぼぶ男くんは受け取ったメッセージからハッシュ関数を使ってハッシュ値(B)を出し、自分が出したハッシュ値(B)とあり美ちゃんから送られて来たハッシュ値(A)を比較します。このとき、2つのハッシュ値が一致していればあり美ちゃんのメッセージは改竄されていないと判断することができます。また、これを署名文に使うことによってなりすましを防止することもできます。
なんとなーく、ハッシュ関数のイメージは掴めたでしょうか?
で、Googleは何をしたの?
再びテクノロジーなお話は忘れて、次のような状況を考えてみてください。
すごーくチャラい男女7人の仲良しグループがありました。
グループ内の男女の内訳は女の子が4人と男の子が3人です。すると、そのグループに属していない誰かが言いました。
「あのグループ、全員がグループ内の誰かと付き合っているらしいよ!」
…それ絶対男1人以上、二股してるやん!!!!!!!
これが、数学的には鳩ノ巣の原理と言われるものです。ハッシュ関数もこの状況と同じようにちょっぴり浮気症なんです。
元のメッセージがこの状況でいう女の子、合言葉が男の子です。どうしても長いメッセージを短い合言葉にしようとする、どこかで必ず合言葉が被ってしまいます。言い換えると、異なるメッセージから同じ合言葉ができてしまうことがあるということです。このように合言葉が被ってしまうことを情報セキュリティ的には衝突と言います。自分が女で、男のほうが少ない環境にいて友達と好きな人(あるいは彼氏)が被っちゃった!って状況と多分だいたい同じです。
Googleが成功した衝突攻撃
今回、Googleは異なる2つのPDFデータに対しSHA-1を用いて、同一のハッシュ値を持たせることに成功しました。
状況的には、世話焼きな「ぐぐちゃん」は具体的な証拠はないもののほぼ確実に浮気されている女友達・「はっしゅ子」に対し、何度も『その男やめておきなさいよ!』と注意していたのに、ずるずる付き合い続けるもんだから…はっしゅ子の彼氏の浮気相手の女の子を探してきちゃったって感じ。
Google Online Security Blogより引用
もちろんインターネット上などで扱っているデータというのは例に出した状況のように小規模ではないし、ハッシュ関数についてもそんなに単純なものではないので、そう簡単にハッシュ値が被ることはありません。SHA-1についても、Googleは今回の攻撃を成功させるためには全部で900京回以上の計算が必要だと発表しています。
とはいえ、好きな相手を手にいれるためだったらどんなことでもするようなサイコパスみたいな人っているじゃないですか。それと同じで、めちゃめちゃ資金力のある悪い人が「攻撃しよっかな〜!」と思ったら、どうなるか分かりませんよね。
それって、そんなにやばいの?
ここまでで今回のニュースのやばさについてなんとなく理解していただけたかと思いますが…
最初にもちょろっと書いた通り、SHA-1については結構前からその危険性が指摘されていて、アメリカ国立標準技術研究所(暗号アルゴリズムを評価する機関)からも2013年までに利用を停止するように!という勧告を出しています。その後も研究が進み、さらにお手軽にSHA-1は破られる危険性があるよ!という報告がされています。
でも、こんな女の子いません?「いい加減そんなダメ男とは別れなよ!」と周りの友達から言われながらもなかなか別れられないダメンンズウォーカー。まさに、SHA-1についてもそんな感じの状況。「危ないから使うのやめよーよ!」って言ってるのに、まだ使い続けている奴いるんだけど…みたいな。
ところで「SSLサーバー証明書」って聞いたり見たことありませんか?
インターネット上で個人情報やクレジットカード情報などを送受信するとき、他の人にそれらの情報が盗まれたり、改竄されたりせずに安全に通信が行える仕組みのことをSSL(Secure Sockets Layer)といいいます。それに加え、そのウェブサイトの運営者の身元を確認することができる証明書がSSLサーバー証明書です。
ちなみに、これはブラウザのアドレスバーで確認できます。URLが「https://」で始まっているサイトはSSLサーバー証明書を使用しています。また、鍵マークをクリックすると、その証明書の内容を確認することができます。
そんなものすごーく大切なSSLサーバー証明書の署名に以前はSHA-1が使われていました。そして、現在でもその証明書を利用しているウェブサイトの運営者がいます。
どうでしょうか?
いますぐやばい!ピンチ!死ぬ!っていうわけではないですが、SHA-1のSSLサーバー証明書を使っているサイトで個人情報なんかは絶対入れたくないですよね。「絶対誰にも言わないから〜好きな人教えてよ〜!」という女友達のセリフ以上に怖いです。
\Webサイト担当者としてのスキルが身に付く/
まとめ
暗号技術の縁の下の力持ち感、ご理解いただけたでしょうか?
何か悪いことが起こらない限り、その存在が表にでることがあまりない暗号技術ですが、その悪いことが起こらないために日々研究、改良が行われています。一見すると結構地味ですが、本当に本当に本当に大切な技術です。
IoTの技術の進歩などでも分かるように、今後さらにインターネットが私たちの生活に浸透していくに当たり、ますますセキュリティ技術の需要は高まります。だからこそ「自分のしている通信が果たして安全なものなのか」、「どんなセキュリティシステムが利用されているのか」というように少しでもインターネットセキュリティについて関心を持ってもらいたいと思います。
そんな都合よく自分のことだけを愛してくれて、守ってくれる男なんていないんです。愛されるイイ女になるには男の性質や考えかたを学んび、上手に扱えなければならないんだ!!!…とそんなことを考えながら、日々彼氏の行動を分析しつつ、暗号のお勉強に励むranranが解説させていただきました。
- この記事を書いた人
- ranran