2025 年 10 月 06 日
AlmaLinux 10 で PQC(耐量子計算機暗号)をお試し(その1)
― PQC テクノロジープレビュー ―
はじめに
PQC(Post Quantum Cryptography、耐量子計算機暗号)は、量子コンピューターが今後更に発展し、既存の RSA 暗号や楕円曲線暗号などの技術が解読される危険性に対応するために設計された次世代型の暗号方式です。既にいくつかの方式が採択され、世界各国で標準化や実用化に向けた取り組みが急速に進められています。
背景の1つに、「Harvest Now, Decrypt Later(HNDL)」攻撃の脅威があります。悪意のある第三者が現在の暗号化通信を大量に収集しておき、将来量子コンピューターが普及した時に、過去のデータをまとめて解読しようとするサイバー攻撃手法です。医療記録や国家機密、個人情報のように価値が数十年続く情報は、今すぐにでも保護対策を始める必要があると警鐘が鳴らされています。
既に Google Chrome ブラウザや CDN サービス大手の Cloudflare などでは、SSL/TLS 暗号通信に用いる鍵交換方式として、PQC アルゴリズムと従来の楕円曲線暗号との「ハイブリッド方式」を導入し、HNDL 攻撃への対策を行っています。
RHEL10 の PQC テクノロジープレビュー
関連して、RHEL10 で crypto-policies-pq-preview パッケージをインストールすることで、テクノロジープレビューとしてハイブリッド鍵交換を含む PQC を試すことが可能ですと、いくつかの記事が公開されています。なお、テクノロジープレビューパッケージは、機能的にバクが残っているまたは安定性の保証が低く完全ではない可能性があり、本番環境での運用を意図したものではなく、将来の移行性 (migration path) が保証されない場合もあると Red Hat は説明しています。
- 「2.6. OpenSSL の耐量子計算機暗号アルゴリズム」、Red Hat Documentation
- 「Post-quantum cryptography in Red Hat Enterprise Linux 10」、Red Hat Blog、2025 年 5 月 20 日
- 「RHEL10 なら簡単に PQC ハイブリッド鍵交換 (X25519MLKEM768) 対応の Web サーバーを構築できる」、@exit0 inARアドバンストテクノロジ株式会社(ARI)、2025 年 06 月 15 日
そこで、RHEL 互換の AlmaLinux 10 についても同様のことが可能か確認してみることにしました。
ちなみにサイバートラストは、AlmaLinux OS Foundation に日本企業初のプラチナスポンサーとして参画していますが、本ブログは当社の R&D チームで試行した結果の共有であり、AlmaLinux OS に関わる公式サポート情報ではなく、また、AlmaLinux OS Foundation の公式見解でもないことは予めご理解ください。
AlmaLinux 10 の PQC テクノロジープレビュー
AlmaLinux 10 環境に crypto-policies-pq-preview パッケージをインストールします。
なお、AlmaLinux のテクノロジープレビューパッケージも、機能が完全にサポートされるわけではなく、機能的に完成していない可能性があり、本番用途への展開には適さないと記載されています。
# dnf install crypto-policies-pq-preview
(略)
Dependencies resolved.
============================================================
Package Arch Version Repo Size
============================================================
Installing:
crypto-policies-pq-preview
noarch 20250214-1.gitfd9b9b9.el10_0.1
appstream 16 k
Upgrading:
crypto-policies noarch 20250214-1.gitfd9b9b9.el10_0.1
baseos 65 k
crypto-policies-scripts
noarch 20250214-1.gitfd9b9b9.el10_0.1
baseos 115 k
Installing dependencies:
liboqs x86_64 0.12.0-2.el10 appstream 171 k
oqsprovider x86_64 0.8.0-5.el10 appstream 173 k
Transaction Summary
============================================================
Install 3 Packages
Upgrade 2 Packages
(略)
Upgraded:
crypto-policies-20250214-1.gitfd9b9b9.el10_0.1.noarch
crypto-policies-scripts-20250214-1.gitfd9b9b9.el10_0.1.noarch
Installed:
crypto-policies-pq-preview-20250214-1.gitfd9b9b9.el10_0.1.noarch
liboqs-0.12.0-2.el10.x86_64
oqsprovider-0.8.0-5.el10.x86_64
Complete!
ここで、サブポリシーの元々の設定を確認しておくと LEGACY でした。
# update-crypto-policies --show LEGACY
PQC を試すためにサブポリシー TEST-PQ を設定し、推奨に従いリブートしました。
# update-crypto-policies --set DEFAULT:TEST-PQ (略) Setting system policy to DEFAULT:TEST-PQ Note: System-wide crypto policies are applied on application start-up. It is recommended to restart the system for the change of policies to fully take place. # reboot
再起動後、再度、サブポリシーを確認すると、DEFAULT:TEST-PQ となっています。
# update-crypto-policies --show DEFAULT:TEST-PQ
Openssl による PQC 鍵生成や署名
crypto-policies-pq-preview パッケージをインストールした状態で、openssl で利用できる署名アルゴリズムの一覧を見てみると、以下のような内容が出力されます(以下は一般ユーザでコマンド実行)。
$ openssl list -signature-algorithms
{ 1.2.840.113549.1.1.1, 2.5.8.1.1, RSA, rsaEncryption } @ default
{ 1.2.840.10040.4.1, 1.2.840.10040.4.3, 1.3.14.3.2.12, 1.3.14.3.2.13, 1.3.14.3.2.27, DSA, DSA-old, DSA-SHA, DSA-SHA1, DSA-SHA1-old, dsaEncryption, dsaEncryption-old, dsaWithSHA, dsaWithSHA1, dsaWithSHA1-old } @ default
{ 1.3.101.112, ED25519 } @ default
{ 1.3.101.113, ED448 } @ default
ECDSA @ default
(略)
mldsa44 @ oqsprovider
(略)
mldsa65 @ oqsprovider
(略)
mldsa87 @ oqsprovider
(略)
OpenSSL 標準プロバイダー(@ default)で提供されている従来の署名アルゴリズム(RSA や ECDSA、DSA など)の他に、PQC アルゴリズムを利用できるようにする拡張モジュール(Open Quantum Safe provider(@ oqsprovider))によって mldsa44, mldsa65, mldsa87 などがリストに挙がっていることが見てとれます。ここで、Open Quantum Safe(OQS)は、耐量子暗号を実装・普及させるためのオープンソースプロジェクトです。また、mldsa は、NIST が 2024 年に FIPS 204 として標準化した耐量子計算機暗号で、正式名称は ML-DSA(Module-Lattice Digital Signature Algorithm)であり、数字(44, 65, 87 など)はパラメータセット(いわゆる鍵強度)を表します。
例えば、mldsa65 の秘密鍵を openssl で生成し、内容を確認すると以下のようになります。
$ openssl genpkey -algorithm mldsa65 -out mldsa-privatekey.pem
$ cat mldsa-privatekey.pem
-----BEGIN PRIVATE KEY-----
MIIXeAIBADALBglghkgBZQMEAxIEghdkBIIXYOxEygP5ApyxDSEQ8i0Y8E6Q1FWC
nzU9x3kMToDsd/Xy4OuD0aFNOqyrLSoaQ7l/g/xoNIkDUcz0Q7xaDjrr4QOss46d
(略)
lajAF7bD5PcPYKIOBfz+3h14ql9P8BS/8G+ttlDPgXATJn48DKUmaYuglIksRMwr
UjHpR85tU1d2nouhnZ3shQBkEdq8Uw32XT8Dw8csPw5XzzvT+I8j7lo3gKgUqVBJ
tImU/3OItFCZkqss
-----END PRIVATE KEY-----
$ openssl pkey -in mldsa-privatekey.pem -text -noout
mldsa65 private key:
PQ key material:
ec:44:ca:03:f9:02:9c:b1:0d:21:10:f2:2d:18:f0:
4e:90:d4:55:82:9f:35:3d:c7:79:0c:4e:80:ec:77:
(略)
28:43:bc:8d:5e:69:f2:5d:eb:c6:47:bf:d9:8d:e8:
6a:84:17:b6:57:d1:77:43:98:99:31:41:32:bc:7e:
ff:c8:74:79:80:80:95:84:d0:09:f9:88
対応する公開鍵を抽出すると以下のようになります。
$ openssl pkey -in mldsa-privatekey.pem -pubout -out mldsa-publickey.pem
$ cat mldsa-publickey.pem
-----BEGIN PUBLIC KEY-----
MIIHsjALBglghkgBZQMEAxIDggehAOxEygP5ApyxDSEQ8i0Y8E6Q1FWCnzU9x3kM
ToDsd/XyNP7NAxGkXo7ugA5HQVKtlbRqV02DWzYLHWIJT6tGRLiukGPoVUVQIE2T
(略)
5PcPYKIOBfz+3h14ql9P8BS/8G+ttlDPgXATJn48DKUmaYuglIksRMwrUjHpR85t
U1d2nouhnZ3shQBkEdq8Uw32XT8Dw8csPw5XzzvT+I8j7lo3gKgUqVBJtImU/3OI
tFCZkqss
-----END PUBLIC KEY-----
$ openssl pkey -in mldsa-publickey.pem -pubin -text -noout
mldsa65 public key:
PQ key material:
ec:44:ca:03:f9:02:9c:b1:0d:21:10:f2:2d:18:f0:
4e:90:d4:55:82:9f:35:3d:c7:79:0c:4e:80:ec:77:
(略)
c7:2c:3f:0e:57:cf:3b:d3:f8:8f:23:ee:5a:37:80:
a8:14:a9:50:49:b4:89:94:ff:73:88:b4:50:99:92:
ab:2c
PQC 秘密鍵を用いたメッセージへの署名と、公開鍵を用いたその検証の例としては以下のとおりです。
$ echo "test" >message $ openssl dgst -sign mldsa-privatekey.pem -out signature_message message $ openssl dgst -verify mldsa-publickey.pem -signature signature_message message Verified OK
PQC として ML-DSA65 を用いたメッセージへの署名、およびその検証を正常に試すことができました。
「その1」はここまでとなります。
次回「その2」では、ハイブリッド鍵交換 (X25519MLKEM768) を Apache で試します。
関連 Web サイト
お問い合わせ
IT 環境全体が PQC レディーになるにはまだ多少時間を要するものと想像しますが、その中でご質問・相談事項などございましたら、お気軽にお問い合わせください(問合せ先:pqctrial@cybertrust.co.jp)。
* AlmaLinux は、The AlmaLinux OS Foundation の商標です。
* Linux は、Linus Torvalds 氏の日本およびその他の国における登録商標または商標です。
* Red Hat、Red Hat Enterprise Linux は、米国およびその他の国における Red Hat, Inc. およびその子会社の商標または登録商標です。
* その他、記載されている会社名、製品名、サービス名は、当社または各社、各団体の商標もしくは登録商標です。









