導航:首頁 > 源碼編譯 > dh演算法實現

dh演算法實現

發布時間:2022-07-30 13:07:19

⑴ 電子商務論文該如何寫或者給一篇最新的論文作為參考,謝謝!~!

移動Agent在電子商務中的安全研究
摘要]基於移動代理的電子商務系統面臨的一系列安全問題制約著電子商務的發展,通過對電子商務交易不同階段移動代理
行為的分析,使移動代理使用不同的訪問模式,提出了一個雙方可互相認證身份且無第三方參與會話密鑰產生的電子商務交易模型
來盡可能地降低安全風險。
[關鍵詞]電子商務移動代理認證公開密鑰密碼體制
電子商務(E-Commerce)是通過網路進行的生產、營銷和流通
活動,它通過Internet進行網上交易,還利用電子信息技術來解決
擴大宣傳、降低成本、增加價值和創造商機的商務活動,包括通
過網路實現從原材料查詢、采購、產品展示、訂購到生產、儲運
以及電子支付等一系列的貿易活動。目前,電子商務已經成為了
一種不可缺少的新型商務工作模式;電子商務一般分為兩種:一是
企業與企業之間的電子商務(B2B),另一類是企業與個人之間的
電子商務(B2C)。後者亦即網上購物或在線購物。本文提出的模
型涉及的是後者,即網上購物的電子商務(B2C),這也是目前電
子商務應用最為廣泛的一部分。但是個人要想在充斥著很大信息
量的互聯網上尋找到符合自己要求的產品是非常困難的。
移動代理(Mobile Agent,MA)是在20世紀90年代中期興起
的一種重要的分布式計算技術。它是一個能在異構網路中自主地
從一台主機遷移到另一台主機並與其他代理或資源交互的程序。
由於MA具有代理性、自治性、智能性、反應性、主動性等優點,
越來越受到重視。也正是這些特點,使得MA在解決電子商務問
題上顯得獨具優勢。它可根據用戶提出的請求對網路資源進行搜
索,經過過濾、分析和挖掘等處理,最後按照關聯度的優先順序
在用戶指定的時間內向用戶反饋信息。
但是和其它電子商務系統一樣,基於MA的電子商務系統同
樣也面臨著一些安全問題。本文通過對用戶在電子商務交易的不
同階段行為的分析,提出一種讓MA使用不同訪問模式的雙方可
互相認證身份且無第三方參與會話密鑰產生的電子商務交易模
型。模型的安全分析表明,本模型不僅有利於電子商務的順利進
行,同時也提高了網上貿易的安全性。
一、基於移動代理的電子商務系統分析
1.系統的工作流程
(1)用戶通過IE瀏覽器或其他應用程序向系統中的MA管理器
發起查詢請求,MA管理器為用戶定製特定的MA來代表用戶。
(2)MA管理器將MA發布到網路中,此時,MA就根據既定的
路由線路遍歷相關商家伺服器結點,並收集用戶感興趣的產品信
息及屬性。
(3)MA將收集到的信息反饋給用戶,由用戶根據收集到的信
息篩選出與之交易的商家。
(4)代表用戶意願的MA與代表商家的MA進行具體交易。
我們將上述過程分為收集信息階段、篩選信息階段和交易階
段,而MA主要在收集信息階段和交易階段工作。在收集信息階
段,MA要在多個商家伺服器結點上遷移,我們把該階段的行為
稱為多跳。在交易階段,MA僅和某個商家交易,所以把該階段
的MA行為稱為單跳。
2.系統面臨的主要安全問題
在多跳階段,由於MA需要在多個商家伺服器結點上遷移,所
以有可能面臨機密信息泄漏的風險。惡意的商家有可能竊取競爭
者的產品信息、竊聽MA中攜帶的有關用戶的信息(如信用卡帳
號等)、篡改MA已經收集到的產品信息或者直接將競爭者從MA
的路由線路中刪除等。這些風險主要是由MA運行的主機環境不
可信任導致,不可信主機環境是基於MA電子交易的最大威脅,是
與MA安全最密切的因素。Sander T指出,如果主機環境是不可
信任的,那麼惟一的解決辦法是使用特殊的硬體設備來執行MA。
但是目前缺少統一的硬體標准,硬體價格又過高,因此目前想要
利用硬體設備來提供可信的主機環境是行不通的。另外,惡意的
MA也有可能對主機進行拒絕服務攻擊,包括破壞商家的數據、文
件和非法佔用商家系統資源等。
在單跳階段,MA和某個商家交易,要涉及到顧客的信用卡
賬號、商家給出的最低價格這樣的機密信息,這些信息在不安全
會話時都有可能被竊聽,一旦這些信息被泄露,造成的後果是不
堪設想的。另外這個階段還有可能遭到中間人攻擊即惡意商家和
惡意MA的偽裝,使得交易無法正常進行。看得出來,此階段的
信息保密性顯然要高於多跳階段,在此階段會話保密性要求遠遠
勝於交易的速度。
二、基於移動代理的安全電子商務模型
基於前面的分析,提出了基於移動代理的安全電子商務模型。
該模型針對的是某個顧客網上購物或在線購物的電子交易活動。
1.模型採用的安全技術
針對多跳階段中惡意主機對MA的安全威脅,在模型中使用
RSA公開密鑰密碼技術;而在單跳階段,為了在最大程度上保證雙
方會話的安全,我們使用改良過的離散對數密碼體制產生雙方會
話的密鑰,避免顧客和商家交易時最可能受到的中間人攻擊。下
面簡單介紹本模型在單跳階段產生會話密鑰的原理。
第一個公開發表的公開密碼演算法即DH(Deffie-Hellman)演算法由
W.Deffie和ME.Hellman提出。該演算法結構簡單,使用方便,實用性
強,被認為是安全、實用的非對稱密碼方案,適用於交互環境下的
網路保密。這種演算法的保密性基於求解離散對數問題的困難性,
即:Pd=M mod P,其中d叫作模P的以C為底數的M的對數。
在已知C和P的前提下,由d求M很容易,只相當於進行一次指數
運算,但由M反過來求d其時間復雜度為指數形式。設P是一個大素數,0<a<P,並且a是P的一個本原元,a也是
大的素數,a,P為網路中所有的用戶共享。網路中的每一個用戶i
選一個大的隨機整數Ki作為秘鑰。設甲、乙兩個用戶的密鑰分別
為K
1
和K
2
,甲乙之間在需要相互通信時,可以通過下面的過程建立
相同的密鑰:
(1)甲乙雙方各自計算出:
b
1
=ak1mod P,0<b
1
<P,b
2
=ak2mod P,0<b
2
<P
(2)甲乙分別把b1和b2發送給對方;
(3)雙方求出共同的密鑰為:
K=(ak1)k2 mod P=(ak2)k1 mod P(0<k<P);
(4)雙方使用K進行對稱密碼體制的保密通信。
該演算法雖然使用起來非常方便,但在進行會話時容易受到中
間人攻擊,因此在本模型中使用DH演算法時加入RSA簽名體制,即
對k
1
,k
2
經過簽名後再發送給對方,這在一定程度上可以避免中
間人攻擊。
2.模型的工作流程
在系統初始化時,顧客和商家要在認證中心注冊各自的公鑰。
多跳階段:
(1)顧客描述出自己對產品的需求信息,包括產品的名稱、支
付方式等,然後計算出顧客標識、需求信息的摘要,再用自己的
私鑰對摘要進行簽名,最後通過IE瀏覽器或其它應用程序向系統
中的MA管理器發起查詢請求,MA管理器為顧客創建MA並將簽
名後的摘要作為MA攜帶的信息。
(2)MA此時開始根據即定的遍歷線路在各個商家伺服器間
遷移。
(3)當MA遷移到商家i時,分下列兩種情況:
如果商家i是遷移路線上的首個商家,則商家i向認證中心查
詢顧客的公鑰,驗證顧客的簽名;如果商家i不是遷移路線上的
首個商家,則商家i除了要驗證顧客的簽名外還要驗證MA之前訪
問過的所有商家的簽名。
(4)驗證通過後,商家i在自己的主機上運行MA,產生協商
數據D
i
,協商數據中包括商家給出的產品價格、某時間段的打折
率、產品運輸方式和售後服務等信息。
(5)商家i算出自己的商家標識、協商數據的摘要,再用顧客
的公鑰對摘要加密,最後用自己的私鑰簽名得到R
i
,再將R
i
添加
到MA中。
(6)MA接著向下一個商家伺服器結點遷移。
(7)MA遍歷線路上的所有商家重復(3)-(6)中的操作。
(8)當MA遍歷完所有的商家後,返回到MA管理器,MA管
理器將MA中攜帶的商家提供的產品信息即{R<br>1<br>,R<br>2<br>…R<br>i<br>}發送給顧
客同時撤消MA。
篩選信息階段:
(9)顧客獲得MA收集的信息{R<br>1<br>,R<br>2<br>…R<br>i<br>},首先驗證所有商家
的簽名,簽名驗證通過後,用自己的私鑰解密獲得{D<br>1<br>,D<br>2<br>…D<br>i<br>},
從中挑選出最滿意的,准備與其交易的一個商家j(1≤j≤i),。
單跳階段:首先選定大素數P和a,a是P的本原元。
(10)顧客S
0
產生一個隨機整數A,用DH演算法計算出b
0
=aA mod
P,首先對b
0
數字簽名,再用商家j的公鑰加密得到G
0
,發送給商家
j。商家j選定一個隨機整數B,用DH演算法計算出b
j
=aB mod P,先
對b
j
數字簽名,再用顧客S
0
的公鑰加密得到G
j
,最後發送給顧客S
0

