丁婷婷,方賢進(jìn),梁興柱,石文兵
(1.安徽現(xiàn)代信息工程職業(yè)學(xué)院 信息工程系,安徽 淮南232001;2.安徽理工大學(xué) 計算機(jī)科學(xué)與工程學(xué)院,安徽 淮南232001)
在教育部最新設(shè)置的18個計算機(jī)類專業(yè)目錄中[1],信息安全(080904K)、網(wǎng)絡(luò)空間安全(080911TK)、保密技術(shù)(080914TK)、區(qū)塊鏈工程(080917TK)和密碼科學(xué)與技術(shù)(080918TK)等專業(yè)的課程體系中均涉及現(xiàn)代密碼學(xué)課程,并且都是這些專業(yè)的核心課程.RSA公鑰密碼系統(tǒng)在現(xiàn)代密碼學(xué)中具有非常重要的地位,也是國際上最成功的密碼系統(tǒng)之一,目前被廣泛應(yīng)用于各種網(wǎng)絡(luò)、通信與軟件系統(tǒng)中.RSA公鑰密碼系統(tǒng)中的教學(xué)知識點(diǎn)多且較為枯燥,在教學(xué)中往往會使學(xué)生產(chǎn)生厭倦情緒.為了提高RSA 公鑰密碼系統(tǒng)的教學(xué)質(zhì)量,真正讓學(xué)生學(xué)有所用,很多教師進(jìn)行了教學(xué)改革與研究,如丁勇[2]提出了使用有限群抽象代數(shù)知識來證明RSA 能夠正確解密,從而幫助學(xué)生理解和學(xué)習(xí)RSA 公鑰系統(tǒng);周潔等[3]指出了RSA算法涉及的基于數(shù)學(xué)難題的教學(xué)模式,包括素數(shù)、歐拉函數(shù)、最大公約數(shù)、歐幾里得除法、同余、模冪計算和中國剩余定理等;胡小明等[4]從理論教學(xué)和實踐教學(xué)兩方面對信息安全專業(yè)密碼學(xué)課程進(jìn)行探討,并提出一套新穎的教學(xué)方法和課堂評價標(biāo)準(zhǔn);田有亮等[5]從算法思維的角度討論了模塊化教學(xué)思路的可行性.為了在教學(xué)中能夠讓學(xué)生充分理解RSA 公鑰密碼系統(tǒng),訓(xùn)練其學(xué)習(xí)現(xiàn)代密碼學(xué)的算法思維,培養(yǎng)其利用RSA 公鑰密碼系統(tǒng)解決實際問題的能力,論文梳理了RSA 公鑰密碼系統(tǒng)教學(xué)中的理論知識、算法和性質(zhì),包括歐拉定理、RSA 的密鑰生成算法、RSA 加密算法、RSA 解密算法、RSA 數(shù)字簽名和RSA 算法的乘法同態(tài)性;總結(jié)了幾個RSA 公鑰密碼系統(tǒng)的安全性原理,包括選擇密文攻擊、共模攻擊和低指數(shù)攻擊等;針對RSA 公鑰密碼系統(tǒng)教學(xué)中的理論知識、算法、性質(zhì)和安全性原理等構(gòu)建了函數(shù)庫,并通過案例教學(xué)驗證了函數(shù)庫的可用性,提高了學(xué)生解決復(fù)雜工程問題的能力.
RSA公鑰密碼系統(tǒng)教學(xué)涵蓋的知識點(diǎn)多,特別是數(shù)學(xué)知識,實用性比較強(qiáng).因此,為了加強(qiáng)理論學(xué)習(xí)的系統(tǒng)性和全面性,按照所需掌握的基本知識層遞關(guān)系,將RSA 公鑰密碼系統(tǒng)教學(xué)體系設(shè)計為四層.第一層是數(shù)學(xué)基礎(chǔ)理論層,包括Euler 定理、Euler 函數(shù)、最大公約數(shù)和數(shù)的素性等;第二層是函數(shù)庫層,包括最大公約數(shù)計算、大整數(shù)冪模運(yùn)算、擴(kuò)展的Eculid 算法、模運(yùn)算乘法逆元、快速積運(yùn)算、快速冪運(yùn)算和素性判定運(yùn)算等;第三層是RSA 算法層,包括密鑰生成算法、加密算法、解密算法、數(shù)字簽名算法和驗證簽名算法等;第四層是RSA 應(yīng)用層,涉及RSA 的性質(zhì)與安全性內(nèi)容,包括RSA 算法的乘法同態(tài)性、選擇明文攻擊、選擇密文攻擊、共模攻擊和低指數(shù)攻擊等.
通過講授、討論,使學(xué)生能夠了解RSA 公鑰加密系統(tǒng)針對性的理論和定理,掌握基本實現(xiàn)原理,重點(diǎn)掌握傳統(tǒng)加密算法和解密算法等.
函數(shù)庫層中各函數(shù)的形式化說明,以及函數(shù)層中各函數(shù)與RSA 算法層、RSA 算法層與RSA 應(yīng)用層的調(diào)用關(guān)系設(shè)計如表1和表2所示.
表1 函數(shù)層與RSA算法層之間的調(diào)用關(guān)系
表2 RSA算法層與RSA應(yīng)用層之間的調(diào)用關(guān)系
RSA 算法層與RSA 應(yīng)用層之間關(guān)系的梳理,一方面是為了實現(xiàn)案例教學(xué),提高課堂的教學(xué)效果,另一方面,通過實現(xiàn)RSA 算法的乘法同態(tài)性、選擇密文攻擊、共模攻擊和低指數(shù)攻擊等應(yīng)用訓(xùn)練學(xué)生解決復(fù)雜工程問題的能力.
為了避免出現(xiàn)“滿堂灌”等枯燥乏味的說教方式,選擇具有實際應(yīng)用背景、典型的案例融入教學(xué)設(shè)計中,使課程內(nèi)容更加形象、豐富,不僅能激發(fā)學(xué)生的學(xué)習(xí)興趣,還能加深學(xué)生對知識的理解和運(yùn)用[6].例如,在教學(xué)中通過案例一和案例二的求解和驗證,使學(xué)生理解并能夠靈活運(yùn)用RSA 算法常見的攻擊方式以及RSA密碼體制的同態(tài)性分析.
問題:若用戶user1 和user2 共享模數(shù)n=524 747,他們的公鑰e1,e2分別是30 283,8 209.若攻擊者截獲user1 和user2 對同一明文m加密的結(jié)果分別是c1=51 297,c2=365 457.求解攻擊者破解明文m的方法并進(jìn)行驗證.
解答步驟如下:
實驗運(yùn)行的結(jié)果如圖1所示.
圖1 共模攻擊實驗驗證結(jié)果
問題:對于明文m1,m2,驗證RSA是否有乘法同態(tài)性,即是否存在:Ee(m1m2)≡Ee(m1)*Ee(m2).
解答步驟如下:
實驗運(yùn)行的結(jié)果驗證了RSA算法具有乘法同態(tài)性,如圖2所示.
圖2 RSA算法乘法同態(tài)性驗證
論文實現(xiàn)了將RSA 公鑰密碼系統(tǒng)進(jìn)行分層次教學(xué)設(shè)計,并建立了RSA 公鑰密碼系統(tǒng)教學(xué)的函數(shù)庫,通過案例教學(xué)的方式豐富教學(xué)內(nèi)容,提高了課程教學(xué)質(zhì)量以及學(xué)生應(yīng)用RSA 解決實際問題的能力.經(jīng)教學(xué)實踐表明,RSA公鑰密碼系統(tǒng)教學(xué)體系設(shè)計獲得了良好的教學(xué)效果.但本文建立的函數(shù)庫的計算范圍只涉及整數(shù)域,還未達(dá)到工業(yè)級別RSA 安全性的需求,故不能在商用RSA 加密、解密和數(shù)字簽名中進(jìn)行應(yīng)用,這也是今后要進(jìn)行研究的工作.