TOPセキュリティ > 暗号技術の基礎(上)

セキュリティ

暗号技術の基礎(上)

2021/12/13

Matthew Tyson InfoWorld

対称暗号

 コンピューターが登場する前の暗号技術は、暗号文が頼りだった。暗号文とは、所定の対応付けの規則に基づいて、通常の文を意味不明な文字の並びに変えたものを言い、逆の変換によって元の文に戻せる。例えば英語の文の場合、すべての文字をアルファベット4個分後ろにずらせば、単純な暗号文を作成できる(例えば「A」→「E」など)。暗号文の各文字を4個分ずつ前にずらせば、元の文に戻せる。通常の文を暗号文に変える操作を暗号化、元に戻す操作を復号という。

 だが、4文字ずらすという決め打ちの操作は非常に単純で、安全性に欠ける。そこで、鍵(キー)と呼ばれるデータを使い、鍵が変われば文字の対応付けの方法も変わるような複雑な仕組みを取り入れることで、安全性を高める。だがその場合、通信に参加するすべての当事者に鍵を配布しておく必要が出てくる。その配布方法に関して、さまざまな攻撃の余地が生じる恐れがある。

 対称暗号の有名な例としては、第2次世界大戦中に使われた暗号機「Enigma」がある。

一方向関数

 コンピューターの登場と、それに伴う数学の進化によって、暗号技術も複雑化が可能となり、新たな手法が数多く生まれた。その中でも特に基本となるのが一方向関数だ。名前のとおり、一方向にのみ値を導き出すことができ、逆算が極めて困難な関数である。一方向関数は暗号プリミティブとみなされる。データを特定の長さのハッシュ値に変換するハッシュ関数も一方向関数の一種だ。

 パスワードをデータベースに保存する時のハッシュ値の計算は、一方向関数の典型的な用途の1つで、その性質を理解するのに役立つ。平文のパスワード(例えば「fluffy123」)を、一方向関数のアルゴリズムに通すことで、ランダムに見える文字列(例えば「XFcbe2d3bh0sa」)に変換し、そちらを保存しておく。仮にサイバー攻撃でこのデータベースにアクセスされたとしても、パスワード自体には危険が及ばない。現在のコンピューターシステムでは、ハッシュ値から元のパスワードを効率よく割り出す既知の手法はない。

 ハッシュ値を求めるアルゴリズムのロジックは公開されており、攻撃者も自由に参照できる(例えばBCryptのソースはこちらにある)。それなのに、逆算が一般に不可能というのは、興味深い事実だ。とはいえ、一方向のハッシュ関数も、必ずしも無敵ではなく、クラッキングのためのさまざまな手法が考案されている(例えばレインボーテーブルなど)。

 現代のハッシュライブラリには、ハッシュの難度を高める機能(演算処理能力の向上に合わせてハッシュを強化できる機能)や、「ソルト」を加える機能(同じ入力値に対して異なるハッシュ値を得られる機能)がある。ソルトを加えてハッシュ化したパスワードは、そのソルトが漏れない限り、基本的には破られない。

翻訳:内山卓則=ニューズフロント

↑ページ先頭へ