はじめに
こちらのAWSブログを読んでポスト量子暗号について気になったので、今AWSで使えるポスト量子暗号の機能をさわってみました。
概要
AWS Transfer Familyでは、従来から使用されているECDHと、耐量子暗号のKyberという方式の両方を使用するハイブリッド鍵交換がサポートされています。
実施にあたり以下の情報を参考にさせていただきました。
https://docs.aws.amazon.com/transfer/latest/userguide/post-quantum-security-policies.html
https://github.com/open-quantum-safe/openssh/blob/OQS-v9/README.md
https://zenn.dev/shutendohg/articles/241224-advent-oqsssh
手順
AWS Transfer Familyのマネジメントコンソールからサーバーを作成する
暗号化アルゴリズムのオプションのみデフォルト値から変更し、TransferSecurityPolicy-PQ-SSH-Experimental-2023-04を選択してSFTPサーバーを作成します。
ハイブリッドポスト量子鍵交換をサポートするSFTPクライアントを用意する
今回はUbuntu 24.04.1 LTSのインスタンスにてOQS OpenSSHを使用しました。
必要な依存関係をインストールします。
apt install -y autoconf automake cmake gcc libtool libssl-dev make ninja-build zlib1g-dev
OQSのリポジトリをクローンします。
※AWSユーザーガイドではOQS-v8が使用されていますが、私の環境ではうまくビルドできなかったためv9を使用しました。
git clone -b OQS-v9 https://github.com/open-quantum-safe/openssh.git
opensshディレクトリに移動します。
cd openssh/
liboqsをビルドします。
./oqs-scripts/clone_liboqs.sh
./oqs-scripts/build_liboqs.sh
OpenSSHをビルドします。
./oqs-scripts/build_openssh.sh
テストします。
./oqs-test/run_tests.sh
鍵を作成し、サーバーにユーザーを追加する
鍵を作成します。
./ssh-keygen -t ssh-ed25519 -f ~/test/id_ssh-ed25519
AWS Transfer Familyのマネジメントコンソールからユーザーを追加します。
SSHパブリックキーにはid_ssh-ed25519.pubの内容を貼り付けます。
Transfer Family SFTPサーバーに接続する
./sftp -S ./ssh -v -o KexAlgorithms=ecdh-nistp384-kyber-768r3-sha384-d00@openquantumsafe.org -i <秘密鍵のファイルパス> <Transfer Familyサーバーに登録したユーザー名>@<Transfer Familyサーバーのエンドポイント名>
出力内容からECDHとKyberのハイブリッドアルゴリズムが使用されていることが読み取れます。
1 2 3 4 5 6 |
OpenSSH_9.7-2024-08_p1, Open Quantum Safe 2024-08, OpenSSL 3.0.13 30 Jan 2024 ... debug1: kex: algorithm: ecdh-nistp384-kyber-768r3-sha384-d00@openquantumsafe.org ... Connected to s-xxxxxxxxxxxxxxxxx.server.transfer.ap-northeast-1.amazonaws.com. sftp> |
おわりに
クライアント側はビルドからだったのでやや手間がかかりましたが、それさえできれば一般的なSFTPと変わらず利用できました。
また今回検証しておりませんが、AWSサービスでは他にもKMS等でポスト量子TLSに対応しているということです。
ポスト量子暗号に関するAWSの今後の対応に注目です。