アーカイブ

第3章 3.破られにくい暗号技術と擬似乱数の使用

公開日:2007年9月26日

独立行政法人情報処理推進機構
セキュリティセンター

本ページの情報は2007年9月時点のものです。
記載の資料は資料公開当時のもので、現在は公開されていないものも含みます。

ファイル内のデータや、ネットワーク上を流れるデータについて、その秘匿性(confidentiality)やインテグリティ(integrity)を確保するためのセキュリティ機能には暗号技術等が利用される。

暗号技術には、共通鍵暗号技術の他、公開鍵暗号技術があるが、今日の暗号技術は、両者を組み合わせて統合的に利用されることが一般化していることに加えて、ハッシュ関数や擬似乱数生成技術も組み合わされて利用されることがある。(例えば、今日のセキュア・プロトコルは、鍵交換機能には擬似乱数生成技術と組み合わされて公開鍵暗号技術が使われており、暗号化機能には共通鍵暗号技術暗号機能が利用されている。)

また、各暗号技術分野には、複数のアルゴリズムが考案されており、それぞれに安全性や実装性の観点から特徴をもつ。

セキュリティ要件に応じた設計

(1) 暗号アルゴリズムの選択

要件が求めるセキュリティ機能を設計する際には、その要件に適合する暗号技術をアルゴリズム名のレベルで意識して選択する必要がある。その際には、「CRYPTREC暗号リスト」を参照していただきたい。

参考資料:

(2) セキュリティ関連APIの把握

一方、今日のソフトウェア開発環境においては、暗号技術について、多くのライブラリ関数が提供されている。アプリケーション・ソフトウェアを開発する場合、暗号技術や擬似乱数生成技術をスクラッチから開発する必要は無い。ソフトウェアを開発する観点からは、APIについての知識を深めておく必要がある。

  • 図3-3: 暗合技術の交換可能性を確保

セキュリティ関連のAPIについては、IPAのサイトにはセキュリティ関連APIについての調査があるので、参考になる。

参考資料:

  • セキュリティAPIに関する技術調査

実装

(1) 暗号アルゴリズムの交換可能性を留意する

各暗号アルゴリズムの安全性には技術的な有効期限がある。例えば、今日、ハッシュ関数として、まだ使われているMD5については、その衝突困難性は容易に再現可能なものとなってしまっている。このように、暗号技術の安全性は、新たな解読方法の発見や、CPUの能力の向上によって、変化するのでCRYPTRECやNISTのサイトをチェックすることが奨められる。

また、このような暗号アルゴリズムや、ハッシュ関数を実装するソフトウェアについては、交換可能性を確保するように留意する必要がある。

参考資料:

  • RFC 4270, 「インターネットプロトコルにおける暗号技術的ハッシュ関数についての攻撃
    (Attacks on Cryptographic Hashes in Internet Protocols)」

(2) 擬似乱数生成ロジックについて留意する

擬似乱数生成ロジックにおいては、最初に投入されるシード(種)の選択が重要であり、これに基づいて撹拌・平滑化が行われる必要がある。アプリケーション・ソフトウェアを開発する際にも必要とされることがあるが、安直な実装が散見される。

乱雑性については、その検定が行われているので、参照されたい。

参考資料:

  • 乱雑性の検定では、NIST SP 800-22が有名で、16種類の検定法が書かれている。IPA関連の文書としては、この中から14種類を採択した、CRYPTREC「乱数検定ミニマムセット仕様」があり、「CRYPTREC Report 2005 暗号技術監視委員会報告書」の「付録 6」(P283-303)に掲載されている。
  • 「CRYPTREC Report 2005 暗号技術監視委員会報告書」
  • 「CRYPTREC 報告書 目次」
  • -RFC 4086, 「セキュリティのための乱雑性についての要件
    (Randomness Requirements for Security)」

また、最近では、CPUが命令としてもつ擬似乱数生成機能を利用するためのライブラリ関数が提供されているので、吟味して利用することができる。

参考資料: