密鑰加密實(shí)驗(yàn)平臺(tái)的研究與實(shí)現(xiàn)

信息安全專業(yè)的學(xué)生在學(xué)習(xí)過程中,都能感覺到密碼學(xué)的教學(xué)過程比較抽象。針對(duì)這一問題,我們?cè)O(shè)計(jì)并實(shí)現(xiàn)了密鑰加密實(shí)驗(yàn)平臺(tái)。下面我就給大家簡(jiǎn)單的介紹一下。

一、密鑰加密實(shí)驗(yàn)平臺(tái)的總體框架

為了達(dá)到激發(fā)學(xué)習(xí)者興趣的目的,密鑰加密實(shí)驗(yàn)平臺(tái)考慮以下幾點(diǎn):

1)密鑰加密實(shí)驗(yàn)平臺(tái)使用簡(jiǎn)潔明了的界面;

2)盡量簡(jiǎn)化操作,以原理為中心展開演示;

3)將密鑰加密實(shí)驗(yàn)平臺(tái)以常見網(wǎng)頁(yè)的形式展現(xiàn)。

由于VisualStudio.NET2005(以下簡(jiǎn)稱VS2005)自身強(qiáng)大的功能,使用起來較方便,所以本密鑰加密實(shí)驗(yàn)平臺(tái)就以其作為開發(fā)平臺(tái),使用C#作為編程語(yǔ)言。在該開發(fā)平臺(tái)下制作.aspx動(dòng)態(tài)網(wǎng)頁(yè)實(shí)現(xiàn)該密鑰加密實(shí)驗(yàn)平臺(tái)的功能,后臺(tái)程序?qū)崿F(xiàn)以控件下直接編寫代碼為主。

整個(gè)密鑰加密實(shí)驗(yàn)平臺(tái)主要由以下四個(gè)部分構(gòu)成。

第一部分是實(shí)驗(yàn)平臺(tái)系統(tǒng)的主界面,它是整個(gè)密鑰加密實(shí)驗(yàn)平臺(tái)的入口。需要實(shí)現(xiàn)對(duì)加密體制系統(tǒng)的總體介紹,簡(jiǎn)要介紹加密體制和密鑰加密實(shí)驗(yàn)平臺(tái)系統(tǒng)的使用說明。能使用戶對(duì)加密體制以及這個(gè)密鑰加密實(shí)驗(yàn)平臺(tái)有最基本的了解,在此基礎(chǔ)上,列出比較經(jīng)典的加密算法和解密算法的基本原理和密鑰加密實(shí)驗(yàn)平臺(tái)系統(tǒng)的幫助信息。

第二部分給出各加密體制的流程圖,對(duì)流程圖進(jìn)行必要的簡(jiǎn)潔介紹,使用戶能更好地理解各個(gè)算法的具體實(shí)現(xiàn)過程。

第三部分是構(gòu)建基于加密算法的實(shí)驗(yàn)演示系統(tǒng)示例。用戶自主選擇相應(yīng)參數(shù),觸發(fā)具體算法,用戶通過系統(tǒng)提示自主操作完成演示,使得用戶能夠通過這些步驟更為深入地掌握算法的基本原理和實(shí)現(xiàn)流程。

第四部分給出算法可能的應(yīng)用,在演示之后介紹各個(gè)算法的優(yōu)缺點(diǎn),通過分析密鑰長(zhǎng)度及加密過程,提出可能的破解方法,同時(shí)針對(duì)可能的攻擊給出相應(yīng)的防范措施。

上述每個(gè)部分都由相應(yīng)的子模塊構(gòu)成,子模塊的功能集合實(shí)現(xiàn)每個(gè)部分的功能。系統(tǒng)的總體框架結(jié)構(gòu)如圖1所示。

密鑰加密實(shí)驗(yàn)平臺(tái)的研究與實(shí)現(xiàn)

