客户端/服务器密码加密
Client / Server Cryptography for passwords
我正在构建一个客户端/服务器应用程序在c++和需要每个客户端提供一个密码。显然,我希望这个在传输过程中是安全的,所以我一直在寻找一种加密密码的方法;因此,只有服务器应用程序才能再次解密它。
我遇到的问题不一定是让函数工作,而是理解我需要做什么,以便将其关联到代码中。我正在努力理解并阅读MSDN(感觉就像它),但我仍然只是在学习,所以我真的需要一些明确和准确的指导我的实施。
这听起来对吗?
- 我在服务器和客户端上获得CSP的上下文。
- 我在服务器上生成一个密钥,或者加载一个(无论什么)。
然后I
从服务器导出公钥并将其发送给客户端,客户端导入密钥,然后加密密码并返回,以便只有服务器才能再次解密它。(当我尝试失败时)。
还是
导出会话密钥,或使用交换密钥对加密的交换密钥对(单个公共)?
哦,我很失落,我甚至无法解释清楚。
这实际上取决于您希望基于哪种身份验证解决方案。选项是多种多样的
例如,您可以依赖底层OS身份验证。你根本不需要管理密码。但这需要与应用程序运行所在的域进行更紧密的集成。另一个选择是使用HTTPS和简单的身份验证。它基本上使用SSL加密通信,然后发送用户名/密码对。非常简单,所有web服务器都支持。如果你不想依赖现有的web服务器,如正在安装的IIS,你可以很容易地找到c++代码来为你解决这个问题(搜索StackOverflow)。
如果您不需要加密通信进行其他事情,如数据传输,您可以使用Challenge-Response进行密码验证。密码不需要通过网络传输,也没有第三方重发一些数据包的重放攻击风险。缺点是,中间人(MITM)攻击是可能的。
如果您需要对MITM进行保护或需要对其他通信进行加密通道,则应该使用带有证书的TLS或带有两个对的公钥加密。
什么都不要做
这很重要。不要自己实现它。
重复一遍,不要做任何会出错的事。
你应该使用已经可用的。只要打开一个连接到SSL套接字,流的内容就会在另一端自动加密和解密。
您的应用程序应该简单地接受用户名/密码元组并验证它们是否正确。不要尝试实现加密部分
- 创建加密安全密码.并验证它是否有效
- 使用 C++/Qt(已知密码)打开加密的 PDF
- 简单仿射密码加密解密
- 延迟加载加密++密码.dll
- 使用加密密码连接到MySQL
- 上和小写字符串的加密和解密,基本密码C
- 如何加密文件并隐藏密码
- C++ 中的仿射密码加密
- 如何通过AES-256-CBC使用密码代替密钥和IV加密文件
- 如何在牡丹加密中检查输入的密码是否正确
- 对已编译的可执行文件中的常量字符串(例如密码)进行加密
- 密码无法正确加密(携带太多字符)
- 转录密码加密程序崩溃
- 正在读取加密的用户名/密码
- 学校作业的简单密码加密
- 使用加密哈希密码进行身份验证
- 使用用户密码加密
- 可视化C++代码加密,无需使用密码或密钥
- 基于密码的加密OpenSSL C++
- 加密密码以便存储