999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于OpenSSL庫的橢圓曲線密碼體制的OMNeT++實現

2012-02-05 06:37:42張求文王景成隆笑趙廣磊胡霆張震瑋何軍于長健
微型電腦應用 2012年4期

張求文,王景成,隆笑,趙廣磊,胡霆,張震瑋,何軍,于長健

0 引言

近年來,隨著物聯網和第三代甚至第四代移動通信技術的不斷發展,以及人們需求的日益增長,移動平臺正以其獨特的優勢受到了前所未有的關注,基于移動平臺的應用也層出不窮。然而,移動平臺的無線環境和傳感器的無人環境極大地方便了惡意攻擊者,數據與隱私保護是物聯網應用過程中巨大的挑戰之一[1],密鑰管理機制、安全路由協議、認證與訪問控制、入侵檢測與容侵容錯技術以及決策與安全控制等是今后研究的重點[2]。

現有的移動終端的運算能力愈發強大,比對稱加密更加安全的非對稱加密的運算強度已經不會成為其在移動終端上應用的瓶頸,然而,隨著安全需求的增加,RSA算法所需要的密鑰位數一直在增加,導致其加解密速度大為降低,存儲空間顯著增加,應用越來越受到限制[3]。因此人們迫切需要尋求一種運算量更小安全度更高的非對稱加密算法,于是橢圓曲線密碼體制孕育而生。

橢圓曲線密碼體制(Elliptic Curves Cryptosystems,ECC)是近年來興起的基于橢圓曲線離散對數問題(ECDLP)的性能優良的公鑰密碼體制。相比較其它的公鑰加密算法,ECC有許多優點,例如由于ECDLP比DLP困難得多,橢圓曲線系統中每個密鑰位的強度在本質上要比傳統的離散對數系統大得多[4],而且在計算負載、密鑰大小、帶寬等方面ECC均比RSA優越[5],因此ECC非常適合計算能力和帶寬傳輸有限卻又要求高速實現加密和認證的終端場合。

對于無線終端網絡的部署來說,在計算機平臺上進行網絡軟件仿真是一個檢驗可行性的好辦法,OMNeT++(Objective Modular Network Testbed in C++)是近年來流行在科學和工業領域的一款優秀的網絡仿真平臺。強大完善的圖形界面接口以及編程調試等功能使得 OMNeT++迅速成長為通信網絡和分布式系統的仿真主力。

1 基礎算法

1.1 ECDSA

ECDSA(Elliptic Curve Digital Signature Algorithm)是一種基于橢圓曲線密碼體制的數字簽名算法。所謂數字簽名,即是用來確認數據的來源并保護數據不被偽造的一種技術。數字簽名分為簽名和認證兩部分,一般過程是,請求方利用自身的私鑰對某特定消息進行加密處理,稱為簽名;認證方則利用請求方放出的公鑰對簽名信息進行解讀,并以此驗證請求方的合法性。具體算法,如表1所示[6]:

表1 ECDSA簽名的生成與驗證表

在表1中,參數q表示域的階;FR為域的表示;S表示種子;a,b為橢圓曲線參數;P為基點;n為P的階;h是余因子,具體參數如何參與運算參考文獻。

1.2 ECDH

ECDH(Elliptic Curve Diffie-Hellman)是一種基于橢圓曲線密碼體制的密鑰交換算法,它可以使擁有各自橢圓曲線公私鑰對的交換的雙方在一個不安全的信道上協商出一個密鑰。具體算法如表2所示[7]:

表2 ECDH密鑰協商

2 接口

在 OMNeT++中,首先需要做的便是定義網絡拓撲結構。在工程項目中新建一個網絡描述文件(.ned文件),用simple、network、submodules、connections等關鍵字來定義結點、當前網絡、當前網絡中的節點和節點間連接方式等。隨后,便是為每個定義過的節點新建.cc文件來設置節點的一系列活動。節點一般都繼承OMNeT++提供的基本節點類cSimpleModule。

2.1 OMNeT++相關的常用接口

(1)、void initialize();

此函數描述了節點在初始化時候的一系列動作,例如設置節點內部自身參數等。Initialize()函數將在節點創建時被自動調用。

(2)、void handleMessage(cMessage* msg);

此函數描述了節點在接收到一條消息時的一系列動作,例如提取消息內信息和轉發消息等。handleMessage()函數將在節點接收到消息時被自動調用。

為節點類定義實現以上兩個函數后,節點的基本功能就算是完成了。下面給出OMNeT++中比較常用的命令接口:

(1)、Define_Module(string moduleName);

