最終更新日 2024年12月19日
スポンサーリンク暗号アルゴリズムって結局どれが安全なのかよく分からない。。。
暗号アルゴリズムにはさまざまな種類があり、それぞれの性質が異なるため、「結局どれが一番安全なのか分からない」と感じる方も多いようです。
例えば、公開鍵暗号方式にはRSA、ECDSA、DHなどがありますが、それぞれ特徴や用途が異なるため、「結局どれが一番安全なのかを判断するのは難しい」というケースがよくあります。
X(旧Twitter)では、次のような投稿も見られました。
暗号アルゴリズムの強度について疑問を抱いている人が多いのは、このことからも分かります。
インフラエンジニアとして働いていると、どの暗号アルゴリズムを採用するか決めなければならない場面(例えば、Wi-Fiの暗号化通信でどの暗号方式を使うかを選ぶ場面など)に必ず直面します。
そのため、暗号アルゴリズムの安全性について理解しておくことはとても重要だと考えています。
とはいえ、「どのアルゴリズムが優れているのか」を判断するのは簡単ではありません。
なぜなら、暗号アルゴリズムには種類ごとに異なる性質があり、それぞれ得意分野が違うからです。
そこで参考になるのが、ビットセキュリティという考え方や、CREPTREC暗号リストです。
これらを活用することで、アルゴリズムの安全性を比較する際の指針になります。
今回の記事では、暗号アルゴリズムの安全性について、私が実際の現場で経験した事例を交えながら解説していきます!
スポンサーリンク暗号アルゴリズムの安全性
現在使用されている暗号アルゴリズムは、今は安全でも、時間が経過することで安全ではなくなる場合があります。
その理由の1つは、コンピュータの計算処理スピードが日々向上しているためです。計算が速くなることで、これまで膨大な時間がかかっていた解読が現実的に可能になってしまいます。さらに、新たな攻撃手法の開発や、脆弱性(暗号アルゴリズムの欠陥や弱点)の発見なども、暗号が安全でなくなる原因になります。
たとえば、以下の暗号アルゴリズムは、脆弱性が発見されたことで現在では非推奨となっています。
SHA-1やMD5(ハッシュ関数の一種で、ハッシュ関数はデータを要約した一意の値のようなものを作り出す仕組み)ですが、計算能力の向上によりSHA-1やMD5では衝突攻撃(異なるデータが同じハッシュ値を生成する攻撃)が現実的に可能になってしまいました。
そのため、現在ではこれらのアルゴリズムは使用しないことが推奨されています。
WEPは、IV(初期化ベクトル:暗号化の際に使うランダムなデータ)の長さが短いことが原因で、同じ鍵が再利用される可能性があることが判明しました。鍵が再利用されることによって通信の内容を解読されるリスクが高まったため、現在ではWPA2やWPA3(より安全なWi-Fi暗号化方式)が主流となっています。
このように暗号アルゴリズムは時間とともに危殆化してしまします。
そのため、現在使用している暗号アルゴリズムが危殆化していないか日々チェックしていくことが重要です。
計算処理スピードが向上すると暗号アルゴリズムが危殆化する理由
暗号アルゴリズムが計算処理スピードの向上により危殆化する理由は、暗号の安全性が主に「解読するために必要な計算が一生かけても終わらないくらい時間が必要になる」という前提に依存しているからです。一生かけても解読が終わらないのであれば、実質解読できないと言えます。
例えば、暗号アルゴリズムのRSAやECCは「攻撃者が解読するために必要な計算量が非常に多いこと」を安全性の根拠としています。解読には、RSAは巨大な数を素因数分解する計算、ECCは楕円曲線離散対数の計算が必要になりますが、解読にとてもつもない時間が掛かります。
しかも、データ1つ1つに別々に暗号化するのが一般的なため、たまたま解読できても得られるデータは数少なくあまり意味がありません。
しかし、もし計算処理スピードが向上すると、これまで解くのに数千年かかるとされていた計算を、数日や数時間で解けてしまう可能性があります。
例えば、昔は10桁の暗号鍵でも安全とされていましたが、現在の高速なコンピュータでは数秒で解読できてしまいます。
このように暗号アルゴリズムは「解読するために必要な計算が一生かけても終わらないくらい時間が必要になる」ということを担保に安全としているため、解読に必要な計算がすぐに終えてしまうくらいコンピュータの性能が向上すると安全ではなくなってしまうのです。
ビットセキュリティ
ビットセキュリティとは?
ビットセキュリティとは、暗号(データを保護する技術)の強度や安全性を表す指標の一つです。
この指標は、暗号を解読するために必要な計算量を「2の累乗」(2を何回掛け合わせるか)で表したものです。
ビットセキュリティ誕生の背景
ビットセキュリティは、異なる種類の暗号アルゴリズム(暗号化の仕組み)の安全性を比較するために生まれました。
たとえば、AES(共通鍵暗号方式の一つ)とRSA(公開鍵暗号方式の一つ)のように、異なる仕組みを持つ暗号の安全性を単純に鍵の長さだけで比較することはできません。これを可能にするのがビットセキュリティです。
暗号の強度はどうやって決まるのか?
暗号の強度(解読がどれだけ難しいか)は、主に以下の2つの要素で決まります。
- 暗号アルゴリズムの種類(例:AES、RSA、ECC など)
- 鍵長(暗号化・復号に使われる鍵の長さ。単位はビットで表されます)
同じ暗号アルゴリズム同士であれば、鍵の長さが長い方が安全性が高いと簡単に比較できます。
しかし、異なる暗号アルゴリズムでは、鍵長だけで比較することができません。
ビットセキュリティの仕組み
ビットセキュリティは、評価対象の暗号アルゴリズムに対して「最も効率的な攻撃方法」を仮定したときに、解読に必要な計算量を基に決定されます。
たとえば、「解読には2の80乗(1,208,925,819,614,629,174,706,176回)もの計算が必要」という場合、その暗号のビットセキュリティは「80ビット」となります。
実際のビットセキュリティについて比較
この指標を使うことで、異なる暗号アルゴリズム間でも安全性を比較することが可能になります。
下記の図はビットセキュリティの表です。
下記の図だと、例えば、ハッシュ関数(SHA-2など)224ビット(ハッシュ関数を使用して出力する固定長の文字列の長さ)を解読する場合、ビットセキュリティが112なので、2の112乗(5,192,296,858,534,827,628,530,496,329,220,096回)の計算が必要ということになります。
また、「RSAの2048ビット鍵」と「ECCの224ビット鍵」は、一見すると鍵の長さが大きく違うように見えますが、ビットセキュリティの指標ではどちらも「112ビット相当」として同じ安全性があると定量的に分かります。
ビットセキュリティ値 | 暗号アルゴリズムの種類 | アルゴリズム例 | 鍵長(bit数) |
---|---|---|---|
80 | 公開鍵暗号 | RSA | 1024 |
112 | 公開鍵暗号 | RSA | 2048 |
公開鍵暗号(ECC) | ECC (ECDSA, ECDH) | 224 | |
128 | 共通鍵暗号 | AES | 128 |
公開鍵暗号 | RSA | 3072 | |
公開鍵暗号(ECC) | ECC (ECDSA, ECDH) | 256 | |
ハッシュ関数 | SHA-256 | 256 | |
256 | 共通鍵暗号 | AES | 256 |
IPsec暗号アルゴリズム採用時にビットセキュリティを活用した事例
ある顧客が拠点間VPN通信のためIPsecを導入することになり、暗号化アルゴリズムについて詳細設計を行うことになりました。
その際、なぜその暗号アルゴリズムを採用したのかを明確に示す必要がありました。
そこで、ビットセキュリティという観点で他の暗号アルゴリズムとの比較検討を行い、採用根拠を明確に資料に起こすという形で顧客へ合意を頂きました。
詳細設計では、下記の3つの暗号アルゴリズムを比較しました。
- AES-256(Advanced Encryption Standard – 256ビット鍵長)
- AES-GCM(Galois/Counter Mode:暗号化と認証を同時に実現)
- 3DES(Triple DES:古い暗号アルゴリズム)
資料作成にあたり下記のような表を作成しました。
暗号アルゴリズム | ビットセキュリティ値 | 理由 |
---|---|---|
AES-256 | 256ビット | 現在の計算技術では解読不可能であり、標準的な暗号アルゴリズムとして高い安全性が確立されている。多くのネットワーク機器やソフトウェアでサポートされ、相互運用性も高い。 |
AES-GCM | 256ビット | GCMモードは暗号化と認証(完全性確認)を同時に実行できるため、処理速度が速く効率的。データ転送量の多い環境では性能向上が期待できる。 |
3DES | 112ビット | 3DESは古い暗号アルゴリズムであり、鍵長は168ビットと見なされがちだが、実質的なビットセキュリティは112ビット。計算能力向上により安全性が低下し、CRYPTRECやNISTでも非推奨。 |
上記の表をもとに顧客には下記ポイントを説明する形でAES-256で了承をいただきました。
- AES-256とAES-GCMは、256ビットのビットセキュリティを持ち、現代の攻撃技術に対して十分な安全性を確保できる。
- AES-256は実績が多い
- AES-GCMは高速性・効率性に優れており、データ転送性能を重視する場合に最適。
- 3DESは安全性が低く、業界標準でも非推奨となっているため、IPsecでの採用は適切ではない。
SP800-57
SP800-57は、アメリカ国立標準技術研究所(NIST)が発行している暗号鍵管理のガイドラインです。
このガイドラインでは、暗号鍵を安全に扱う方法が説明されています。
鍵のライフサイクル
SP800-57では鍵の一生(ライフサイクル)をどう管理するかを説明しています。
項目 | 内容 |
---|---|
1. 暗号鍵の作成方法 | 暗号鍵は安全な乱数(予測できない数値)を使用して作成する。 |
暗号学的に安全な乱数生成器(CSPRNG)を使用して作成する必要がある。 | |
生成された鍵のエントロピー(ランダム性)が高いことを確認する。 | |
2. 暗号鍵の使用方法 | 同じ鍵を何度も使用するとセキュリティリスクが高まる。 |
鍵を特定の目的にのみ使用する(例: 暗号化専用、署名専用など)。 | |
同じ鍵を使いすぎない(例: 同じ対称鍵で暗号化するデータ量を制限)。 | |
一つの鍵を複数の用途に使わない(例: 暗号化と署名で同じ鍵を使用するのはNG)。 | |
3. 暗号鍵の保存方法 | 鍵は安全な環境(例: ハードウェアセキュリティモジュール(HSM)やセキュアエンクレーブ)に保存する。 |
秘密鍵は適切なアクセス制御や暗号化で保護する。 | |
鍵のバックアップを安全に実行。バックアップも暗号化して保存する。 | |
4. 暗号鍵の廃棄方法 | 鍵が不要になった場合は、漏洩を防ぐために完全に削除する必要がある。 |
例: HSMの鍵削除機能やディスク上のデータを上書きして消去する。 |
鍵の強さ(ビット長)
鍵の長さ(ビット長)の推奨例や、鍵の長さが安全性にどのように影響するかが記載されています。
推奨例としては、共通鍵暗号(AES)なら、128ビット以上、公開鍵暗号(RSA)なら2048ビット以上です。
鍵の寿命
どのくらいの期間、同じ鍵を使い続けて良いのかを決める基準について記載されています。
鍵を長期間使いすぎると、解読されるリスクが増えるので注意が必要です。
CREPTREC
CREPTRECという電子政府推奨暗号の安全性を評価、監視し暗号技術の適切な実装法や運用法を調査、検討するプロジェクトが3つのリストを作成しています。
リスト名 | リストの概要 | 暗号技術名 |
---|---|---|
電子政府推奨暗号リスト | 安全性と実装性能が確認され、電子政府での利用が推奨される暗号技術の一覧 | AES, RSA-PSS, ECDSA |
推奨候補暗号リスト | 安全性と実装性能が確認され、将来的に推奨リストに加えられる可能性のある暗号技術の一覧 | Camellia, ChaCha20, Poly1305 |
運用監視暗号リスト | 現在利用されているものの、将来的に安全性の懸念があるため、監視が必要な暗号技術の一覧 | 3DES, SHA-1, RSA-1024 |
詳細は下記からご確認ください。
CRYPTREC | CRYPTREC暗号リスト(電子政府推奨暗号リスト)
スポンサーリンクセキュリティ機器提案時にCRYPTREC準拠を根拠に提案書を作成した事例
金融業界では、顧客情報や金融取引データの保護が最重要課題であり、セキュリティ要件は極めて厳格です。ある大手金融機関の案件において、ネットワークおよび情報システムのセキュリティ強化のために新たなセキュリティ機器を導入する提案書を作成しました。その際、厳格なセキュリティを担保する根拠としてCRYPTRECで推奨される暗号アルゴリズムがサポートされていることを資料に整理し提案しました。
セキュリティ機器の要件は以下の通りでした。
- 現在普及しているサイバー攻撃に耐えうる暗号アルゴリズムをサポートされ、データの安全性が担保されていること。
- 不正アクセス防止、暗号化通信、およびデータ完全性保護が可能であること。
- システム全体で暗号アルゴリズムの安全性を確保し、長期運用に耐える製品であること。
上記の1つ目の要件にマッチしている根拠としてCRYPTREC暗号リストを使用し、CRYPTREの暗号リストに記載されている暗号アルゴリズムをサポートしてるセキュリティ機器であるFortinet FortiGate 600FとCisco Firepower 4100シリーズを提案しました。
上記の製品を提案するにあたり、下記のような内容を提案書に盛り込み提案資料作成しました。
CRYPTREC は日本政府の推奨する暗号リストであり、安全性と信頼性が評価済みのアルゴリズムのみが採用されています。
提案した機器はすべて AES-256、SHA-256、RSA、ECDSA などのCRYPTREC準拠暗号アルゴリズムに対応し、長期運用におけるセキュリティ強度を保証します。
暗号アルゴリズムの安全性について知る重要性
暗号アルゴリズムの安全性を知ることは、データ保護やサイバー攻撃への対策に直結します。古い技術や脆弱なアルゴリズムを使うと、情報漏洩やシステム侵害のリスクが高まります。また、量子コンピュータの進化や法令順守(例 GDPR)にも対応する必要があります。適切な暗号技術を選ぶことで、信頼性を高め、将来の安全性を確保できます。
ゴリタン
インフラエンジニアとして、ネットワークとサーバーの運用・保守・構築・設計に幅広く携わり、
現在は大規模政府公共データの移行プロジェクトを担当。
CCNPやLPICレベル3、AWSセキュリティスペシャリストなどの資格を保有しています。