該密鑰加密試驗(yàn)平臺(tái)功能模塊的總體架構(gòu)總體來說功能層次比較清晰,且比較全面,它包括了對(duì)稱密鑰加密系統(tǒng)部分、非對(duì)稱密鑰加密系統(tǒng)部分和散列函數(shù)加密系統(tǒng)部分。整個(gè)密鑰加密實(shí)驗(yàn)平臺(tái)的框架結(jié)構(gòu)呈現(xiàn)樹形,由總到分,由算法體制的總體介紹到具體算法的實(shí)例演示,這對(duì)于初學(xué)者來說,較易入手,且容易引發(fā)學(xué)習(xí)的興趣。

每個(gè)具體的算法部分又包括如圖2所示的基本內(nèi)容。圖2中的X分別代表DES、IDEA、AES、RSA、DH、ECC、MD5、SHA、HMAC等算法。

密鑰加密實(shí)驗(yàn)平臺(tái)的研究與實(shí)現(xiàn)

二、密鑰加密實(shí)驗(yàn)平臺(tái)的主要實(shí)現(xiàn)方法

在實(shí)際實(shí)現(xiàn)過程中,通過網(wǎng)頁(yè)的形式展示本實(shí)驗(yàn)平臺(tái),通過menu.aspx實(shí)現(xiàn)頁(yè)面間的鏈接。進(jìn)入主界面后鏈接到相應(yīng)子系統(tǒng)形成整個(gè)實(shí)驗(yàn)平臺(tái)系統(tǒng)。密鑰加密實(shí)驗(yàn)平臺(tái)中所有網(wǎng)頁(yè)的結(jié)構(gòu)都為左右結(jié)構(gòu),左邊是整個(gè)實(shí)驗(yàn)平臺(tái)樹型結(jié)構(gòu)的索引,右邊是具體模塊的內(nèi)容,包括歡迎界面、平臺(tái)介紹、算法演示和攻擊分析等內(nèi)容。

1、演示算法的過程展示

根據(jù)網(wǎng)站的構(gòu)建過程,首先在VS2005環(huán)境下搭建起框架模塊,主要包括頁(yè)面和導(dǎo)航條。接下來的關(guān)鍵問題就是如何展現(xiàn)算法的流程,也即算法演示。

由于篇幅限制,這里不能一一介紹各個(gè)算法的演示生成過程,文中就以RSA演示系統(tǒng)為例簡(jiǎn)單介紹。圖3給出了RSA算法的部分演示過程。圖3中,用戶通過實(shí)際操作,能夠清晰地了解RSA加解密算法的流程。

密鑰加密實(shí)驗(yàn)平臺(tái)的研究與實(shí)現(xiàn)
RSA加密算法和解密算法總的來說分為三步,即:

1)密鑰的生成過程(這一步也是最關(guān)鍵的一步);

2)加密過程;

3)解密過程。具體參見圖3的演示結(jié)果顯示。

通過此演示界面,用戶很容易理解RSA加密的大體流程。

2、密鑰的生成過程

下面結(jié)合RSA加密算法的原理具體分析此演示界面的實(shí)現(xiàn)過程。

對(duì)于RSA加密算法,關(guān)鍵問題是如何快速有效地生成加解密密鑰。RSA算法的密鑰生成是分步完成的。首先要選取兩個(gè)大的互異的大素?cái)?shù)p和q,參見圖3,要生成大素?cái)?shù),點(diǎn)擊名稱為“生成大素?cái)?shù)p”的按鈕,此時(shí),觸發(fā)相應(yīng)的Button1-Click事件,其結(jié)果是根據(jù)生產(chǎn)大素?cái)?shù)的函數(shù)ulonggetpre(),生成大素?cái)?shù),并在TextBox1控件中顯示輸出。函數(shù)getpre()是直接加載在button后臺(tái)代碼中的。接下來,要生成與p互異的大素?cái)?shù)q。同樣地,用戶點(diǎn)擊按鈕“生成大素?cái)?shù)q”,則在TextBox2控件中生成大素?cái)?shù)q,其后臺(tái)操作與生成p的方法一致,都是后臺(tái)直接加載代碼的方式生成,結(jié)果見圖3。接下來是生成n=p×q,n在加解密中都起到很重要的作用,因此其生成方法也是較關(guān)鍵的。用戶根據(jù)演示界面可以很容易地理解該步驟,如圖3所示。其生產(chǎn)過程很簡(jiǎn)單,把TextBox1和TextBox2中的數(shù)字相乘,得到的結(jié)果即是n值。

