安全架构
蝙蝠聊天
从连接到会话,哪些环节需要关注?
• 通道加密
• 内容加密
• 服务器数据库安全
• 密钥安全
了解连接与内容保护的工作方式
1. 连接建立与通道保护
连接建立时涉及哪些技术组件?
本页图示涉及 RSA、ECDHE、AES 与哈希函数等概念。不同组件承担密钥协商、数据处理或完整性校验等不同任务。
步骤:
步骤一:客户端和服务端分别生成用于本次连接的随机参数。
步骤二:服务端把连接所需的随机参数返回给客户端。
步骤三:客户端按通道建立流程保护本端参数,并发送给服务端。
步骤四:服务端处理收到的参数,双方继续完成身份与密钥协商。
步骤五:双方结合本端和对端参数,得到临时密钥 TempKey 与偏移量 TempIV,供后续协商使用。
步骤六:两端分别生成 ECDHE 密钥对,为建立本次会话的共享密钥做准备。
步骤七:客户端使用临时参数处理自己的公钥,再将相关数据发送给服务端。
步骤八:服务端接收并解析客户端提交的公钥数据。
步骤九:服务端按同一协商流程返回自己的公钥信息及所需校验数据。
步骤十:服务端结合客户端公钥与自己的私钥,计算本次连接的共享材料 ShareKey。
步骤十一:客户端校验收到的数据后,以自己的私钥和服务端公钥计算对应的 ShareKey;校验失败时不应继续连接。
步骤十二:连接建立后,还需同步消息编号、会话标识等参数:
• AuthKeyID:用于标记本次认证过程的临时标识。
• MsgKey:与共享材料、消息编号和会话参数相关,用于后续消息处理。
本参数用于:
(a. 检查传输过程中数据是否出现异常变化。
(b. 与 ShareKey 配合,形成处理单条消息所需的密钥与偏移量。
• MsgID:区分消息并辅助识别重复提交。
• SessionID:标识当前登录会话。
• Salt:参与本次会话参数计算的随机值。
• SeqNo:帮助识别消息顺序与重复请求。
步骤十三:消息编号、会话标识和随机参数会随交流过程变化。每条消息使用对应参数处理,可避免不同消息重复依赖同一组输入。
步骤十四:共享材料达到有效期后,需要重新完成协商流程。
2. 会话内容如何处理
会话双方交换公钥时,可这样理解:
(1. 设备先生成一对用于会话的公钥和私钥。
(2. 公钥可以参与交换,私钥应由设备妥善保管。
(3. 登录后,客户端获取会话对象及所需的公钥信息。
(4. 双方结合自己的私钥与对方公钥,计算相应的共享材料。
(5. 共享材料再参与生成处理消息内容所需的对称密钥。
双棘轮的作用可概括为:
当一方更新密钥并发送新公钥时,另一方接收后可以推进自己的密钥链。双方交替更新发送与接收链,使后续消息不必一直依赖最初的同一组密钥。
3. 服务端数据校验
数据校验旨在帮助识别异常修改:
(1. 相关记录包含用于验证的签名信息。
(2. 服务端使用 ECDSA 密钥对参与签名流程。
(3. 服务器代码中对数据库敏感字段,比如:password, userID, friend 等做增删改操作时均通过 ECDSA 生成签名,并更新到签名字段。
(4. 读取相关记录时先进行签名检查;未通过校验的数据应被拒绝并返回错误。
(5. 服务端程序与运行环境仍需持续维护和审查。
4. 账号与密钥使用建议
(1. 登录及二次验证涉及密码相关流程。请使用独立密码,不要向任何人透露验证码或密信。
(2. 妥善保护设备与本地密钥材料,避免把敏感信息转存到不可信位置。
(3. 如客户端提供密钥更新入口,可按当前版本说明进行管理。
公钥和私钥分别做什么?
公钥可以向通信对象提供,私钥则应留在持有者一侧。两者共同参与身份验证或密钥协商;不同算法的具体用途并不相同。理解这一区别,有助于辨别哪些信息可以分享,哪些必须保密。
双方怎样建立受保护的连接?
(1. A 与 B 各自准备所需的公钥和私钥。
(2. 双方交换公钥,各自保管好自己的私钥。
(3. 发送方按协议使用对方公钥参与密钥协商或消息处理。
(4. 处理后的消息经通信通道发送给接收方。
(5. 接收方使用自己的私钥及协议参数完成后续处理。实际保护效果也依赖身份校验、设备安全和正确使用。