CN115567226A - 一种二进制端对端基于会话通信加密方法 - Google Patents

一种二进制端对端基于会话通信加密方法 Download PDF

Info

Publication number
CN115567226A
CN115567226A CN202211255184.7A CN202211255184A CN115567226A CN 115567226 A CN115567226 A CN 115567226A CN 202211255184 A CN202211255184 A CN 202211255184A CN 115567226 A CN115567226 A CN 115567226A
Authority
CN
China
Prior art keywords
key
message
chain
sender
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211255184.7A
Other languages
English (en)
Inventor
吴海霖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Quanzhou Gravel Eagle Stone Technology Co ltd
Original Assignee
Quanzhou Gravel Eagle Stone Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Quanzhou Gravel Eagle Stone Technology Co ltd filed Critical Quanzhou Gravel Eagle Stone Technology Co ltd
Priority to CN202211255184.7A priority Critical patent/CN115567226A/zh
Publication of CN115567226A publication Critical patent/CN115567226A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • H04L9/3265Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate chains, trees or paths; Hierarchical trust model
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种二进制端对端基于会话通信加密方法,包括以下步骤:S1用户发起会话聊天;S2使用CA证书校验当前服务合法地位;S3接收会话设置;S4交换消息;S5通过链密钥计算消息密钥;S6通过根密钥计算链密钥;S7传输媒体和附件;S8群组消息发送;S9通话设置;S10使用生成AES密钥进行TCP二进制数据封包和解包,解决了解决传统服务器与客户端需要双向做安全握手,统一一套密钥存在被攻破,同时在端到端加密系统中,只有参与通信的双方用户可以读取通信数据,不仅网络犯罪分子无法窃听到这种通信信息,甚至连服务提供商都无法获取到通信数据,可以有效防止攻击者轻易地获取到用于解密通信会话的加密密钥,还能防止攻击者对用户的通信数据进行拦截或窃听。

Description

