PythonからPQCを触ってみよう(liboqs-python)
2026.06.20 01:01:51
## introduction
liboqs-pythonというリポジトリがある。
これは耐量子計算機暗号(PQC)のC言語ライブラリliboqsのPythonラッパーとなっていて、PQCを触るに当たって一通りの道具が揃っている。これを利用してPythonからPQCを触れるようにするというのがここでの目標だ。
## liboqsの環境構築
Pythonからliboqsを呼ぶためには、ベースとなるCライブラリ(liboqs)をビルドした上で、Pythonパッケージをインストールする必要がある。
さっそくインストールを進めよう。
## 1. 必要なツールのインストール
Cライブラリをビルドするため、事前にビルド環境を準備。
liboqs-pythonというリポジトリがある。
これは耐量子計算機暗号(PQC)のC言語ライブラリliboqsのPythonラッパーとなっていて、PQCを触るに当たって一通りの道具が揃っている。これを利用してPythonからPQCを触れるようにするというのがここでの目標だ。
## liboqsの環境構築
Pythonからliboqsを呼ぶためには、ベースとなるCライブラリ(liboqs)をビルドした上で、Pythonパッケージをインストールする必要がある。
さっそくインストールを進めよう。
## 1. 必要なツールのインストール
Cライブラリをビルドするため、事前にビルド環境を準備。
brew install cmake gcc openssl
## 2. リポジトリのクローンとインストール
基本的に公式のREADMEに従って進めるだけで完了する。
### liboqsの設定、ビルド、インストール
最新のソースコードをクローンして、CMakeでビルドしている。
最後の行を実行するとパスワードを聞かれるので入力する。
git clone --depth=1 https://github.com/open-quantum-safe/liboqs cmake -S liboqs -B liboqs/build -DBUILD_SHARED_LIBS=ON cmake --build liboqs/build --parallel 8 sudo cmake --build liboqs/build --target install
### Python仮想環境をインストールしてアクティブ化する
ここでは、次の `pip install .` がうまくいくように整備してる。
python3 -m venv venv . venv/bin/activate python3 -m ensurepip --upgrade
### ラッパーの設定とインストール
ここは、liboqs-python を clone してインストールしてるだけ。
git clone --depth=1 https://github.com/open-quantum-safe/liboqs-python cd liboqs-python pip install .
## 3. 動作確認
ここまでで環境構築としては完了。
サンプルコードが用意されているのでそれを実行して確認する。
### 共有鍵の確認(ML-KEM)
python3 examples/kem.py
最後に `Shared secretes coincide: True` が出ればOK
## 署名検証テスト(ML-DSA)
## 署名検証テスト(ML-DSA)
python3 examples/sig.py
最後に `Valid signature? True` が出たらOK
## 乱数の取得確認
## 乱数の取得確認
python3 examples/rand.py
16進数が並べばOK
## ステートフル署名(XMSS)
## ステートフル署名(XMSS)
python3 examples/stfl_sig.py
これはエラーが出る。専用フラグを立ててビルドし直さないといけないっぽい。個人的に触りたいのは ML-KEM と ML-DSA だったし、ステートフル署名はいまのところ触る予定がないので放置する。
ともあれ、これでliboqsが触れるようになった。
## 参照
1. open-quantum-safe/liboqs-python: Python 3 bindings for liboqs (公式リポジトリ)
2. 簡易実装から本番実装へ:Pythonで学ぶML-KEMとliboqs
ともあれ、これでliboqsが触れるようになった。
## 参照
1. open-quantum-safe/liboqs-python: Python 3 bindings for liboqs (公式リポジトリ)
2. 簡易実装から本番実装へ:Pythonで学ぶML-KEMとliboqs