パスワードのような数文字分のどんなに小さなサイズのデータでも、画像データのように大きなサイズのデータでも、常に一定の長さのサイズ(固定長)のデータに変換してしまう技術です。
たとえば、よく使われる「SHA-1」というハッシュ関数は、常に160ビット(20バイト)に出力されます。
もう一つの特徴として、「一方向ハッシュ」と言われるように、出力されたハッシュ値からは、元のメッセージ(データ)を復元することはできません。
また、元のデータが一文字でも変化した場合、そこから生成されるハッシュ値は似ても似つかぬハッシュ値が出力されます。すこし実験してみましょう。
元データ | ハッシュ値(SHA-1で生成) |
山田太郎 | 6B E3 A8 EA 48 29 09 41 F8 53 8A 20 F6 8A 25 EA D9 DF 24 19 |
山田次郎 | EB 97 DF 0F 23 B1 90 57 DF 50 87 39 5F CE 93 AC 1D 84 54 A7 |
山田小太郎 | 81 B0 CF 94 25 F0 1F 40 FD 82 C8 F9 93 BA BB 36 07 0D E9 1F |
大山田小次郎 | D3 B4 27 A7 BE 93 41 83 69 80 99 7A 6C 92 F0 EB C7 C2 9D E1 |
上記のように、「太」が「次」に置き換わっただけで、全く違うハッシュ値が生成されていることがわかります。更に、文字数が増えてもハッシュ値の長さは変わっていません。
では、この性質を利用してどんなことに利用されるのでしょうか。
例えば、数百ページにも及ぶ文章と、この文章のコピーがあるとします。コピー文章が改ざんされていないかどうか、1語1句検証しなければならないとしたら大変な作業になると思います。
ここで活躍するのが「一方向ハッシュ関数」です。2つの文章のハッシュ値を計算し、ハッシュ値同士を比較するだけでいいのです。
改ざんされていなければ、全く同じハッシュ値が得られるはずなので、もし違っていれば2つの文章は違っていることが解ります。
つまり現在のデータが改ざんされていないか「検証」することが出来るのです。
電子申請においてもこの技術が利用されています。また、デジタル署名は元データではなく、この「ハッシュ値」に対して署名する場合が通常です。
お気づきの方もいらっしゃると思いますが、暗号技術の組み合わせにより、安全な通信を行う際に気をつけなければならなかった、機密性の保持、改ざん、なりすまし、否認を見事に解決していることがわかります。
しかし、せっかく「データ」を暗号化したり、デジタル署名などを施しても、全く意図しない別の人に送ってしまっては意味がありません。
皆さんのパソコンと厚生労働省のサーバの通信経路の途中に悪意のある第三者が待ち受けているかもしれません。これは人に限らず、コンピュータが仕掛けられていることも考えられます。(man-in-the-middle攻撃)
また、少し前に問題となった「フィッシング詐欺」や「ファーミング詐欺」のように、Webサイトの見た目だけに騙されてしまうかもしれません。
そこで登場するのが、SSL(Secure Socket Layer)/TLS(Transport Layer Security)という技術です。
インターネット上で買い物をする際、クレジット番号と暗証番号を入力する場面があります。このクレジット番号と暗証番号が盗聴されれば大問題です。
そこで、「通信」を暗号化するのがSSL/TLSです。
SSL/TLSを利用する場合、通常「サーバ証明書」が必要になります。これから通信しようとする相手が本人(正しいサーバー)かどうかを「認証」するためです。
このサーバ証明書には認証局(CA)による証明がされています。CAはサーバのドメイン名にデジタル署名を行うことにより証明します。
社会保険労務士が電子申請を行う場合、まずはじめに行うことは、厚生労働省の「サーバ証明書」をインストールする必要がありましたね。
このようにサーバ証明書をインストールするということは、「これから送信する相手が本当に厚生労働省か」を「認証」するための手続きになります。
暗号化と電子申請について、ごく簡単ではありますが説明しました。厳密には正しくない表現もあると思いますが、全体像を把握するためだと思ってご了承ください。 |
さて次回は、実際に電子メールを暗号化する方法を解説したいと思います。大事な個人情報をメールでやりとりしていませんか?お客様からの信頼度UPのためにも是非参考にして、実践してみてください。