(11)顧客S
0
將收到的加密後的消息用自己的私鑰解密以驗證
商家j的簽名,再用商家j的公鑰解密得到bj,計算出PK
0
=b
j
A
mod
P。商家j將收到的加密後的消息用自己的私鑰解密以驗證顧客S0
的簽名,再用顧客S
0
的公鑰解密得到b
0
,計算出PK
j
=b
0
B
mod P。
根據前面的DH演算法,從理論上講PK
0
和PK
j
是相等的,即PK
0
=PK
j
=K。
(12)顧客S
0
和商家j啟動對等密鑰密碼程序如DES,進行秘密
會談。電子商務過程結束。
三、模型的安全分析
對惡意商家身份的認證:假設某個惡意商家要冒充其它商家
和顧客進行交易,由於商家的身份是用商家的私鑰簽名的,而其
它商家無法獲得該私鑰,所以無法冒充。
對商家伺服器可能受到拒絕服務攻擊的問題:當有MA遷移到
某個主機上時,要驗證顧客和MA訪問過的商家的簽名,所以避
免了惡意MA對主機的拒絕服務問題。
對MA中攜帶的信息機密性問題:每個商家將自己的標識、協
商數據摘要用顧客的公鑰加密,其他任何人不能獲得顧客的私
鑰,所以不能解密獲得MA中攜帶的信息,MA信息機密性得到保
證。同時,也就不能篡改信息,那麼信息的完整性也有了保證。
對單跳階段可能受到中間人攻擊的問題:使用了帶RSA簽名
的離散對數密碼體制,可在一定程度上提高雙方會話機密性,避
免受到攻擊。
四、結束語
雖然對MA的安全問題已經有了不少的措施,但是大部分對
電子商務來講都是不合適的。本文通過對電子商務不同階段MA
的行為分析,通過讓MA使用不同的訪問模式盡可能地降低安全
風險。特別是在單跳階段會話密鑰的產生是沒有第三方參加的,
該會話密鑰的產生要雙方的共同合作才能完成,這樣不僅有利於
電子商務的順利進行,也提高了網上貿易的安全性。當然,本模
型中對MA的安全保護是以犧牲一定執行時間為代價的,具體的
定量分析有待今後做進一步的研究。
參考文獻:
[1]周麗莉溫秀梅:電子商務信息安全的方法和研究[A].微計
算機信息,2006年第8~3期,P247~249
[2]饒光趙新寧唐家益:Mobile Agent中的通信安全問題
研究[A].張煥國覃中平王麗娜:信息和通信安全—CCICS』2003
第三界中國信息和通信安全學術會議論文集[C].科學出版社。
2003,3月
[3]JosangA.[A].

