2021年09月22日

●「だれでもハッシュ値を計算できる」(第5577号)

 「ハッシュ値」は普通のウインドウズPCを使って算出するこ
とができます。今日の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
  ─────────────────────────── 
特定の値を導く「ハッシュ値」.jpg
特定の値を導く「ハッシュ値」
posted by 平野 浩 at 00:00| Comment(0) | デジタル社会論V | このブログの読者になる | 更新情報をチェックする