プロが教える店舗&オフィスのセキュリティ対策術

原文をハッシュ関数で暗号化した場合,そのハッシュ値から逆に複合化することは不可能というふうによく書かれていますが,それは何故でしょうか?「不可能」とは「非常に時間がかかる」ということなのでしょうか?

A 回答 (3件)

ハッシュ関数は、平文のパスワードを暗号化する場合などに使われる「1方向性」の関数ですね。


鍵をつかって、平文のパスワードから暗号化されたパスワードを出力します。1方向性関数ですので、暗号化されたパスワードから元のパスワードを復元することはできません。鍵と平文のパスワードがそろって、平文のパスワードを暗号化してみて、暗号化パスワードが一致したとき、初めて平文パスワードが未知の暗号化パスワードのもとの平文パスワードであることが分かるのです。
鍵は、暗号化パスワードを利用しているサーバー毎に異なるものがハッシュ関数ともに用意されていますので、ユーザーが平文パスワードを入力すると、そのサーバーのハッシュ関数と鍵を使って暗号化パスワードを生成し、予め登録されているユーザーの暗号化パスワードと比較して一致すれば、ユーザー本人のパスワードが正しいパスワードだったとして、本人確認がなされます。平文のパスワードを忘れてしまった場合は、暗号化されたパスワードから平文パスワードは復元出来ませんので、平文の別のパスワードでユーザー登録しなおすことになります。

しかし、平文パスワードに誰でも類推できるような文字列を使っているユーザーがかなりいますので、ユーザーの個人情報から、パスワード候補が類推できる場合は、ハッカーにそれらの候補を片っ端から試行され、サーバーの中の暗号化パスワードと比較され、平文パスワードが特定されてしまうことが発生します。
これは、平文パスワードとサーバーの中のハッシュ関数と鍵(パスワードを使用するサーバーシステムに組込み設定されている)が揃うため、解読されるわけですね。
平文パスワード候補(カードの暗証番号やメールアカウントのパスワードなど)が多くなく、ユーザー名(口座番号やメールのユーザーID)が分かっている場合は、そのシステムの侵入者は平文パスワードの数だけの試行回数で、登録された暗号化パスワードと一致する平文パスワードを特定してしまうわけです。

>「不可能」とは「非常に時間がかかる」ということなのでしょうか?
指定された桁数のあらゆる文字の組み合わせの平文パスワードに対するハッシュ関数変換で暗号化パスワードを生成させて、登録済みの暗号化パスワードと総当りで、比較すれば、解読されてしまうことになります。この意味では「不可能」ではない。しかし「非常に時間がかかる」つまり、現在の最速スパーコンピュータでも1000年以上かかるのであれば、誰も解読しようとしない。ということになり、解読できないと同じ意味に理解されています。しかし100年後に今より365000倍高速な計算機が出来れば1日以上で解読できることを意味します。
まあそのときになれば、さらに強力なハッシュ関数や鍵が用意されることでしょう。

しかし、現在のATMシステムの数字4桁の平文暗号システムは0000~9999までの組み合わせですので、口座番号と銀行の口座番号が分かれば、銀行の計算機を使える人(内部者や侵入者)ならあっという間にパスワードを特定されてしまいますね。早くICカード化や生体認証を導入するか、オンライン取引はやめて窓口だけの入出金にしないと危ないですね。銀行からの個人情報漏洩が頻発するこのごろでは困ります。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2005/09/02 16:53

暗号処理に使うハッシュ関数(MD5, SHA1など)ですね。


これらの関数はいろいろな長さの原文(SHA1では最大2^64ビット)を全て同じサイズ(128ビット、160ビット、256ビットなど)に変換します。
当然に同じハッシュ値を持ついろいろな原文があるのでハッシュ値から原文を特定することは不可能です。

ちなみにハッシュ関数には同じハッシュ値を持つ複数の原文を見つけることが難しいという性質もありますが、こちらは「非常に時間が掛かる」という意味です。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2005/09/02 16:52

ハッシュ関数の原理は「平分(暗号化前の文)から暗号文を得る事が可能な一方通行の式」なのです(分かりやすくする為少々表現が不正確かもしれませんが)



例えばosiete12345さんのお住まいが「東京」だとしましょう。その場合、「osiete12345さんの住んでいる場所は?」という質問にはosiete12345さんは「東京」と答える事ができますね?
けど「東京」という値から、「osiete12345さんの住んでいる場所は?」という元の質問を当てる事は不可能です。(東京という値は「日本の首都は?」でも「日本で一番人口の多い都道府県名は?」でも生まれそうですよね?それこそ、「事情を知らない」と不可能なのですよ)
この「事情」が「鍵」になります。そして、この鍵が無ければ、偶然答えを見つけたとしても正解である保障が無いんですね。

よって、ハッシュ関数で暗号化したものを鍵無しで解読する事は不可能なのです。

参考になりましたでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2005/09/02 16:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!