とができます。今日のEJはその方法について、できる限り、や
さしくご紹介することにします。参考にした書籍をご紹介してお
きます。
─────────────────────────────
岡嶋裕史著
『ブロックチェーン/相互不信が実現する新しいセキュリティ』
ブルーバックス/講談社刊
─────────────────────────────
ウインドウズで使える「ハッシュ関数」には、次の2種類があ
ります。「ハッシュ長」とは算出されるハッシュ値の長さです。
─────────────────────────────
ハッシュ長
MD5 ・・・・ 128ビット
SH1 ・・・・ 160ビット
─────────────────────────────
ここでの実験では「MD5」を使うことにします。短い方が何
かと便利だからです。ウインドウズが出荷状態で持っているハッ
シュ値を計算するコマンドは「CertUtil」といいますが、このコ
マンドを実行するための情報(バラメータ)が必要になります。
それは、次のようになります。
─────────────────────────────
CertUtil -hashfile C:\Users\PSC test.txt MD5
─────────────────────────────
上記の「-hashfile」というのは、CertUtil が持つ機能のなか
で「ハッシュ値を表示する機能を使う」という指定をPCに伝え
るためのものです。
次の「C:\Users\PSC test.txt」 は、この実験に使うデータを
保存するファイルの指定です。このファイルは、ウインドウズに
標準的に付属している「メモ帳」を使って作成します。ドライブ
指定やファイル名については、自由に行います。ここでは、講義
の実験用に作ったものなので、「PSC test.txt」という名前をつ
けています。実験のさいは、このファイルにデータを格納してお
き、コマンドでファイルを指定してハッシュ値を算出します。
早速やってみることにします。「PSC test.txt」に「a」とい
う文字を格納し、次のように、コマンドプロンプトで実行するこ
とにします。つまり、「a」という文字のハッシュ値をMD5で
算出するのです。そうすると、結果は次のようになります。
─────────────────────────────
C:\Users\PSC> CertUtil -hashfile C:\Users\PSC test.txt MD5
↓
C:\Users\PSC> CertUtil -hashfile C:\Users\PSC test.txt MD5
MD5 ハッシュ (対象 C:\Users\PSC\Desktop\test.txt):
0cc175b9c0f1b6a831c399e269772661
CertUtil: -hashfile コマンドは正常に完了しました。
─────────────────────────────
「a」のハッシュ値は「0cc175b9c0f1b6a831c399e269772661」
のようになります。算出結果は、128ビットを16進数で表示
しているので、32ビットで表示されています。
続いて、今度は「PSC test.txt」に「b」という文字を格納し
次のようにコマンドプロンプトで実行します。今度は、「b」の
ハッシュ値を求めます。結果は次のようになります。
─────────────────────────────
C:\Users\PSC> CertUtil -hashfile C:\Users\PSC test.txt MD5
↓
C:\Users\PSC> CertUtil -hashfile C:\Users\PSC test.txt MD5
MD5 ハッシュ (対象 C:\Users\PSC\Desktop\test.txt):
92eb5ffee6ae2fec3ad71c777531578f
CertUtil: -hashfile コマンドは正常に完了しました。
─────────────────────────────
「b」のハッシュ値は「92eb5ffee6ae2fec3ad71c777531578f」
のようになります。「a」の結果と、まったく違うハッシュ値に
なっていることを確認してください。
ここで大事なことがあります。ファイルに格納するデータは、
この実験のようにたった1文字でも、契約書のようにある程度ま
とまったデータでも、かなりの量の研究論文全文でも、本一冊分
の量のデータでも、ハッシュ関数「MD5」では、32ビットの
16進数の固定長として表示されるということです。
仮にそのデータの1文字でも改ざんが行われると、違ったハッ
シュ値を表示します。しかも、ハッシュ値は、出力結果から元の
データに戻すことは不可能なのです。
ハッシュ値のこの性質を利用すると、次のようなことが誰でも
行うことができます。AからBへ、ある重要文書を添付ファイル
にして、メールで送るとします。そのさい、Aは、送信前に送付
すべき文書のハッシュ値を算出し、その結果をメール本文にコピ
ーして、メールを送信します。Bのもとには、重要文書のファイ
ルとそのハッシュ値が届いたことになります。
Aからのメールを受信したBは、添付ファイルとして届いた文
書のハッシュ値を算出し、それをAから送られてきたその文書の
ハッシュ値と照合します。もし、ハッシュ値が一致すれば、添付
文書には、改ざんがないことが証明されますし、もし、一致しな
ければ、文書には改ざんがあることになります。
このように、ハッシュ値は普通のPCで簡単に算出することが
できる身近なものです。同じことを「SH1」でも行うことがで
きます。しかし、やり方はまったく同じですが、「SH1」によ
るハッシュ値は160ビットであり、それを16進数の40ビッ
トで表示されます。違いはそれだけです。
ハッシュ値の算出法を覚えておくと、これ以外の様々なことに
活用できる余地があることがわかります。
──[デジタル社会論V/031]
≪画像および関連情報≫
●ハッシュ化とは?暗号化との違いや利用シーンを
詳しく解説!
───────────────────────────
ハッシュ化とは、ハッシュ関数と呼ばれる特殊な計算方法
によって、一見ランダムに見える別の値(ハッシュ値)にデ
ータを変換する方法です。ハッシュ値は復号できないため、
パスワードを保管する際などに活用されています。同じデー
タから得られるハッシュ値は常に同じです。この特徴から、
ハッシュ値を比較すれば元のデータが同一か否かを判断でき
ます。
例えば、正しいログインパスワードのハッシュ値と、入力
されたパスワードのハッシュ値が同一であれば、入力パスワ
ードが正しいものと判断可能。その結果、元のID情報を直
接やり取りすることがない、秘匿性の高いログイン処理が実
現します。
ソルト処理とは、元のデータにランダムな文字列を付加し
てからハッシュ化することです。付加する文字列をソルトと
呼びます。ソルト処理により、ハッシュ値から元のデータを
推測されるリスクを軽減できます。
ハッシュ値から元のデータを直接復号することは不可能で
す。しかし、あるハッシュ値の元データが何であるか、第三
者が知っている可能性があります。ログイン認証を例にすれ
ば、同じハッシュ値を持つ者同士は、お互いに使っているパ
スワードが同一であると分かってしまうでしょう。この問題
を解決するために行われるのがソルト処理です。
https://bit.ly/3zzXoxP
───────────────────────────
特定の値を導く「ハッシュ値」