為了完成這學期密碼學的大作業(我們選的是調研 modular e-th root 的相關問題),最近讀了這篇結論有趣的 Breaking RSA Generically Is Equivalent to Factoring,在這裡分享給大家。
破解 RSA 系統究竟有多困難?有人猜測它的難度與質因數分解相等,的確假如能在多項式時間內知道 的分解,就能在多項式時間內求出私鑰 。但如何證明破解 RSA 能規約成質因數分解,仍是一個 open problem。
破解 RSA 的一個等價問題是求出密文的 e 次方根。所以這篇 Aggarwal 和 Maurer 發表於2009年的文章就證明瞭這個方向的一個較弱命題:如果存在一個在多項式時間求解 modular e-th root 的 generic ring algorithm,那麼就能在多項式時間內找到合數 的質因子。
簡單來講,一個 generic ring algorithm (後簡稱 GRA) 中的每一步,要麼是某個交換環的分式域 (這篇文章裏是模 的多項式環 的分式域)中兩個元素的運算(加,減,乘,除),要麼是判斷兩個環元素是否相等的條件語句。為了避免除法,我們可以將分式域中的每一個元素用一對多項式(分子,分母) 來表示。這樣演算法的每一步可以表示成
我們將一個一般意義上的 (probabilistic) GRA 看做若干 deterministic GRA 依概率的組合,而對於每個 deterministic GRA,可以將每一步運算看做節點,用一棵樹來表示(如下圖所示)。演算法輸入數據首先作用於根結點,最後經過葉子節點的運算後輸出。我們把這棵樹上的每一條從根節點出發,不重複經過節點,並含有 L 次四則運算的路徑稱為一個 L-step straight line program (以後簡稱為 SLP)。簡單來說,一個 SLP 就是不包含條件判斷語句的 GRA。
一個 GRA 以 為輸入,以 為輸出,如果 ,則演算法成功求出 x 的 e 次方根。
一些常用的操作(例如用二進位表示十進位數,然後XOR)仍然不能由域運算實現,因此 GRA 是一個比 probabilistic algorithm 小的集合。
對於多項式 ,我們令
為 的根所佔的比例,令 為 的值與 有非平凡 gcd (即 蘊含了 n 的因子) 的比例。關於 的值,我們有如下兩個Lemma:
Lemma 1: For any , if , then .Lemma 2: Let be a prime. A random monic polynomial of degree d is irreducible in with probability at least and has a root in with probability at least .
Lemma 1: For any , if , then .
當 為質數時,為歐氏整區,其上的多項式也可以通過輾轉相除法求出最大公約式。而當 是合數時,輾轉相除法可能會失敗,返回一個最高次係數與 有非平凡公因子的餘式。而判斷輾轉相除法是否會失敗,可以通過比較在不同 上( 為 的質因子)求得的 gcd 最高次數是否相等。此處給出如下命題:
瞭解這些數學知識後,我們就可以真正開始定理的證明瞭!
整篇文章的思路比較簡單,首先通過樹表示上的路徑,將modular eth root 的 GRA 轉化為 SLP 或 n 的質因數分解,然後通過輾轉相除法將 SLP 轉化為 n 的質因數分解。( 如果你不追究細節的話,可以跳過下面兩節不看了)
對於一個 GRA G,令輸入 x 遵循 的均勻分佈,令 為 G 成功輸出 x 的 e 次方根的概率。
證明的第一步,就是驗證能通過一個概率演算法,將一個在 中能高概率成功求解 modular e-th root 的 GRA 以 的概率轉化為一個高概率求解 modular e-th root 的 SLP,或者輸出 n 的質因數。
現在來簡述這一步的證明思路:
對於步數不大於 L 的 GRA G,我們考慮它對應的樹,對於其代表相等判斷的節點 v 和輸入 ,假如 (這裡 可以視作一個小量),則稱這樣的 v 為 non-extreme vertex (反之,則稱為 extreme vertex)。
將 GRA 轉化為(因數分解 或 SLP)的演算法是這樣進行的:從樹的根結點開始向下走,當我們遇到一個 non-extreme vertex 時,根據 Lemma 1 可以得知,反覆 次隨機 sample 並求 ,得到一個 n 的質因數的概率不小於 .
而當我們遇到一個 extreme vertex 時,可以通過隨機 sample 並計算 估計這一步之後最有可能走入哪一個分支,並繼續這個分支的下一個運算。倘若在到達葉節點時仍未遇到 non-extreme vertex,我們就得到了一個求解 modular e-th root 的 SLP。此時,由於至少有 比例的輸入經過我們選擇的每一個分支,SLP 成功輸出 e-th root 的概率至少為 .
選取參數 ,我們就能滿足引理中的條件。演算法的詳細描述如下:
第二步是證明一個求解 modular e-th root 且成功概率不小於 的 L-step SLP 能在多項式時間內,以不小於 的成功概率輸出 的質因子。假設SLP的輸出是 ,令 ,則 . 基於 SLP 的質數分解演算法如下:
根據第二部分的 Proposition 1,當 或者 時,演算法就會成功。因此,我們只需要 lower bound 這兩種情況發生的概率。
又由於 Lemma 2, 同時在 有根 ,並在 中不可約的概率至少為 . 在下面的討論中,假設 滿足這兩種性質。此時分為兩種情況:
綜上所述,演算法第 5,6 行輸出 的質因子的概率不小於 .
結合 Step 1 與 Step 2 的結果:假設某個 GRA 破解 RSA 的成功概率至少是 ,令第一步結論中的 ,我們就在 時間內,以不小於 的概率求出 n 的質因子。對整個演算法時間複雜度的分析,這裡就不給出了。
可以發現,第 2 步的演算法和證明對於任意非常值且能進行取模運算(最高次係數不是 p, q 的倍數)的多項式都成立。
這篇文章並沒有指出破解 RSA 與 factorization 的難度相比如何,但至少證明瞭,不通過 factoring 破解 RSA 的多項式時間演算法至少是 non generic 的(也就是說,一定會用到 bit manipulation 等域運算以外的操作)。
對這篇文章的介紹就到這裡啦,很多地方講得不嚴謹,有興趣的話建議直接閱讀原文
寫文章單純是為了督促和記錄學習,個人覺得把學到的東西講出來(一定程度上)有助於梳理思路,所以如果發現有理解上的偏差,歡迎指出。以後的文章大概都會是這種比較簡單無聊的畫風,大佬們姑且隨便看看就行啦 2333
推薦閱讀: