2024-09-18

暗号問題です

問題:

抽象数学を用いて、宇宙人レベルで難しい暗号問題作成します。

問題設定:

有限体 F₁₀₁(素数 q = 101)上の多項式環を考えます。具体的には、R = F₁₀₁[x]/(x² + 1) とします。ここで、x² + 1 は F₁₀₁ 上で既約なので、R は 101² 個の元を持つ有限体になります

秘密の要素 s ∈ R を定義します。

公開された要素 a ∈ R が与えられています

エラー項 e ∈ R は小さな係数を持つ多項式で、ここでは計算簡単にするため e = 0 とします。

次の式が成り立ちます

b = a · s + e mod 101

課題:

公開情報として a と b が与えられているとき秘密の要素 s を求めなさい。

具体的な値:
  • a = x + 2
  • b = 45 + 67x
解答:

与えられた式からエラー項 e = 0 なので、

b = a · s mod 101

となります。したがって、

s = b · a⁻¹ mod 101

計算すれば、秘密の要素 s を求めることができます

ステップ1: a の逆元 a⁻¹ を求める

まず、a = x + 2 の逆元 a⁻¹ を計算します。これは次の等式を満たす u ∈ R を見つけることと同じです:

a · u ≡ 1 mod x² + 1

u を一般的な形 u = u₀ + u₁x(u₀, u₁ ∈ F₁₀₁)とします。

乗算を展開します:

a · u = (x + 2)(u₀ + u₁x)

= xu₀ + x²u₁ + 2u₀ + 2u₁x

x² を置き換えます: x² ≡ -1 mod x² + 1 なので、

x²u₁ ≡ -u₁

式を整理します:

a · u ≡ xu₀ - u₁ + 2u₀ + 2u₁x mod x² + 1

≡ (2u₁x + xu₀) + (2u₀ - u₁)

≡ x(u₀ + 2u₁) + (2u₀ - u₁)

等式を設定します:

u₀ + 2u₁ ≡ 0 mod 101 (x の係数が 0 であるため)

2u₀ - u₁ ≡ 1 mod 101 (定数項が 1 であるため)

連立方程式を解きます

1. 最初方程式から

u₀ ≡ -2u₁ mod 101

2. これを2番目の方程式に代入します:

2(-2u₁) - u₁ ≡ 1 mod 101

-4u₁ - u₁ ≡ 1 mod 101

-5u₁ ≡ 1 mod 101

3. 両辺に -1 を掛けます

5u₁ ≡ -1 mod 101

4. 5 の逆元を F₁₀₁ で求めます。つまり、5 · 81 ≡ 1 mod 101 なので、5⁻¹ ≡ 81 mod 101。

5. したがって、

u₁ ≡ -81 mod 101

u₁ ≡ 20 mod 101 (なぜなら -81 + 101 × 1 = 20

6. u₀ を求めます

u₀ ≡ -2u₁ mod 101

u₀ ≡ -2 × 20 mod 101

u₀ ≡ -40 mod 101

u₀ ≡ 61 mod 101 (なぜなら -40 + 101 = 61)

したがって、a⁻¹ は:

a⁻¹ = u = u₀ + u₁x = 61 + 20x

ステップ2: s = b · a⁻¹ mod 101 を計算する

b = 45 + 67x と a⁻¹ = 61 + 20x なので、

s = b · a⁻¹ = (45 + 67x)(61 + 20x) mod x² + 1, 係数は mod 101

乗算を展開します:

s = (45)(61) + (45)(20x) + (67x)(61) + (67x)(20x)

= 2745 + 900x + 4087x + 1340x²

x² ≡ -1 を適用します:

1340x² ≡ -1340

項をまとめます

  • 定数項:

2745 - 1340 = 1405

  • x の項:

900x + 4087x = 4987x

各係数を mod 101 で計算します:

  • 1405 mod 101:

1405 ÷ 101 = 13 余り 92

∴ 1405 mod 101 = 92

  • 4987 mod 101:

4987 ÷ 101 = 49 余り 38

∴ 4987 mod 101 = 38

したがって、秘密の要素 s は:

s = 92 + 38x

答え:

秘密の要素は s = 92 + 38x です。

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん