採用情報 お問い合わせ

BLOG

研究開発ブログ

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 は説明しています。

そこで、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)。

この記事の著者
 サイバートラスト R&D センター
サイバートラスト R&D センター

「R&D センター」は、2022 年 4 月 1 日に立ち上げられた研究開発部門です。
サイバートラストは、お客様のサービスの信頼性を支えるプラットフォーマーとして、先々のプラットフォームや社会制度、他がどのように変化するのかを考えています。
さまざまな IoT 機器が普及し、OSS や AI やブロックチェーンが活用され、量子コンピュータが発達する一方で、それらによる新たなセキュリティリスクも生じると想像される未来においても、引き続き、安心・安全な社会を実現するため、サイバートラストが果たす役割を含め、研究開発を進めています。

* AlmaLinux は、The AlmaLinux OS Foundation の商標です。
* Linux は、Linus Torvalds 氏の日本およびその他の国における登録商標または商標です。
* Red Hat、Red Hat Enterprise Linux は、米国およびその他の国における Red Hat, Inc. およびその子会社の商標または登録商標です。
* その他、記載されている会社名、製品名、サービス名は、当社または各社、各団体の商標もしくは登録商標です。

CentOS 7 延長サポートサービス
デジタルトランスフォーメーションのための電子認証基盤 iTrust
iTrust SSL/TLS サーバー証明書