选题意义背景
在数字经济时代,即时通讯已成为人们日常生活和工作中不可或缺的通讯方式,伴随即时通讯普及而来的是日益严峻的信息安全挑战。在当前复杂的网络环境下,用户的隐私数据和通讯内容面临着被窃取、篡改和滥用的风险,这不仅关系到个人隐私保护,更涉及到国家安全和社会稳定。国内外近年来发生了多起大规模数据泄露事件,这些事件不仅对用户造成了严重的隐私侵害,也给企业带来了巨大的经济损失和声誉损害,加强即时通讯系统的安全性,保护用户通讯内容的隐私性和完整性,已成为当前信息安全领域的重要研究课题。

国密算法作为我国自主研发的密码算法标准,具有自主可控、安全可靠的特点,在保障国家网络空间安全方面发挥着重要作用。然而,目前市场上主流的即时通讯软件大多采用国际通用的加密算法,如AES、RSA等,对国密算法的应用还比较有限。当前即时通讯应用市场存在产品单一化、用户定位不明确、缺乏互通性等问题。主流的即时通讯软件如WeChat、WhatsApp、Telegram等在安全机制上各有特点:WeChat采用客户端-服务器加密方式,使用ECDH密钥交换和AES加密;WhatsApp采用端到端加密,使用Curve25519密钥对和双棘轮算法;Telegram则提供了Secret Chat功能,采用端到端加密。然而,这些软件在某些方面仍然存在安全隐患,如密钥管理、消息存储等环节。

在这种背景下,研究和开发基于国密算法的即时通讯系统具有重要的理论意义和实际应用价值。一方面,本研究可以丰富国密算法在即时通讯领域的应用案例,为推动国密算法的普及和推广提供实践经验;另一方面,本系统的开发可以为用户提供更加安全可靠的即时通讯服务,满足用户对隐私保护的需求。同时,本研究还可以为其他安全通讯系统的设计和实现提供参考,促进我国信息安全技术的发展。
数据集
本即时通讯系统的数据集主要来源于系统运行过程中产生的用户数据、消息数据以及安全验证数据。这些数据集的采集和处理遵循数据隐私保护原则,确保用户数据的安全性和合规性。
-
用户基础数据:通过QQ、微信第三方登录接口获取用户的基本信息,包括用户唯一标识、昵称、头像等。获取过程严格遵循第三方平台的授权机制,仅在用户明确授权的情况下获取必要的用户信息。
-
密钥数据:系统在用户首次登录时,通过随机密码生成器生成SM2非对称加密算法的密钥对(公钥和私钥)。公钥存储在系统服务器的数据库中,私钥则安全地存储在用户设备的Keychain中。这种分布式的密钥存储方式有效降低了密钥泄露的风险。
-
即时消息数据:用户之间发送的即时消息在传输前通过SM4对称加密算法加密,形成密文数据。这些密文数据首先存储在发送方设备本地,然后通过系统服务器转发至接收方。系统服务器仅存储密文形式的消息数据,不参与消息的加密和解密过程。
-
安全验证数据:包括用户设置的九宫格手势密码、数字密码等安全验证信息。这些数据经过特殊的哈希处理后存储在用户设备的本地数据库中,确保即使设备丢失,验证数据也不会被轻易破解。
数据格式
-
用户数据格式:采用JSON格式存储,包含用户ID、昵称、头像URL、公钥信息、注册时间等字段。数据规模随用户数量增长而动态变化,初始设计支持同时在线用户数不低于1000人。
-
密钥数据格式:SM2公钥采用十六进制字符串格式存储,长度为128字节;SM2私钥采用加密后的二进制格式存储在Keychain中。
-
消息数据格式:消息数据包含发送方ID、接收方ID、消息类型、消息内容(密文)、发送时间、消息状态等字段。消息内容采用Base64编码的密文字符串存储,支持文本、表情等多种消息类型。
-
安全验证数据格式:九宫格手势密码采用路径序列的哈希值存储,数字密码采用加盐哈希值存储,确保数据的安全性。
数据分割
为了提高系统的性能和可扩展性,本系统采用水平分割和垂直分割相结合的数据分割策略:
-
水平分割:将用户数据和消息数据按照用户ID范围进行水平分割,分布在不同的数据库节点上。这种方式可以有效减轻单一数据库的负载,提高系统的并发处理能力。
-
垂直分割:将用户数据按照敏感度进行垂直分割,将敏感数据如公钥信息单独存储在安全级别更高的数据库中,普通用户信息存储在一般数据库中。
数据预处理
为了保证数据的质量和安全性,系统在数据存储前进行以下预处理操作:
-
数据清洗:对输入的用户数据进行格式验证和内容过滤,去除非法字符和无效数据,确保数据的合法性和一致性。
-
数据加密:对敏感的用户数据和消息数据进行加密处理,确保数据在存储和传输过程中的安全性。其中,用户公钥信息采用安全的存储机制,消息数据使用SM4算法加密。
-
数据脱敏:在日志记录和数据分析过程中,对用户ID、昵称等个人标识信息进行脱敏处理,保护用户隐私。
-
数据压缩:对传输的消息数据进行压缩处理,减少网络传输量,提高传输效率。特别是对于较长的文本消息,压缩处理可以显著减少数据传输时间。
通过以上数据集的采集、存储和预处理策略,本系统能够在保证用户数据安全的同时,提供高效、可靠的即时通讯服务。系统的数据管理机制符合现代信息系统的安全要求,为用户的隐私保护提供了有力保障。
算法理论
SM2椭圆曲线非对称加密算法
SM2椭圆曲线公钥密码算法是我国自主研发的非对称加密算法,于2010年正式成为国家密码标准。该算法基于椭圆曲线离散对数问题(ECDLP),具有密钥长度短、安全性高、计算效率好等优点。SM2算法基于有限域上的椭圆曲线,椭圆曲线方程形式为:y² = x³ + ax + b (mod p),其中p为大素数,a、b为有限域GF§中的元素。椭圆曲线上的点通过特定的加法运算构成一个阿贝尔群。

