XML署名(1)  データの暗号化

2004年08月01日(日)更新


■重要なドキュメントへの署名

たけち: まず、ここでは暗号(あんごう)について知っておこうね。

さらら: 暗号? XMLと何か関係あるの?

たけち: うん、たとえば、さららが重要なドキュメントをもらったとするね。たとえば、税に関する報告書とか、法律案とかね。

さらら: えぇ。それってとっても大事だわ。それをみて私がサインしたり印を押したりするんだものね。

たけち: そうだね。でも、もし、さららのサインや印を、だれかが偽造したりしたらどうなると思う?

さらら: それは大変なことになるわ。だって、私の知らないところで勝手に法律を発行したり、税額をごまかしたりされると。。。考えただけでもぞっとするわ。

たけち: そうだよね。同じようにXMLドキュメントも勝手に偽造されたりしたら困るよね。

さらら: ええ。でも、XMLドキュメントって、テキストデータだから勝手に編集できちゃうわ。あっ、じゃあ、大事なドキュメントにはXMLを使っちゃいけないのかしら。

たけち: でも、それだと困るよね。そこで、「確かに"さらら"がサインしたXMLドキュメントです。」というようなしくみが必要なんだよね。

さらら: そういうことなのね。でも、それと暗号っていうのと、どんな関係があるの?

たけち: うん、それをこれから少しずつ学んでいこう、ってこと。

さらら: わかったわ。


■暗号ってなに?

さらら: で。暗号って?

たけち: 暗号は、データを他人に読まれないように、意味が分からないデータ(暗号データ)に変換して相手に渡して、受け取った方で暗号データを元の(意味のある)データに戻す仕組みなんだよ。

さらら: メールなんかも覗かれちゃうの?

たけち: うん。残念だけどね。インターネットの世界では、電子メールも覗き見しようと思えばできちゃうんだよ。また、パソコンの中のデータなんかも勝手にコピーされて持っていかれても困るよね。

さらら: そうね。じゃあ、大事なメールやデータなんかは、その、暗号にしておくのがいいのね。

たけち: そうなんだね。次の図に、暗号を使った通信の仕組みのイメージを載せておくね。

暗号通信のしくみ

平文(ひらぶん)
暗号化する前の文章、データのこと。
平文(ひらぶん)
平文を第三者に読み取られないように変換したもの。
暗号化(あんごうか)
平文から暗号文を作成すること。
復号(ふくごう)
暗号文を平文に戻すこと。

■シーザー暗号

さらら: 暗号ってどうやって作るのかしら?

たけち: まず、有名な暗号の例として、シーザー暗号について簡単に見てみよう。シーザー暗号は、シーザーが使った暗号として有名なんだ。

さらら: シーザーってだれ?

たけち: 古代ローマの軍事的な指導者だった人だよ。敵の国に通信文の内容が分からないようにするために、この暗号を使ったと言われているんだ。

さらら: そうなんだぁ。

たけち: どんな暗号かと言うと、アルファベットの文字を、特定の数だけ後ろにある文字と置き換えることで暗号文を作るんだ。

さらら: う〜ん。。。具体的に教えて。

たけち: たとえば、"MANYO"という文字を暗号化してみることを考えよう。このとき、それぞれの文字を、アルファベット順に見て何文字か後ろの文字と置き換えるんだ。たとえば、ひとつだけうしろの文字に置き換えてみるとどうなる?

さらら: えっと。。
"M"の次は"N"
"A"の次は"B"
"N"の次は"O"
"Y"の次は"Z"
"O"の次は"P"
だから、"NBOZP"になるわ。

シーザー暗号の例

たけち: そうだね。この"NBOZP"が暗号文になるね。

さらら: そっか。これだと意味が分からないわね。で、この"NBOZP"を受け取った人は、これと逆のことをすればいいよね。

たけち: そうだね。この場合、「アルファベットの文字を、特定の数だけ後ろにある文字と置き換える。」という処理を暗号化規則(暗号化アルゴリズム)といって、「何文字後ろの文字と置き換えるかを示す数(今の例だと"1")」を鍵(かぎ)というんだ。
このシーザー暗号でも、鍵を変えることで、同じ平文から作成される暗号は違ったものになるのは分かるよね。

  • 暗号化規則:アルファベットの文字を、特定の数だけ後ろにある文字と置き換える。
  • 鍵: 何文字後ろの文字と置き換えるかを示す「数」が鍵です。シーザーは「3」を鍵としたそうです。

さらら: ええ。鍵を"3"にすると、平文"MANYO"は、暗号文"PDQBR"になるのね。

たけち: そうだね。このほかにも暗号にはいくつも種類があるんだけど、暗号化規則(暗号化アルゴリズム)鍵(かぎ)によって決まるんだね。

さらら: なるほどね。

たけち: じゃあ、今回は暗号ってどんなことなのかを学んだね。。次からは、共通鍵暗号と公開鍵暗号について学ぼうね。

さらら: は〜い!! (なんのことかしら。。。 (^ ^; )

→次回は共通鍵暗号方式です。 (^ ^;


■(注) シーザー暗号は、単一換字式暗号(たんいつかんじしきあんごう)のひとつです。単一換字式暗号では、平文のある文字が常に同じ文字に変換されます。たとえば、"a"が常に"c"に変換され、"b"が常に"d"に変換されるような暗号方式です。
この方式では、たとえば、英語の文章の場合、文字ごとの出現頻度に基づいて(たとえば、"e"の文字の使用頻度が高い)暗号が解読されてしまいます。
また、シーザー暗号の場合は、1〜25文字ずらすことを試せば、解読されてしまいます。