暗号鍵関連の各種変数について

no extension

ECDSA鍵をGitHubで使う方法」で SP 800-56 が Rev.4 になってるのを見て一瞬「ふぁ!」となったが,よく考えたら今年始めに書いた「最初の SHA-1 衝突例」では既に Rev.4 を参照していたのだった。 でも古い記事を見返したら結構 Rev.3 のままになってるので,このさい全部アップデートすることにした。

この記事は将来の記事で再利用するための snippet 置き場として使うことにする。 表のレイアウトの関係で携帯端末で見ている人は見づらいかもしれないけど,そこはご容赦。

参照資料

ここで参照する資料は,米国 NIST の Special Publication (SP) 800-57 Part 1 で正式タイトルは「Recommendation for Key Management Part 1: General (鍵管理における推奨事項 第一部:一般事項)」となっている(日本語訳は IPA によるもの)。

セキュリティ強度と鍵長の関係

最初はセキュリティ強度と鍵長の関係を示す表。 単位は全て bit である。

Security
Strength
Symmetric
key
algorithms
FFC
(e.g., DSA, D-H)
IFC
(e.g., RSA)
ECC
(e.g., ECDSA)
$\le 80$2TDEA$L=1024$
$N=160$
$k=1024$ $f = 160\text{ - }223$
$112$3TDEA$L=2048$
$N=224$
$k=2048$ $f = 224\text{ - }255$
$128$AES-128$L=3072$
$N=256$
$k=3072$ $f = 256\text{ - }383$
$192$AES-192$L=7680$
$N=384$
$k=7680$ $f = 384\text{ - }511$
$256$AES-256$L=15360$
$N=512$
$k=15360$$f=512+$
Comparable strengths (via SP800-57 Part 1 Revision 4 )

Symmetric key algorithms は共通鍵暗号アルゴリズム全般を指す。 たとえば AES とか。 IFC (Integer Factorization Cryptosystems) は素因数分解問題ベースの公開鍵暗号アルゴリズムで RSA がこれに該当する。 FFC (Finite Field Cryptosystems) は離散対数問題ベースの公開鍵暗号アルゴリズムで Diffie-Hellman や DSA などがこれに該当する。 ECC (Elliptic Curve Cryptosystems) は離散対数問題でも特に楕円曲線上の離散対数問題ベースの公開鍵暗号アルゴリズムを指す。 たとえば ECDSA や ECDH など。

IFC では $k$,FFC では $L$,ECC では $f$ が鍵長を示す。 たとえばセキュリティ強度が 128bit なら

  • AES 128bit
  • DSA 3072bit
  • RSA 3072bit
  • ECDSA 256bit

の組み合わせで「ベストマッチ キター!」となる。

セキュリティ強度と Hash 関数の関係

次はセキュリティ強度とHash 関数の関係を示す表。

Security
Strength
Digital Signatures and
hash-only applications
HMAC,
Key Derivation Functions,
Random Number Generation
$\le 8$0 SHA-1  
$112$ SHA-224, SHA-512/224, SHA3-224  
$128$ SHA-256, SHA-512/256, SHA3-25 SHA-1
$192$ SHA-384, SHA3-384 SHA-224, SHA-512/224
$\ge 256$ SHA-512, SHA3-512 SHA-256, SHA-512/256,
SHA-384,
SHA-512, SHA3-512
Hash functions that can be used to provide the targeted security strengths (via SP800-57 Part 1 Revision 4 )

考え方は先程の暗号鍵長のときと同じ。 ただし Hash 関数の場合は使用目的ごとに要求されるアルゴリズムが異なるので注意が必要である。

セキュリティ強度と有効期限

こちらはセキュリティ強度の有効期限を表したものだ。

Security Strength Through
2030
2031 and
Beyond
$\lt 112$Applying Disallowed
ProcessingLegacy-use
$112$ Applying AcceptableDisallowed
Processing Legacy use
$128$ Applying/ProcessingAcceptableAcceptable
$192$ AcceptableAcceptable
$256$ AcceptableAcceptable
Security-strength time frames (via SP800-57 Part 1 Revision 4 )

各用語はそれぞれ

用語 意味
Applying 適用
Processing 処理
Acceptable 許容
Legacy-use 許容(レガシー使用のみ)
Disallowed 禁止

という意味だ。 例を挙げると,セキュリティ強度 112bit の暗号スイート(Cipher Suites)を適用する場合は2030年までは許容するけど2031年以降は禁止。 すでに暗号化されているデータを復号したい場合でも,2031年以降はレガシー・システムしか許容しない,ということになる。

たとえば ssh 認証は「適用」なので多くの人が使ってる RSA 2048bit の鍵は2031年以降は使用禁止となるわけだ。 まぁ,そんな先まで同じシステムで同じ鍵を使い続けるかどうかは分からないが(なので今使ってる鍵を慌てて新調する必要はない。新規に作成するなら 128bit 強度の鍵をお勧めするが)。

なおこれは各アルゴリズムに危殆化要因となる脆弱性等がない場合の話である。 したがって暗号製品を使うシステムの管理者やセキュリティ管理者は常に暗号関係のトピックに耳を澄ませておくべきであろう。

OpenPGP で利用可能なアルゴリズム

ついでに OpenPGP を規定する RFC 4880 に載っている暗号関連アルゴリズムを挙げておく。

まずは共通鍵暗号アルゴリズムから。 なお 3DES (3TDEA) の鍵長が 168bit となっているが,実質のセキュリティ強度は 112bit である。

