這篇討論一下中國剩余定理(Chinese Remainder Theorem),高斯算法(Gauss's algorithm)解決同步線性同余(simultaneous linear congruences)的問題拉庵、簡單的方法去解決小模數(shù)(small moduli)同余扶平、RSA低加密指數(shù)廣播攻擊的原理(theorem to break the RSA algorithm when someone sends the same encrypted message to three recipients using the same exponent of e=3塔嬉,又叫Johan Hastad廣播攻擊)
中國剩余定理 The Chinese Theorem
定理:有整數(shù)
,
,那么線性同余系統(tǒng)
定理說有唯一解莹汤,并不是說如何去求解快鱼。這個通常使用高斯算法(Gauss's algorithm)。中國剩余定理更多的時候是用在對RSA算法進行提速纲岭。
中國剩余定理在《孫子算經(jīng)》中的問題是:今有物不知其數(shù)抹竹,三三數(shù)之剩二,五五數(shù)之剩三止潮,七七數(shù)之剩二窃判,問物幾何?在現(xiàn)代數(shù)論種我們把它寫成解同余問題喇闸。
高斯算法 Gauss's algorithm
算法:有
那么
《孫子算經(jīng)》的例子
《孫子算經(jīng)》上面原始的中國剩余定理的題目有:
低加密指數(shù)廣播攻擊RSA Johan Hastad attack
Alice發(fā)送您相同的RSA加密消息m給三個接收方袄琳,使用了不同的模數(shù)询件,這些模數(shù)互質(zhì),但是他們使用了相同的指數(shù)
唆樊。Eve恢復(fù)出了密文值
并且知道三個接收方的公鑰
宛琅。Eve是否可以在不分解模數(shù)的情況下,恢復(fù)出消息逗旁?
可以嘿辟。Eve使用高斯算法可以找到解x,在范圍內(nèi)片效,
我們知道红伦,因此可以得到,
,
可以通過簡單的對整數(shù)
求立方根恢復(fù)出來堤舒。
例子
有三個接收方的公鑰色建,我們知道
并且
(實際使用中,會使用更大的N舌缤,不可以分解)
Alice使用RSA算法加密消息給三個接收方箕戳,如下:
這三個密文值被中間人Eve攔截,Eve知道公鑰
国撵。她可以使用高斯算法如下:
所以明文消息是1000的立方根陵吸,
。所以Eve不需要對模數(shù)進行分解就可以恢復(fù)出明文消息介牙。
如何防止以上的攻擊
- 使用大指數(shù)壮虫,比如65537(0x10001)。這樣使用上面的攻擊方法將會變得很困難环础。
- 添加一些隨機比特到消息中囚似,至少64比特。確保每次消息加密都添加了不同的隨機數(shù)线得。這種加鹽的方法也可以防止許多其他的攻擊饶唤。顯然,接收方也需要知道如何在解密后去除填充的隨機數(shù)贯钩。