一种二进制端对端基于会话通信加密方法
技术领域
本发明涉及电子信息技术领域,具体为一种二进制端对端基于会话通信加密方法。
背景技术
互联网通信技术的发展应用,让信息无远弗届,连接随时发生,但与此同时,互联网通信也暴露出了一系列安全问题,我们需要有针对性地应用相关安全技术,增强通信系统的安全性和可靠性,为保护用户个人信息安全筑起防护墙。在许多消息传递服务中,第三方会存储仅在传输过程中加密的数据,这种服务器端加密方法只能保护未经授权的查看者的数据,但这种方法会使得发件人也可以查看该信息,这不适用于整个过程都需要保护数据隐私的传输过程。在端到端的加密中,加密数据只能由具有解密密钥的人查看,换句话说,端到端的加密可以防止非预期用户(包括第三方)读取或修改数据,而只有预期的读者具有这种访问权限和能力,端到端加密提供的不仅仅是发送加密消息,它还可以允许控制授权用户访问存储的数据,集中的特权用户策略管理系统粒度控件可以控制谁能够访问什么信息。但是传统端对端加密中如果由双方连接时候进行握手生成密钥需要保证密钥要能解出以前的历史消息和离线消息;如果端对端的密钥交给前端单纯使用CA证书握手成功,使用固定的算法生成密钥,一旦客户端证书泄漏和客户端算法被逆向就会造成安全问题;如果单纯服务端协助存储两端的密钥,会造成存储量过大至少需要n*(n-1),造成服务端性能下降。
发明内容
为了解决上述问题,本发明的目的在于提供一种二进制端对端基于会话通信加密方法。
为实现上述目的,本发明提供如下技术方案:一种二进制端对端基于会话通信加密方法,包括以下步骤:
S1用户发起会话聊天;
S2使用CA证书校验当前服务合法地位:CA证书一般包含以下信息,文件包(公钥B,hash算法,用途,颁发者,有效时间等);把文件包进行hash加密,得到短字符,然后CA机构用私钥A进行加密得到的——数字签名/指纹;
S3接收会话设置:在建立长期加密会话后,发起人可以立即向接收人发送消息,即使接收人处理离线状态,在接收方响应之前,发起方所有的消息都会包含创建会话所需的信息(在消息的 header 里),其中包括发起人的 Einitiator 和 Iinitiator;
S4交换消息;建立了会话,通过 AES256 消息密钥加密(CbC 模式)和 HMAC-SHA256 验证来保护客户端交换消息,消息密钥是短暂的且在每次发送消息后都会变化,使得用于加密消息的消息密钥不能从已发送或已接收后的会话状态中重建,消息密钥在发送消息时对发送人的链密钥(Chain Key)进行向前的 “棘轮(ratchets)” 派生而来,此外,每次消息巡回都执行一个新的 ECDH 协议以创建一个新的链密钥(Chain Key),通过组合即时 “哈希棘轮(hash ratchet)” 和巡回 “DH 棘轮(DH ratchet)” 提供前向安全;
S5通过链密钥(Chain Key)计算消息密钥(Message Key);
S6通过根密钥(Root Key)计算链密钥(Chain Key);
S7传输媒体和附件:任何类型的大附件(视频,音频,图像或文件)也都是端对端加密的;
S8群组消息发送:通过 Signal 传输协议(Signal Messaging Protocol)的“发送者密钥(Sender Keys)”来完成的;
S9通话设置:语音和视频通话也是端对端加密;
S10使用生成AES密钥进行TCP二进制数据封包和解包;
进一步地,所述步骤(2)中使用CA证书校验当前服务合法地位的方法包括以下步骤;
(1)CA机构使用它的私钥A对CA证书的文件包hash短字符进行加密的签名;
(2)client使用写入到系统的公钥A对签名解密,得到短字符;
(3)client用从server端请求得来的公钥D对自己生成的字符串进行加密,发送给server;
(4)server用其私钥B对加密字符串解密,获取字符串;
(5)利用公钥A对证书里的签名解密,得短字符,利用hash算法对证书里的文件包进行加密,获取短字符;
(6)两者比较,不同就是文件包被篡改了,或者签名不是CA机构私钥A加密过的;
进一步地,所述步骤(3)中接收会话设置的方法包括以下步骤:
(1)接收人使用自己的私钥和消息 header 里的公钥来计算相应的主密钥;
(2)接收人删除发起人使用的一次性预共享密钥(One-Time Pre Key);
(3)发起人使用 HKDF 算法从主密钥派生出相应的根密钥(Root Key)和链密钥(Chain Keys);
进一步地,所述步骤(5)中通过链密钥(Chain Key)计算消息密钥(Message Key)方法包括以下步骤:
(1)消息密钥(Message Key)= HMAC-SHA256(Chain Key, 0x01);
(2)链密钥(Chain Key)随后更新为: 链密钥(Chain Key)= HMAC-SHA256(ChainKey, 0x02),这样形成向前 “棘轮(ratchets)” 链密钥(Chain Key),这也意味不能使用存储的消息密钥推导出当前或过去的链密钥(Chain Key)值;
进一步地,所述步骤(6)中通过根密钥(Root Key)计算链密钥(Chain Key)方法包括以下步骤:
(1)ephemeral_secret = ECDH(Ephemeralsender, Ephemeralrecipient);
(2)链密钥(Chain Key),根密钥(Root Key)= HKDF(Root Key, ephemeral_secret),一个链密钥只能给一个用户发消息,所以消息密钥不能被重用,由于消息密钥和链密钥(Chain Keys)的计算方式,消息可能会延迟、乱序或完全丢失而不会有问题;
进一步地,所述步骤(7)中传输媒体和附件方法包括以下步骤:
(1)发件人(发消息的 WhatsApp 用户)生成一个 32 字节的 AES256 临时密钥和一个 32 字节 HMAC-SHA256 临时密钥;
(2)发件人通过 AES256 密钥(CBC 模式)和随机 IV 给附件加密,然后附加使用HMAC-SHA256 密文的 MAC;
(3)发件人将加密的附件以上传到服务器以二进制存储;
(4)发件人给收件人发送一个包含加密密钥、HMAC 密钥、加密二进制的 SHA256哈希值和指向二进制存储的指针的加密消息;
(5)收件人解密消息,从服务器检索加密的二进制数据,验证 AES256 哈希,验证MAC 并解密为明文;
进一步地,所述步骤(8)中群组消息发送方法包括以下步骤:
(1)群组成员第一次发消息到群组:
(1.1)发送人生成一个随机 32 字节的链密钥(Chain Key);
(1.2)发送人生成一个随机 Curve25519 签名密钥对;
(1.3)发送人将 32 位链密钥(Chain Key)和签名密钥中的公钥组合成消息发送人密钥(Sender Key);
(1.4)发件人用成对传输协议为每个群组成员单独加密发送人密钥(SenderKeys);
(2)所有后续发给该群组的消息:
(2.1)发送人从链密钥(Chain Key)中获取消息密钥(Message Key)并更新链密钥(Chain Key)
(2.2)发送人在 CbC 模式下使用 AES256 加密消息
(2.3)发送人使用签名密钥(Signature Key)签名密文
(2.4)发送人将单个密文消息发给服务器,服务器将消息分发给所有群组成员
(3)消息发送人链密钥(Chain Key)的 “哈希棘轮(hash ratchet)” 提供向前安全,当群组成员离开时时,所有剩下的群组成员都清除发送人密钥(Sender Key)并重新生成;
进一步地,所述步骤(9)中通话设置方法包括以下步骤:
(1)发起人与接收人建立加密会话(如果还没有建立过);
(2)发起人生成一个随机 32 字节的安全实时传输协议(SRTP)主密钥(mastersecret);
(3)发起人向接收人发送一个包含安全实时传输协议(SRTP)主密钥的加密消息用于发通话信号;
(4)如果应答了呼叫,跟着发起安全实时传输协议(SRTP)呼叫;
进一步地,所述步骤(10)中使用生成AES密钥进行TCP二进制数据封包和解包方法包括以下步骤:
(1)封包就是给一段数据加上包头,这样一来数据包就分为包头和包体两部分内容了,包头其实上是个大小固定的结构体,其中有个结构体成员变量表示包体的长度,这是个很重要的变量,其他的结构体成员可根据需要自己定义,根据包头长度固定以及包头中含有包体长度的变量就能正确的拆分出一个完整的数据包;
(2)拆包采用动态缓冲区暂存方式,当需要缓冲的数据长度超出缓冲区的长度时会增大缓冲区长度; (3)为每一个连接动态分配一个缓冲区,同时把此缓冲区和SOCKET关联,常用的是通过结构体关联; (4)当接收到数据时首先把此段数据存放在缓冲区中,判断缓存区中的数据长度是否够一个包头的长度,如不够,则不进行拆包操作; (5)根据包头数据解析出里面代表包体长度的变量,判断缓存区中除包头外的数据长度是否够一个包体的长度,如不够,则不进行拆包操作; (6)取出整个数据包,把此数据包从缓存区中删除掉,删除的办法就是把此包后面的数据移动到缓冲区的起始地址;
与现有技术相比,本发明的有益效果如下:
本发明主要解决了解决传统服务器与客户端需要双向做安全握手,服务器转包需要做解包和封包的带来性能开销和通信双方密钥存储数据库带来的存储开销和频繁查询开销,统一一套密钥存在被攻破,安全性低的问题,通过该方案,有效解决了上述的问题,同时在端到端加密系统中,只有参与通信的双方用户可以读取通信数据,不仅网络犯罪分子无法窃听到这种通信信息,甚至连服务提供商都无法获取到通信数据,可以有效防止攻击者轻易地获取到用于解密通信会话的加密密钥,还能防止攻击者对用户的通信数据进行拦截或窃听,而且端到端加密系统实现方法简单,只需在发送方和接收方提供加解密服务即可,无需考虑中间传输环节。
参照后文的说明和附图,详细公开了本发明的特定实施方式,指明了本发明的原理可以被采用的方式。应该理解,本发明的实施方式在范围上并不因而受到限制。
针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。
应该强调,术语“包括/包含”在本文使用时指特征、整件、步骤或组件的存在,但并不排除一个或更多个其它特征、整件、步骤或组件的存在或附加。
附图说明
图1为本发明一种二进制端对端基于会话通信加密方法的流程图;
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,当元件被称为“设置于”另一个元件,它可以直接在另一个元件上或者也可以存在居中的另一个元件。当一个元件被认为是“连接”另一个元件,它可以是直接连接到另一个元件或者可能同时存在居中另一个元件。本文所使用的术语“垂直的”、“水平的”、“左”、“右”以及类似的表述只是为了说明的目的,并不表示是唯一的实施方式。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是旨在于限制本发明。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
实施例1
请参阅图1,一种二进制端对端基于会话通信加密方法,包括以下步骤:
S1用户发起会话聊天;
S2使用CA证书校验当前服务合法地位:CA证书一般包含以下信息,文件包(公钥B,hash算法,用途,颁发者,有效时间等);把文件包进行hash加密,得到短字符,然后CA机构用私钥A进行加密得到的——数字签名/指纹;
S3接收会话设置:在建立长期加密会话后,发起人可以立即向接收人发送消息,即使接收人处理离线状态,在接收方响应之前,发起方所有的消息都会包含创建会话所需的信息(在消息的 header 里),其中包括发起人的 Einitiator 和 Iinitiator;
S4交换消息;建立了会话,通过 AES256 消息密钥加密(CbC 模式)和 HMAC-SHA256 验证来保护客户端交换消息,消息密钥是短暂的且在每次发送消息后都会变化,使得用于加密消息的消息密钥不能从已发送或已接收后的会话状态中重建,消息密钥在发送消息时对发送人的链密钥(Chain Key)进行向前的 “棘轮(ratchets)” 派生而来,此外,每次消息巡回都执行一个新的 ECDH 协议以创建一个新的链密钥(Chain Key),通过组合即时 “哈希棘轮(hash ratchet)” 和巡回 “DH 棘轮(DH ratchet)” 提供前向安全;
S5通过链密钥(Chain Key)计算消息密钥(Message Key);
S6通过根密钥(Root Key)计算链密钥(Chain Key);
S7传输媒体和附件:任何类型的大附件(视频,音频,图像或文件)也都是端对端加密的;
S8群组消息发送:通过 Signal 传输协议(Signal Messaging Protocol)的“发送者密钥(Sender Keys)”来完成的;
S9通话设置:语音和视频通话也是端对端加密;
S10使用生成AES密钥进行TCP二进制数据封包和解包;
进一步地,所述步骤(2)中使用CA证书校验当前服务合法地位的方法包括以下步骤;
(1)CA机构使用它的私钥A对CA证书的文件包hash短字符进行加密的签名;
(2)client使用写入到系统的公钥A对签名解密,得到短字符;
(3)client用从server端请求得来的公钥D对自己生成的字符串进行加密,发送给server;
(4)server用其私钥B对加密字符串解密,获取字符串;
(5)利用公钥A对证书里的签名解密,得短字符,利用hash算法对证书里的文件包进行加密,获取短字符;
(6)两者比较,不同就是文件包被篡改了,或者签名不是CA机构私钥A加密过的;
进一步地,所述步骤(3)中接收会话设置的方法包括以下步骤:
(1)接收人使用自己的私钥和消息 header 里的公钥来计算相应的主密钥;
(2)接收人删除发起人使用的一次性预共享密钥(One-Time Pre Key);
(3)发起人使用 HKDF 算法从主密钥派生出相应的根密钥(Root Key)和链密钥(Chain Keys);
进一步地,所述步骤(5)中通过链密钥(Chain Key)计算消息密钥(Message Key)方法包括以下步骤:
(1)消息密钥(Message Key)= HMAC-SHA256(Chain Key, 0x01);
(2)链密钥(Chain Key)随后更新为: 链密钥(Chain Key)= HMAC-SHA256(ChainKey, 0x02),这样形成向前 “棘轮(ratchets)” 链密钥(Chain Key),这也意味不能使用存储的消息密钥推导出当前或过去的链密钥(Chain Key)值;
进一步地,所述步骤(6)中通过根密钥(Root Key)计算链密钥(Chain Key)方法包括以下步骤:
(1)ephemeral_secret = ECDH(Ephemeralsender, Ephemeralrecipient);
(2)链密钥(Chain Key),根密钥(Root Key)= HKDF(Root Key, ephemeral_secret),一个链密钥只能给一个用户发消息,所以消息密钥不能被重用,由于消息密钥和链密钥(Chain Keys)的计算方式,消息可能会延迟、乱序或完全丢失而不会有问题;
进一步地,所述步骤(7)中传输媒体和附件方法包括以下步骤:
(1)发件人(发消息的 WhatsApp 用户)生成一个 32 字节的 AES256 临时密钥和一个 32 字节 HMAC-SHA256 临时密钥;
(2)发件人通过 AES256 密钥(CBC 模式)和随机 IV 给附件加密,然后附加使用HMAC-SHA256 密文的 MAC;
(3)发件人将加密的附件以上传到服务器以二进制存储;
(4)发件人给收件人发送一个包含加密密钥、HMAC 密钥、加密二进制的 SHA256哈希值和指向二进制存储的指针的加密消息;
(5)收件人解密消息,从服务器检索加密的二进制数据,验证 AES256 哈希,验证MAC 并解密为明文;
进一步地,所述步骤(8)中群组消息发送方法包括以下步骤:
(1)群组成员第一次发消息到群组:
(1.1)发送人生成一个随机 32 字节的链密钥(Chain Key);
(1.2)发送人生成一个随机 Curve25519 签名密钥对;
(1.3)发送人将 32 位链密钥(Chain Key)和签名密钥中的公钥组合成消息发送人密钥(Sender Key);
(1.4)发件人用成对传输协议为每个群组成员单独加密发送人密钥(SenderKeys);
(2)所有后续发给该群组的消息:
(2.1)发送人从链密钥(Chain Key)中获取消息密钥(Message Key)并更新链密钥(Chain Key)
(2.2)发送人在 CbC 模式下使用 AES256 加密消息
(2.3)发送人使用签名密钥(Signature Key)签名密文
(2.4)发送人将单个密文消息发给服务器,服务器将消息分发给所有群组成员
(3)消息发送人链密钥(Chain Key)的 “哈希棘轮(hash ratchet)” 提供向前安全,当群组成员离开时时,所有剩下的群组成员都清除发送人密钥(Sender Key)并重新生成;
进一步地,所述步骤(9)中通话设置方法包括以下步骤:
(1)发起人与接收人建立加密会话(如果还没有建立过);
(2)发起人生成一个随机 32 字节的安全实时传输协议(SRTP)主密钥(mastersecret);
(3)发起人向接收人发送一个包含安全实时传输协议(SRTP)主密钥的加密消息用于发通话信号;
(4)如果应答了呼叫,跟着发起安全实时传输协议(SRTP)呼叫;
进一步地,所述步骤(10)中使用生成AES密钥进行TCP二进制数据封包和解包方法包括以下步骤:
(1)封包就是给一段数据加上包头,这样一来数据包就分为包头和包体两部分内容了,包头其实上是个大小固定的结构体,其中有个结构体成员变量表示包体的长度,这是个很重要的变量,其他的结构体成员可根据需要自己定义,根据包头长度固定以及包头中含有包体长度的变量就能正确的拆分出一个完整的数据包;
(2)拆包采用动态缓冲区暂存方式,当需要缓冲的数据长度超出缓冲区的长度时会增大缓冲区长度; (3)为每一个连接动态分配一个缓冲区,同时把此缓冲区和SOCKET关联,常用的是通过结构体关联; (4)当接收到数据时首先把此段数据存放在缓冲区中,判断缓存区中的数据长度是否够一个包头的长度,如不够,则不进行拆包操作; (5)根据包头数据解析出里面代表包体长度的变量,判断缓存区中除包头外的数据长度是否够一个包体的长度,如不够,则不进行拆包操作; (6)取出整个数据包,把此数据包从缓存区中删除掉,删除的办法就是把此包后面的数据移动到缓冲区的起始地址;
除非另有说明,所有范围都包括端点以及端点之间的所有数字。与范围一起使用的“大约”或“近似”适合于该范围的两个端点。因而,“大约20到30”旨在覆盖“大约20到大约30”,至少包括指明的端点。
披露的所有文章和参考资料,包括专利申请和出版物,出于各种目的通过援引结合于此。描述组合的术语“基本由…构成”应该包括所确定的元件、成分、部件或步骤以及实质上没有影响该组合的基本新颖特征的其他元件、成分、部件或步骤。使用术语“包含”或“包括”来描述这里的元件、成分、部件或步骤的组合也想到了基本由这些元件、成分、部件或步骤构成的实施方式。这里通过使用术语“可以”,旨在说明“可以”包括的所描述的任何属性都是可选的。
多个元件、成分、部件或步骤能够由单个集成元件、成分、部件或步骤来提供。另选地,单个集成元件、成分、部件或步骤可以被分成分离的多个元件、成分、部件或步骤。用来描述元件、成分、部件或步骤的公开“一”或“一个”并不说为了排除其他的元件、成分、部件或步骤。
应该理解,以上描述是为了进行图示说明而不是为了进行限制。通过阅读上述描述,在所提供的示例之外的许多实施方式和许多应用对本领域技术人员来说都将是显而易见的。因此,本教导的范围不应该参照上述描述来确定,而是应该参照所附权利要求以及这些权利要求所拥有的等价物的全部范围来确定。出于全面之目的,所有文章和参考包括专利申请和公告的公开都通过参考结合在本文中。在前述权利要求中省略这里公开的主题的任何方面并不是为了放弃该主体内容,也不应该认为发明人没有将该主题考虑为所公开的发明主题的一部分。

