前回は公開鍵暗号と秘密鍵暗号の学びました。今度は直接暗号化するわけではないが、暗号技術で必要不可欠なその他の暗号化について学びましょう。
前の記事
一方向ハッシュ関数(One-way hash function)とは
一方向ハッシュ関数が出来た理由
共通鍵暗号と秘密鍵暗号は元に戻すことができる暗号技術でした。今度は元に戻すことのできない暗号技術についてです。
暗号化は全体のデータをまとめて暗号化!というのはできません。ブロックという単位に分けられてから暗号化されるため、ブロック単位で改ざんされてしまうと改ざんされていることがわからないのです。
そのため、どこかのデータが少しでも変わったことを知る手段が必要でした。
そのために編み出されたのが一方向ハッシュ関数というものです。
技術概要
一方向ハッシュ関数は可変長のメッセージから固定長のメッセージにする暗号技術で、平文のどこかが少しでも変わると結果もガラッと変わる必要があります。
これは暗号化の完全性を提供する技術です。
例としてSHA-1やSHA-2などの関数があります。
メッセージ認証コード(Message Authentication Code, MAC)とは
省略されてよくMACって言われています。
あるメッセージが改ざんされていないかを確認され、さらに相手が作るったものであるというチェックができます。
この方式では、暗号技術の完全性と認証を提供できます。
この技術は共通鍵暗号を改変したもので、お互いに同じ鍵をを秘密に保持する必要があります。(そのため鍵配送問題が出てきます)
デジタル署名(Degital Signature)とは
概要
これは先ほどのMACとちょっと似ていますが、こちらは公開鍵暗号を使います。
MACと同じで改ざんが行われていないかのチェック(完全性)、認証のほかに否認不可能性を提供します。
仕組み
公開鍵暗号を少し改変したもので、秘密鍵と公開鍵の役割が逆になっています。
流れとしては以下の通り
- 署名用の鍵(秘密鍵)を作成する
- 検証用の鍵(公開鍵)をつかって署名を認証する
という流れです。
署名用の鍵を知らない攻撃者は検証用が通るような改ざんを行うことができない。というわけです。
擬似乱数精製機も大事だよ!
さて、先ほどまでは暗号化をする技術の紹介でしたが、暗号技術には鍵も大事になってきます。
基本的に暗号通信するときは鍵をその場で作り出しますが、パソコンで普通に乱数を作ると、どこか偏った鍵ができちゃうのです。(1が10%, 0が90%含まれた鍵とか)
そのため、実は解読されてしまう主な要因は暗号技術が弱いということより、鍵が不適切であることが多いのです。
そのため、この乱数を生成する関数も高性能なものである必要があるのです。しかし完全な乱数を作ることはコンピュータでは難しいのです。この分野も結構いろんな学者が頑張っているみたいです。