“xx侦探,技术高超,轻松获取对方的位置或通讯内容。” 关注【融云全球互联网通信云】了解更多
您可能也曾在网络上遇到过此类所谓“私家侦探”的非法小广告,或者您可能在法律节目中看到过类似“虚假定位诈骗”的法律普及故事。
此类事件的频繁发生证明了很多人想通过非法手段窥探他人隐私以达到非法目的的事实。这是我们在生活和在线工作的方方面面移动时每天面临的通信安全挑战。
在通信安全的话题下,我们之前为大家分享了链路安全、传输安全机制、端到端加密技术等话题。
随着 SSL/TLS 的普及和各种安全产品的应用,黑客几乎不可能通过链接或入侵服务器直接获取用户通信消息。
在这种情况下,通过植入木马获取通讯内容成为他们进行非法活动的重要手段。
如何防止手机等终端被木马植入?在用户层面,大家需要有良好的安全意识,比如安装杀毒软件、不点击陌生链接、不越狱、不root系统等。
今天我们要讨论的话题是,假设我们的设备已经被植入木马web服务器安全,如何从软件层面做最后的保护,保证用户通信消息的安全和隐私。
需要注意的是,当系统被植入木马时,软件主体一般不会发生变化,而是通过本地网络代理或读取关键位置的文件来获取要监控的内容。我们在链接安全文章中分享的本地网络代理可以通过启用 SSL/TLS 来防止信息被监控。
数据存储安全
即时通讯系统一般具有终端消息存储功能,方便用户离线查看收到的消息。这些消息通常使用文件级数据库存储。
使用数据库的好处是数据的增、删、改、查方便,不会有太多的性能问题。
其中,由于其小巧、开源、高性能,成为众多终端软件数据存储的首选方案。
那么如何做消息的加密存储呢?
该方案对要存储的消息进行加密
待插入数据库的消息先用AES加密,加密完成后再插入数据中。
这种方式优点明显,但缺点也很致命——如果需要对消息进行模糊查询,则无法对消息进行加密,从而产品需求和安全要求形成矛盾。因此,我们一般不选择这种方法。
选项 2 加密数据
3的开源发行版不提供加密,但是它的导出头文件有定义和定义web服务器安全,可以用来实现数据库加密。
带加密实现的版本还需要在预编译中定义预处理宏来启用这些函数的功能。
它是输入键。如果数据库是加密的,必须执行该函数并输入正确的密钥才能进行操作;如果数据库未加密,则执行该函数后,数据库操作会出现“此数据库已加密或不是数据库文件”。错误。
// db 是指定数据库,pKey 是密钥,nKey 是密钥长度。 int sqlite3_key(sqlite3 *db, const void *pKey, int nKey) // 例: sqlite3_key(db, “abc”, 3);它是更改密钥或将密钥添加到未加密的数据库或清除密钥。在更改密钥或清除密钥之前,必须正确执行。
正确执行后,关闭数据库前即可正常操作数据库,无需再执行。
// 参数同上 int sqlite3_rekey(sqlite3 *db, const void *pKey, int nKey)添加数据库密码:如果要添加密码,可以在数据库文件创建后、关闭数据库文件之前随时调用该函数。
读取数据库数据:打开数据文件后,调用该函数。(如果数据库没有加密,执行该函数后的数据库操作会报错“此数据库已加密或不是数据库文件”;经测试,只能在新建数据库时设置密码!)
修改数据库密码:首先需要用当前密码正确打开数据库,然后调用(db,””,6)修改数据库密码。
除了直接使用 3 外,还有很多其他语言的开源框架也提供了数据库加密能力,例如:、、等。
目前3支持这两个接口的版本为3.31.1,以后的版本不再支持。推荐使用一些开源库。
数据库密码保护
应避免直接在代码或配置文件中使用数据库密码。因为一旦程序被反编译,它的机密性将不复存在,所以数据库密码也需要保护。
首先,最安全的方式是客户端根本不存储数据库的密码。每次打开终端软件时,必须确保网络正常,服务器完成用户认证后可以返回数据库密码。
服务器需要为每个用户的每个设备生成不同的密码,可以有效防止以下两种情况:
① 终端多用户场景下,密码泄露导致整个终端被破解;
② 用户密码被破解后,可以查看用户其他设备上的数据。
(数据库密码保存过程)
通过上面的流程图,我们可以简单的了解数据库密码是如何保存的。但是这种方式存在一个问题,就是如果客户端有离线打开需求,这个方案就不能满足。
数据库操作的离线需求存在潜在的安全隐患,都可以被破解。这就是安全性和便利性之间的冲突。
但是,我们可以通过设置复杂的规则来增加破解的难度。在设计规则时,我们至少要确保遵循以下原则:
① 每个设备上每个用户的密码不同。
② 每次数据密码的结果必须相同。
③ 密码结果不存入终端。
④ 终端生成密码的代码必须经过安全加固。
例如:我们通过将设备 ID 与用户 ID 进行哈希处理来获取数据库密码。
如今,信息安全问题越来越严重。在现实生活中,我们无法保证所使用的终端软件采用加密数据存储方式。
因此,通过保持良好的使用习惯,不点击陌生链接,不安装非正规渠道的应用程序,在终端安装杀毒软件等安全产品,以最大限度地避免我们的信息和隐私被不法分子和利用。