分享
 
 
 

用多步的密匙交换方式来进行非常安全的会话初始化和用户名密码登陆

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

用多步的密匙交换

一般的验证是需要传递用户名和密码的。

但是怎样才能保证传递的过程中密码不被泄露??

可能会有人说,对密码进行加密不就完了?

但是实际上,除了密码不被泄露外,还需要保证没有截取欺骗等安全问题。

RSA等非对称加密,可以另第三方无法得到客户的密码。

但是第三方则可以直接发送加密过的数据,达到欺骗服务器的目的。

下面是我设计的一个解决方案,(绝对原创,但是原理简单,不保证有人之前已经用这个了。)

现在用三重DES:

第一步:

客户端,用户输入

clientUsername,clientPassword

客户端,往服务器端发送clientUsername

第二步:

服务器,接收到clientUsername后,

查找databaseUsername

如果没有找到 -> Exception -> 设计一个方案告诉客户找不到用户名,终止

第三步:

服务器,得到databasePassword,

生成一个字符串serverStr1,serverStr2,并且储存起来

(其实放在session中还是其他地方,随便,但是不要放到客户端去,例如不要使用ViewState)

用databasePassword作为Key,对serverStr1进行加密,

得到serverStr1Encrypted=TDES(serverStr1,databasePassword)

用serverStr1作为Key,对serverStr2进行加密,

得到serverStr2Encrypted=TDES(serverStr2,serverStr1)

把serverStr1Encrypted,serverStr2Encrypted传到客户端

第四步:

客户端,得到serverStr1Encrypted,serverStr2Encrypted

用clientPassword作为Key,对serverStr1Encrypted进行解密,

得到clientStr1=~TDES(serverStr1Encrypted,clientPassword)

用clientStr1作为Key,对serverStr2Encrypted进行截密,

得到clientStr2=~TDES(serverStr1Encrypted,clientPassword)

如果其中一次解迷发生错误,-> Exception -> 那么告诉客户密码不对,终止

如果密码是对应的话,那么serverStr1和clientStr1是对应的。serverStr2和clientStr2对应。

这个过程目的就是使用password作为Key,然后在两者间安全地交换密匙str2

使用clientStr2作为Key,对clientPassword进行加密,

得到clientPasswordEncrypted=TDES(clientPassword,clientStr2)

第五步:

把clientPasswordEncrypted送到服务器端

第六步:

服务器,得到clientPasswordEncrypted

根据会话状态,

测试:

clientPasswordEncrypted==TDES(databasePassword,serverStr2);

如果其中一次解迷发生错误,-> Exception -> 那么告诉客户密码不对,终止

如果相等?LoginAs(databaseUsername);

这个方法也不是100%安全。首先是DES本身的问题。这个则不作为讨论范围。

然后最突出的问题在第五步。

如果在clientPasswordEncrypted发送过程中,被第三方终止了,

然后第三方冒认客户,把clientPasswordEncrypted传过去,就可以达到欺骗的目的。

为了防止这个,需要在第六步,需要在会话方面进行进可能多的会话验证。

例如判断IP等方法。(物理因素往往比数字因数好)

然后更多的方法是进行密匙交换,(当中的DESKey当然是随机的,只对会话其效果的)

第三步,

服务器另外创建serverDESKey,作为让客户进行信息加密之用

传给客户的则是serverDESKeyEncrypted=TDES(serverDESKey,serverStr1)

第四步,

客户端另外创建clientDESKey,作为让服务器进行信息加密之用

clientDESKeyEncrypted=TDES(clientDESKey,clientStr1)

然后在第五步和clientPasswordEncrypted同时交给服务器。

那么即使发生欺骗,

第三方没有办法得到两个DESKey,

没有办法发送合法的请求,也没有办法把得到信息进行解密。

这个过程。核心仍然是会话初始密匙clientStr1=serverStr1

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有