• 沒有找到結果。

因數分解法在 RSA 破密是重要的研究議題之一,相關研究早在多年前 已有很多數學家提出,試除法、Pollard p − 1法、Pollard rho Algorithm、

費馬因數分解法,直到 RSA 密碼系統出現才又有研究投入這個方向而產 生、迪克森因數分解法、二次篩選法、多個多項式二次篩選法、特殊數域 篩選法、普通數域篩選法,實際破解 RSA 系統,通常分解到 512 位元以上 之整數,會採用普通數域篩選法是最常使用並且為目前最好的因數分解 法,但實驗中個人電腦分解整數受限與資源,只好採用在 300 位元以下最 適合的二次篩選法。在研究中是以個人電腦為實驗工具,所以我們用二次 篩選法為我們主要的演算法,其精神在於找到一個在模𝑛的運算下存在𝑥

2

的同餘右式為𝑦

2

使 (𝑥 + 𝑦)(𝑥 − 𝑦)分別可能有𝑛的因數存在(1),其方法除了

9

因數分解的篩選法外還囊括解線 0-1 性方程組(0-1 linear equation)找線性相 依的問題,而在解線性相依方程組的演算法我們將會以高斯消去法為主。

𝑥

2

≡ 𝑦

2

( 𝑛)

(𝑥

2

− 𝑦

2

) ≡ ( 𝑛) (1)

2.1.1. Pollard

𝒑 − 𝟏法

Pollard 𝑝 − 1法[2]由 John Pollard 提出,Pollard 根據費馬小定理中若存 在 任 意 整 數𝑎 而𝑎

𝑝−1

≡ 1(mod 𝑝)的同時存在一個整數𝑞 ,且𝑝 − 1|𝑞 則 𝑝|𝑎

𝑞

− 1當我們檢查GCD(𝑎

𝑞

− 1, 𝑛)不等於 1 時,就表示找到𝑛的一個因數,

對於𝑞值的決定方法為對分解的𝑛選定一個上限值𝐵,要求出比⌊√𝑛⌋小且為 𝐵-smooth 的數之最小公倍數當作𝑞。若𝑞不是𝑝 − 1的倍數,則必頇重新選 擇上限值𝐵再重新計算。

Pollard

𝒑 − 𝟏:

input: 𝑛 output:𝑝, 𝑞

Step1.Choose

𝐵, 𝜖ℕ𝑛 = 𝑝 × 𝑞

Step2.𝑀 = lc (1, … , 𝐵)

Step3.random 𝑎,𝑎 𝑀

− 1( 𝑛)

Step4.𝑝 = GCD(𝑛, 𝑎 𝑀

− 1( 𝑛))

Step5.if(𝑝 = 1 r 𝑛)then goto Step1 else 𝑛 𝑝

= 𝑞

10

2.1.2. ECC 因數分解法

ECC 曲線分解法是由 H.W. Lenstra Jr 於 1985 年所提出,主要概念是利 用橢圓曲線的特性來改善 Pollard 𝑝 − 1法的缺點,在𝑝 − 1法中𝐵值的不當 選取會導致𝑛無法分解成功,最後還是只能重選𝐵值。但利用 ECC 橢圓曲 線的參數等於選取不同的曲線,便可避免這個問題。

2.1.3. 費馬因數分解法

迪克森因數分解法、二次篩選法、多個多項式二次篩選法、特殊數域 篩選法、普通數域篩選法都是以相同的數學架構下去延伸。其發展源自於 費馬因數分解法(Fermat’s factorization method)。其目的在於決定一個𝑥

2

後 去判別同餘右式𝑧是否為完全平方數(2),若為否則將𝑥 + 1後平方繼續檢查 下去,這方法比較沒有效率但已開啟整個因數分解法的源頭。

𝑥

2

≡ 𝑧( 𝑛) (2)

Fermat’s factorization method:

input:𝑛

output:𝑝, 𝑞

Step1.𝑥 2

≡ 𝑧( 𝑛)

Step2.if( 𝑧 = 𝑦 2

and 𝑥! ≡ 𝑦( 𝑛)) goto Step3 else 𝑥 = (𝑥 + 1) goto Step1

11