Privacy[C].Springer,1997
[4]SanderT,TSCHUDINCF.TowardsmobileCryptography[A].Security
andPrivacy』98,』98[C].1998,
3~6
[5]黃京華:電子商務教程[M].北京:清華大學出版社,1999
[6]楊義先:網路信息安全與保密[M].北京:北京郵電大學出版
社,1998

⑵ ajax請求的URL可以加密嗎

可以加密,而且對伊一些敏感度搞的項目更要加設置加密:

  1. 首先是密鑰交換的過程,Diffie-Hellman密鑰交換演算法參考維基網路的文檔:http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange ,client端js語言,服務端php語言 用DH密鑰交換演算法交換密鑰。

  2. js部分:

  3. varg="2";
    varp="28303789813787064911279666129";
    functiondoStaff(){
    varbig_a=randBigInt(100);
    varbig_p=str2bigInt(p,10,0);
    varbig_g=str2bigInt(g,10,0);

    varA=powMod(big_g,big_a,big_p);
    varstr_A=bigInt2str(A,10);

    varB;
    varsecret;

    $.ajax({
    url:'server.php',
    type:'GET',
    async:false,
    data:{"A":str_A},
    cache:false,
    timeout:5*1000,
    dataType:'json',
    success:function(data,status,xhr){
    B=str2bigInt(data.B,10,0);
    },
    error:function(){
    alert(2);
    }
    });

    secret=powMod(B,big_a,big_p);
    secret=bigInt2str(secret,10);
    註明:上邊的代碼中,最後的到的secret,就是最終和服務端協商一致的密鑰(這是一個很多位數字的字元串,我們的密鑰使用16位元組,那麼我們可以考慮對它md5,作為對稱加密的密鑰)。
    上述代碼中bigint相關的js,直接使用的一個開源的bigint.js(js代碼有不開源的嗎?^_^)。
  1. php部分:

  2. <?php
    $g="2";
    $p="28303789813787064911279666129";

    $b="86410430023";//TODO:.


    $A=$_REQUEST['A'];
    $B=bcpowmod($g,$b,$p);

    $secret=bcpowmod($A,$b,$p);

    echo'{"B":"'.$B.'"}';

    可見我們採用固定的g和p,這2個變數是公開的,不怕泄漏。
    js端首先生成一個100bit長的整數a,並依據公式計算出A, 用ajax的形式發送到服務端php。 服務端收到A,自己生成變數b,依據公式計算出B,響應給客戶端js。
    此時,服務端和客戶端分別可以依據公式計算出一個相同的secret。 這個secret沒有在網路中傳輸過,雙方可說是「心照不宣」,且雙方自己選定的a和b是保密的,第三方無法根據公開傳輸的數據推算出a,b,當然也無法得到secret。 這就是DH演算法的原理。

linux 密鑰交換演算法DH是不是算雙方生成了密鑰

我自己寫了個DH秘鑰的demo代碼, 以前加密用過AES的加密,全套代碼寫下來太費時間又沒技術含量。
如果你需要AES的加密代碼可以留個郵箱給我。

⑷ 如何改進DH演算法,使其抵禦中間人攻擊

改進DH演算法使其抵禦中間人攻擊的方法是:在途中根據需要修改它們的密文,使得A和B都不知道他們在和C共享通信。

DH演算法的缺點是沒有提供雙方身份的任何信息.。它是計算密集性的,因此容易遭受阻塞性攻擊,即對手請求大量的密鑰。受攻擊者花費了相對多的計算資源來求解無用的冪系數而不是在做真正的工作.,沒辦法防止重演攻擊。

容易遭受中間人的攻擊,第三方C在和A通信時扮演B;和B通信時扮演A.A和B都與C協商了一個密鑰,然後C就可以監聽和傳遞通信量。



(4)dh演算法實現擴展閱讀:

基於原根的定義及性質,可以定義Diffie-Hellman密鑰交換演算法.該演算法描述如下:

1、有兩個全局公開的參數,一個素數q和一個整數a,a是q的一個原根。

2、假設用戶A和B希望交換一個密鑰,用戶A選擇一個作為私有密鑰的隨機數XA(XA<q),並計算公開密鑰YA=a^XA mod q。A對XA的值保密存放而使YA能被B公開獲得。類似地用戶B選擇一個私有的隨機數XB<q,並計算公開密鑰YB=a^XB mod q。B對XB的值保密存放而使YB能被A公開獲得。

3、用戶A產生共享秘密密鑰的計算方式是K = (YB)^XA mod q.同樣,用戶B產生共享秘密密鑰的計算是K = (YA)^XB mod q.這兩個計算產生相同的結果:

K = (YB)^XA mod q = (a^XB mod q)^XA mod q = (a^XB)^XA mod q = a^(XBXA) mod q = (a^XA)^XB mod q = (a^XA mod q)^XB mod q = (YA)^XB mod q 因此相當於雙方已經交換了一個相同的秘密密鑰。

⑸ 求一段能實現DH(Diffe-Hellman)演算法的C++/C源代碼

http://wenku..com/link?url=rCAD56c5q8__shYoa9HY-ffODi9LrVnJ7wj4_
http://www.docin.com/p-5312518.html

⑹ DH演算法問題。

DH組的本質是使用非對稱密鑰來加密對稱密鑰。 DH演算法過程: 1、相互產生密鑰對 2、交換公鑰 3、用對方的公鑰和自己的私鑰運行DH演算法——得到另外一個密鑰X

⑺ 簡述DH演算法

DH組的本質是使用非對稱密鑰來加密對稱密鑰。 DH演算法過程: 1、相互產生密鑰對 2、交換公鑰 3、用對方的公鑰和自己的私鑰運行DH演算法——得到另外一個密鑰X

⑻ 什麼是DH非對稱加密演算法

DH(僅能用於密鑰分配,不能加解密數據)
非對稱加密演算法

特點:

發送方和接收方均有一個密鑰對(公鑰+私鑰),其中公鑰傳播,私鑰自己保存,不需要傳播
私鑰不需要傳播的特性解決了對稱加密演算法中密鑰傳播的困難(這個困難一般通過線下傳遞可以解決)
加密安全性極高,只用於一些電子商務網站,加解密速度遠低於對稱加密
一般情況下,為了解決非對稱加密演算法加解密速度低的問題,採用非對稱加密(使用公鑰+私鑰對對稱加密的密鑰進行加解密)+對稱加密(加解密數據)相結合的方式。
常見演算法:

DH(非對稱加密的基石)
RSA(非對稱加密的經典,除了可用於非對稱加密,也可用於數字簽名,RSA--155(512位密鑰)已被破解)
ElGamal

⑼ 驗證DH密鑰交換演算法

我自己寫了個DH秘鑰的demo代碼, 以前加密用過AES的加密,全套代碼寫下來太費時間又沒技術含量。

如果你需要AES的加密代碼可以留個郵箱給我。

java">publicclassTest1{
publicstaticfinalintP=30;//公開的大家都知道的
publicstaticfinalintG=9;//公開的大家都知道的

publicstaticvoidmain(String[]args){
Ax=newA();
intone=x.getV();
//分割A代表A這邊的系統加密one代表是給別人的值
By=newB();
inttwo=y.getV();
//B代表另外一邊加密two代表是給別人的值
System.out.println(x.getKey(two));
System.out.println(y.getKey(one));
}
}