事實(shí)上,因?yàn)門extBox中的文本顯示是以字符串的形式顯示的,所以在VS2005中,技術(shù)方面的實(shí)現(xiàn)存在一個(gè)字符串到數(shù)字的轉(zhuǎn)變過程和數(shù)字到字符串的轉(zhuǎn)換過程。這一步的后臺(tái)實(shí)現(xiàn)過程如下所示,在But2
ton3-Click事件中加載如下代碼:

ulongp=ulong.Parse(TextBox1.Text.ToString());

ulongq=ulong.Parse(TextBox2.Text.ToString());

ulongn=p3q;

TextBox3.Text=n.ToString();

其中語(yǔ)句ulong.Parse(TextBox1.Text.ToString())用于把TextBox1中的數(shù)字字符串轉(zhuǎn)換為與之對(duì)應(yīng)的數(shù)字值,以便于數(shù)字計(jì)算。n.ToString()語(yǔ)句用于把數(shù)字轉(zhuǎn)換為與之對(duì)應(yīng)的數(shù)字字符串,以便于在
TextBox中顯示輸出。在整個(gè)的平臺(tái)構(gòu)建及所有的算法演示中,這種變換經(jīng)常用到。

如圖3所示,繼續(xù)進(jìn)行保密值F(n)=(p-1)×(q-1)的計(jì)算,因其實(shí)現(xiàn)方法同n的值的實(shí)現(xiàn)類似。

根據(jù)RSA加密算法的原理過程,接下來是取隨機(jī)數(shù)e,取e的關(guān)鍵是要與(p-1)×(q-1)互素。e可由函數(shù)gete()實(shí)現(xiàn),在函數(shù)中加入判斷語(yǔ)句用于驗(yàn)證是否與(p-1)×(q-1)互素。下面給出其實(shí)現(xiàn)過程,也即在Button6-Click事件下加載如下代碼:

RSAlf=newRSAl();

ulongp=ulong.Parse(TextBox5.Text.ToString());

ulongq=ulong.Parse(TextBox4.Text.ToString());

ulongs=f.inverse(p,q);

TextBox6.Text=s.ToString();

設(shè)計(jì)加密類RSA1(),其中包括函數(shù)inverse(p,q),inverse(p,q)用于計(jì)算F(n)值。在上述代碼中,通過引用RSA1()的一個(gè)實(shí)例來調(diào)用函數(shù)inverse(p,q)功能。通過語(yǔ)句TextBox6.Text=s.ToString();把生成的值F(n)以值字符的形式顯示在TextBox6中。

接下來點(diǎn)擊“得到公鑰”和“得到私鑰”按鈕,觸發(fā)按鈕事件,分別能在TextBox中顯示得到的密鑰對(duì)。通過以上分析,可以看出,此演示平臺(tái)的演示過程能夠把RSA加密算法的原理清晰地表現(xiàn)出來。

3、加密和解密過程解析

接下來簡(jiǎn)單介紹一下加密和解密的過程。在明文文本框中輸入需要加密的文本,通過點(diǎn)擊“加密”按鈕,觸發(fā)Button7-Click事件,在此事件中加載加密函數(shù),同時(shí)把文本框中的文本引導(dǎo)進(jìn)來作為加密軟接口,實(shí)現(xiàn)對(duì)文本的實(shí)際加密。