Step3.if (𝑝 = GCD(𝑛, (𝑥 − 𝑦)) an 𝑝 ≠ 1 r 𝑛 )or

(𝑞 = GCD(𝑛, (𝑥 + 𝑦)) an 𝑞 ≠ 1 r 𝑛 ) then output 𝑝, 𝑞

else 𝑥 = (𝑥 + 1) goto Step1

2.1.4. 迪克森因數分解法

1981 年 Dixon, J.D.提出由費馬因數分解法改良出來的迪克森因數分解 法(Dixon’s factorization method)[7],其中的不同為 Dixon 並不是去等𝑧為完 全平方數,而是將很多𝑧乘起來變為完全平方數,演算法中的𝑝

1

, 𝑝

2

, ⋯ , 𝑝

𝑚

是 由 2 開始大小為m的質數表,質數表的生成在判斷𝑧是否質因數皆小於𝑝

𝑚

, 若成立代表𝑧為𝑚的 B-smooth,並檢查質數𝑝的指數所生成的矩陣𝐴是否擁 有全偶數組合,在這樣的條件下可將矩陣所有的值做𝐺𝐹(2)的運算,使矩 陣原素只有 0 與 1 再做高斯消去法找線性相依矩陣向量為 0 的行列式,即 𝐴𝑑 = 𝑏, 𝑏 = 如 Step5 所示。

Dixon’s factorization method:

input:𝑛, 𝑘 output:𝑝, 𝑞

Step1.𝑥 𝑖

= (𝑥

𝑖

+ 1)

Step2.𝑥 𝑖 2

≡ 𝑧( 𝑛)

Step3.𝑥 𝑖+1

= 𝑥

𝑖

, 𝑖 = (𝑖 + 1) goto Step2 until 𝑖 = 𝑘 then goto Step4.

Step4.

𝑥

1 2

≡ 𝑧

1

= 𝑝

1 𝑎

11𝑝

2 𝑎

12… 𝑝

𝑚 𝑎

1𝑚( 𝑛) 𝑥

2 2

≡ 𝑧

2

= 𝑝

1 𝑎

21𝑝

2 𝑎

22… 𝑝

𝑚 𝑎

2𝑚( 𝑛)

𝑥

𝑘 2

≡ 𝑧

2

= 𝑝

1 𝑎

𝑘1𝑝

2 𝑎

𝑘2… 𝑝

𝑚 𝑎

𝑘𝑚( 𝑛)

, 𝑝

𝑗

∈ pri e.

12

Step5.s lve [

𝑎

11

𝑎

12

⋯ 𝑎

1𝑚

𝑎

21

𝑎

22

⋮ ⋮

𝑎

2𝑚

𝑎

𝑘1

𝑎

𝑘2

⋯ 𝑎

𝑘𝑚

]

𝑇

× [ 𝑑

1

𝑑

2

𝑑

𝑘

] ≡ [] ( 2)

Step6.∏ 𝑘 𝑖=1,𝑖∈𝑑

𝑥

𝑖 2

≡ ∏

𝑘 𝑖=1,𝑖∈𝑑

𝑧

𝑖

( 𝑛), ∏

𝑘 𝑖=1,𝑖∈𝑑

𝑥

𝑖 2

= 𝑋

2

、 ∏

𝑘 𝑖=1,𝑖∈𝑑

𝑧

𝑖

= 𝑌

2 Step7.if (𝑝 = GCD(𝑛, (𝑋 − 𝑌)) and 𝑝 ≠ 1 or 𝑛)

or (𝑞 = GCD(𝑛, (𝑋 + 𝑌)) and 𝑞 ≠ 1 or 𝑛 ) then output 𝑝, 𝑞

else 𝑥

0

= 𝑥

𝑖

, 𝑖 = goto Step1

上述組合之解𝑑

𝑖

以高斯消去法便可找到線性相依而得到 Fermat 因數分 解法的𝑥

2

≡ 𝑦

2

(mod 𝑛),使因數分解法不再是憑運氣而是去有效的解矩陣 線性相依問題。

2.1.5. 二次篩選法

