2

弾む城に実装されている NTRU のデフォルトのセキュリティ レベルには 3 つのタイプがあります。

 1. NTRUSigningKeyGenerationParameters.TEST157
 2. NTRUSigningKeyGenerationParameters.APR2011_439
 3. NTRUSigningKeyGenerationParameters.APR2011_743

最初の 2 つは正常に生成されますが、3 番目のものを生成しようとすると、次の例外が発生します。

SEVERE: パス [] のコンテキストでサーブレット [mvc-dispatcher] の Servlet.service() が例外をスローしました [リクエストの処理に失敗しました。ネストされた例外は java.lang.IllegalStateException: Signing failed: too many retries (max=100)] であり、根本的な原因は java.lang.IllegalStateException: Signing failed: too many retries (max=100) です。

これが私のコードの一部です:

NTRUSigningPrivateKeyParameters ntruSigningPrivateKeyParameters1 = null;

    NTRUSigner ntruSigner = new NTRUSigner(ntruSigningKeyGenerationParameters.getSigningParameters());

    try {
        ntruSigningPrivateKeyParameters1 = new NTRUSigningPrivateKeyParameters(ntruSigningPrivateKeyParameters.getEncoded(), ntruSigningKeyGenerationParameters);
    } catch (IOException e) {

        e.printStackTrace();
    }

    ntruSigner.init(true, ntruSigningPrivateKeyParameters);
    byte [] res = ntruSigner.generateSignature();

ntruSigner.generateSignature()パラメータの 3 番目のセットを使用して呼び出すと、そのような例外が発生します。

誰もそれを解決する方法を知っていますか?

4

3 に答える 3

1

これは実際にはコードのバグではありません。APR2011_743問題は、およびパラメータ セットのノルム バウンドがAPR2011_743_PROD低すぎることです。これは、署名者が有効な署名を生成できないことを意味します。

についてN=743は、約 545 のノルム バウンドを選択する必要がq=2048ありbeta=0.127ます (J. Hoffstein et al.、NTRUSign のパフォーマンスの改善とベースライン パラメーター生成アルゴリズムの方程式 10 を参照)。ただし、BouncyCastle のパラメーター セットは を使用しますnormBound=405。これを変更すると、問題が解決します。

于 2014-04-25T11:21:00.900 に答える
1

現在、これはバグであるため、2 つの解決策があります。

  1. 別のライブラリを使用 - tbuktu の github プロジェクト(私が見るように、弾む城はいくつかの変更を加えてそれを使用しています)
  2. ソースをダウンロードし、この生成パラメータのバグをキャッチして解決し、プロジェクトのライブラリにパックします
于 2014-04-20T11:31:44.583 に答える
1

normBound を更新すると問題が解決するように見えますが、Bouncy Castle では NTRUSigner クラスが非推奨になったことを指摘しておく必要があります。NTRU 署名アルゴリズムは、1 年ほど前にひどく壊れていることが示されました。見る:

http://www.di.ens.fr/~ducas/NTRUSign_Cryptanalysis/DucasNguyen_Learning.pdf

詳細については。

于 2014-04-26T23:07:55.993 に答える