密钥生成:
- 选择一条符合SM2标准的椭圆曲线E和基点G。
- 随机选择一个整数d ∈ [1, n-1]作为私钥,其中n是基点G的阶。
- 计算公钥P = d·G,其中·表示椭圆曲线上的标量乘法。
与RSA算法相比,SM2算法具有以下优势: - 在相同安全等级下,SM2算法的密钥长度更短,160位的SM2密钥与1024位的RSA密钥安全等级相当。
- SM2算法的密钥生成速度更快,加解密效率更高。
- SM2算法的数学基础更坚实,基于椭圆曲线离散对数问题,目前尚无有效的量子算法可以破解。
SM4分组对称加密算法
SM4分组密码算法是我国自主研发的对称加密算法,主要用于数据加密和保护。该算法具有结构简单、实现效率高、安全性好等特点。SM4算法采用32轮Feistel结构,分组长度为128位,密钥长度为128位。算法的核心组件包括S盒、线性变换和轮函数。密钥扩展:
- 输入:128位主密钥MK = (MK0, MK1, MK2, MK3)。
- 初始化轮密钥寄存器:(K0, K1, K2, K3) = (MK0 ⊕ FK0, MK1 ⊕ FK1, MK2 ⊕ FK2, MK3 ⊕ FK3),其中FK是固定参数。
- 迭代生成轮密钥:Ki+4 = Ki ⊕ (T’(Ki+1 ⊕ Ki+2 ⊕ Ki+3 ⊕ CKi)),其中i = 0,1,…,27,T’是密钥扩展函数,CK是系统参数。
- 输出:32个轮密钥(rk0, rk1, …, rk31)。

加密过程:
- 输入:128位明文X = (X0, X1, X2, X3)。
- 初始化:(Y0, Y1, Y2, Y3) = (X0, X1, X2, X3)。
- 32轮迭代:Yi+4 = Yi ⊕ F(Yi+1, Yi+2, Yi+3, rki),其中i = 0,1,…,27,F是轮函数。
- 输出变换:(Z0, Z1, Z2, Z3) = (Y35, Y34, Y33, Y32)。
- 输出:128位密文Z = (Z0, Z1, Z2, Z3)。
解密过程:
SM4算法的解密过程与加密过程结构类似,只是轮密钥的使用顺序相反。
与AES算法相比,SM4算法具有以下特点:
- 实现简单,密钥调度和加密的算法基本相同,解密时可以使用同样的程序,只需将密钥顺序倒置。
- 分组长度固定为128位,密钥长度固定为128位,简化了实现和使用。
- 安全性高,基于S盒的非线性变换和线性变换提供了良好的扩散作用。
混合加密方案
在即时通讯系统中,为了兼顾安全性和效率,本系统采用SM2和SM4相结合的混合加密方案:
- 使用SM2非对称加密算法安全地传输SM4对称加密算法的会话密钥。
- 使用SM4对称加密算法对大量的消息数据进行加密,提高加密效率。
密钥协商流程:
- 通信双方各自生成SM2密钥对,公钥互相公开。
- 发送方随机生成SM4会话密钥。
- 发送方使用接收方的SM2公钥加密SM4会话密钥。
- 发送方将加密后的SM4会话密钥发送给接收方。
- 接收方使用自己的SM2私钥解密,获取SM4会话密钥。
消息加密传输流程:
- 发送方使用协商好的SM4会话密钥加密消息内容。
- 发送方将密文消息发送给接收方。
- 接收方使用相同的SM4会话密钥解密消息内容。
密钥更新机制:
为了提高系统安全性,本系统设计了定期密钥更新机制:
- 时间触发:系统默认每7天自动更新一次SM2密钥对和SM4会话密钥。
- 事件触发:当客户端版本更新、重新安装或用户主动要求时,立即更新密钥。
- 密钥更新过程中,确保消息的连续性和可靠性,避免消息丢失。
这种混合加密方案充分利用了SM2算法的安全优势和SM4算法的效率优势,在保证消息安全的同时,提供了高效的加密解密性能,适合即时通讯这种对实时性要求较高的应用场景。
功能模块介绍
三方登录模块
三方登录模块是用户进入系统的第一道门户,支持QQ和微信两种主流的第三方登录方式。该模块的设计旨在降低用户的注册和登录成本,提高用户体验,技术思路与流程:
- 授权机制:采用OAuth 2.0授权框架,用户通过QQ或微信客户端进行授权,系统获取用户的唯一标识和基本信息。
- 会话管理:用户授权成功后,系统服务器生成会话令牌,客户端保存该令牌用于后续的接口访问验证。
- 密钥生成:用户首次登录时,系统自动生成SM2非对称加密算法的密钥对,公钥上传至服务器,私钥保存在客户端Keychain中。
- 状态同步:登录状态在多设备间保持同步,确保用户在不同设备上的体验一致。

