一、問題的提出
非對稱加密技術(shù)是電子商務(wù)安全的基礎(chǔ),是電子商務(wù)安全課程的教學(xué)重點。筆者查閱許多電子商務(wù)安全教材、網(wǎng)絡(luò)安全教材,發(fā)現(xiàn)這些教材過于注重理論,涉及具體操作較少,內(nèi)容不夠通俗易懂。筆者認為,學(xué)生掌握非對稱加密技術(shù),需要學(xué)習(xí)以下四個方面:圖形直觀認識、
RSA File演示軟件直觀操作、RSA算法直接計算、PGP的實際應(yīng)用。
二、非對稱加密圖形直觀認識
非對稱密碼體制也叫公鑰加密技術(shù),該技術(shù)就是針對私鑰密碼體制的缺陷提出來的。在公鑰加密系統(tǒng)中,加密和解密會使用兩把不同的密鑰,加密密鑰(公開密鑰)向公眾公開,解密密鑰(秘密密鑰)只有解密人自己知道,非法使用者根據(jù)公開的加密密鑰無法推算出解密密鑰,顧其可稱為公鑰密碼體制。非對稱密碼體制的加密模型如圖所示。
非對稱加密的優(yōu)勢:一方面解決了大規(guī)模網(wǎng)絡(luò)應(yīng)用中密鑰的分發(fā)和管理問題。如采用對稱加密進行網(wǎng)絡(luò)通信,N個用戶需要使用N(N-1)/2個密鑰,而采用對稱加密體制,N個用戶只需要N對密鑰。另一方面實現(xiàn)網(wǎng)絡(luò)中的數(shù)字簽名。對稱加密技術(shù)由于其自身的局限性,無法提供網(wǎng)絡(luò)中的數(shù)字簽名。公鑰加密技術(shù)由于存在一對公鑰和私鑰,私鑰可以表征惟一性和私有性,而且經(jīng)私鑰加密的數(shù)據(jù)只能用與之對應(yīng)的公鑰來驗證,其他人無法仿冒。
三、RSA File演示軟件直觀操作
利用一款RSA File演示軟件可向?qū)W生直觀展示非對稱加密解密過程。其步驟如下:
第一,點擊圖標,生成密鑰對,公鑰保存為1.puk,私鑰保存為2.prk。
第二,新建RSA.txt文本,輸入內(nèi)容“RSA演示”。
第三,點擊加密圖標,裝載公鑰1.puk,然后載入明文文件RSA.txt,點擊加密文件按鈕,生成密文“RSA.txt.enc”。若將密文擴展名改為TXT,打開將全是亂碼。
第四,點擊解密圖標,裝載私鑰2.prk,然后載入密文文件RSA.txt.enc,點擊解密文件按鈕,生成明文“RSA.dec.txt”。
第五,對比“RSA.txt”和“RSA.dec.txt”文本內(nèi)容一致。
通過RSA File演示軟件操作,學(xué)生對密鑰對的生成,加密解密操作基本掌握,但對于用公鑰加密,用私鑰解密這一現(xiàn)象還是不明白,此時還需通過RSA算法來進一步解釋。
四、RSA算法直接計算
RSA算法基于一個十分簡單的數(shù)論事實:將兩個大素數(shù)相乘十分容易,但想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。
1.RSA加密算法
(1)選取兩個大素數(shù)p和q,并計算乘積N(N=pq)。
(2)任意選取一個大整數(shù)e,e與ф(N)=(p-1)*(q-1)互質(zhì),整數(shù)e用作加密密鑰。
(3)確定解密密鑰d,由d*e=1 mod((p-1)*(q-1)),根據(jù)e,p和q可以容易地計算出d;
(4)若用整數(shù)X表示明文,整數(shù)Y表示密文(X,Y均小于N),則加解密運算為:
加密:Y = Xe mod N
解密:X = Yd mod N
注意,其中d和N也互素。e和N是公開密鑰,d是秘密密鑰。兩個素數(shù)p和q保密。
2.相關(guān)數(shù)學(xué)背景知識
(1)素數(shù):素數(shù)是一大于1,且只能被1和這個數(shù)本身整除的整數(shù)。素數(shù)是無限的。例如,2,3,5,7……等。
(2)兩個數(shù)互為素數(shù):指的是它們除了1之外沒有共同的因子。也可以說這兩個數(shù)的最大公因子是1。例如:4和9、13和27等。
(3)模變換:兩個數(shù)相模,如A模N運算,它給出了A的余數(shù),余數(shù)是從0到N-1的某個整數(shù),這種運算稱為模運算。
3.算法的具體實現(xiàn)
(1)為了方便計算,我們選取素數(shù)p=3和q=11,則N=pq =3*11=33。
(2)ф(N)=(p-1)(q-1)=2*10=20。
(3)從[0,ф(N)-1]中,即[0,19]之間任意選取加密密鑰e = 3,且e和ф(N)互素。
(4)求解密密鑰d。將公式ed=1modф(N)轉(zhuǎn)換成形式ed=k*ф(N)+1,即3d=k*20+1,將0,1,2,3…依次代入k,求出d。
取k=0,得d=1/3;不滿足d為整數(shù);
取k=1,得d=7;滿足d為整數(shù)條件;
取k=2時,得d=41/3,不滿足d為整數(shù);
取k=3時,得d=61/3,不滿足d為整數(shù)條件;
取k=4時,得d=81/3=27,滿足d為整數(shù)條件;
……
若明文X=15,N=33,e=3,d=7,
加密:Y=Xe mod N= 153 mod 33=9
解密:X=Yd mod N = 97 mod 33= 15
也可取d=27,通過電腦附件中的計算器計算如下:
解密:X=Yd mod N=927 mod 33= 58149737003040059690390169 mod 33=15
通過手工計算RSA加密算法,讓學(xué)生更直觀更深層理解非對稱加密原理。
RSA的安全來源于N足夠大,我們測試中使用的N是非常小的,根本不能保障安全性,當(dāng)前小于1024位的N已經(jīng)被證明是不安全的,最好使用2048位的。通過一款“攻擊RSA算法-分解n-求素數(shù)因子”軟件可以快速實現(xiàn)因式分解,為獲得足夠大的N及D 、E,我們可以通過RSAKit、RSATool之類的工具測試。
RSA簡捷,但計算速度比較慢,通常加密中并不是直接使用RSA來對所有的信息進行加密,最常見的情況是隨機產(chǎn)生一個對稱加密的密鑰,然后使用對稱加密算法對信息加密,之后用RSA對剛才的加密密鑰進行加密。
五、PGP的實際應(yīng)用
PGP是美國PGP公司開發(fā)的基于RSA公開密鑰體制的郵件加密軟件,在電子商務(wù)事務(wù)中得到廣泛的應(yīng)用。付費的PGP個人版軟件可實現(xiàn)郵件加密解密,這里采用免費的PGP8.1漢化版實現(xiàn)對文件的加密解密、簽名及驗證簽名。具體操作如下:
第一,啟動PGP Key,創(chuàng)建學(xué)生密鑰對xues@21cn.com,并導(dǎo)出公鑰。
第二,導(dǎo)入老師的公鑰“l(fā)aoshi公鑰.asc”。
第三,新建Word文檔,錄入文本“我是××號學(xué)生,完成PGP作業(yè)”→復(fù)制文本→打開PGPmail中的“加簽并簽名”圖標→選擇剪貼板→選擇接收人laoshi@21cn.com→輸入自己的密碼→確定。
第四,將結(jié)果粘貼到文本中提交上來、同時還要提交學(xué)生的公鑰。
老師導(dǎo)入自己的私鑰,選擇PGPmail中的“解密/效驗”圖標,輸入自己的密碼解密文本,實現(xiàn)對接收者身份的驗證;若導(dǎo)入學(xué)生的公鑰,則顯示簽名者的信息,實現(xiàn)對發(fā)送者身份的驗證。
通過PGP的實際應(yīng)用,利用兩個密鑰實現(xiàn)對發(fā)送方和接收方身份的認證問題,讓學(xué)生掌握非對稱加密技術(shù)。
通過圖形、實操、算法分析、實際應(yīng)用由淺入深,由理論到實踐不斷深化學(xué)習(xí)非對稱加密技術(shù)。
(作者單位:廣東省高級技工學(xué)校)