格子基底簡約ツール
1行に1件。意味は「入力モード」で決まります。格子基底は1行に1ベクトル、ナップサックは a1,...,an; 目標値S、公開鍵は w1,...,wn; c と書きます
入力モード:
アルゴリズム:
基底ベクトル出力:
反復ステップ:
計算結果
CSVをダウンロード
| 番号 | 種類 | ベクトル / 項目 | 値 | 説明 |
|---|
ツールの紹介と使い方
このツールは暗号学の教育とセキュリティ研究向けです。LLL 格子基底簡約がなぜ有効か、低密度部分和(ナップサック)暗号がなぜ破られるかをデモします。学習と許可済みのセキュリティテストのみに使用し、許可のないシステム攻撃には使わないでください。
1行1グループで入力し、意味は「入力モード」で決まります。
精度のトレードオフ:基底ベクトルは終始 BigInt で正確に保持し、Gram-Schmidt の μ と ‖b*‖² は Number の浮動小数点数で計算します。これにより実装がシンプルで高速になり、単一値のビット長 ≤ maxBits(デフォルト 128)なら検出余裕は十分で、ビット長超過時は明確に通知します。
安全策:次元 ≤ maxDim(デフォルト 12、LLL は O(n⁴) 規模)、数値 ≤ maxBits ビット、反復 ≤ 10000 回(超過時は無限ループにせず明確通知)、出力行数 ≤ maxRows。ナップサック攻撃で解を見つけた後は必ず代入検算して部分和 = 目標値を確認し、検証不可や短ベクトル未発見の場合は「今回は復元できませんでした(密度過高 / 次元過大)」と通知し、成功を偽りません。
1行1グループで入力し、意味は「入力モード」で決まります。
lattice は1行に1つの基底ベクトル(例:1,1,1);knapsack は1行に a1,...,an; 目标和S(例:1,3,5,11,21; 24);publickey は1行にナップサック公開鍵と暗号文 w1,...,wn; c を書きます。精度のトレードオフ:基底ベクトルは終始 BigInt で正確に保持し、Gram-Schmidt の μ と ‖b*‖² は Number の浮動小数点数で計算します。これにより実装がシンプルで高速になり、単一値のビット長 ≤ maxBits(デフォルト 128)なら検出余裕は十分で、ビット長超過時は明確に通知します。
安全策:次元 ≤ maxDim(デフォルト 12、LLL は O(n⁴) 規模)、数値 ≤ maxBits ビット、反復 ≤ 10000 回(超過時は無限ループにせず明確通知)、出力行数 ≤ maxRows。ナップサック攻撃で解を見つけた後は必ず代入検算して部分和 = 目標値を確認し、検証不可や短ベクトル未発見の場合は「今回は復元できませんでした(密度過高 / 次元過大)」と通知し、成功を偽りません。
操作手順
- 選択した入力モードに従い、行列・部分和インスタンス・ナップサック公開鍵を1行ずつ入力欄に貼り付けます。
- 入力モードとアルゴリズムを選択し、δ パラメータや次元の上限などを入力します。
- 実行ボタンをクリックします。
- 簡約基底または攻撃結果を確認し、コピーまたはエクスポートします。
掲示板
すべての投稿 →-
まだ誰も書いていません。最初の一人になりませんか?