• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Beller-Yacobi協(xié)議的研究與模擬實現(xiàn)

      2012-08-13 09:19:12劉城霞
      關(guān)鍵詞:私鑰公鑰密鑰

      劉城霞

      北京信息科技大學計算機學院 北京 100101

      0 引言

      在無線通信中隨著移動用戶對信息服務(wù)的需求越來越多,對移動通信系統(tǒng)安全的要求也越來越高,這不僅包括數(shù)據(jù)通信的安全性,還要求身份認證的合法性。目前實現(xiàn)身份認證最可行最安全的方式是設(shè)計基于密碼技術(shù)的認證協(xié)議,并將其運用于認證系統(tǒng)中,Beller-Yacobi認證協(xié)議便是實現(xiàn)該功能的協(xié)議之一。

      1 Beller-Yacobi傳輸協(xié)議

      Beller-Yacobi密鑰傳輸協(xié)議被稱為混合密鑰傳輸協(xié)議,它同時使用了對稱加密技術(shù)和非對稱加密技術(shù),也就是說除了使用公鑰加密和數(shù)字簽名外,還使用了對稱加密技術(shù)。

      1.1 信息安全的模型

      信息安全的基本模型可以用圖1表示。

      圖1 信息安全的基本模型

      通信雙方欲傳遞某個消息,則需要考慮通信的安全性。安全傳輸技術(shù)有以下兩個基本成分:①消息的安全傳輸,包括對消息的加密和認證。②通信雙方共享的某些秘密信息,如加密密鑰。為了消息的安全傳輸,還需要一個可信的第三方,其作用可能是負責向通信雙方發(fā)布秘密信息或者在通信雙方有爭議時進行仲裁。所以安全的網(wǎng)絡(luò)通信必須考慮4個方面:①加密算法。②用于加密算法的秘密信息。③秘密信息的分布和共享。④使用加密算法和秘密信息以獲得安全服務(wù)所需的協(xié)議。

      1.2 Beller-Yacobi傳輸協(xié)議的描述

      Beller-Yacobi協(xié)議實現(xiàn)密鑰的傳輸,提供相互的實體認證和顯式的密鑰認證。首先介紹一下簡化的Beller-Yacobi協(xié)議:

      (1) 系統(tǒng)參數(shù)的選擇。模ns整數(shù)的乘法群中,適當?shù)乃財?shù)ns和生成元a被確定為ElGamal系統(tǒng)參數(shù)??尚欧?wù)器T選擇適當?shù)乃財?shù)p和q來為RSA簽名生成公開模數(shù)nT =pq,然后為公開指數(shù)eT=3計算一個私鑰dT,使得eT dT=1mod(p-1)(q -1)。

      (2) 系統(tǒng)參數(shù)分發(fā)。T給每個參與方(A和B)分發(fā)一個可信副本,包括T的公鑰和系統(tǒng)參數(shù)nT,(ns,α),并為每個參與方X制定一個惟一的可辨別名稱或識別串IX(如X的名稱和地址)。

      (3) 終端的初始化。每個充當A(終端)的參與方都隨機選擇一個整數(shù)a,1<a≤ns-2,并且計算其ElGamal簽名公鑰uA =αamodnS。A保密相應(yīng)的私鑰a,并將uA的一個可信副本傳送給T,通過帶外方式(安全信道或者是親自送交)來向T識別它自己。T生成公鑰證書并返回給A:certA=(IA, uA, GA)(此證書包含A的身份和ElGamal簽名公鑰 , 以 及 由GA=ST( IA, uA)=(h( IA, uA))dTmodnT 產(chǎn) 生 的T的RSA簽名GA)。

      (4) 服務(wù)器端的初始化。每個充當B(服務(wù)器)的參與方都產(chǎn)生一個加密私鑰和一個基于公開指數(shù)eB=3的RSA的相應(yīng)公鑰。B選擇一個公鑰模數(shù)nB,為兩個適當?shù)拿孛芩財?shù)的乘積,并自己計算相應(yīng)的RSA私鑰dB。B將nB傳送給v,通過所謂的帶外(安全信道)方式來向T識別它自己。T產(chǎn)生公鑰證書并返回給B:certB=(IB,nB,GB)(此證書包含B的身份核RSA加密公鑰nB,以及由GA=ST(IA,uA)=(h(IA,uA))dTmodnT產(chǎn)生的T的RSA簽名GB)。

      其中EK(y)表示使用密鑰K和算法E對y進行對稱加密。PX(y)表示應(yīng)用X的公鑰函數(shù)對y加密后的結(jié)果。SX(y)表示應(yīng)用X的私鑰函數(shù)對y簽名后的結(jié)果。IX表示參與方X的一個識別串。h(y)表示y的雜湊,它與簽名方案一同使用。如果y=(y1,...,yn),則輸入為這多個值的級聯(lián)。

      協(xié)議執(zhí)行過程如圖2所示。

      圖2 Beller-Yacobi協(xié)議描述圖

      可信服務(wù)器T負責分發(fā)統(tǒng)一的參數(shù),并且針對接收到的關(guān)于 A,B,產(chǎn)生相應(yīng)的簽名,然后發(fā)送相應(yīng)的公鑰證書??尚欧?wù)器T的所有操作都是該協(xié)議的系統(tǒng)設(shè)置準備階段,也就是又可信第三方分發(fā)密鑰的階段,協(xié)議的關(guān)鍵在與A,B之間的信息交流,以達到傳送密鑰K的目的。每當A,B要將信息傳送給對方的時候都要將由可信服務(wù)器T生成的公鑰認證一并傳送,讓對方驗證自己的身份。其中 A使用ElGamal簽名用來產(chǎn)生會話密鑰K(協(xié)議傳輸對象)。而B對ElGamal簽名的認證確定密鑰的來源,以及密鑰的正確性。

      2 RSA算法原理

      可信服務(wù)器T要進行RSA公鑰的生成及生成公鑰認證,那么就有必要了解一下RSA的算法原理和密鑰是如何生成的。

      2.1 RSA密鑰生成算法

      每個實體產(chǎn)生一個RSA公鑰以及一個相應(yīng)的私鑰。每個實體A執(zhí)行如下操作:

      ① 隨機生成兩個不同的大素數(shù)p和q。

      ② 計算n=pq和φ=(p-1)(q-1)。

      ③ 隨機選擇整數(shù)e,1<e<φ,使得gcd(e,φ)=1

      ④ 使用擴展的歐幾里得算法計算滿足ed≡1modφ的惟一整數(shù)d,1<d<φ。

      ⑤A的公鑰為(n,e),私鑰為d。

      RSA密鑰生成中的整數(shù)e,d分別稱為加密指數(shù)和解密指數(shù),n稱為模數(shù)。

      2.2 RSA公鑰加密

      B為A對消息m加密,A進行解密。

      (1) 加密,B執(zhí)行如下操作:

      ① 獲得A的可信公鑰(n,e)。

      ② 把消息表示成區(qū)間[0,n-1]內(nèi)的整數(shù)m。③ 計算c=memodn。

      ④ 將密文c發(fā)送給A。

      (2) 解密,為了從c中恢復明文m,A執(zhí)行:用私鑰d恢復m=cdmodn。

      2.3 RSA簽名認證

      實體A簽署消息m∈Μ。任何實體B都可驗證A的簽名,并從中恢復消息m。

      (1) 簽名生成,實體A執(zhí)行如下操作:

      ① 計算取值在區(qū)間[0,n-1]內(nèi)的整數(shù)=R(m)。

      ② 計算s=modn。

      ③A對m的簽名s。

      (2) 驗證,為驗證A的簽名s且恢復消息m,實體B應(yīng)當:

      ① 獲得A的可信公鑰(n,e)。

      ② 計算=semodn。

      ③ 驗證∈ΜR;否則拒絕接收簽名。

      ④ 恢復

      簽名驗證可行性證明。若s是消息m的簽名,則有s=modn, 其 中=R(m)。 因 為ed≡1modφ, 故

      2.4 RSA加解密算法.NET實現(xiàn)

      (1) RSA公鑰產(chǎn)生

      調(diào)用.NET環(huán)境下的類可直接產(chǎn)生由XML封裝的公鑰。將公鑰發(fā)給A,B,自己保留私鑰,用以后來的簽名和解密。代碼如下:

      public void RSAKey(out string xmlKeys, out string xmlPublicKey)

      {RSACryptoServiceProvider rsa = new RSACryptoService Provider();//初始化對象

      xmlKeys=rsa.ToXmlString(true);//產(chǎn)生私鑰

      xmlPublicKey=rsa.ToXmlString(false);//公鑰 }

      RSA參數(shù)實際存儲在兩個字段中,一個是xmlKeys,存儲公開的RSA參數(shù),另一個是xmlPublicKey,存儲公開和私有的RSA參數(shù)。系統(tǒng)產(chǎn)生的公鑰和私鑰都由XML封裝,形式如:

      (2) RSA公鑰加密

      public string RSAEncrypt(string xmlPublicKey, string m_strEncryptString)

      {RSACryptoServiceProvider rsa = new RSACryptoService Provider();//產(chǎn)生對象

      rsa.FromXmlString(xmlPublicKey); //初始化

      PlainTextBArray = (new UnicodeEncoding()).GetBytes(m_strEncryptString);//轉(zhuǎn)字節(jié)序列

      CypherTextBArray = rsa.Encrypt(PlainTextBArray, false);//加密

      Result = Convert.ToBase64String(CypherTextBArray);return Result; }

      算法將所要機密的明文字符串轉(zhuǎn)換成一個字節(jié)序列,存儲在PlainTextBArray中。再調(diào)用RSA類的Encrypt方法對經(jīng)過處理的密文進行加密,以字符串的類型返回。

      (3) RSA簽名

      RSA簽名需要關(guān)鍵的兩個步驟,求哈希(雜湊)值和簽名。下面是GetHash實現(xiàn)代碼:

      public bool GetHash(string m_strSource, ref string strHashData)

      {HashAlgorithm MD5 = HashAlgorithm.Create("MD5");/產(chǎn)生Hash算法

      Buffer

      =System.Text.Encoding.GetEncoding("GB2312").GetBytes(m_strSource);

      HashData = MD5.ComputeHash(Buffer);//計算Hash值

      strHashData = Convert.ToBase64String(HashData);

      return true; }

      這里首先對要求哈希值的字符串進行處理,轉(zhuǎn)換成字節(jié)序列,然后計算指定字節(jié)數(shù)組的哈希值,最后將哈希值以字符串的形式輸出。獲得哈希描述后,對該哈希值進行簽名。代碼如下:

      public bool SignatureFormatter(string p_strKeyPrivate, byte[]HashbyteSignature, ref byte[] EncryptedSignatureData)

      { RSACryptoServiceProvider RSA = new System.Security.Cryptography.RSACryptoServiceProvider();

      RSA.FromXmlString(p_strKeyPrivate);//用已有的私鑰初始化對象

      SignatureFormatter RSAFormatter = new SignatureFormatter(RSA);

      RSAFormatter.SetHashAlgorithm("MD5");//得到Hash算法

      EncryptedSignatureData = RSAFormatter.CreateSignature(HashbyteSignature);//產(chǎn)生簽名

      return true; }

      首先用之前產(chǎn)生的公鑰進行初始化,然后將簽名的算法設(shè)置為 MD5,最后對之前求得的哈希值進行簽名。有關(guān)ElGamal簽名和DES對稱加密方法在系統(tǒng)中也實現(xiàn)了,篇幅原因這里不再贅述。

      3 系統(tǒng)運行和測試

      3.1 系統(tǒng)設(shè)置階段

      首先由可信服務(wù)器T產(chǎn)生各個參數(shù),如圖3。公鑰(nt,e)顯示的是系統(tǒng)產(chǎn)生的RSA公鑰,ElGamal參數(shù)是由系統(tǒng)產(chǎn)生的一個隨機大素數(shù)及其本原根。隨后,將參數(shù)發(fā)送給A,B,兩方接收并存儲參數(shù),以備后用。

      圖3 可信服務(wù)器T的系統(tǒng)設(shè)置

      接著,終端A和可信服務(wù)器B產(chǎn)生各自的識別串和參數(shù),然后傳送給可信服務(wù)器T。如圖4所示,Ib為B的識別串,nb是可信服務(wù)器用于RSA加密的公鑰。

      終端A的系統(tǒng)設(shè)置與B類似,不在贅述。A和B設(shè)置后,可信服務(wù)器T接收A,B的參數(shù),通過RSA簽名產(chǎn)生Ga,Gb,再送給A,B。A,B接收各自簽名,即公鑰認證,則準備階段完成。

      圖4 服務(wù)器端B的系統(tǒng)設(shè)置

      3.2 協(xié)議執(zhí)行階段

      這里只描述A與B之間的信息傳輸和發(fā)送。系統(tǒng)設(shè)置完成后,首先由服務(wù)器端B產(chǎn)生一個隨機數(shù)發(fā)送給終端A,發(fā)送的同時將準備階段時T產(chǎn)生的公鑰認證一起發(fā)送,用于A方對于信息來源的檢測。如圖5所示,終端A通過RSA認證,來檢驗來自B方的信息。

      圖5 終端A認證信息

      認證成功之后,終端 A計算其 ElGamal簽名,并和 A的公鑰認證一同發(fā)送給 B。發(fā)送前首先對簽名進行相應(yīng)的RSA公鑰加密,以及DES對稱加密。由此,B方首先接收到的是加密之后的簽名以及認證,然后B方再對加密結(jié)果進行解密,最后便是服務(wù)器端B對來自A的信息的認證,如圖6所示。

      圖6 服務(wù)器B的最終驗證結(jié)果

      認證中首先進行公鑰認證,通過RSA認證來檢驗信息的來源,而后是ElGamal認證,認證傳輸?shù)拿荑€K的真確性,兩者均驗證成功才能說明協(xié)議執(zhí)行成功。

      4 總結(jié)

      本文分析了Beller-Yacobi協(xié)議的每一個步驟以及所涉及的加密、簽名算法。并以RSA加密算法及簽名算法為例做了詳細的介紹,并用C# 語言在.NET平臺下編寫了相應(yīng)的算法程序,實現(xiàn)了整個Beller-Yacobi密鑰傳輸協(xié)議的過程。

      [1] 徐勝波,武傳坤,王新梅.移動通信網(wǎng)中的認證與密鑰分配[J].電子學報.1996.

      [2] Alfred J.Menezes, PaulC.van Oorschot, Scott A.Vanstone著,胡磊,王鵬譯.應(yīng)用密碼學手冊[M].北京:電子工業(yè)出版社.2005.

      [3] 王亞弟,束妮娜,韓繼紅編著.密碼協(xié)議形式化分析[M].北京:機械工業(yè)出版社.2006.

      猜你喜歡
      私鑰公鑰密鑰
      探索企業(yè)創(chuàng)新密鑰
      比特幣的安全性到底有多高
      基于改進ECC 算法的網(wǎng)絡(luò)信息私鑰變換優(yōu)化方法
      密碼系統(tǒng)中密鑰的狀態(tài)與保護*
      一種基于混沌的公鑰加密方案
      一種基于虛擬私鑰的OpenSSL與CSP交互方案
      一種對稱密鑰的密鑰管理方法及系統(tǒng)
      基于ECC的智能家居密鑰管理機制的實現(xiàn)
      電信科學(2017年6期)2017-07-01 15:45:06
      HES:一種更小公鑰的同態(tài)加密算法
      SM2橢圓曲線公鑰密碼算法綜述
      宝山区| 茶陵县| 来安县| 扶风县| 蕉岭县| 吉安市| 南澳县| 城步| 花莲县| 福海县| 浑源县| 原阳县| 泰安市| 吉水县| 德令哈市| 甘德县| 宜君县| 梁河县| 平远县| 通渭县| 安化县| 林口县| 民勤县| 瑞安市| 什邡市| 富裕县| 遵义县| 镇江市| 新田县| 临洮县| 佛坪县| 高尔夫| 政和县| 慈利县| 扎囊县| 沿河| 额敏县| 桃园市| 桃园县| 高平市| 敖汉旗|