实现过程:
- 在iOS客户端集成QQ和微信的SDK,配置URL Scheme和白名单,确保能够正确处理授权回调。
- 当用户点击登录按钮时,客户端调用相应的SDK接口,发起授权请求。
- 用户在第三方应用中确认授权后,系统获取到授权码(code)。
- 使用授权码换取访问令牌(access_token),并获取用户的唯一标识。
- 将用户标识发送至系统服务器,服务器验证后返回用户信息和会话令牌。
- 客户端保存会话令牌,并在本地生成SM2密钥对,将公钥上传至服务器。
该模块通过简化用户登录流程,提高了用户的注册转化率,同时在用户首次登录时就建立了加密基础,为后续的安全通讯奠定了基础。
好友管理模块
好友管理模块允许用户管理已添加的好友,包括修改备注、删除好友等操作。
技术思路与流程:
- 数据缓存:好友列表数据在客户端本地缓存,减少网络请求,提高响应速度。
- 状态同步:好友的在线状态、最后登录时间等信息通过WebSocket实时同步。
- 批量操作:支持批量删除好友、批量添加黑名单等操作,提高用户操作效率。
实现过程:
- 开发好友列表界面,展示所有已添加好友的昵称、头像、在线状态等信息。
- 实现好友详情界面,用户可以查看好友的详细信息,包括ID、昵称、头像等。
- 开发修改好友备注功能,用户可以为好友设置个性化的备注名称。
- 实现删除好友功能,用户可以将好友从好友列表中删除,删除后双方的聊天记录将被清空。
- 开发黑名单管理功能,用户可以将好友加入或移出黑名单,控制消息接收权限。
好友管理模块为用户提供了便捷的好友关系管理工具,帮助用户维护自己的社交网络。
即时聊天模块
即时聊天模块是系统的核心功能,支持用户之间发送和接收即时消息,技术思路与流程:
- 消息加密:采用端到端加密机制,消息在发送前使用SM4算法加密,接收后解密显示。
- 消息推送:通过APNs推送服务,将新消息实时推送给接收方用户。
- 离线消息:服务器存储离线用户的消息,用户上线后自动同步。
- 消息状态:维护消息的发送状态(发送中、发送成功、已读),确保消息的可靠传递。

实现过程:
- 开发聊天界面,支持文本消息的输入和显示,包括表情、特殊字符等。
- 实现消息加密功能,发送前使用SM4算法加密消息内容,生成密文后发送。
- 实现消息发送功能,客户端将加密后的消息发送至服务器,服务器验证后转发或存储。
- 实现消息接收功能,客户端接收到推送通知后,从服务器获取密文消息并解密显示。
- 开发消息状态显示功能,实时更新消息的发送状态和阅读状态。
- 实现聊天记录管理功能,支持查看历史聊天记录,搜索聊天内容等。
即时聊天模块通过端到端加密机制,确保了消息在传输和存储过程中的安全性,同时提供了良好的用户体验,满足了用户对即时通讯的需求。
消息安全模块
消息安全模块是系统的特色功能,包括消息传递安全和消息查阅安全两部分。
- 混合加密:结合SM2非对称加密和SM4对称加密的优势,实现高效安全的消息加密。
- 密钥更新:定期更新加密密钥,提高系统的安全性和抗攻击性。
- 访问控制:通过九宫格手势密码和数字密码,控制对消息内容的访问权限。

实现过程:
- 实现SM2密钥对的生成和管理,用户首次登录时生成密钥对,定期自动更新。
- 开发SM4会话密钥的协商机制,使用对方的SM2公钥加密SM4会话密钥,安全地传输给对方。
- 实现消息的加密和解密功能,使用SM4会话密钥加密消息内容,接收方使用相同的密钥解密。
- 开发九宫格手势密码和数字密码的设置和验证功能,用户在查看消息前需要进行密码验证。
- 实现加密消息的临时显示功能,验证通过后消息短暂显示,退出聊天界面后重新加密。
消息安全模块通过多重安全机制,确保了消息的机密性和完整性,有效保护了用户的隐私安全。
1万+

被折叠的 条评论
为什么被折叠?



