■ シーザー暗号
おね〜さんと、
ほげたんのっ!!
3 Minutes Networking、
Supplement !!
さて、前回からPKIをやってるわね。「電子署名を正しく使える基盤」、これがPKIだったわね。
「技術」でもなく、「製品」でもなく、「基盤」、ってことだったよね。
そうそう。「電話」っていう「インフラ」は、「回線交換技術」でもなく、「電話機」でもなく、それらを含みかつ、電話というシステムを動かす基盤、それと同じ考えね。
「基盤」…、いまいちそこらへんがよくわかってないというか。
ま、そこらへんは、やっていくうちわかるわよ。
さて、前回、4つの脅威をやったわね。「盗聴」「改ざん」「なりすまし」「否認」ね。
うん、電子商取引に対する「脅威」だったよね。
僕にとっての脅威はおねーさんだけど。
……。(ガシッ)
ふわっ!!
(ギリギリギリギリ)
このまま握りつぶせちゃうかしら〜?
痛い痛い痛い痛い痛い痛い痛い痛いっ!! ごめんなさいごめんなさいごめんなさい、おね〜さんっ!!
ふんっ。ま、いいでしょ。
ともかく、この脅威を防ぐことが「安全な電子商取引を行う」前提となるわけ。
安全でない電子商取引は、誰もやらないからね。怖くって。
だよね。というわけで、どうやったらこの脅威から電子商取引を守れるのか、という話をしましょう。
まず、「盗聴」からの防衛策。
暗号化だったよね。
そう。暗号化により、特定の人物以外は読めないデータを作り上げ、それでやりとりするわけね。
この暗号化はPKIの根幹技術の1つなので、とても重要よ。
そりゃ、PKIは「公開鍵」基盤だしね。公開鍵暗号化方式から名前をもらってるわけだしね。
まぁ、そうよね。その暗号化だけど、今回はまず暗号化の基本から話しましょ。
え〜っとどこから話そうかしら……、暗号化は紀元前の時代からあった、って知ってた?
紀元前? 2000年以上前から?
そう。有名なのはシーザー暗号ね。
シーザーって、あのシーザー?
そう、ローマの軍人・政治家・文筆家の。ローマ史上最強の天才、ガイウス・ユリウス・カエサルね。 ▼ link
彼が使った暗号が、シーザー暗号、またはシフト暗号と呼ばれる暗号なわけ。
へー、どんなの?
こんなのよ。
[FigureSP15-01:シーザー暗号]
あー、なんかわかりやすいっていうか、簡単っていうか。
「小学○年生」のおまけの「名探偵コ○ンの謎ブック」とかでありそうなネタというか。
また微妙な例えね、それ。
ま、ともかく、他にも暗号化といえば、「通信文自体を隠す」方法や「特定の文字への置き換え」なんかがあるんだけど。
それってどんなの?
え〜っと、頭髪を剃って、そこに文面を刺青して。で、髪が生えた頃にその人を相手に送って、頭髪を剃ってもらうとか。
置き換えは「ニイタカヤマノボレ」とかね。
また豪快な方式だね、その刺青使うの。「ニイタカヤマ」は「真珠湾」を指すんだっけ。
で、このシーザー暗号のような方式がコンピュータでは一般的なんだけど。つまり文字やビットを置き換えたり、場所を変えたりする方式ね。
ま、シーザー暗号は「古典的な暗号」だから、実際コンピュータで使われてるわけじゃないけど。
だよね、結構簡単に解けちゃうよね。
でも、これから先説明していく暗号化の方法も、このシーザー暗号が原型って考えると理解しやすいかも。
シーザー暗号には暗号化の基本である「暗号化アルゴリズム」と「鍵」の概念がちゃんと存在するから。
「暗号化アルゴリズム」と「鍵」?
「鍵」って言葉はよく暗号化ででてくるよね。
そうね。鍵はよく使われる言葉よね。
じゃあ、この2つは何を意味するかというと。
- 暗号化アルゴリズム … 元データを暗号化する際、文字やビットをどのように扱うかを決めたもの
- 鍵 … 暗号化する際に必要となる、秘密のデータ
んん? わかるようなわからないような。
シーザー暗号で考えると、こう。
[FigureSP15-02:シーザー暗号での「暗号化アルゴリズム」と「鍵」]
「指定された文字数分だけ後ろへずらす」という「扱い」。 「3文字」という指定文字数の「秘密のデータ」、ということ?
そう、この2つにより暗号化が行われるわけでしょ?
さらにこの2つが一致しなければ、暗号文を元に戻せない、と。
ん〜、そうだね。「後ろへずらす」を間違えて「前へずらす」にしたらダメだし。
ずらす文字数を「3文字」じゃなくて「5文字」にしてもダメだね。
でしょでしょ。つまり、暗号化は指定された暗号化アルゴリズムを送信側と受信側双方が同じものを使うこと。
そして、鍵となるデータを双方が保持しなければいけないということなのよ。
なるほど、暗号化の方法と、その際の秘密データ、この2つがないとダメってことだね。
そゆこと。あとね、次の基本用語を覚えてね。
- 暗号化 … 平文を暗号文に変換すること
- 復号 … 暗号文を平文に変換すること
- 平文 … 暗号化される前のデータ、暗号文を復号したデータ
- 暗号文 … 暗号化された平文
「暗号化/復号」「平文」と「暗号文」ね。OKOK。
で。暗号のポイントなんだけど。
暗号化を行う際には「アルゴリズム」と「鍵」を決定するんだけど。このどちらかが秘密であれば暗号化は破られない。
うん、そうなるよね。
ポイント1、暗号化アルゴリズム。これは通常、既知のよく使われているアルゴリズムが使用される。
そりゃそうよね、毎回毎回独自にアルゴリズムを考え出して、それを相手に伝えるのは大変だもの。
ん〜っと、つまり。アルゴリズムは秘密じゃないってこと?
そういうこと。つまり秘密を維持するのは通常「鍵」の役割ってことね。
ただし、これが脆弱なアルゴリズムはダメなんだけどね。
アルゴリズムが脆弱? どういうこと?
ん〜例えば鍵が適当なものでも復号できちゃったりとか、暗号文から平文が推測できちゃったりとか。まぁいろいろ。
暗号に対する攻撃により破られちゃうようなアルゴリズムはダメってこと。
そんなことできるんだ…。
ほら、軍事暗号とかだと破ったり破られたりって話があるじゃない。そーゆーの。
んで、ポイント2、鍵。鍵は鍵の長さ(鍵長)が長いほど強い。
鍵…秘密のデータだよね。これの長さが長い方が破られにくいってこと?
そう。短い鍵の場合、総当り攻撃だったり、なんか数学的な方法だったりで破られちゃうから長いほうがいい。
でも、鍵長が長いとその分処理時間が長くなるので、あんまり長いのも考え物なのよ。
ふ〜ん。痛し痒しだねぇ。
■ 共通鍵暗号化
さて、その暗号化アルゴリズムなんだけど、種類があるわ。
まぁ、今までも出てきてると思うけど、以下の2つね。
- 共通鍵暗号化方式/対称鍵暗号化方式
- 公開鍵暗号化方式/非対称鍵暗号化方式
……共通鍵方式と公開鍵方式だね。
有名だから知ってるわよね。Kerberosでもやったし。でもまぁちゃんと説明しておこうかしら。
えーっと。暗号化と復号に同じ鍵を使う方式ね。この暗号/復号に使う鍵を共通鍵と呼びます。
送信側と受信側、暗号化と復号で共通して使う鍵だね。
[FigureSP15-03:共通鍵暗号化方式]
で、この共通鍵暗号化方式だけど、主に使われる方式には2種類あるわけね。
方式 | 説明 | 代表的な暗号化 |
---|---|---|
ブロック暗号 | 平文をある単位で区切り暗号化する | 3DES、AES |
ストリーム暗号 | 平文をビットもしくはバイトごと暗号化する | RC2、RC4 |
[TableSP15-01:共通鍵暗号化方式の種類]
ブロックとストリーム? ある単位で区切るのと、ビット・バイトで?
いまいちパッとしないんですけど、おね〜さん。
ん〜。つまり例えば3DESは64ビットブロック暗号化なわけなんだけど。平文を64ビットで分割してそれぞれ暗号化するってこと。
ははぁ。ストリームは?
ストリームだと、例えばRC4なら1ビット単位で暗号化していくわけ。これは後で説明するわ。
ともかく、ブロック暗号、ストリーム暗号の2種類あるとわかってもらえれば。
へぇ。要は共通鍵暗号化方式っていっても種類があるってことでいいのかな?
そういうこと。
ん〜あとは、この共通鍵暗号化方式の利点と欠点の話。まず利点、それは暗号/復号処理が速いことね。
処理速度が速いのはいいよね。
ほげたん。よくわかってるのかな?
処理速度が速い暗号化は大きなサイズのデータを暗号化するのに適してるってことよ。
んん? 処理速度が速いと、大きなサイズのデータを暗号化するのにも時間がかからないよね。
それは確かに利点だよね、わかってるよ。
本当かなぁ。「処理速度が速いとハッピー」って意味じゃなくて「大サイズを暗号化できる」ってのが利点ってことよ。これは公開鍵暗号化方式との比較でよく話になるから覚えておいてね。
うん、わかったよ。
で、欠点。
Kerberosでもでてきたけど、共通鍵の安全なやりとりが大問題。
共通鍵を他に知られたら問題だもんね。
盗聴されちゃう。
そうそう。それと、管理する鍵の数の問題。
10人と共通鍵暗号化方式でやり取りしようと思うと、10個の鍵が必要になっちゃうってこと。
[FigureSP05-02:共通鍵の数の問題]
同一の鍵ってわけにはいかないもんね。
そゆこと。特に不特定多数とのやりとりで大きな問題になっちゃうわけなのよ。
そこでKDCだね。
まぁ、Kerberosはそれに対する解答の1つかもしれないけど、それは置いておいて。
とりあえず、共通鍵暗号化方式はそういう特徴を持ってるって事ね。
あい。
■ ブロック暗号とストリーム暗号
さてさて、続いて代表的な共通鍵暗号化方式を説明しちゃう。
しちゃってください。
ブロック暗号としては、DES、3DES、AESの3つがメジャー級。
DESと3DESはアルゴリズムとしては同じだけど、DESを3回行うってので3DESと名前が。
なんで3回も行うの?
DESは鍵長が短くってね。弱いとされてるの。なので、それを3回行って鍵の長さを3倍にしているわけね。
まぁ、DESの後継として誕生したAESの方が強いんだけどね。
- DES … ブロック長64ビット、鍵長56ビット
- 3DES … ブロック長64ビット、鍵長168ビット
- AES … ブロック長128ビット、鍵長128、192、256ビット
へへぇ。他にはないの?
あるわよ。でもまぁ、よく耳にするのはこの3つかな。
で、DESを例にして細かい話をしようと思ったけど。
思ったけどってことは、しないってこと?
うん。無理。無理じゃないけど、あんまり細かい話しても意味がない。
なので、モードの話をしようかな。
モード?
そう。DESやAESにはモードってのがあって。これで暗号化の手順がちょっと違ったりするのよ。
代表的なのは、ECBモードと、CBCモードかな。
どう違うの? 同じ共通鍵暗号化のブロック暗号なんでしょ?
うん、そうなんだけど。ちょっとやり方が違うのよ。
[FigureSP15-04:ブロック暗号化のモード]
んー、違うのはわかるけど。CBCモードって面倒くさくない? ECBでいいのに。
ECBは確かに簡単だし、ブロックを並列で処理できるからスピードも速いわね。
CBCは1つ前の処理が終わらないと次のブロックが処理できないから遅くなってしまうから。
だよね。
でもECBは、同じ内容の平文ブロックが存在する場合同じ暗号ブロックができてしまうのよ。
それはちょっとね。
え? ダメなの?
ダメじゃないけど、同じ暗号文を複数入手するってのは暗号解析の基本だったりするのよ。
なのでセキュリティ的にちょっと弱くなってしまうの、ECBモードは。
あー、だからCBCモード。前の暗号化が組み合わされるから、同じ平文ブロックでも違う暗号ブロックになるんだ。
そゆこと。
で、IV? 何これ?
IVは無作為につくられたデータね。最初のブロックには前の暗号ブロックがないから必要なのよ。
あぁ、そうか。前の暗号ブロックの代わりをするデータのことなんだね。
そうそう。でね、このIVは暗号化データと一緒に宛先に送るのよ。
じゃないと復号できないからね。
ふむふむ。
で、次はストリーム暗号。ストリーム暗号で代表的なのはRC4ね。WindowsやTLS、無線LANで使われてたりするわ。
ストリーム暗号はビット、もしくはバイト単位で暗号化していく方式なの。
ん〜? ブロック暗号化のブロックがビットやバイトってこと?
んー、そうじゃなくて。方式がまったく違うんだけどね。
まずブロック暗号化ならブロック分のデータが揃うまで暗号化処理が始まらないけど、ストリーム暗号ならすぐできる。
ビットやバイト単位だもんね。
あと処理が簡単。なので速い。さっきのと組み合わせてまさしく「ストリーム」に使える暗号なの。特に処理が排他的論理和(XOR)を使うのでハードウェア向けね。
へぇ。他には?
他には、ブロック暗号の場合、ブロック長に足りない分はパディングされるけど、ストリーム暗号はそれがないからデータ量が増えないとか。
ストリーム暗号はこんな感じ。
[FigureSP15-05:ストリーム暗号]
この擬似乱数発生関数って何?
とある値(シード)を入れると乱数を発生させる装置って思ってくれればいいわ。
でこの装置から出力される値は、シードが同じなら同じ順番で同じ値が出てくるの。
あー、だから鍵を入れるのかな?
そうそう、共通鍵を入れれば、送信側でも受信側でも同じ値を同じ順番で入手できるのね。
この値の流れを鍵ストリームって呼ぶの。
ふむふむ。同じ鍵ストリームが入手できるなら、復号ができる、と。
そういうこと。で、鍵(シード)がないと鍵ストリームがどうなるかは予測できないわけ。
なので簡単な排他的論理和を使っても、一応大丈夫ってことになってるわけよ。
なるほどなるほど。
さてさて。今回は暗号化の基本と共通鍵暗号化方式だったわけだけど。
なんかずいぶん長くなっちゃったわね。
そういえばそだね。
ま、次は公開鍵暗号方式ね。ではでは。 おね〜さんと、
ほげたんのっ!!
3分間ネットワーク、
サプリメントでした〜〜〜っ!!
- 暗号化
- [Encryption] or [Encipher]
- 公開鍵暗号化方式
-
[Public Key Cryptosystem]
「非対称鍵暗号化方式」とも。
- ガイウス・ユリウス・カエサル
-
[Gaius Julius Caesar]
ラテン語のドイツ語読み。英語読みならばジュリアス・シーザー。ローマ共和制時代の軍人・政治家。詳しくは参考リンクのWikipediaで。
- シーザー暗号のような方式
-
この方式は[Chiper]と呼ばれます。
他の2つは[Steganography]と[Code]。
- 共通鍵
-
[Shared Key]
もしくは対称鍵[Symmetric Key]。
- 3DES
-
[Triple Data Encryption Standard]
旧アメリカ合衆国国家暗号規格のDESを3回行う暗号化方式。読みは「トリプルデス」。
- KDC
-
[Key Distribution Center]
「鍵配布センター」と訳される。詳しくは3Min NetのKerberosを参照のこと。
- AES
- [Advanced Encryption Standard] DESが時代遅れになったため、新たに規格化されたアメリカ合衆国国家暗号規格。
- ECB
- [Electronic CodeBook]
- CBC
- [Cipher Block Chaining]
- RC4
-
[Rivest Cipher 4]
または[Ron's Code 4]。RSAの開発者の一人であるロナルド・リベスト[Ronald Rivest]が設計したストリーミング暗号化方式。他にもRC2、RC5、RC6がある。
- ほげたんの今日のポイント
-
- 暗号化は「暗号化アルゴリズム」と「鍵」からなる。
- 鍵長が長いほうが暗号として強い
- 暗号化として一般的なものに「共通鍵暗号化」と「公開鍵暗号化」がある。
- 共通鍵暗号化方式は暗号化/復号に共通の鍵(共通鍵)を使用する。
- 処理が高速なため、サイズの大きいデータを暗号化できる
- 鍵の受け渡しの問題や鍵の数の問題がある。
- ブロック暗号とストリーム暗号がある。
- 暗号化は「暗号化アルゴリズム」と「鍵」からなる。
- 参考リンク
-
- Wikipedia ガイウス・ユリウス・カエサルhttp://ja.wikipedia.org/wiki/▲