パスワード |
● パスワード ●
「ひらけゴマ!」
どうして、「ゴマ」なのかは知りませんが、
この魔法(まほう)の呪文(じゅもん)をとなえると、扉(とびら)が開いて中に入れるのです。
もしかしたら、コンピュータじかけの扉(とびら)だったのかもしれません。
だって、それはまさしく「パスワード」ですから。
この場合は、「ユーザー名」はいらなくて、「パスワード」だけでした。
みんなが同じパスワードの「ひらけゴマ!」で入れたのです。
ところで、最近(さいきん)わたしの職場(しょくば)でも、
メールが使えるようになりました。
「ユーザー名」と「パスワード」をもらったのはいいのですが、
問題は「パスワード」です。
「パスワード」は、もちろん(?)自分で変更(へんこう)できます。
(ちなみに、ユーザー名は変更できません!)
それはいいのですが、問題は、「パスワード」をわすれたら最後(さいご)、
もうだれにも分からないというのです。
えっ、どうして?
コンピュータって、その「ユーザー名」と「パスワード」を
どこかに記録(きろく)しているんじゃないの?
そして、それと見くらべて、
「はい!あなたは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=2x2
ここで、xに1を入れると、yから2がでてきます。
xに−1を入れても、yから2がでてきます。
xがちがっても、かならずもyからちがった数はでてきません。
・・・ということは?
yが2ってわかっても、xは1なのか−1なのかわかりません。
それでは、暗号化をするcrypt関数はどんな関数なのでしょうか。
じつは、ちがう「パスワード」を入れても、かならずしも
ちがった「暗号化されたパスワード」が出てくるとはかぎらないものなのです。
つまり、ほんものの「パスワード」でなくって、デタラメなものを入れても、
ぐうぜんにも「暗号化されたパスワード」が同じになってしまうということもありうるのです。
(もちろん、そんなぐうぜんは、まずおきません。)。
ですから、どこかに記録(きろく)した「暗号化されたパスワード」がぬすまれても、
もとの「パスワード」はわからないのです。
● 解読 ●
「暗号」といったら、すぐ「解読(かいどく)」って思いますよね。
あの戦争では、じつは「暗号」が「解読」されていて、情報がつつぬけだった・・・っていうように。
でも、「パスワード」は一度crypt関数をつかって暗号化してしまうと、
もうもとへはもどせないのです。
そう、「解読」されない「暗号」なのです。
では、どうして「パスワード」を入力すると、
それが正しいパスワードかどうかわかるのかって?
じつは、あまりにもかんたんなことだったのです。
入力された「パスワード」を、もう一度「暗号化」するだけだったのです。
こういうことです。
コンピュータは、入力された 「ユーザー名」 を見て、
記録(きろく)しておいたものを調べにいきます。
そこには、「ユーザー名」と「暗号化されたパスワード」が書かれています。
しかも、「暗号化されたパスワード」には、「SALT(塩)」かげんが書かれています。
そこで、その「SALT(塩)」を使って、入力されたパスワードを暗号化してみます。
そして、その結果(けっか)が、記録してある「暗号化されたパスワード」と
一致(いっち)すれば、正しいパスワード、
ちがっていれば、デタラメのパスワードと判断(はんだん)するのです。
だから、コンピュータが知っているのは、「暗号化されたパスワード」のみなのです。
それなら、ほんものの「パスワード」を知っているのは?
そう!それはあなた1人だけなのです。
ですから、パスワードはくれぐれもわすれないように!
(もっとも、わたしの頭ではメモするしか・・・トホホ)
掲載内容の無断転載、転用、編集を禁じます。(c)
小林吹代
All Rights Reserved, (c)kobayashi fukiyo , 2001