PKCS #11で耐量子署名アルゴリズムLMSを使用

wolfSSLはPKCS #11 コンシューマをサポートしています。コンフィギュレーションオプション –enable-pkcs11 を有効にしてビルドするだけで、すぐにサンプルプログラムを動作させることができます。
そして実は、PKCS #11 プロバイダも同様にサポートしています。詳しくはこちらのGitHubリポジトリをご覧ください。

PKCS #11には、ステートフルな耐量子署名アルゴリズム LMS/HSSがすでに仕様として組み込まれています。最新仕様で示された、秘密鍵のテンプレート定義の例を以下に示します。

CK_OBJECT_CLASS keyClass = CKO_PRIVATE_KEY;
CK_KEY_TYPE keyType = CKK_HSS;
CK_UTF8CHAR label[] = "An HSS private key object";
CK_ULONG hssLevels = 123;
CK_ULONG lmsTypes[] = {123,...};
CK_ULONG lmotsTypes[] = {123,...};
CK_BYTE value[] = {...};
CK_BBOOL true = CK_TRUE;
CK_BBOOL false = CK_FALSE;
CK_ATTRIBUTE template[] = {
    {CKA_CLASS, &keyClass, sizeof(keyClass)},
    {CKA_KEY_TYPE, &keyType, sizeof(keyType)},
    {CKA_TOKEN, &true, sizeof(true)},
    {CKA_LABEL, label, sizeof(label)-1},
    {CKA_SENSITIVE, &true, sizeof(true)},
    {CKA_EXTRACTABLE, &false, sizeof(true)},
    {CKA_HSS_LEVELS, &hssLevels, sizeof(hssLevels)},
    {CKA_HSS_LMS_TYPES, lmsTypes, sizeof(lmsTypes)},
    {CKA_HSS_LMOTS_TYPES, lmotsTypes, sizeof(lmotsTypes)},
    {CKA_VALUE, value, sizeof(value)},
    {CKA_SIGN, &true, sizeof(true)}
}; 

私たちの暗号エンジンwolfCryptはすでにLMS/HSSをサポートしています。PKCS #11インタフェースを介して利用したい場合、そしてML-KEM(FIPS-203)・ML-DSA(FIPS-204)を使用してプロトタイプを実装したい場合には、ぜひ info@wolfssl.jp までお問い合わせください。

原文:https://www.wolfssl.com/lms-in-pkcs11