はじめに
Wi-Fiアライアンスが無線LANの新しい暗号化規格であるWPA3を正式に発表して暫く経ちますが、その後のニュース記事で記されている「CNSA」のことを良く知らなかったので調べてみました。
ニュース記事などによれば「AES(Advanced Encryption Standard)よりも強いアルゴリズム」のような書かれ方をしているものもあったので、あれ、そんな聞き慣れないアルゴリズムあったっけ?みたいに思ってしまったのですが、結論から述べるとアルゴリズム単体の名称ではなく、いわゆる「暗号スイート」のことでした。
CNSAとは
CNSAとは「Commercial National Security Algorithm」の略で米NSA(National Security Agency:国家安全保障局)が定めた暗号スイートのことです。「暗号スイート」というのは用途別に使用できるアルゴリズムや鍵長などの制約を定めた方針・規格のようなもので、NSS(National Security System:機密情報を扱う政府機関やベンダのシステム・機器)が実装するようにアナウンスされています。
似たような標準としてはFIPS140(Federal Information Processing Standardization 140)あたりが有名かと思います。こちらは米国立標準技術研究所(National Institute of Standards and Technology/NIST)が政府機関で使用する情報機器向けに定めた標準で暗号モジュールのValidation Program(CMVP)もやってたりします。特にFIPS140-2というのが使用できる暗号のアルゴリズムや鍵長の制約などを定めていて、ちょうどCNSA Suiteにイメージが近いかもしれません。
FIPS140-2は対象とする機関も幅広く、米国以外の政府機関にも多く参照されているため商用としてはこちらが有名じゃないかと思います。NSAに関してはもう少し高いセキュリティレベルを求めており、最高機密と非機密情報の間で相互運用可能な暗号基盤として以前から「Suite B」という暗号スイートを定めていました。実際に商用でどこまで使用されているのかは分からないのですが、FIPSに比べると限定されていると思います。
CNSAの目的
NSAとしては、近年の量子コンピュータの進歩に対する危機感を募らせているようで、今後は公開鍵暗号の脅威となる、(普及が進みつつある)楕円曲線暗号についても将来的にはその安全性が脅かされる、と考えているようです。量子コンピュータの脅威に対しては耐量子暗号と呼ばれる「量子コンピュータでも現実的な時間で解読できない」アルゴリズムの普及が期待される訳ですが、それまでの準備段階としてより高い暗号強度の暗号利用の普及が必要だとしています。そういった現状認識に基づいてCNSAを商用向けに適用するべく活動しているようです。
具体的にはNSS開発者と運用担当がシステムを設計する場合には、新しい暗号を利用するよう計画と予算を立てるように促しています。というのもシステムで利用する暗号の更新計画は数年の年月を要することも多く、NSAとしては早いうちからオーナーや開発者に暗号移行の予算・保守・運用の計画を立てる必要性を理解しておいて欲しいというわけです。
暗号スイートの詳細
以下、NSAのFAQに纏められている暗号スイートの内容を書き出してみました。
アルゴリズム | 用途 |
---|---|
RSA 鍵長3072bit以上 | 鍵確立、デジタル署名 |
Diffie-Hellman(DH) 鍵長3072bit以上 | 鍵確立 |
ECDH with NIST P-384 | 鍵確立 |
ECDSA with NIST P-384 | デジタル署名 |
SHA-384 | 完全性 |
AES-256 | 機密性 |
全体的に世の中一般で良く使用されている暗号に比べるとセキュリティ高めといった印象です。ポイントは鍵長で、昨今一般的に良く使われているのはRSA2048bitとかECDSA P-256、AES-128とかではないかと思いますが、それよりももう一段上の鍵長を利用しなければならない、としています。FIPS140-2なんかでもRSAは2048bit鍵長以上、ECDSAはP-256以上といった制約になっているのでそれよりもさらに高い安全性を要求していることになります。
暗号アルゴリズムの効率的な攻撃に必要な計算量が2^nであるとき、そのアルゴリズムはnビット安全である、と言います。AES-256は256ビットの鍵を使いますが、単純総当たり計算で攻撃するには2^256の試行回数を必要とするので通常256bit安全であると言われています。RSAの場合はRSA-3072bitで128bit安全くらいだったはず。
WPA3の紹介記事では「192bitの暗号を採用」みたいな表現もありましたが、これはAESの192bit鍵で暗号化している、という意味ではなく「192bit安全」のアルゴリズムと鍵長を使用しているという意味ですね。英文記事ですと”192bit security” という表現が多いです。恐らくSHA-384の192bit安全あたりを基準としているのではないかと思います。
以降、後日追記予定です。
コメント