classA{
privateinta;//自己的私有密值,不會告訴任何人

publicA(){
Randomr=newRandom(200);
a=r.nextInt();
}

publicintgetV(){
return(Test1.G^a)%Test1.P;
}

publicintgetKey(intv){
return(v^a)%Test1.P;
}
}

classB{
privateintb;//自己的私有密值,不會告訴任何人

publicB(){
Randomr=newRandom(200);
b=r.nextInt();
}
publicintgetV(){
return(Test1.G^b)%Test1.P;
}

publicintgetKey(intv){
return(v^b)%Test1.P;
}
}

⑽ 高分求:Java實現DH演算法的代碼

http://instry.ccidnet.com/art/1077/20051102/363689_8.html

閱讀全文

與dh演算法實現相關的資料

熱點內容
音樂噴泉軟體要什麼加密狗 瀏覽:491
androidhttpmime 瀏覽:774
威科夫操盤法pdf 瀏覽:981
演算法可以用圖表表示 瀏覽:948
山西太原php 瀏覽:273
常用cmd網路命令 瀏覽:676
hashmap7源碼分析 瀏覽:898
搜索引擎原理技術與系統pdf 瀏覽:361
運動估計演算法python 瀏覽:860
java正則1 瀏覽:538
redhatlinux最新 瀏覽:182
python字典編程詞彙 瀏覽:147
微信和伺服器如何通訊 瀏覽:13
百家號伺服器配置有什麼用 瀏覽:600
怎麼為電腦加密 瀏覽:59
伺服器出現差錯是什麼意思 瀏覽:619
蘋果app移到商店裡怎麼刪掉 瀏覽:257
phpjsphtml 瀏覽:66
吃雞手機國際服伺服器超時怎麼辦 瀏覽:69
努比亞Z5無命令 瀏覽:642