Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
请推荐一种在Java中通过HTTP授权纯文本事务的方法?_Java_Http_Security_Signing - Fatal编程技术网

请推荐一种在Java中通过HTTP授权纯文本事务的方法?

请推荐一种在Java中通过HTTP授权纯文本事务的方法?,java,http,security,signing,Java,Http,Security,Signing,我在一个不安全的网络上有一个web服务,需要授权 我希望通过HTTP而不是HTTPS实现它,同时避免中间人攻击和嗅探攻击。我只需要客户端和服务器的一个密钥 客户机调用服务器函数,服务器可以验证该客户机是否正确,并可以返回响应,该响应需要签名而不是加密 我对如何实现这一点有一个粗略的想法,并将其作为示例: Pseudocode Web service and client has already shared PASSCODE1 and PASSCODE2 First Handshake: Cl

我在一个不安全的网络上有一个web服务,需要授权

我希望通过HTTP而不是HTTPS实现它,同时避免中间人攻击和嗅探攻击。我只需要客户端和服务器的一个密钥

客户机调用服务器函数,服务器可以验证该客户机是否正确,并可以返回响应,该响应需要签名而不是加密

我对如何实现这一点有一个粗略的想法,并将其作为示例:

Pseudocode
Web service and client has already shared PASSCODE1 and PASSCODE2

First Handshake:
Client pings web service
Web service sends random string A with length 
Client checks A is nonnull, and sends Hash X=(md5(A XOR PASSCODE1) XOR 
    concat("RIGHT",random string B) XOR PASSCODE2)
Web service receives Hash X, checks if "RIGHT" is there, saves  key B, sends 
    Hash Y=(md5(B XOR PASSCODE1) XOR concat ("RIGHT", random string C) 
        XOR PASSCODE2)
Client checks if this value is right, and they are authenticated
At this point, if everything goes right, have keys B and C for this 
    particular transaction

Sample Transaction:
Client calls function(args, md5(args, C) XOR PASSCODE2)
Server returns (object(), md5(args, B) XOR PASSCODE2)

keys expire after a few minutes, and a new key pair needs to be requested
我知道这个方法很粗糙,还有其他方法吗


具体地说,我希望用Java来做这件事。

一般来说,你不应该自己做这件事。根据您使用的平台,很可能有一个框架可以实现

本规范涵盖消息完整性以及使用X.509证书使用纯文本(换句话说,通过HTTP)的消息加密

但是,重要的是要保护用于签名的证书,因为如果证书公开,就无法避免中间人攻击

A显示了有关的一些资源


但是,您可能希望查看,因为它在框架中似乎更标准化了一点。

一般来说,您不应该自己这样做。根据您使用的平台,很可能有一个框架可以实现

本规范涵盖消息完整性以及使用X.509证书使用纯文本(换句话说,通过HTTP)的消息加密

但是,重要的是要保护用于签名的证书,因为如果证书公开,就无法避免中间人攻击

A显示了有关的一些资源


但是,您可能希望查看,因为它在框架中似乎更加标准化了。

正如其他人所评论的,SSL是实现这一点的方法。滚动你自己的是一个错误的食谱

如果你设计了自己的散列和加密算法组合,而你又不是一个优秀的密码学家,那么你肯定会想出一些可以利用的东西。当然,你是否足够关心是另一回事。也许您只是想防御那些不愿意利用您方法中的弱点的偶然攻击者


一种方法可能是通过普通HTTP交换S/MIME内容。至少你坚持一个既定的机制。

正如其他人评论的那样,SSL是实现这一点的方法。滚动你自己的是一个错误的食谱

如果你设计了自己的散列和加密算法组合,而你又不是一个优秀的密码学家,那么你肯定会想出一些可以利用的东西。当然,你是否足够关心是另一回事。也许您只是想防御那些不愿意利用您方法中的弱点的偶然攻击者


一种方法可能是通过普通HTTP交换S/MIME内容。至少你还在坚持既定的机制。

那么,你放弃35年的密码研究的确切原因是什么?如果你真的关心MITM,那么你必须做一些你真正关心安全的事情。选择一种语言,您可以找到HTTPS的完整实现。或者SSH。这些东西不容易纠正,而且非常非常容易出错。@Peter,我只能在HTTP web服务器上分发,而且我有一个专用的客户端。我想问的是,哪一项表明我并没有试图离开,只是想知道我能用什么。而你离开35年的密码研究的确切原因是什么?如果你真的关心MITM,那么你必须做一些你真正关心安全的事情。选择一种语言,您可以找到HTTPS的完整实现。或者SSH。这些东西不容易纠正,而且非常非常容易出错。@Peter,我只能在HTTP web服务器上分发,而且我有一个专用的客户端。我想问的是,哪一个显示了我不是在试图走开,只是想看看我能用什么。你能推荐一些java平台吗,WSS4J看起来很难部署?@TiansHUo:更新了反映你在使用java的问题,以及我对一些资源的回答。你能推荐一些java平台吗,WSS4J看起来很难部署?@TiansHUo:更新了问题以反映您正在使用Java,以及我对一些参考资料的回答。