客户端数据库安全

客户端协议栈内置sqlite3数据库,使用了sqlcipher加密方式。sql的密钥是一个用户+客户端分配一个密钥,密钥的生成和存储都是在IM服务器。

1. 密钥的生成

当一个用户在一个客户端上登录时,如果该用户+客户端没有在im服务器登录过,则会为该用户+客户端生成一个密钥。

2. 客户端密钥的使用

客户端拿到本地数据库密钥后,如果本地没有数据库则使用密钥创建数据库,如果有则用该密钥打开数据库。

3. 容易出问题的点

当一个用户+客户端在一个IM服务器登录后,客户端产生了加密数据库。如果用户+客户端更新了IM数据库地址,连到另外一个IM服务,当登录时,IM服务为该用户+客户端生成新的数据库密钥,跟客户端本地数据库实际使用的密钥不一致,这时就会出现各种问题(数据库不可用导致)。所以当切换IM服务器的时候,要么迁移数据库到新IM服务器,要么卸载客户端。

2018 © wildfirechat.cn 京ICP备18060403号-1 all right reserved,powered by Gitbook该文件修订时间: 2019-09-28 14:48:48

results matching ""

    No results matching ""