此全局命令將名字為 moduleName的節點類注冊到OMNeT++中,每一個節點都必須通過將自身注冊到OMNeT++中才能被識別并正確運行,所以每個節點類都必須對應一個Define_Module命令。

(2)、send(cMessage *msg,const char *gatename,int gateindex=-1);

此函數用來將消息 msg從某個門中發送出去,其中gatename為門的名字,gateindex則是名字為gatename的門的編號,所謂的門即是兩個節點相連的通道。

(3)、scheduleAt(simtime_t t,cMessage *msg);

此函數用來在時間t發送一條自消息,即在時間t向節點自身發送消息 msg,一般被用來定時地主動觸發節點的handleMessage()函數。其中時間t可以用simTime()函數來返回當前仿真時間,而節點在handleMessage()函數中可以使用msg->isSelfMessage()函數來判斷收到的消息是否為自消息。

一些情況下,OMNeT++自帶的cMessage消息不能滿足項目的需求,此時可以通過新建.msg文件并通過 message關鍵字來創建自定義的消息類,在其中可以為自定義消息類添加各種變量,以滿足項目的需求。當然,在創建了.msg文件后還需在OMNeT++的命令行窗口使用opp_msgc命令來創建.msg對應的.cc和.h文件,并在需要使用的地方將.h文件包含進來,便可以正常使用。

為了在OMNeT++中實現ECDSA等算法,還需要一個密碼學領域的函數庫,而OpenSSL便是一個很好的選擇。OpenSSL囊括了主要的密碼學算法、常用的密鑰和證書封裝管理功能以及 SSL協議,同時以 C語言為開發語言的OpenSSL也提供了優秀的跨平臺性能。

2.2 OpenSSL中與ECDSA算法相關的接口

(1)、EC_KEY EC_KEY_new_by_curve_name(int nid);此函數根據參數 nid來返回一條內置的 SEC(Standard for Efficient Cryptography)推薦的橢圓曲線,OpenSSL提供了類似 NID_secp192k1的宏來方便使用者選擇安全的橢圓曲線。

(2)、int EC_KEY_generate_key(EC_KEY* key);此函數將會在橢圓曲線對象key內部隨機生成私鑰和公鑰。

(3)、int ECDSA_sign(int type,const unsigned char* dgst,int dgstlen,unsigned char* sig,unsigned int* siglen,EC_KEY*eckey);此函數用來對在橢圓曲線對象eckey上長度為dgstlen的字符串dgst進行數字簽名,并存放在字符串sig中。

(4)、int ECDSA_verify(int type,const unsigned char*dgst,int dgstlen,const unsigned char* sig,int siglen,EC_KEY* eckey);此函數用來對在橢圓曲線對象eckey上長度為siglen的字符串sig進行數字簽名認證,解簽名的結果放入字符串dgst中,并返回認證成功與否。

2.3 OpenSSL中與ECDH算法相關的接口

( 1)、 int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP* group,EC_POINT* p,const BIGNUM* x,const BIGNUM* y,BN_CTX* ctx);

此函數用來設定橢圓曲線group的G點坐標。

( 2)、 int EC_POINT_add(const EC_GROUP* group,EC_POINT* r,const EC_POINT* a,const EC_POINT* b,BN_CTX* ctx);

此函數用來完成對橢圓曲線group上的點加計算,計算結果放入點r,其中。

( 3)、 int EC_POINT_mul(const EC_GROUP* group,EC_POINT* r,const BIGNUM* n,const EC_POINT* q,const BIGNUM* m,BN_CTX* ctx);

此函數用來完成對橢圓曲線group上的點乘計算,計算結果放入點r,其中r=G×n+q×m ,G為橢圓曲線group的基點。

3 實現及對結果的分析

3.1 在OMNeT++中實現ECDSA的核心代碼

3.2 在OMNeT++中實現ECDH的核心代碼

3.3 實驗結果及分析

本文測試所使用的機器具體配置是CPU為Intel Core i3 380M,主頻為2.53GHz。算法耗時性能指標,如表3所示:

表3 耗時性能指標

算法耗時曲線圖,如圖1所示:

圖1 平臺處理時間與節點數量關系圖

從上面的表格數據以及曲線圖中可以看到,就ECDSA簽名算法來說,節點在100以后基本呈線性增長趨勢,而在100個節點以下的時候,平臺處理時間與節點數呈非線性關系,故而在整體網絡節點超過100的時候,具體平臺處理時間等即為可估計參數。