1982 年 Carl Pomerance 提出二次篩選法(Quadratic Sieve) [1][8][9]將 Dixon 因數分解改進,將質數表篩選成𝐹𝑎𝑐𝑡𝑜𝑟𝐵𝑎𝑠𝑒 ( 𝐹𝐵),如此便可縮小𝐹𝐵 來加速檢測 B-smooth 的效率,𝐹𝐵 = *𝑝

𝑗

: 𝑝

𝑗

is prime and (

𝑛

𝑝 𝑗

) = 1 for 𝑝

𝑗

<

𝐵+。判斷𝑛是否為𝑝的二次剩餘數,使分解的成功率增加。𝐵將會以質數分 布估計的數學式去產生(3)。如此可縮小𝐹𝐵加速檢測𝐵-smooth 的效率,使 分解成功率增加。

𝐵 = e p ((1

2+ 𝑜(1))(l g𝑛l gl g𝑛)

1 2

) (3)

13

Quadratic Sieve:

input:𝑛 input:𝑝, 𝑞

Step1.Choosing 𝐵, 𝑖 = , 𝑥 𝑖

= ⌊√𝑛2 ⌋, 𝑚 = 𝐹𝐵′𝑠 size 𝐹𝐵 = *𝑝

𝑗

: 𝑝

𝑗

is pri e an (

𝑝 𝑛

𝑗) = 1 for 𝑝

𝑗

< 𝐵+,

Step2.𝑥 𝑖

= (𝑥

𝑖

+ 1)

Step3.𝑥 𝑖 2

≡ 𝑧

𝑖

( 𝑛)

Step4.if 𝑥 𝑖 2

≡ 𝑧

𝑖

= 𝑝

1 𝑎

𝑖1𝑝

2 𝑎

𝑖2… 𝑝

𝑚 𝑎

𝑖𝑚( 𝑛), 𝑝

𝑗

∈ 𝐹𝐵 then 𝑥

𝑖+1

= 𝑥

𝑖

, 𝑖 = (𝑖 + 1) else goto Step2.

Step5.goto Step2 until

𝑖 = 𝑚 then goto Step6.

Step6.s lve [

𝑎

11

𝑎

12

⋯ 𝑎

1𝑚

𝑎

21

𝑎

22

⋮ ⋮

𝑎

2𝑚

𝑎

𝑚1

𝑎

𝑚2

⋯ 𝑎

𝑚𝑚

]

𝑇

× [ 𝑑

1

𝑑

2

𝑑

𝑘

] ≡ [] ( 2)

Step7.∏ 𝑘 𝑖=1,𝑖∈𝑑

𝑥

𝑖 2

≡ ∏

𝑘 𝑖=1,𝑖∈𝑑

𝑧

𝑖

( 𝑛), ∏

𝑘 𝑖=1,𝑖∈𝑑

𝑥

𝑖 2

= 𝑋

2

、 ∏

𝑘 𝑖=1,𝑖∈𝑑

𝑧

𝑖

= 𝑌

2 Step8.if

(𝑝 = GCD(𝑛, (𝑋 − 𝑌)) and 𝑝 ≠ 1 or 𝑛)

or(𝑞 = GCD(𝑛, (𝑋 + 𝑌)) and 𝑞 ≠ 1 or 𝑛) then output 𝑝, 𝑞

else 𝑥

0

= 𝑥

𝑖

, 𝑖 = goto Step2.

改進後的二次篩選法使挑選過後的質數表能更容易分解大整數,提高分 解的效率並減少質數數量。

2.1.6. 多個多項式二次篩選法

多個多項式二次篩選法(Multiple Polynomial Quadratic Sieve)[10]於 1987 年由 R.D. Silverman 發展出來,在二次篩選法中多項式二次系數固定 為 1,當篩選範圍增加就不容易找到符合 smooth 的數,而多個多項式二次 篩選法藉由二次數不一定為 1,藉以提高找到 smooth 的機率,由於多項式

14

不是固定的,因此可以造出許多多項式同時分解,首先對多項式選取系數,

多項式系數頇滿足下列條件運算出𝑎、𝑏、𝑐,𝑓(𝑥) = 𝑎𝑥

2

+ 𝑏𝑥 + 𝑐

b

2

≡ 4𝑎𝑐 (mod 𝑛)and .

𝑛 𝑎

