パスワード

● パスワード ●

 「ひらけゴマ!」

 どうして、「ゴマ」なのかは知りませんが、
この魔法(まほう)の呪文(じゅもん)をとなえると、扉(とびら)が開いて中に入れるのです。

 もしかしたら、コンピュータじかけの扉(とびら)だったのかもしれません。

 だって、それはまさしく「パスワード」ですから。

 この場合は、「ユーザー名」はいらなくて、「パスワード」だけでした。
みんなが同じパスワードの「ひらけゴマ!」で入れたのです。

 

 ところで、最近(さいきん)わたしの職場(しょくば)でも、
メールが使えるようになりました。

 「ユーザー名」と「パスワード」をもらったのはいいのですが、
問題は「パスワード」です。

 「パスワード」は、もちろん(?)自分で変更(へんこう)できます。
(ちなみに、ユーザー名は変更できません!)

 それはいいのですが、問題は、「パスワード」をわすれたら最後(さいご)、
もうだれにも分からないというのです。

 えっ、どうして?

 コンピュータって、その「ユーザー名」と「パスワード」を
どこかに記録(きろく)しているんじゃないの?

 そして、それと見くらべて、
「はい!あなたはOK!」「こら!おまえはダメ!」って・・・。

 だったら、その記録をちょいと見てみればいいだけなのに・・・。
 そう、思っていました。

 でも、ちがったんですね〜!

 


● 暗号化 ●

  コンピュータが、「ユーザー名」と「パスワード」を
そのままどこかに記録(きろく)していると、どうなるでしょう?

 世の中いい人ばかりではありません。

 そうそう、ハッカーなんていうのも、いるくらいですから。

 その記録をなんらかの方法(ほうほう)で盗(ぬす)み出せば、
もう、全員分バレバレです。

 これでは、それぞれの部屋(へや)に「カギ」をつけたはいいが、
管理室(かんりしつ)に置いてある「カギ」をまるごと盗(ぬす)まれて、
気がついた時には、どの部屋もどろぼうにやられていたということになりかねません。

 では、どうするかって?

 まず、管理室(かんりしつ)は、だれでもは入れなくすることです。
 (まあ、ふつう、そうでしょうが・・・)

 コンピュータなら、「ユーザー名」と「パスワード」を記録(きろく)したものは、
だれにでも見られるようには、しないことです。

 でも、世の中には「合い鍵屋さん」もいれば、
ヘアピンで開けられる技術(ぎじゅつ)をもった人もいます・・・。

 そこで登場(とうじょう)するのが、暗号化(あんごうか)です。

 そう!コンピュータは、(すべての・・・とはいいませんが)

     「ユーザー名」 と 「パスワード」

ではなくって、

     「ユーザー名」と「暗号化されたパスワード

を記録しておくのです。

 


● 関数 ●

 さて、お話をUNIX版のApacheで使われている、
crypt関数
にしぼってすすめていきましょう。

 もちろん、この関数(かんすう)は暗号化をする関数です。

 えっ、関数ってな〜に、って?

 まあ、ブラックボックスと思えばよく、
たとえていうなら、自動販売機(じどうはんばいき)です。

 自動販売機は

     「お金」を入れると、「ジュース」がでてきます。

 それにたいして、crypt関数は

     「パスワード」を入れると、「暗号化されたパスワード」がでてきます。

 もっとも、「パスワード」でなくっても、すきな文字列をいれると、
その文字列を暗号化してくれます。

 

 さて、もっとくわしくみてみましょう。

 自動販売機は

     「お金」を入れて「すきなボタン」をおすと、「そのジュース」がでてきます。

 それにたいして、crypt関数は

     「パスワード」と「SALT(塩)」を入れると、「暗号化されたパスワード」がでてきます。

 どうして、塩なんて入れるのかって?

 いつもいつも同じ味(あじ)では、あいてしまうから・・・ではなくって、
塩をきかせて暗号をやぶれにくくするためです。

 crypt関数では、この「SALT(塩)」として、2文字の文字列を使っています。

 もちろん、この塩のきかせかた、つまり2文字の文字列は、
毎回かえないと意味(いみ)がありません。

 いつも同じものを使うと、暗号が解読(かいどく)されやすいからです。

 


● 逆関数 ●

 関数といっても、いろいろあります。

 たとえば、「1次関数」です。

     y=2x+3

 ここで、xに1を入れると、yから5がでてきます。

      xに−1を入れると、yから1がでてきます。

 xがちがうと、かならずyからちがった数がでてきます。

 ・・・ということは?

 yが5ってわかると、xは1だってわかってしまいます。

 yが1ってわかると、xは−1だってわかってしまいます。

 

 では、「2次関数」では、どうでしょう?

     y=2x

 ここで、xに1を入れると、yから2がでてきます。

      xに−1を入れても、yから2がでてきます。

 xがちがっても、かならずもyからちがった数はでてきません。

 ・・・ということは?

 yが2ってわかっても、xは1なのか−1なのかわかりません。

 

 それでは、暗号化をするcrypt関数はどんな関数なのでしょうか。

 じつは、ちがう「パスワード」を入れても、かならずしも
ちがった「暗号化されたパスワード」が出てくるとはかぎらないものなのです。

 つまり、ほんものの「パスワード」でなくって、デタラメなものを入れても、
ぐうぜんにも「暗号化されたパスワード」が同じになってしまうということもありうるのです。
(もちろん、そんなぐうぜんは、まずおきません。)。

 ですから、どこかに記録(きろく)した「暗号化されたパスワード」がぬすまれても、
もとの「パスワード」はわからないのです。

 


● 解読 ●

 「暗号」といったら、すぐ「解読(かいどく)」って思いますよね。

 あの戦争では、じつは「暗号」が「解読」されていて、情報がつつぬけだった・・・っていうように。

 でも、「パスワード」は一度crypt関数をつかって暗号化してしまうと、
もうもとへはもどせないのです。

 そう、「解読」されない「暗号」なのです。

 では、どうして「パスワード」を入力すると、
それが正しいパスワードかどうかわかるのかって?

 じつは、あまりにもかんたんなことだったのです。

 入力された「パスワード」を、もう一度「暗号化」するだけだったのです。

 こういうことです。

 コンピュータは、入力された 「ユーザー名」 を見て、
記録(きろく)しておいたものを調べにいきます。

 そこには、「ユーザー名」と「暗号化されたパスワード」が書かれています。

 しかも、「暗号化されたパスワード」には、「SALT(塩)」かげんが書かれています。

 そこで、その「SALT(塩)」を使って、入力されたパスワードを暗号化してみます。

 そして、その結果(けっか)が、記録してある「暗号化されたパスワード」と
一致(いっち)すれば、正しいパスワード、
ちがっていれば、デタラメのパスワードと判断(はんだん)するのです。

 だから、コンピュータが知っているのは、「暗号化されたパスワード」のみなのです。

 それなら、ほんものの「パスワード」を知っているのは?

 そう!それはあなた1人だけなのです。

 ですから、パスワードはくれぐれもわすれないように!
 (もっとも、わたしの頭ではメモするしか・・・トホホ)

 


HOME(もどる)

掲載内容の無断転載、転用、編集を禁じます。(c) 小林吹代
All Rights Reserved, (c)kobayashi fukiyo , 2001