1. 對稱性加密與非對稱性加密
假設(shè)一個形象理解的場景:
考試時,超模君通過小天給學(xué)渣表妹傳遞答案
-
對稱性加密
-
非對稱性加密
加密和解密規(guī)則:
考試前超模君找到表妹,給了她一張紙片,紙片上有20行數(shù),每行有4個數(shù)字,4個數(shù)字為亂序的1、2、3、4(如下圖所示)
超模君考試時傳遞的小紙條中第一個數(shù)字X1表示紙片中X1行里的第x1個數(shù)字,第二個數(shù)字X2開始表示下一行中的第X2個數(shù)。例如,超模君的紙條上數(shù)字為2123,那么根據(jù)上面的紙片從第二行開始找數(shù)字,得到答案2、4、2、2(下圖所示)
非對稱性加密與對稱性加密最大的區(qū)別就在于非對稱性加密擁有兩把鑰匙,分別為私匙和公匙,其中只有公匙會傳播出去,而私匙只會在自己手中,不會傳播到外界
2. RSA加密算法
2.1. 加密解密原理
RSA算法是1977年由三位麻省理工學(xué)院教授——羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出。RSA就是他們?nèi)诵帐祥_頭字母拼在一起組成的
RSA算法過程:
-
如何得到公匙
和匙
(1) 找出兩個質(zhì)數(shù),一個是
,另一個是
(2) 做一個乘法:
(3) 取一個函數(shù):
(4) 找出公匙
和匙
-
如何加密和解密
假設(shè)傳輸?shù)男畔⒌臄?shù)字為
,接下來我們就可以得到加密公式:
其中
為取余運算
c就是我們發(fā)送出去的加密后的數(shù)字
再來看看解密的公式:
這個余數(shù)就是我們傳輸?shù)男畔ⅰ猰
舉個例子:
(1) 找出兩個質(zhì)數(shù),一個是7,另一個是13
(2)
(3)
(4) 找出公匙
和匙
:
(5) 假設(shè)我們要加密的數(shù)字是
(6) 加密:
(7) 解密:
2.2. 安全性分析
為什么RSA算法是安全的(目前來說)?
在傳輸?shù)倪^程中,(公匙)、
(質(zhì)數(shù)乘積)、
(余數(shù))是可以被黑客竊聽到的,但參考上面加密公式可以知道
(私匙)和
沒有參與加密過程,所以竊聽者并不知道
和
那么竊聽者能不能通過e、n、c算出私匙d呢?
看看用這3個公式黑客能不能算出私匙d:
假設(shè)黑客已經(jīng)監(jiān)聽到了:
根據(jù)公式(1)知:
要想求出
就得知道
,而
因此要想知道
,就得知道
和
,而黑客已經(jīng)知道了
所以只需要對
進行質(zhì)因式分解,可以得到
從上面的分析中可以看出,破解私匙的關(guān)鍵的一步是對進行質(zhì)因式分解,雖然上面舉的例子中的因式分解很簡單,分分鐘就能被破解,但是在實際使用中的
是一個很大的數(shù)——1024位的二進制數(shù)字,換算成十進制約為308位
目前還沒有公式可以對這么大的一個數(shù)進行質(zhì)因數(shù)分解,想硬解就需要用窮舉法一個個的試出p、q
那么,用普通計算機進行窮舉需要花費多久的時間呢?答案是整整一年
參考資料:



