.net 登录协议

.net 登录协议,.net,security,login,.net,Security,Login,我应该如何设计一个登录协议,使其更加安全 客户端连接并发送他的用户名 服务器为用户发送的数据总是相同的 客户端将salt添加到密码中,对其进行哈希运算并将其发送到服务器 通过这种方式,密码一直被隐藏,但这并不能阻止黑客复制散列,如果他能在收到密码后将其发送过来……如果服务器只在一个最初用该密码挑战的连接上接受该加密密码,那么黑客将不得不继续连接,直到获得相同的密码盐就像他看到的肉馅一样。我并不是说这是理想的,Diffie-Hellman密钥交换和完全加密的身份验证可能更安全,尽管仍然容易受到中间

我应该如何设计一个登录协议,使其更加安全

客户端连接并发送他的用户名 服务器为用户发送的数据总是相同的 客户端将salt添加到密码中,对其进行哈希运算并将其发送到服务器
通过这种方式,密码一直被隐藏,但这并不能阻止黑客复制散列,如果他能在收到密码后将其发送过来……

如果服务器只在一个最初用该密码挑战的连接上接受该加密密码,那么黑客将不得不继续连接,直到获得相同的密码盐就像他看到的肉馅一样。我并不是说这是理想的,Diffie-Hellman密钥交换和完全加密的身份验证可能更安全,尽管仍然容易受到中间人攻击,除非你小心,但我认为简单的调整至少是有益的


再说一次,我不是安全专家,你可以说不应该听取任何非专家的安全建议。

如果服务器只在一个最初用盐挑战的连接上接受盐密码,那么黑客将不得不继续连接,直到他得到与他看到的哈希相同的盐为止。我并不是说这是理想的,Diffie-Hellman密钥交换和完全加密的身份验证可能更安全,尽管仍然容易受到中间人攻击,除非你小心,但我认为简单的调整至少是有益的


再说一遍,我不是安全专家,你可以说不应该听取任何非专家的安全建议。

将安全性留给更高级别的协议SSH、SSL,并保持简单。

将安全性留给更高级别的协议SSH、SSL,并保持简单。

第2步似乎是更大的弱点。如果你能确保服务器发送足够大的salt,而不是相同的salt,两次我怀疑一小部分适当的随机数,加上一个递增计数器,那么hashed可能就足够了,但我无法证明它是,这可能就足够了。或者,跟随ssg的脚步,将整个过程封装在SSL会话中。

第2步似乎是更大的弱点。如果你能确保服务器发送足够大的salt,而不是相同的salt,两次我怀疑一小部分适当的随机数,加上一个递增计数器,那么hashed可能就足够了,但我无法证明它是,这可能就足够了。或者,遵循ssg的指导,将整个过程封装在SSL会话中。

安全性很难

不要使用自己的登录协议,或者在加密的SSH、SSL上使用或执行一些琐碎而健壮的操作。。。联系有那么多可靠的成熟协议的实现下降,有那么多的系统失败的例子是由于有缺陷的车轮改造-如果登录是保护任何重要的东西在所有,根本没有借口

也就是说,如果你在这里的目的是学习设计这样的算法,我强烈推荐Bruce Schneier。

安全性很难

不要使用自己的登录协议,或者在加密的SSH、SSL上使用或执行一些琐碎而健壮的操作。。。联系有那么多可靠的成熟协议的实现下降,有那么多的系统失败的例子是由于有缺陷的车轮改造-如果登录是保护任何重要的东西在所有,根本没有借口


也就是说,如果你在这里的目的是学习设计这样的算法,我强烈推荐Bruce Schneier的。

好吧,它总是发送相同的salt:因为服务器不存储密码,只存储salt及其散列。如果服务器总是发送相同的salt,那么它基本上是没有意义的。它每次都应该发送不同的salt。它总是发送相同的salt:因为服务器不存储密码,只存储salt及其哈希。如果服务器总是发送相同的salt,那么它基本上是没有意义的。它应该每次发送一个不同的盐。由于服务器没有密码,只是哈希,它不能每次发送一个新的盐,因为它不知道哈希的结果。那么,那将是一个问题,因为在salt从不更改的情况下发送已知的salt哈希密码在安全方面与以明文形式发送密码没有太大区别,所以您仍然只需要一个捕获的会话来稍后重新建立凭据。这就是为什么我想知道我可以更改什么:P因为我知道这是不安全的。。但是我希望我能从我在这里发布的这个问题中学到一些新的东西:因为服务器没有密码,只是散列,它不能每次都发送一个新的盐,因为它不知道散列的结果:那么,那将是一个问题,因为发送一个已知的salt哈希密码(salt从未更改),在安全方面与发送salt没有多大区别
密码为明文,以后您仍然只需要一个捕获的会话就可以重新建立凭据。这就是为什么我想知道我可以更改什么:P因为我知道这是不安全的。。但是我希望我能从我在这里发布的这个问题中学到一些新东西:关于这本书,我是C/VB.NET开发者,我以前使用了一些C++,但那只是基本的东西,所以我的问题是读C代码很容易,因为书包含C代码……如果你是C开发者,在算法教科书中使用C/C++代码片段应该不会有太多问题。一般来说,它们只是用来说明主要文本/提供工作的例子。关于这本书,我是C/VB.NET开发人员,我以前使用了一些C++,但这只是基本的东西,所以我的问题是读C代码很容易,因为书包含C代码……如果你是C开发者,在算法教科书中使用C/C++代码片段应该不会有太多问题。通常,它们仅用于说明正文/提供工作示例。选中此项可获得更多想法。选中此项可获得更多想法。