Claims (7)

1.一种二进制端对端基于会话通信加密方法,其特征在于,包括以下步骤:
S1用户发起会话聊天;
S2使用CA证书校验当前服务合法地位:CA证书一般包含以下信息,文件包(公钥B,hash算法,用途,颁发者,有效时间等);把文件包进行hash加密,得到短字符,然后CA机构用私钥A进行加密得到的——数字签名/指纹;
S3接收会话设置:在建立长期加密会话后,发起人可以立即向接收人发送消息,即使接收人处理离线状态,在接收方响应之前,发起方所有的消息都会包含创建会话所需的信息(在消息的 header 里),其中包括发起人的 Einitiator 和 Iinitiator;
S4交换消息;建立了会话,通过 AES256 消息密钥加密(CbC 模式)和 HMAC-SHA256 验证来保护客户端交换消息,消息密钥是短暂的且在每次发送消息后都会变化,使得用于加密消息的消息密钥不能从已发送或已接收后的会话状态中重建,消息密钥在发送消息时对发送人的链密钥(Chain Key)进行向前的 “棘轮(ratchets)” 派生而来,此外,每次消息巡回都执行一个新的 ECDH 协议以创建一个新的链密钥(Chain Key),通过组合即时 “哈希棘轮(hash ratchet)” 和巡回 “DH 棘轮(DH ratchet)” 提供前向安全;
S5通过链密钥(Chain Key)计算消息密钥(Message Key);
S6通过根密钥(Root Key)计算链密钥(Chain Key);
S7传输媒体和附件:任何类型的大附件(视频,音频,图像或文件)也都是端对端加密的;
S8群组消息发送:通过 Signal 传输协议(Signal Messaging Protocol)的“发送者密钥(Sender Keys)”来完成的;
S9通话设置:WhatsApp 语音和视频通话也是端对端加密;
S10使用生成AES密钥进行TCP二进制数据封包和解包。
2.根据权利要求1所述的一种二进制端对端基于会话通信加密方法,其特征在于:所述步骤(S2)中使用CA证书校验当前服务合法地位的方法包括以下步骤;
(1)CA机构使用它的私钥A对CA证书的文件包hash短字符进行加密的签名;
(2)client使用写入到系统的公钥A对签名解密,得到短字符;
(3)client用从server端请求得来的公钥D对自己生成的字符串进行加密,发送给server;
(4)server用其私钥B对加密字符串解密,获取字符串;
(5)利用公钥A对证书里的签名解密,得短字符,利用hash算法对证书里的文件包进行加密,获取短字符。
3.根据权利要求1所述的一种二进制端对端基于会话通信加密方法,其特征在于,所述步骤(3)中接收会话设置的方法包括以下步骤:
(1)接收人使用自己的私钥和消息 header 里的公钥来计算相应的主密钥;
(2)接收人删除发起人使用的一次性预共享密钥(One-Time Pre Key);
(3)发起人使用 HKDF 算法从主密钥派生出相应的根密钥(Root Key)和链密钥(ChainKeys)。
4.根据权利要求1所述的一种二进制端对端基于会话通信加密方法,其特征在于,所述步骤(5)中通过链密钥(Chain Key)计算消息密钥(Message Key)方法包括以下步骤:
(1)消息密钥(Message Key)= HMAC-SHA256(Chain Key, 0x01);
(2)链密钥(Chain Key)随后更新为: 链密钥(Chain Key)= HMAC-SHA256(Chain Key,0x02),这样形成向前 “棘轮(ratchets)” 链密钥(Chain Key),这也意味不能使用存储的消息密钥推导出当前或过去的链密钥(Chain Key)值。
5.根据权利要求1所述的一种二进制端对端基于会话通信加密方法,其特征在于,所述步骤(7)中传输媒体和附件方法包括以下步骤:
(1)发件人(发消息的 WhatsApp 用户)生成一个 32 字节的 AES256 临时密钥和一个32 字节 HMAC-SHA256 临时密钥;
(2)发件人通过 AES256 密钥(CBC 模式)和随机 IV 给附件加密,然后附加使用HMAC-SHA256 密文的 MAC;
(3)发件人将加密的附件以上传到服务器以二进制存储;
(4)发件人给收件人发送一个包含加密密钥、HMAC 密钥、加密二进制的 SHA256 哈希值和指向二进制存储的指针的加密消息;
(5)收件人解密消息,从服务器检索加密的二进制数据,验证 AES256 哈希,验证 MAC并解密为明文。
6.根据权利要求1所述的一种二进制端对端基于会话通信加密方法,其特征在于,所述步骤(8)中群组消息发送方法包括以下步骤:
(1)群组成员第一次发消息到群组:
(1.1)发送人生成一个随机 32 字节的链密钥(Chain Key);
(1.2)发送人生成一个随机 Curve25519 签名密钥对;
(1.3)发送人将 32 位链密钥(Chain Key)和签名密钥中的公钥组合成消息发送人密钥(Sender Key);
(1.4)发件人用成对传输协议为每个群组成员单独加密发送人密钥(Sender Keys);
(2)所有后续发给该群组的消息:
(2.1)发送人从链密钥(Chain Key)中获取消息密钥(Message Key)并更新链密钥(Chain Key);
(2.2)发送人在 CbC 模式下使用 AES256 加密消息;
(2.3)发送人使用签名密钥(Signature Key)签名密文;
(2.4)发送人将单个密文消息发给服务器,服务器将消息分发给所有群组成员;
(3)消息发送人链密钥(Chain Key)的 “哈希棘轮(hash ratchet)” 提供向前安全,当群组成员离开时时,所有剩下的群组成员都清除发送人密钥(Sender Key)并重新生成。
7.根据权利要求1所述的一种二进制端对端基于会话通信加密方法,其特征在于,所述步骤(10)中使用生成AES密钥进行TCP二进制数据封包和解包方法包括以下步骤:
(1)封包就是给一段数据加上包头,这样一来数据包就分为包头和包体两部分内容了,包头其实上是个大小固定的结构体,其中有个结构体成员变量表示包体的长度,这是个很重要的变量,其他的结构体成员可根据需要自己定义,根据包头长度固定以及包头中含有包体长度的变量就能正确的拆分出一个完整的数据包;
(2)拆包采用动态缓冲区暂存方式,当需要缓冲的数据长度超出缓冲区的长度时会增大缓冲区长度; (3)为每一个连接动态分配一个缓冲区,同时把此缓冲区和SOCKET关联,常用的是通过结构体关联; (4)当接收到数据时首先把此段数据存放在缓冲区中,判断缓存区中的数据长度是否够一个包头的长度,如不够,则不进行拆包操作; (5)根据包头数据解析出里面代表包体长度的变量,判断缓存区中除包头外的数据长度是否够一个包体的长度,如不够,则不进行拆包操作; (6)取出整个数据包,把此数据包从缓存区中删除掉,删除的办法就是把此包后面的数据移动到缓冲区的起始地址。
CN202211255184.7A 2022-10-13 2022-10-13 一种二进制端对端基于会话通信加密方法 Pending CN115567226A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211255184.7A CN115567226A (zh) 2022-10-13 2022-10-13 一种二进制端对端基于会话通信加密方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211255184.7A CN115567226A (zh) 2022-10-13 2022-10-13 一种二进制端对端基于会话通信加密方法