/ = 1則在模𝑛下𝑓(𝑥)會是一個完全平方數,故在分解前 會先決定多項式。

Multiple Polynomial Quadratic Sieve:

Input:𝑛, 𝑘 Output:𝑝, 𝑞

Step1.Choosing

𝐵, 𝐹𝐵 = *𝑝

𝑗

: 𝑝

𝑗

is prime and (

𝑝 𝑛

𝑗) = 1 for 𝑝

𝑗

< 𝐵+

Step2.Computing

𝑎、𝑏、𝑐 for 𝑓(𝑥) = 𝑎𝑥

2

+ 𝑏𝑥 + 𝑐,b

2

≡ 4𝑎𝑐 (mod 𝑛),and .

𝑎 𝑛

/ = 1

Step3.𝑥 𝑖

= (𝑥

𝑖

+ 1), 𝑖 = (𝑖 + 1)

Step4.𝑓(𝑥 𝑖

) ≡ 𝑧(mod 𝑛)

Step5.goto Step3 until

𝑖 = 𝑘 then goto Step6.

Step6.

𝑥

1 2

≡ 𝑧

1

= 𝑝

1 𝑎

11𝑝

2 𝑎

12… 𝑝

𝑚 𝑎

1𝑚(mod 𝑛) 𝑥

2 2

≡ 𝑧

2

= 𝑝

1 𝑎

21𝑝

2 𝑎

22… 𝑝

𝑚 𝑎

2𝑚(mod 𝑛)

𝑥

𝑘 2

≡ 𝑧

2

= 𝑝

1 𝑎

𝑘1𝑝

2 𝑎

𝑘2… 𝑝

𝑚 𝑎

𝑘𝑚(mod 𝑛)

, 𝑝

𝑗

∈ 𝐹𝐵.

Step7.sovle linear dependent

[

𝑎

11

𝑎

12

⋯ 𝑎

1𝑚

𝑎

21

𝑎

22

⋮ ⋮

𝑎

2𝑚

𝑎

𝑘1

𝑎

𝑘2

⋯ 𝑎

𝑘𝑚

]

𝑇

× [ 𝑑

1

𝑑

2

𝑑

𝑘

] ≡ [] ( 2)

Step8.∏ 𝑘 𝑖=1,𝑖∈𝑑

𝑥

𝑖 2

≡ ∏

𝑘 𝑖=1,𝑖∈𝑑

𝑧

𝑖

(mod 𝑛), ∏

𝑘 𝑖=1,𝑖∈𝑑

𝑥

𝑖 2

= 𝑋

2

、 ∏

𝑘 𝑖=1,𝑖∈𝑑

𝑧

𝑖

= 𝑌

2 Step9.if

(𝑝 = GCD(𝑛, (𝑋 − 𝑌)),

𝑛 𝑝

≠ 𝑞) r (𝑞 = GCD(𝑛, (𝑋 + 𝑌)),

𝑛 𝑞

≠ 𝑝 )

then 𝑥

0

= 𝑥

𝑖

, 𝑖 = goto Step1 else output 𝑝, 𝑞

15

2.1.7. 數域篩選法

數域篩選法(Number Field Sieve)[11][12]是由 John Pollard 所提出針對 不同的分解對象數域篩選法有兩種形式: (一) Special Number Field Sieve 適 用於𝑛 = 𝑐

1

𝑟

𝑡

+ 𝑐

2

𝑠

𝑢

形式的整數;(二)General Number Field Sieve 適用於任 意形式的整數。General Number Field Sieve 在目前為最快最有效率的分解 方法,2009 年 RSA-768 就是以此因數分解法所分解成功,其中理論基礎 包含代數數論中的環論,將原本的 Quadratic Sieve 與代數數域做結合,使 得分解中可篩選的數範圍擴大並以環論中 ideal 的概念引入做分解的 𝐹𝑎𝑐𝑡𝑜𝑟𝐵𝑎𝑠𝑒,也就依下圖所示 Quadratic Sieve 一開始的分解數域在ℤ,θ-之 內,而 GNFS 將範圍擴張到代數數ℭ,使篩選的機會與範圍都增加。

圖 2.1. 數域篩選法表示圖

相關文件