加密理論函數(shù)為:c=Memodn,需要用具體的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)。

點(diǎn)擊“解密”按鈕,類似觸發(fā)Button8-Click事件,此事件的功能代碼把密文作為軟件接口參數(shù)引導(dǎo)進(jìn)來,用解密函數(shù)進(jìn)行解密處理,得到解密后的明文,如圖3所示。

4、其他問題

以上對(duì)密鑰加密實(shí)驗(yàn)平臺(tái)系統(tǒng)中的關(guān)鍵模塊———算法演示部分以RSA算法演示為例進(jìn)行了簡(jiǎn)單介紹。

其它典型加密算法演示生成界面都以其算法的原理為基礎(chǔ)進(jìn)行形象展現(xiàn)。

在密鑰加密實(shí)驗(yàn)平臺(tái)的構(gòu)建中,為了能夠給用戶一個(gè)清晰簡(jiǎn)單的操作環(huán)境,有很多技術(shù)實(shí)現(xiàn)方面的細(xì)節(jié)都需要加以注意,如導(dǎo)航條的構(gòu)建、模板頁(yè)的設(shè)置、格式的一致和規(guī)范性的要求等。

三、密鑰加密實(shí)驗(yàn)平臺(tái)特點(diǎn)概述

1、平臺(tái)展示清晰、全面

參見圖1的總體架構(gòu)。

打開此平臺(tái)系統(tǒng),首先進(jìn)入的是登錄頁(yè)面,當(dāng)用戶輸入正確的用戶名、密碼后,進(jìn)入首頁(yè)。首頁(yè)中包括三個(gè)系統(tǒng)展現(xiàn)按鈕,分別為:對(duì)稱密鑰加密系統(tǒng)、非對(duì)稱密鑰加密系統(tǒng)和散列函數(shù)加密系統(tǒng)。布局清晰簡(jiǎn)單,用戶可以根據(jù)自己的需求進(jìn)入不同的加密系統(tǒng)。進(jìn)入某個(gè)具體加密系統(tǒng)后,便進(jìn)入了學(xué)習(xí)頁(yè)面,每個(gè)頁(yè)面的布局都是一致的,左邊是導(dǎo)航欄,右邊是對(duì)應(yīng)的學(xué)習(xí)內(nèi)容。

用戶可以由導(dǎo)航欄快捷地選擇自己想要進(jìn)入的學(xué)習(xí)階段。所有這些部件,都是為了方便用戶更好地學(xué)習(xí)密鑰加密算法。

2、實(shí)驗(yàn)管理方便

本密鑰加密實(shí)驗(yàn)平臺(tái)首頁(yè)有注冊(cè)及登錄頁(yè)面,當(dāng)用戶登錄后能顯示用戶之前的登錄信息。這些信息用在教學(xué)過程中,指導(dǎo)老師就可以方便地查詢各學(xué)生登錄和使用本平臺(tái)軟件的基本情況,有利于老師了解同學(xué)們的實(shí)驗(yàn)細(xì)節(jié),利于管理。

3、原理分析直觀

在分步執(zhí)行的過程中,密鑰加密實(shí)驗(yàn)平臺(tái)所包括的各個(gè)算法可以實(shí)時(shí)、直觀地進(jìn)行原理的分析。如:在算法的演示過程中,用戶可以直觀并清楚地知道“數(shù)”的流向及具體算法的執(zhí)行過程。相比書本上的“枯燥”內(nèi)容來說,此平臺(tái)演示就相當(dāng)于請(qǐng)了個(gè)老師,一步一步地演示出算法的基本原理和過程,直觀地展現(xiàn)給用戶,有效降低了學(xué)習(xí)的難度。

小知識(shí)之TextBox

TextBox組件(文本框組件)是一種常用的,也是比較容易掌握的組件。應(yīng)用程序主要使用它來接收使用者于輸入文字信息。