相比于 ECDSA一次簽名認證成功后即不再進行,ECDH在每次密鑰更新后都要重新進行,故而ECDH的時間與節點關系更值得考慮,但是從圖1可以看出,紅色曲線基本上呈線性增長趨勢,在節點數量少于100時的非線性特征也較為不明顯,故而可以較好的估計平臺整體時間消耗。

最后,由圖1中的數據可以看出,節點數量縱使達到200后,平臺的處理時間仍舊不到0.4s,而密鑰交換所用時間更是不到 0.15s。而文章仿真所用電腦的性能更是遠遠低于工程應用的服務器設備,故而橢圓曲線密碼體制在工程項目中的具體應用具有十分良好的發展前景。

4 總結

本文介紹了包括ECDSA和ECDH協議的橢圓曲線密碼體系的具體算法及實現方法,并詳細描述了基于OPENSLL庫的 OMNET++的各方面基本接口和庫函數相關接口及其應用方法。介紹了ECDSA和ECDH實現的核心代碼內容,并仿真驗證了可行性。最后,通過平臺時間消耗和節點數量的關系圖,對橢圓曲線密碼體制的可應用性進行了說明。

[1]ITU.The Internet of Thing [EB/OL].(2005-12-17)[2010-07-03].http://www.itu.int/internetofthings

[2]楊庚,許建,陳偉,祁正華,王海勇.物聯網安全特征與關鍵技術[J].南京郵電大學科技處;南京郵電大學計算機學院,2010(04)

[3]徐學洲,何云升.橢圓曲線密碼體制應用研究.[M]西安電子科技大學出版社,2006

[4]Don B Johnson,Alfred J Menezes.Elliptic Curve Digital Signature Algorithm (ECDSA)[Z/OL].http://www.certicom.com/resources/download/ecdsa.ps.

[5]王德力.ECDSA在移動電子商務中的應用.[M]東北大學出版社,2005

[6]張偉.ECDSA算法實現及其安全性分析[J].信息與電子工程,2003(02)

[7]邵曉博.橢圓曲線密碼體制中密鑰協商方案改進的研究[J].計算機安全,2010(02)

主站蜘蛛池模板: 久久a毛片| 人人艹人人爽| 亚洲欧美激情另类| 国产在线无码av完整版在线观看| 国产成人精品免费视频大全五级| 看你懂的巨臀中文字幕一区二区| 114级毛片免费观看| 狠狠操夜夜爽| 久久天天躁狠狠躁夜夜2020一| 久久精品丝袜| 国产成人久久777777| 999精品视频在线| 2021亚洲精品不卡a| 台湾AV国片精品女同性| 国产午夜不卡| 国产欧美中文字幕| 久久semm亚洲国产| 久久99精品久久久久纯品| 成人在线综合| 成人免费网站久久久| 国产99在线| 4虎影视国产在线观看精品| 亚洲成人精品| 97av视频在线观看| 先锋资源久久| 制服丝袜国产精品| h视频在线播放| 午夜电影在线观看国产1区| 久久精品国产精品国产一区| 久久美女精品| 亚洲精选无码久久久| 日韩 欧美 小说 综合网 另类| www.av男人.com| 成人午夜视频免费看欧美| 国产乱人视频免费观看| 黑人巨大精品欧美一区二区区| 午夜性刺激在线观看免费| 亚洲 欧美 日韩综合一区| 国产成人1024精品下载| 91青青草视频| 亚洲日韩国产精品无码专区| 日韩在线2020专区| 青青青视频蜜桃一区二区| 伊人色婷婷| 免费观看亚洲人成网站| 六月婷婷激情综合| 亚洲日韩AV无码一区二区三区人| 日韩激情成人| 亚洲无码高清视频在线观看| 午夜视频免费一区二区在线看| 国产麻豆精品在线观看| Aⅴ无码专区在线观看| 妇女自拍偷自拍亚洲精品| 丝袜亚洲综合| 国产欧美视频综合二区| 亚洲综合专区| 日本三级欧美三级| 99视频精品全国免费品| 国产精品视频公开费视频| 成人国产精品网站在线看| 2020精品极品国产色在线观看| 欧美亚洲日韩中文| 丰满人妻中出白浆| 国产精品国产主播在线观看| 精品乱码久久久久久久| 日韩av在线直播| yy6080理论大片一级久久| 国产成人精品18| 国产精品福利社| 少妇人妻无码首页| 国产精欧美一区二区三区| 国产丝袜丝视频在线观看| 伦精品一区二区三区视频| 日本在线欧美在线| 1024国产在线| 好久久免费视频高清| 国产精品亚欧美一区二区| 久久特级毛片| 中文字幕欧美日韩高清| 亚洲成人免费看| 青青草国产精品久久久久| 午夜日b视频|