导航:首页 > 源码编译 > 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算法实现相关的资料

热点内容
怎么把钉钉文件夹保存到手机里 浏览:69
兵法pdf 浏览:643
app格式化下载不起怎么办 浏览:34
信捷加密文件是干嘛用的 浏览:952
su模型下载怎么解压不了 浏览:182
国际体验服如何把服务器改为亚服 浏览:880
手机怎么关闭视频加密 浏览:462
单片机编程存表法 浏览:719
富士康服务器是什么 浏览:452
编译是二进制吗 浏览:262
小程序账号登录源码 浏览:876
云南社保局app叫什么 浏览:697
美女程序员吃大餐 浏览:210
项目二级文件夹建立规则 浏览:560
dns使用加密措施吗 浏览:174
php独立运行 浏览:535
手机sh执行命令 浏览:731
云服务器的角色 浏览:737
单片机频率比例 浏览:845
我的世界服务器如何关闭正版验证 浏览:508