我正在尝试实施消息级加密。以下是目前的情况:
我们有一个移动应用客户端通过单向证书https连接到服务器,我们有用户名/密码身份验证和安全令牌,用于后续的客户端到服务器调用。因此,消息级加密的目的不是试图阻止第三部分嗅探信息或窃取客户端身份,而是为了防止客户端用户自己做类似的事情,
1)检查并尝试了解服务器 - 客户端协议 2)与我们的应用客户端之外的其他应用程序的伪造请求
最初的想法是使用对称算法(DES,AES或一些更简单的算法,只要在不知道密钥的情况下不能通过统计或数学方法简单地破解)。密钥是从客户端和服务器之间预先约定的连接的字符串中的哈希(SHA等)生成的,并且某些信息服务器通过非加密内容告诉客户端(例如,从客户端到服务器的第一次调用发生在非加密的上下文中,服务器向客户端返回一个时间戳,并记住它以便以后生成密钥)。
这是否符合我想要为1& 2做的事情?如果有的话,主要的漏洞是什么?
答案 0 :(得分:1)
只要您发布软件,就没有“安全”的解决方案,因为您用于消息级加密的任何密钥都必须以某种方式访问您的软件。要么将其编译到其中,然后专用攻击者可以从二进制文件中读取它,要么使用网络将其传输到正在运行的软件,然后攻击者可以模拟您的软件用来获取密钥的协议。
您可以期待的最好的事情是让逆向工程师难以获得钥匙。这意味着您可以以这样的方式组装它,使得在二进制文件中找不到完整的部分。但是,如果有人在运行时附加一个调试器,她仍然可以从一个变量中读取它。最后,它仍然是你和逆向工程师之间的军备竞赛。