Publications (1)

Publication Number Publication Date
CN115567226A true CN115567226A (zh) 2023-01-03

Family

ID=84745370

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211255184.7A Pending CN115567226A (zh) 2022-10-13 2022-10-13 一种二进制端对端基于会话通信加密方法

Country Status (1)

Country Link
CN (1) CN115567226A (zh)

Similar Documents

Publication Publication Date Title
US6904521B1 (en) Non-repudiation of e-mail messages
Karn et al. The esp des-cbc transform
US8868912B2 (en) Method and apparatus for establishing a security association
US7131003B2 (en) Secure instant messaging system
US7979707B2 (en) Secure seed generation protocol
JP6764753B2 (ja) 制限帯域幅を有するチャネルにおける効率的かつ強秘匿性の対称暗号化のためのシステムおよび方法
US11831764B2 (en) End-to-end double-ratchet encryption with epoch key exchange
EP3476078A1 (en) Systems and methods for authenticating communications using a single message exchange and symmetric key
CN108090370A (zh) 基于索引的即时通信加密方法和系统
TW201537937A (zh) 統一身份認證平臺及認證方法
Blumenthal et al. The advanced encryption standard (AES) cipher algorithm in the SNMP user-based security model
CN106549858B (zh) 一种基于标识密码的即时通信加密方法
CN111049738B (zh) 基于混合加密的电子邮件数据安全保护方法
CN108390755A (zh) 基于内置安全芯片的sim贴膜卡的安全输入法
CN111541603B (zh) 独立智能安全邮件终端及加密方法
Ramsdell RFC 3851: Secure/multipurpose internet mail extensions (S/MIME) version 3.1 message specification
CN115567226A (zh) 一种二进制端对端基于会话通信加密方法
Al-juaifari Secure SMS Mobile Transaction with Peer to Peer Authentication Design for Mobile Government
CN111639937A (zh) 数字货币风险管控方法和系统
TWI313995B (en) Content protection method
CN112073370B (zh) 一种客户端加密通信方法
CN113014531B (zh) 一种应用于电子邮件数据加密传输的方法
CN112073369B (zh) 一种基于应用层的加密通信方法
Zakir et al. A Survey on Various Encryption/Decryption Techniques Used in Mobile and Cloud Computing
CN117955688A (zh) 一种防篡改的网络数据加密方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination