ウィリアムのいたずらの開発日記

ウィリアムのいたずらが、コンピューター関係について、思ったことを好き勝手に書いているブログです。

ハッシュ化と暗号化は違う。ハッシュ化(SHA1,MD5)すると、元には戻らない

2014-02-20 10:36:19 | Weblog
あ~、私の周りで、ハッシュ化と暗号化の違いが分かってない人が
多く居るので、ここで、はっきりさせておこう




■分かってない事例

【事例1】日経コンピューター2014年2月20日号 p64
動かないコンピューター
厚生労働省
約1600万人のメタボ検診データを生かせず
入力時に全角/半角が混在し、突合不能に

に対して、全角/半角変換なんて、簡単ジャン!という意見
(記事中に、全角/半角部分含めて「ハッシュ化して」IDとし、
 それを突合していると明確に書かれているし、図まで付いている)

【事例2】ある日のこと
 このSHA1の復号化はやいですね。瞬時に、もとのパスワードを
 返してきますよ!

・・・なわきゃーない(^^;)




■ハッシュ化と暗号化の違い

まず、ハッシュ化とは、入力値をハッシュ関数を使って変換することだが、そのハッシュ関数は

http://e-words.jp/w/E3838FE38383E382B7E383A5E996A2E695B0.html

にあるように(以下太字は、上記サイトより引用。赤字はウィリアムのいたずらが振りました)

与えられた原文から固定長の疑似乱数を生成する演算手法。生成した値は「ハッシュ値」と呼ばれる。「要約関数」「メッセージダイジェスト」とも呼ばれる。通信回線を通じてデータを送受信する際に、経路の両端でデータのハッシュ値を求めて両者を比較すれば、データが通信途中で改ざんされていないか調べることができる。不可逆な一方向関数を含むため、ハッシュ値から原文を再現することはできず、また同じハッシュ値を持つ異なるデータを作成することは極めて困難である。通信の暗号化の補助や、ユーザ認証やデジタル署名などに応用されている。


つまり、ハッシュ化されたものから、元へは「戻らない」
ハッシュ関数としては、SHA1,MD5などがある

一方、暗号化されたものは、復号化すると、元に戻る。

ハッシュの場合は、以下のようにして、同じかどうか確認する

(1)元の値をハッシュ化する
   例:パスワードを登録する場合、登録したパスワードを
     ハッシュ化して(例:saltつきsha1)それを、保存する

(2)調べたい値をハッシュ化する
   例:今、ログインしてパスワードが入力され、
     それが登録されたものと一致しているか調べたい場合、
     登録してあるハッシュ化されたパスワードは
      復元できないので
     今調べたいパスワードも、同様にハッシュ化して

(3)(1)と(2)のハッシュ化した結果が一致するか確認する





■事例1について

全角/半角変換なんて、簡単ジャン!という人は、

(1)全角のハッシュ化されたIDを元に戻して、
(2)その全角部分を半角に直して、
(3)それを再度ハッシュ化すれば、突合できる

と考えているのかもしれないが、(2)は出来ても、
(1)はハッシュ化しているので、上記理由により不可能。

つまり、p66にあるように、元のデータを全角なり、
半角なりに合わせて、もう一度ハッシュ値を作り直さないと
いけない。

これって、膨大なレセプトないしは特定検診データの
生データを変換することになるから・・・できるのか?
っていう話になる(もう、そのデータが捨てられていたら、
復元できない)




■事例2

SHA1のハッシュ値から、もとのパスワードは作れない。
(作れたら、それはそれで、やばいでしょ)
たぶん、もとのパスワードをDBで持っていて、SHA1で毎回作っているか、
(SHA1変換はここの途中に書かれているように比較的早い)
DBにSHA1のハッシュと、もとのパスワード両方持っている。




わかりましたかあ?

このへんが分からないと、SHA1からSHA2への移行の大変さがわからない
(つまり、SHA1でハッシュ化されたデータを戻して
 SHA2に置き換えるということが、できないのだよ・・・)

P.S それと、この事例は、ビッグデータにも関係する。
   それは長くなるから、また今度にしよう。



【2016年3月16日追加】

 なお、SHA1ハッシュ値から元の値を求めるサイトがあり、Google検索すると、そのサイトがひっかかるため、
元の値がわかることがあるが、それは、復号化しているのではなく、元の値とSHA1ハッシュ値をDBに持っていて、
そのDBを検索している。詳しくは、以下を参照のこと

SHA1ハッシュ値から、もとの言葉を教えてくれるサイト
http://blog.goo.ne.jp/xmldtp/e/c656e55f4bdcace48e60a0d33dd53308
ジャンル:
ウェブログ
この記事についてブログを書く
この記事をはてなブックマークに追加
« リンク先に、後から情報を載... | トップ | IT業界が崩壊するといわれる... »
最近の画像もっと見る

あわせて読む