李為為 劉志云
(阜陽職業技術學院工程科技學院 安徽阜陽 236000)
隨著計算機以及互聯網+技術的發展,教育領域中的教育資源也開始網絡化,慕課的發展就是計算機在教育領域的典型應用。人們的學習形式不再是傳統的單靠書本了,而是更加多樣化。教育的方式也隨著學習形式的多樣化趨于多樣化。區塊鏈技術的發展和智能化技術的流行也給教育帶來了前所未有的變化[1]。區塊鏈技術目前在教育領域中的教學及教學平臺等都有相關應用[2]。
要想發展區塊鏈技術,教育的發展是必不可少的[3]。區塊鏈技術目前的發展還處于初級階段,人們了解區塊鏈技術更多是基于對技術的好奇,對區塊鏈技術的基礎技術及加密貨幣技術還是知之甚少[4]。
(一)區塊鏈的概念。區塊鏈這個概念來源于比特幣,這是一種數字貨幣,區塊鏈技術是將數據以區塊的方式組合到一起形成鏈的方式,它是一種分布式存儲與記錄結構,不是通過中心結構進行管理。區塊鏈的交易方式是通過記錄時間來實現的,實現這項功能離不開塊主體和塊頭這兩個部分,存儲數據信息的功能通過塊主體來完成,區塊頭完成對下個區塊的鏈接。區塊鏈的生成的同時會將時間標簽標在數據信息上,這是基于區塊鏈的數據庫的優點之一。區塊鏈技術能夠實現整個網絡中的所有節點進行信息維護,不再依靠單個節點,對賬單的記賬不再是單一通過中心節點進行,處于網絡中的所有節點用戶都可以監測網絡中的每項交易信息。除了可以實現如上功能,區塊鏈技術還解決了沒有第三方能夠信息安全交易的問題,所有用戶都可以核對賬單,賬單是網絡中所有用戶共有。這樣以來信息的可信度和真實性也可以得到保障。
(二)區塊鏈核心技術。區塊鏈的技術核心是密碼學,通過這項技術雙方只要達成一致就可以實現支付,省去了參與的第三方平臺,對中介信用的問題提出了解決方案。區塊鏈技術要想實現這種雙方互信能夠在不要任何單位參與的情況下實現可信的轉賬,涉及到主要技術為智能合約、非對稱加密算法和分布式賬本技術。非對稱加密算法的加密方法是采取生成公鑰和私鑰的方式來保證網絡中的用戶信息的安全性。公鑰的生成保證了信息的真實性;生成的私鑰,只有擁有信息的用戶才可以使用相應的私鑰進行解密,通過私鑰可以確保信息的安全性。以上介紹了區塊鏈技術的特點,可以得到區塊鏈技術中加密是必不可少的一部分,根據這個特點,本文研究了非對稱加密算法RSA,并提出將相應的算法應用于區塊鏈技術的數據加密,通過這種方式保證數據的安全性。
(一)RSA加密算法。RSA[5]是公鑰加密算法中的一種,目前這中算法在公鑰加密中得到了廣泛應用,該算法可以通過網絡進行數據傳送,還可以實現交換密鑰和數字簽名等。國際上的一些標準化組織ISO、ITU、SWIFT將該算法作為衡量其他算法的標準。
(二)RSA算法的基本原理。如下所示為RSA算法的原理:
1.獨立地選取兩個大素數p!=q(保密)。公開對n=pq進行計算,對 ?(n)=(p-1)(q-1)(歐拉函數值)的計算保密。
2.任意選取一個整數 e,并且 e的范圍為 1≤e≤Φ(n),gcd(e,Φ(n))=1,e是公開的密鑰即公鑰。
3.d的計算采用擴展歐幾里得算法[6],d=e-1modΦ(n),d為私鑰(保密的密鑰)。
4.加密變換:對明文m∈Zn,密文為c=Ek(m)=memod n。
5.解密變換:對密文c∈Zn,明文為m=Dk(c)=cdmod n。
另外,第4和第5步的加密和解密變換也能夠轉變成數據簽名和數據驗證的過程,通過將以上兩步變成d進行加密,e進行解密來實現。
(三)RSA算法的實現步驟。
步驟1 素數的產生。
檢測產生的隨機數是否為素數,如果為素數則通過,否則,將該數加上一個步長值再檢測該數是否為素數,以此類推,直到找到素數為止。素數檢測采用Fermat測試。檢測數值是否為素數采用費爾馬小定理,該定理如下:已知一個素數m,數a與m不是倍數關系,依據該定理a(m-1)=1(mod m)。實際應用 a(m-1)=1(modm)?a=am(modm),將計算的算 am(modm)的結果與a進行比較。如果兩者相同,則m為素數。選取a=2,則a一定不會是任何素數的倍數。
步驟2 隨機數的產生。
密鑰生成和在公鑰加密進行字符填充時都會用到隨機數。為了防止破譯者破譯密碼或者找到在加密塊中的明文,隨機數的隨機性比較強。隨機數的生成在計算機實際的運行過程中不能完全實現,在加密過程中的隨機數通過2256位以上的隨機序列來產生。
步驟3 密鑰的生成。
(1)選擇e的值為2623883或者94475891;
(2)生成滿足 gcd(e,p-1)=1的隨機素數 p;
(3)隨機生成不同于p的大素數q,直到gcd(e,p-1)=1;
(4)計算 n=pq,?(n)=(p-1)(q-1);
(5)計算 d,d=e(-1)mod?(n);
(6)計算 dmod(p-1),dmod(q-1);
(7)計算(q-1)modp;
(8)將(e,n)放入 RSA 公鑰;將 n,e,dmod(p-1),dmod(q-1)modp放入RSA私鑰。
步驟4 加密。
第一,要采用RSA算法進行加密,首先數字化明文。明文編碼格式如下:空格=00,A=01,B=02,C=03,…,Z=26,則明文數字化HI為08、09;接著將明文M分成塊長為s的等長的數據塊 m1,m2,m3,…mi,其中 25<n,s盡可能大。加密過程如下:Ek(x)=xemodn,x∈Zn,其中這里的x為明文。加密過程中需要輸入如下數據:e(公鑰),d(私鑰),M(明文),n(模數)。明文M的長度范圍在[logn2]-11之內。
第二,格式化明文。采用PKCS格式:EB=00||BT||PS||OO|M。其中參數如下:塊的類型:B,填充串:PS,明文數據:M,0為起始值用以確保k的值小于EB的長度。BT的值當為公鑰和私鑰加密值分別為02和01。當02為BT的值時,PS的值為非0隨機數;當01為BT的值時,PS的值為FF。
明文數據轉換方式:從字符型數據到整形數據。
第三,RSA計算:對整數數據加密塊x進行模冪運算:y=xcmodn,0≤y<0,其中y為密文。其中c的值在公鑰和私鑰加密時不同,當為公鑰時,c的值為e,當為私鑰時,c的值為d。
第四,密文數據轉換為從整型數據到字符型數據。
步驟5 解密。
解密規則為:Dk(x)=ycmodn,y∈Zn,y為密文。加密實現時需要輸入如下數據:密文數據C;模數n;公鑰e或私鑰d,輸出為明文。
第一,密文數據轉換方式為:由字符型數據到整型數據。
第二,模運算密文實現對RSA解密:x=ycmodn,0≤x<n,,這里 x指明文。
第三,這個時候轉換為ASCII類型的明文數據的明文就是PKCS格式。
第四,將原明文從PKCS格式中分離出來。這同時也可以實現對數據完整性的檢測。如果存在下面幾個問題則證明解密失敗:分割不清楚;不匹配BT注明的數據類型或者少于64位的填充字符;BT與實際操作類型不符。
以下部分是對算法進行具體的分析仿真,仿真軟件為MATLAB。
(一)仿真中參數假設。
1.RSA秘鑰的生成參數設置。
(1)任意兩個大的質數:p,q,計算。n=pq。
(2)擴展歐幾里得算法:e_gcd(e,r);
(3)求取 e關于 r的模反元素 d=(e_gcd#(e,r)),明文數據轉換方式:從字符型數據到整形數據。d的求取依據擴張歐幾里得算法。
(4)公鑰:{n,e};私鑰:{n,d},通過 n 所占用的二進制位的寬度和n的值來決定密鑰的位數。如果n=1023,那么秘鑰就是10位的。
2.數據的加密參數設置。
明文:m(十進制);
密文:c(十進制);
得到密文公式:c=me0/0n,就是m的e次方對n求余。注意:要進行加密的值m要小于n,如果不小于n的值就要進行分組切割。
3.解密過程參數設置。
密文:c;
得到明文公式:cd=m(mod n);
明文:m=cd0/0n。
(二)仿真結果分析。為了對比算法所帶來的效果,最后采用MATLAB進行網絡仿真,仿真過程包括加密、解密過程,私鑰以及公鑰生成,另外仿真中還計算了進行加密和解密所需的時間,算法仿真運行后的結果如圖1所示。由圖可以看出仿真中得到公鑰為{163793,557},私鑰為{162793,154133},最后通過擴展歐幾里得算法正確進行解密。

圖1 加密解密仿真結果
本文首先介紹了目前區塊鏈技術的發展現狀,進而引出區塊鏈的發展離不開教育的發展,指出區塊鏈的功能的實現需要解決安全問題,進而引出RSA加密算法,提出在區塊鏈技術網絡中采用RSA的加密算法保證數據的安全性,接著對RSA加密算法加密和解密的過程進行介紹,最后通過仿真得出RSA加密和解密過程,其加密和解密的特點表明,能夠將該算法運用到區塊鏈技術中。