IDアルゴリズム鍵長ブロック長参考文献
1 IDEA 128 64 IDEA International Data Encryption Algorithm
2 3DES 168 64 SP800-67 Rev.1
3 CAST5 128 64 RFC2144
4 Blowfish 128 64 Description of a New Variable-Length Key, 64-Bit Block Cipher (Blowfish)
5 (Reserved) -- --  
6 (Reserved) -- --  
7 AES 128 128 FIPS PUB 197
8 AES192 192 128 FIPS PUB 197
9 AES256 256 128 FIPS PUB 197
10 Twofish 256 128 The Twofish Encryption Algorithm
11 Camellia128 128 128 RFC3713, RFC5581
12 Camellia192 192 128 RFC3713, RFC5581
13 Camellia256 256 128 RFC3713, RFC5581
OpenPGP で使用可能な共通鍵暗号アルゴリズム一覧

余談だが Camellia 暗号は日本製である。

続いて公開鍵暗号アルゴリズム。

IDアルゴリズム参考文献
1 RSA RFC3447
2 RSA Encrypt-Only RFC3447
3 RSA Sign-Only RFC3447
... (Reserved)  
16 Elgamal
(Encrypt-Only)
A public key cryptosystem and a signature scheme based on discrete logarithms
17 DSA FIPS PUB 186-4
18 ECDH SP800-56A Revision 2 , RFC6637
19 ECDSA FIPS PUB 186-4 , RFC6637
20 (Reserved) (formerly Elgamal Encrypt or Sign)
21 (Diffie-Hellman) ANSI X9.42, as defined for IETF-S/MIME
22 EdDSA (draft) High-speed high-security signatures
OpenPGP で使用可能な公開鍵暗号アルゴリズム一覧

Pub20 の Elgamal は,元々暗号化と署名の両方できるものだったが,脆弱性が見つかったため OpenPGP では使用禁止になった。 Pub21 の Diffie-Hellman は予約済みになってるが実装されている製品はない。

さらに Hash 関数。

IDアルゴリズム参考文献
1 MD5 RFC1321
2 SHA-1 FIPS PUB 186-4
3 RIPE-MD/160 The hash function RIPEMD-160
4 (Reserved)  
5 (Reserved)  
6 (Reserved)  
7 (Reserved)  
8 SHA256 FIPS PUB 180-4
9 SHA384 FIPS PUB 180-4
10 SHA512 FIPS PUB 180-4
11 SHA224 FIPS PUB 180-4
OpenPGP で使用可能な一方向ハッシュ関数一覧

SHA-3 (FIPS PUB 202 ) を OpenPGP にどのように組み込むかについては,現在検討中

パスワードの強度

これは NIST ではなく IPA の資料だが,文字種と文字数の組み合わせによるパスワードの強度についても上げておこう。 出典は以下。

利用する文字種類数と内訳 パスワード長
種類数 数字 文字 シンボル 4文字 8文字 12文字 16文字
10種0-9なし なし1円未満($2^{13.3}$)1円未満($2^{26.6}$) 約35円($2^{39.9}$) 約35万円($2^{53.2}$)
36種0-9a-z なし1円未満($2^{20.7}$)約100円($2^{41.4}$) 約1.65億円($2^{62.0}$) 約276兆円($2^{82.7}$)
62種0-9a-z
A-Z
なし1円未満($2^{23.8}$)約7,500円($2^{47.6}$)約1,120億円($2^{71.5}$)約165京円($2^{95.3}$)
94種0-9a-z
A-Z
! " # $ %
& ' ( ) =
~ | - ^ `
¥ { @ [
+ * ] ; :
} < > ? _
, . /
1円未満($2^{26.2}$)約21万円($2^{52.4}$) 約16.5兆円($2^{78.7}$) 約129,000京円($2^{104.9}$)
パスワード解読の想定コスト例(情報漏えいを防ぐためのモバイルデバイス等設定マニュアル 解説編 2.4.2.2項より)

測定基準は以下の通り。

利用できる文字種類すべてを完全にランダムに選択して作ったパスワードを一つ一つ調べる全数探索により1日で解読しようとした際にかかるおおまかな想定攻撃コストを示しています。ここでは、全数探索(暗号鍵の総数256)でDES10を1日で解読するためのコストを約250万円と仮定します。また、パスワードを1つ検査するのとDESの暗号鍵を1つ検査するコストは同じであるとし、パスワードを求めるのに必要な計算量(検査する個数)が半分になればコストも半分、2倍になればコストも2倍になるものとしています。
情報漏えいを防ぐためのモバイルデバイス等設定マニュアル 解説編 2.4.2.2項より

ブックマーク

参考図書

photo
暗号技術入門 第3版 秘密の国のアリス
結城 浩
SBクリエイティブ 2015-08-25
評価

自作エミュレータで学ぶx86アーキテクチャ コンピュータが動く仕組みを徹底理解! 数学ガールの秘密ノート/丸い三角関数 数学ガールの秘密ノート/微分を追いかけて 情報セキュリティ白書2015: サイバーセキュリティ新時代:あらゆる変化へ柔軟な対応を 数学ガールの秘密ノート/数列の広場

SHA-3 や Bitcoin/Blockchain など新しい知見や技術要素を大幅追加。暗号技術を使うだけならこれ1冊でとりあえず無問題。

reviewed by Spiegel on 2015-09-20 (powered by G-Tools)

photo
暗号化 プライバシーを救った反乱者たち
スティーブン・レビー 斉藤 隆央
紀伊國屋書店 2002-02-16
評価

ハッカーズ 暗号解読―ロゼッタストーンから量子暗号まで グーグル ネット覇者の真実 追われる立場から追う立場へ 暗号解読〈上〉 (新潮文庫) 暗号解読 下巻 (新潮文庫 シ 37-3)

20世紀末,暗号技術の世界で何があったのか。知りたかったらこちらを読むべし!

reviewed by Spiegel on 2015/03/09 (powered by G-Tools)