我有一个客户机服务器应用程序,它以一种安全的方式在其组件之间传输数据。我目前使用AES算法与CBC模式传输数据和文件。这是一个场景:客户机请求数据(文件或明文),服务器接收请求并使用iv/密钥对加密数据,并将加密数据发送给客户端。客户端总是存储加密的数据。客户端是每个用户的应用程序。因此,客户端应该打开文件,即使在脱机模式下也应该读取数据。(服务器应用程序是基于.Net的,客户端是Delphi)
我需要的是一个秘密密钥生成机制,它在客户端和服务器之间是安全和可变的,这与当前用户(‘user 1’,'user2‘等)有关。我没有密码学的经验,所以我会等待有经验的人的建议。
提前感谢
编辑:我将尝试更详细地解释我的问题。我们有一个客户端应用程序,它以某种格式打开一些文件(比如3 3dsmax)。这些文件是从服务器中的数据库下载的,只有经过身份验证的用户才能下载这些文件。但是,即使通过身份验证的用户下载了这个文件,也不应该将文件复制到其他计算机和磁盘。因为这些文件包含严格工作的模型(例如3d模型),需要加密;还有一种情况是,当客户端sqlite数据库需要更新时,我们以加密的方式向客户端发送脚本,客户端解密并执行,保存加密的值。
我们做了所有这些工作。也许我问这个问题的方式不恰当。我的意思是,我们如何创建一种安全和一致地交换数据的机制?最好没有密钥存储,但一些机制,在运行时创建密钥,但在双方使用userids,许可密钥等.我们将用户信息存储在客户端和服务器上。我希望我能解释
发布于 2012-12-03 18:02:15
实际上,您应该使用已经提供的工具。SSL/TLS和HTTPS是非常强大的工具,可以提供适当的密钥交换、身份验证和隐私实现。据我所知,这解决了你所有的问题。
仅AES-CBC本身就有问题。正如Thomas指出的,您缺乏身份验证。解决此问题的一个常见方法是使用HMAC和下面是对HMACs和加密的一个很好的讨论.。
https://crypto.stackexchange.com/questions/5557
复制相似问题