ここでは、複数の暗号アルゴリズムを組み合わせて使用するハイブリッド暗号について紹介します。
以下、2人の会話をご覧ください。
![]() |
せんぱ~い (^ー^) |
![]() |
あ、だんご買ったんだ。 |
![]() |
はい、レジ横のヤツです。 誘惑に負けてしまいました。 |
![]() |
それで、飲み物もお茶にしたわけね。 |
![]() |
完全に、だんごのペースに乗せられてますね。 最初に何を買いたかったのか、もう覚えてないです。 |
![]() |
みたらし団子の甘じょっぱい味は、日本人として摂取すべき味覚の中に含まれてるんだよ、きっと。 DNAが記憶してる、っていうやつ? |
![]() |
自発的には思い出さないけど、目に付くと欲しくなるという心理は、日本人の自然な欲求だったんですね。 なぜ商店街の和菓子屋が潰れないのか、少し分かった気がします。 |
![]() |
そういうわけなので、早速おいしくいただこう。 |
![]() |
そうですね。 いただきましょう。 |
![]() |
。。。 んまい。 |
![]() |
。。。 んまいです。 |
![]() |
やっぱ、単純においしいから欲しくなるっていうのもあるな。 ごちそうさまでした。 |
![]() |
あ、まだ一本ありますよ? 食べちゃってください。 |
![]() |
いや、三本のうち二本もいただくのは申し訳ない。 自分で食べてくれ。 |
![]() |
もうお腹いっぱいですから、だいじょぶです。 |
![]() |
そうか。 じゃ、遠慮なくいただくか。 |
![]() |
はい、どうぞ。 |
![]() |
しかし、休憩中とは言っても、業務時間中に堂々とだんごを食うというのもアレだな。 |
![]() |
そ、そうですね。 変なモノ買ってきて、すみません。。。 |
![]() |
いや、なかなかオツなもんだな~。 緊張感がほぐれるというか、新鮮なカンジ。 |
![]() |
なんか、街道沿いの団子屋でくつろぐ旅人のようですね。 お客人、粗茶のおかわりはいかが? |
![]() |
いや、こう見えてもなかなか忙しい身でな。 馳走になった。 |
![]() |
いえ、お粗末さまでした。 |
![]() |
なかなかうまい団子であった。 お代は、ここに置いておくぞ。 |
![]() |
毎度あり、、、 あら、おつりを忘れてますよ? |
![]() |
少ないが、とっておけ。 おとっつあんに、うまいものでも食わせてやりな。 |
![]() |
いえそんな、いただけませんよ。 |
![]() |
実はワシにもお主と同じぐらいの娘がおってな、他人とは思えん。 ワシを助けると思って、受け取ってくれんか。 |
![]() |
そこまでおっしゃるなら、、、 |
![]() |
かたじけない。 では、達者でな! |
![]() |
旅のご無事をお祈りしております。 |
![]() |
。。。 |
![]() |
。。。 |
![]() |
、、、今度は時代劇か? |
![]() |
はは、、まさかクニのおとっつあんや旅人の娘まで出てくるなんて思いませんでした。 |
![]() |
時代劇で、おつりを口実にしてお金を渡すパターンなんて知らないし。 ムチャ振りに近いぞぅ。 |
![]() |
そう言われると、私も知らないですね。 時代劇なんて、ほとんど見ないし。 |
![]() |
次はこっちからムチャ振りするので、覚悟するように。 |
![]() |
わ、分かりました。 それはそれとして、今度はマジメにハイブリッド暗号の話をしましょうよ。 |
![]() |
あ、そうだね。 コレは、そんなに難しくないよ。 |
![]() |
「ハイブリッド」っていうことは、何かと何かを組み合わせるんですよね。 |
![]() |
うん、そう。 具体的には、「安全重視」と「速度重視」の暗号を組み合わせて使うんだよ。 |
![]() |
あ、じゃあ「ハイブリッド暗号」っていう単体のアルゴリズムがあるわけじゃないんですね。 |
![]() |
うん、アルゴリズムの種類までは決まってない。 まぁ、両方のアルゴリズムのイイトコ取りっていうところかな。 |
![]() |
イイトコ取りだと、「安全で高速」っていうことになりますけど。 そんなの実現できるんですか? |
![]() |
人間が働く場合でも、個々のキャラクターをつかんでうまく配置すると、人数以上の働きが出来る場合ってあるじゃない? 適材適所っていうのかな。 |
![]() |
はい。 |
![]() |
それと同じで、一連の暗号処理の中でも安全を重視する部分とか、処理を軽くしてもいい部分があるんだよ。 |
![]() |
うーん。。。 でもセキュリティって、安全であるほど良いわけだから、手を抜いていい部分なんてないんじゃないんですか? |
![]() |
うん、もっともな疑問だよね。 でも、やりすぎて重くなることで誰も使わなくなったら、もっと意味がないだろう? |
![]() |
う~ん、それもそうですけど、、、 人間って、ワガママ。 |
![]() |
そのワガママな人間様のために、出来るだけ少ない負荷で安全性の高い仕組みを作る必要があるわけだ。 |
![]() |
なるへそ。 処理を軽くしてもいい部分って、具体的にはどんな部分ですか? |
![]() |
それを説明するには、まず暗号を使うときの全体的な流れを知らないとね。 |
![]() |
あっ、そうですね。 お願いします。 |
![]() |
最もシンプルな方法だと、事前に両者で決めておいたパスフレーズを使って暗号化と復号をやるわけだ。 |
![]() |
はい、普通ですね。 最初にパスフレーズを決めるところだけ顔を合わせて共有すれば、あとはメールなどで公衆網を使ってもいいですね。 |
![]() |
でも、安全にするにはパスフレーズを長くしなければならないし、定期的に変更しないといけない。 つまり、人間様にとっては二重に面倒くさい。 |
![]() |
あぁ~、、、 確かに面倒くさいですねぇ。 |
![]() |
でも、ここでメールを使ってパスフレーズを流してしまっては意味がない。 そこで、公衆網の上で使えて、さらに安全重視の手段を用意する。 |
![]() |
えっ? パスフレーズを送るためだけに、別の手段を用意するんですか? |
![]() |
そういうこと。 要するに、直接会って交換するのと同じくらい安全な手段があるなら、それを使ってもいいと考えるんだよ。 |
![]() |
う~ん、理屈は分かるんですけど、、、 公衆網を使うのに、直接会うのと同じくらいに安全な手段なんてあるんですか? |
![]() |
まぁ、同じかどうかは比べようがないけど、、、 ここで、さっき言っていた「安全重視」のアルゴリズムを使うんだよ。 |
![]() |
あぁ~、そういうことですか。 普通のデータ交換は普通の暗号アルゴリズムで、パスフレーズを交換する時だけ安全重視のアルゴリズムを使うんですね~。 |
![]() |
そう。 言い換えると、送るデータの内容に合わせてアルゴリズムを使い分けている、と言ったほうが正しいかな。 |
![]() |
これなら、手段が違うから鍵配送問題に該当しないというわけですね。 でもやっぱり、普通のデータ交換も安全重視のアルゴリズムでやればいいんじゃないかと考えてしまいます。 |
![]() |
う~ん、そうだなぁ。 例えば、単純に鍵の長さを2倍にした場合、全体の計算量は何倍になると思う? |
![]() |
2倍、じゃないんですよね。 いっぱい? |
![]() |
2ビットの鍵を2倍にすると計算量は2倍だけど、16ビットの鍵を2倍にすると65536倍だ。 実際に使用されている鍵長はもっと長いから、それこそ「いっぱい」だね。 |
![]() |
そっか。 ビットが増えるたびに2倍されるんでしたね。 |
![]() |
そうなると、それだけの計算を全てのデータに適用するのは負荷が大きすぎるんだよ。 特に、IPsecのようにパケットをリアルタイムに転送しなきゃいけない環境の場合は致命的だね。 |
![]() |
うーん、なっとく。 パケットの場合は、すぐに処理しないと伝送遅延になっちゃいますね。 |
![]() |
リアルタイム性のない場合でも、あまりに処理が遅いと面倒くさくなって誰も使わなくなっちゃう可能性もある。 結局、実際に手を動かすのは人間だからね。 |
![]() |
あっ、そうそう。 いま思い出したんですけど、そういうのを「セキュリティパラドックス」っていうんですよね? |
![]() |
おっ、難しい言葉を知ってるね! 何事にも、ちょうどいい加減があるっていうことだよ。 |
![]() |
そっか。 重要度によって手間を変えるというのは良くやることなので、考え方としては分かりやすいですね。 |
![]() |
逆の言い方をすると、重要度が違うものを一緒に扱うほうが不自然とも言える。 金庫と南京錠の使い分けみたいなものかな。 |
![]() |
なるほど~。 |
![]() |
何でもかんでも金庫に入れる必要はなくて、大事なものだけはコストを掛けてでも守ろう、という考え方。 |
![]() |
その考えには賛成です。 となると、南京錠の鍵を金庫に入れて相手に送るようなイメージですか? |
![]() |
うん、それに近いね。 で、南京錠を開錠されてしまうぐらいの時間が経つ前に新しい南京錠に取り替えて、また新しい鍵を金庫で送るんだよ。 |
![]() |
? 南京錠を何度も交換するんですか? |
![]() |
さっき、データも安全重視のアルゴリズムを使って暗号化したらどうか、って言ってたじゃない? 速度重視のアルゴリズムを使う代わりに、鍵を定期的に交換して安全性を高めているんだよ。 |
![]() |
はぁ~、、、 やっぱり、私なんかの浅はかな疑問は既に折り込み済みなんですね~! |
![]() |
要するに、解読される可能性がある時間が経つ前に鍵を取り替えてしまえば安全でしょ、っていう考え方ね。 ハイブリッド暗号としてはそこまで決められているわけじゃないけど、ハイブリッド暗号だからこそ使える方法であるとも言える。 |
![]() |
これと同じ仕組みが、IPsecにも受け継がれているんですね。 |
![]() |
そそ。 これを説明したかったんだよ~。 |
![]() |
この話をIPsecに置き換えると、フェーズ1が安全重視でフェーズ2が速度重視、っていうことになるんですか? |
![]() |
そう、大体そんな感じ。 実際にデータを流すのはフェーズ2だから、まぁハイブリッド暗号と言っていいんじゃないだろうか。 |
![]() |
なるほど~。 でも、これでIPsecに関連するセキュリティの考え方については何となく網羅できた感じですか? |
![]() |
今度こそ大丈夫だと思うけど、、、 また出てきたら、その都度説明するよ。 |
![]() |
あ、そうですね。 必要かどうか分からない状態で先に話だけ聞いても、なかなか吸収できないと思いますし。 |
![]() |
そうだね。 じゃ、IPsecの話に戻ろうか? |
![]() |
はい! |
以下、「鶏と卵の話」につづく。。。
ネットワークセキュリティ関係者の部屋 > ネットワークセキュリティ実践劇場 > ハイブリッド暗号