Security 一种认证算法的安全性
我正在用python编写一个小脚本,其中客户端必须向服务器进行身份验证。其思想是,攻击者在不知道密码的情况下,无法通过监听网络对自己进行身份验证。 尽管有任何良好的实践,我还是在尝试自己的安全身份验证(它只供个人使用) 在我当前的算法中,客户端和服务器共享:Security 一种认证算法的安全性,security,encryption,cryptography,aes,Security,Encryption,Cryptography,Aes,我正在用python编写一个小脚本,其中客户端必须向服务器进行身份验证。其思想是,攻击者在不知道密码的情况下,无法通过监听网络对自己进行身份验证。 尽管有任何良好的实践,我还是在尝试自己的安全身份验证(它只供个人使用) 在我当前的算法中,客户端和服务器共享: 验证客户端的密码 加密密钥 加密算法(带pycrypto的AES) 其工作原理如下: 服务器生成一个令牌 服务器对令牌进行加密 加密的令牌被发送到客户端 客户端解密令牌 客户端加密集合(密码+令牌) 将加密集(密码+令牌)发送到服务器
- 验证客户端的密码
- 加密密钥
- 加密算法(带pycrypto的AES)
- 服务器生成一个令牌
- 服务器对令牌进行加密
- 加密的令牌被发送到客户端
- 客户端解密令牌
- 客户端加密集合(密码+令牌)
- 将加密集(密码+令牌)发送到服务器
- 服务器解密(密码+令牌)
- 如果接收到的信息对应于共享密码和服务器发送的令牌,则客户端将成功通过身份验证
- 服务器生成一个令牌
- 服务器将令牌发送到客户端(纯文本)
- 客户端加密令牌,并将其返回给服务器
- 如果解密的令牌正确,则客户端将成功进行身份验证
也许当与an结合时,您可以克服这些弱点。。。但我必须鼓励您不要“使用您自己的”加密方案,也许您所需要的只是HTTPS来保护两个设备之间的通信(以及一个预共享的令牌/密钥/密码来证明身份)。如果您决定继续沿着这条路线走下去,我也会鼓励您进行重要的研究,并在任何类型的生产环境中使用之前,请安全专家审查您的代码/实现。如果这只是为了好玩/研究,那就另当别论了 我认为这个实现并不容易受到重播攻击,因为令牌是为每个连接随机生成的。要重放攻击,攻击者应监听令牌,监听加密响应,并多次连接到服务器,以期再次生成他知道的令牌。关于完整性,在发生MITM攻击的情况下,最糟糕的情况是停止或修改响应,这将导致服务器无法识别客户端,因此无法执行命令。我的情况不是很严重,为了简单起见,我只想从我的计算机上触发服务器上的一些bash命令,而不必通过SSH连接。我想到了一个Python脚本,它在服务器端侦听,并在客户端(我的计算机)连接时触发这些命令。这个小小的“加密方案”就是为了防止任何连接(例如端口扫描程序或攻击者)触发这些命令。必须有更高效、更安全的方法来实现我的目标(无需通过SSH连接即可远程触发脚本),我很乐意就此主题获得一些建议。SSH很棒,为什么不使用SSH进行基于密钥的身份验证呢?(这样可以避免“键入”密码)。@Aeinot Gray是对的。。即使您的方案在第一眼看上去是有效的,但如果没有正确地实现,它确实可能会出错(这就是为什么推出自己的协议不是最好的主意)。使用经过战斗验证的东西(ssh,