CN115189971B - 数据传输加密方法 - Google Patents
数据传输加密方法 Download PDFInfo
- Publication number
- CN115189971B CN115189971B CN202211106875.0A CN202211106875A CN115189971B CN 115189971 B CN115189971 B CN 115189971B CN 202211106875 A CN202211106875 A CN 202211106875A CN 115189971 B CN115189971 B CN 115189971B
- Authority
- CN
- China
- Prior art keywords
- client
- server
- data
- vector
- current
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
- H04L9/16—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms the keys or algorithms being changed during operation
Abstract
本公开提供了一种数据传输加密方法,包括获取当前发送数据以及客户端密钥和当前客户端向量;根据客户端密钥和当前客户端向量对当前发送数据进行加密,得到客户端加密数据;将客户端加密数据发送至服务端;由于当前客户端向量是根据当前发送数据的前一发送数据进行更新后的向量,因此对每一发送数据进行的加密算法均不同,即实现了一事一密,从而降低了暴力破解的可能性,提高了数据传输的安全性。
Description
技术领域
本公开涉及数据传输技术领域,尤其涉及一种数据传输加密方法。
背景技术
随着物联网技术的飞速发展,物联网的设备渐渐进入工业、医疗、教育、家居等重要领域为人们提供必要的服务。越来越多的物联网设备工作在一些重要的环节上,因此采用加密技术保护设备与云平台之间的通信是非常必要的。
对称加密算法是应用较早的数据加密算法,技术相对成熟。传统的对称加密算法,要求发送方和接收方在安全通信之前商定一个固定的密钥,发送方通过该密钥对发送数据进行加密处理后发送至接收方,接收方在接收到加密数据后采用同样的密钥对加密数据进行解密,从而得到发送方的发送数据,以实现数据的加密传输。对称加密算法虽然计算量小、加密速度快、加密效率高,但是由于对称加密算法中使用的密钥是一个固定值,因此很容易通过暴力破解的方式得到,从而危害数据传输的安全性。
发明内容
有鉴于此,本公开提出了一种数据传输加密方法,可以提高数据传输的安全性。
根据本公开的第一方面,提供了一种数据传输加密方法,包括:
获取当前发送数据以及客户端密钥和当前客户端向量;
根据所述客户端密钥和所述当前客户端向量对所述当前发送数据进行加密,得到客户端加密数据;
将所述客户端加密数据发送至服务端;
其中,所述当前客户端向量是根据所述当前发送数据的前一发送数据进行更新后的向量。
在一种可能的实现方式中,在根据所述当前发送数据的前一发送数据更新得到所述当前客户端向量时,包括:
获取所述前一发送数据的第一校验和;
将对所述前一发送数据进行加密的客户端向量向预设方向移位所述第一校验的数据长度后,将所述第一校验和填补至移位后的客户端向量的移位末端,得到所述当前客户端向量。
在一种可能的实现方式中,在获取当前发送数据后,还包括计算所述当前发送数据的校验和的步骤;
在将所述客户端加密数据发送至服务端时,还包括同时发送所述当前发送数据的校验和至所述服务端。
在一种可能的实现方式中,在将所述客户端加密数据发送至服务端之后,还包括:
接收服务端加密数据,其中,所述服务端加密数据为所述服务端针对所述当前发送数据返回的当前响应数据的加密数据;
获取服务端密钥和当前服务端向量;
根据所述服务端密钥和所述当前服务端向量对所述服务端加密数据进行解密,得到所述当前响应数据,并对所述当前响应数据进行处理;
其中,所述当前服务端向量是根据所述当前响应数据的前一响应数据进行更新后的向量。
在一种可能的实现方式中,所述当前发送数据为首发数据;
在获取首发数据之前,还包括对所述服务端进行身份认证的步骤;
在对所述服务端进行身份认证时,包括:
接收所述服务端返回的服务端身份信息,其中,所述服务端身份信息包括第一服务端信息和第二服务端信息,所述第一服务端信息根据所述服务端存储的对应客户端的设备标识和Token以及所述对应客户端向所述服务端发送的第一随机数确定,所述第二服务端信息通过对所述服务端存储的所述对应客户端的加密Password 进行摘要计算得到;
根据预先存储的设备标识、Token和所述第一随机数,计算所述服务端的第一服务端验证信息,并对预先存储的Password 进行摘要计算,得到所述服务端的第二服务端验证信息;
根据所述第一服务端验证信息和所述第二服务端验证信息,对所述服务端身份信息进行认证。
在一种可能的实现方式中,对所述加密Password 进行一摘要计算得到所述第二服务端信息,对预先存储的Password 进行两次摘要计算,得到所述服务端的第二服务端验证信息。
在一种可能的实现方式中,在所述服务端通过身份认证后,还包括计算所述客户端密钥、所述客户端初始化向量、服务端密钥和服务端初始化向量的步骤;
在计算所述客户端密钥、所述客户端初始化向量、服务端密钥和服务端初始化向量时,包括:
获取所述设备标识、所述Token、所述Password 、所述第一随机数、所述服务端向所述客户端发送的第二随机数、第一盐值、第二盐值、第三盐值和第四盐值,并对所述Password 进行加密;
根据所述设备标识、所述Token、加密后的Password 、所述第一随机数、所述第二随机数以及所述第一盐值,计算所述客户端密钥;
根据所述设备标识、所述Token、加密后的Password 、所述第一随机数、所述第二随机数以及所述第二盐值,计算所述客户端初始化向量;
根据所述设备标识、所述Token、加密后的Password 、所述第一随机数、所述第二随机数以及所述第三盐值,计算所述服务端密钥;
根据所述设备标识、所述Token、加密后的Password 、所述第一随机数、所述第二随机数以及所述第四盐值,计算所述服务端初始化向量。
根据本公开的第二方面,提供了另一种数据传输加密方法,包括:
接收客户端加密数据,并获取客户端密钥和当前客户端向量,其中,所述客户端加密数据为客户端当前发送数据的加密数据;
根据所述客户端密钥和所述当前客户端向量对所述客户端加密数据进行解密,得到所述当前发送数据;
对所述当前发送数据进行响应,得到当前响应数据;
获取服务端密钥和当前服务端向量;
根据所述服务端密钥和所述当前服务端向量对所述当前响应数据进行加密,得到服务端加密数据;
将所述服务端加密数据发送至客户端;
其中,所述当前客户端向量是根据所述当前发送数据的前一发送数据进行更新后的向量,所述当前服务端向量是根据所述当前响应数据的前一响应数据进行更新后的向量。
在一种可能的实现方式中,在根据所述当前响应数据的前一响应数据更新得到所述当前服务端向量时,包括:
获取所述前一响应数据的第二校验和;
将对所述前一响应数据进行加密的服务端向量向预设方向移位所述第二校验和的数据长度后,将所述第二校验和填补至移位后的服务端向量的移位末端,得到所述当前服务端向量。
在一种可能的实现方式中,所述客户端加密数据为客户端首发数据的加密数据;
在接收客户端加密数据之前,还包括对所述客户端进行身份认证的步骤;
在对所述客户端进行身份认证时,包括:
接收所述客户端发送的客户端身份信息,其中,所述客户端身份信息包括第一客户端信息和第二客户端信息,所述第一客户端信息根据所述客户端存储的所述客户端的设备标识和Token以及服务端向所述客户端返回的第二随机数确定,所述第二客户端信息根据所述客户端存储的Password 确定;
根据预先存储的所述客户端的设备标识、Token和所述第二随机数,计算所述客户端的第一客户端验证信息,并通过对预先存储的所述客户端的加密Password 进行摘要计算得到所述客户端的第二客户端验证信息;
根据所述第一客户端验证信息和所述第二客户端验证信息,对所述客户端身份信息进行认证。
本公开在进行数据传输加密时,包括获取当前发送数据以及客户端密钥和当前客户端向量;根据客户端密钥和当前客户端向量对当前发送数据进行加密,得到客户端加密数据;将客户端加密数据发送至服务端;由于当前客户端向量是根据当前发送数据的前一发送数据进行更新后的向量,因此对每一发送数据进行的加密算法均不同,即实现了一事一密,从而降低了暴力破解的可能性,提高了数据传输的安全性。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的数据传输加密方法的流程图;
图2示出根据本公开另一实施例的数据传输加密方法的流程图;
图3示出根据本公开又一实施例的数据传输加密方法的流程图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
<方法实施例>
图1示出根据本公开一实施例的数据传输加密方法的流程图,该方法由客户端(即数据发送端)执行,如图1所示,客户端在执行该数据传输加密方法时包括步骤S1100-S1300。
S1100,获取当前发送数据以及客户端密钥和当前客户端向量。
该当前发送数据pqt为当前客户端要发送至服务端的数据。
该当前客户端向量civt为用于对当前发送数据pqt进行加密的客户端向量。其中,该当前客户端向量civt是根据当前发送数据pqt的前一发送数据pqt-1进行更新后的向量。需要说明的是,客户端预先存储有客户端密钥ck和客户端初始化向量civ1。在当前发送数据为首发数据pq1时,先根据客户端密钥ck和客户端初始化向量civ1对首发数据pq1进行加密,然后再根据首发数据pq1对客户端初始化向量civ1进行更新得到客户端向量civ2。在当前发送数据为第二发送数据pq2时,先使用客户端密钥ck和客户端向量civ2对第二发送数据pq2进行加密,然后再根据第二发送数据pq2对客户端向量civ2进行更新得到客户端向量civ3,以此类推。
在一种可能的实现方式中,在根据当前发送数据的前一发送数据更新得到当前客户端向量时,包括以下步骤:
第一,获取当前发送数据的前一发送数据的第一校验和。
具体地,在根据当前发送数据pqt的前一发送数据pqt-1更新得到当前客户端向量civt时是根据前一发送数据pqt-1的校验和(即第一校验和cvt-1)实现的,因此,客户端在获取到前一发送数据pqt-1时,可以采用预设的校验和算法计算出前一发送数据pqt-1的第一校验和cvt-1并进行存储,这样在执行上述第一个步骤时便可以从内存中读取出前一发送数据pqt-1的第一校验和cvt-1。其中,该校验和算法可以是循环冗余校验算法CRC(具体可以是CRC32),也可以是纵向冗余校验算法LRC,在此不作具体限定。
第二,将对前一发送数据进行加密的客户端向量向预设方向移位第一校验和的数据长度后,将第一校验和填补至移位后的客户端向量的移位末端,得到当前客户端向量。
具体地,在获取到前一发送数据pqt-1时,将根据客户端密钥ck和客户端初始化向量civt-1对前一发送数据pqt-1进行加密,同时,采用CRC32(32 位循环冗余校验码多项式生成)计算出前一发送数据pqt-1的第一校验和cvt-1。其中,通过CRC32计算出的第一校验和cvt-1为32bit,即第一校验和cvt-1的数据长度为32bit。然后,将客户端向量civt-1向预设方向移位32bit,并将读取出的第一校验和cvt-1填补至移位后的客户端向量的移位末端,得到当前客户端向量civt。
其中,预设方向可以是向左,也可以是向右,在此不作具体限定。在预设方向为向左时,则将客户端向量civt-1向左移位32bit,此时将删除客户端向量civt-1的高位32bit数据,然后将32bit的第一校验和cvt-1填补至移位后的客户端向量的移位末端,即将第一校验和cvt-1填补至移位后的客户端向量的低32位,从而得到当前客户端向量civt。在预设方向为向右时,则将客户端向量civt-1向右移位32bit,此时将删除客户端向量civt-1的低位32bit数据,然后将32bit的第一校验和cvt-1填补至移位后的客户端向量的移位末端,即将第一校验和cvt-1填补至移位后的客户端向量的高32位,从而得到当前客户端向量civt。
S1200,根据客户端密钥和当前客户端向量对当前发送数据进行加密,得到客户端加密数据。
具体地,可以根据客户端密钥ck和客户端向量civt,采用对称加密算法对当前发送数据pqt进行加密,得到客户端加密数据eqt。该对称加密算法可以是AES(具体可以是AESCBC 128PKCS5 Padding),也可以是Blowfish等其他对称加密算法,在此不作具体限定。其中,CBC可以使用同类型的算法(例如CFB)代替,PKCS5可以使用同类型的算法(例如PKCS7)代替,在此不作具体限定。
S1300,将客户端加密数据发送至服务端。具体地,将客户端加密数据eqt发送至服务端。
本公开在进行数据传输加密时,包括S1100获取当前发送数据以及客户端密钥和当前客户端向量,其中,该当前客户端向量是根据当前发送数据的前一发送数据进行更新后的向量;S1200根据客户端密钥和当前客户端向量对当前发送数据进行加密,得到客户端加密数据;S1300将客户端加密数据发送至服务端。由于当前客户端向量是根据当前发送数据的前一发送数据进行更新后的向量,因此对每一发送数据进行的加密算法均不同,即实现了一事一密,从而降低了暴力破解的可能性,提高了数据传输的安全性。
在服务端接收到客户端加密数据后,将对客户端加密数据进行解密。为了使服务端可以进一步验证解密结果是否正确,在一种可能的实现方式中,客户端在获取到当前发送数据后,还将计算当前发送数据的校验和,并将当前发送数据的校验和与客户端加密数据一起发送至服务端,这样服务端便可以根据当前发送数据的校验和验证解密结果是否正确。其中,当前发送数据的校验和的计算方式与前一发送数据校验和的计算方式相同,在此不再赘述。
在一种可能的实现方式中,服务端在解密得到客户端的当前发送数据pqt后,先对当前发送数据pqt进行响应得到当前响应数据ppt,接着对当前响应数据ppt进行加密得到服务端加密数据,最后将服务端加密数据返回至发送当前发送数据的客户端。
在该可实现方式中,客户端在将客户端加密数据发送至服务端之后,还包括第四步骤-第六步骤。
第四,接收服务端加密数据。
第五,获取服务端密钥和当前服务端向量。其中,该当前服务端向量sivt是根据当前响应数据ppt的前一响应数据ppt-1进行更新后的向量。
需要说明的是,客户端预先存储有服务端密钥sk和服务端初始化向量siv1。在接收到首发数据pq1对应的服务端加密数据后,先根据服务端密钥sk和服务端初始化向量siv1对首发数据pq1对应的服务端加密数据进行解密,得到第一响应数据pp1,然后再根据第一响应数据pp1对服务端初始化向量siv1进行更新得到服务端向量siv2。在接收到第二发数据pq2对应的服务端加密数据后,先根据服务端密钥sk和服务端向量siv2对第二发送数据pq2对应的服务端加密数据进行解密,得到第二响应数据pp2,然后再根据第二响应数据pp2对服务端向量siv2进行更新得到服务端向量siv3,以此类推。
在一种可能的实现方式中,在根据当前响应数据的前一响应数据更新得到当前服务端向量时,包括以下步骤:
首先,获取当前响应数据的前一响应数据的第二校验和。
具体地,在根据当前响应数据ppt的前一响应数据ppt-1更新得到当前服务端向量sivt时是根据前一响应数据ppt-1的校验和(即第二校验和svt-1)实现的,因此,客户端在解密得前一响应数据ppt-1时,可以采用预设的校验和算法计算出前一响应数据ppt-1的第二校验和svt-1并进行存储,这样便可以从内存中读取出前一响应数据ppt-1的第二校验和svt-1。其中,该校验和算法与前一发送数据的校验和算法相同,在此不再赘述。
其次,将用于前一响应数据对应的服务端加密数据进行解密的服务端向量向预设方向移位第二校验和的数据长度后,将第二校验和填补至移位后的服务端向量的移位末端,得到当前服务端向量。
具体地,在接收到前一响应数据ppt-1对应的服务端加密数据时,先根据服务端密钥sk和服务端向量sivt-1对前一响应数据ppt-1对应的服务端加密数据进行解密得到前一响应数据ppt-1,同时,采用CRC32计算出前一响应数据ppt-1的第二校验和svt-1并进行存储。其中,通过CRC32计算出的第二校验和svt-1为32bit,即第二校验和svt-1的数据长度为32bit。然后,将服务端向量sivt-1向预设方向移位32bit,并将读取出的第二校验和svt-1填补至移位后的服务端向量的移位末端,得到当前服务端向量sivt。
其中,预设方向可以是向左,也可以是向右,在此不作具体限定。在预设方向为向左时,则将服务端向量sivt-1向左移位32bit,此时将删除服务端向量sivt-1的高位32bit数据,然后将32bit的第二校验和svt-1填补至移位后的服务端向量的移位末端,即将第二校验和svt-1填补至移位后的服务端向量的低32位,从而得到当前服务端向量sivt。在预设方向为向右时,则将服务端向量sivt-1向右移位32bit,此时将删除服务端向量sivt-1的低位32bit数据,然后将32bit的第二校验和svt-1填补至移位后的服务端向量的移位末端,即将第二校验和svt-1填补至移位后的服务端向量的高32位,从而得到当前服务端向量sivt。
第六,根据服务端密钥和当前服务端向量对服务端加密数据进行解密,得到当前响应数据,并对当前响应数据进行处理。
具体地,可以根据服务端密钥sk和当前服务端向量sivt,采用对称加密算法对当前响应数据ppt对应服务端加密数据进行解密,得到当前响应数据ppt,并对当前响应数据ppt进行处理。其中,此处采用的对称加密算法为上文相同,在此不再赘述。
在一种可能的实现方式中,当前发送数据为首发数据,在获取首发数据之前,即在客户端与服务端进行正式通信之前,还需要客户端与服务端进双方身份认证,在双方认证过程中,客户端将计算出客户端身份信息并发送至服务端,以使服务端对客户端身份信息进行认证,在客户端身份信息认证通过的情况下,服务端将计算出服务端身份信息并发送至客户端,以使客户端对服务端身份信息进行认证,在服务端身份信息也通过认证的情况下,客户端便可以开始执行步骤S1100。
需要说明的是,生产商针对生产的一批客户端设备,需要先向服务端申请该批客户端设备的设备密钥,其中,每一客户端设备的设备密钥包括设备唯一标识符UID、Token和Password等数据。服务端将该批客户端设备的设备密钥打包加密后提供给生产商,生产商对该批客户端设备的设备密钥进行解密后写入各客户端设备,也就是说,对于本公开中的客户端设备,在出场前已经预先存储有唯一的UID、Token、Password等设备密钥信息。服务端在提供该批客户端设备的设备密钥同时,还将该批客户端设备的设备密钥进行存储,也就是说,该服务端预先存储有该批次客户端设备的设备密钥。需要说明的是,服务端并未存储设备密钥中Password的原值,而是将Password进行一次摘要计算后进行存储(即服务端存储的是加密Password),以提高数据传输的安全性。其中该摘要计算可以是MD5,也可以是其他的摘要计算方法,在此不作具体限定。
客户端与服务端进行数据传输前,需要先建立客户端与服务端的连接,在建立连接后,客户端需要向服务端发起验证挑战,该验证挑战中包括该客户端的UID以及由客户端生成的第一随机数tk1。服务端在接收到该验证挑战后将生成与该客户端对应的第二随机数tk2,并将该第二随机数tk2返回至发起验证挑战的客户端。同时,服务端将接收到的第一随机数tk1以及生成的第二随机数tk2进行存储,此时,服务端将存储有发起挑战的客户端对应的UID、Token、加密Password、第一随机数tk1和第二随机数tk2。同样的,客户端也对接收到的第二随机数tk2和生成的第一随机数tk1进行存储,也就是说在接收到第二随机数tk2后,客户端将存储有该客户端的UID、Token、Password、第一随机数tk1和第二随机数tk2。
客户端在接收到服务端返回的第二随机数tk2后,将根据规则计算客户端身份信息,并将该客户端身份信息发送至服务端,以使服务端对客户端的身份进行认证。
在一种可能的实现方式中,客户端身份信息的计算规则为:根据客户端存储的UID、Token以及第二随机数tk2,计算第一客户端信息cp1。根据客户端存储的Password,计算第二客户端信息cp2。根据第一客户端信息cp1和第二客户端信息cp2,计算该客户端身份信息。
在一种可能的实现方式中,第一客户端信息cp1的计算式如下所示:
cp1[16 bytes] = Md5(UID + Token + tk2)
第二客户端信息cp2的计算式如下所示:
cp2[16 bytes] = Password 。
客户端身份信息C-Credential的计算式如下所示:
C-Credential[32] = cp1 + cp2。
服务端在接收到客户端身份信息后,将对客户端身份进行认证,并在客户端身份认证通过的情况下,根据规则计算服务端身份信息,并将计算出的服务端身份信息返回至客户端,以使客户端对服务端的身份进行认证。
在一种可能的实现方式中,服务端身份信息的计算规则为:根据服务端存储的UID、Token以及第一随机数tk1,计算第一服务端信息sp1。对服务端存储的加密Password进行一次摘要计算,得到第二服务端信息sp2。根据第一服务端信息sp1和第二服务端信息sp2,计算服务端身份信息。
在一种可能的实现方式中,第一服务端信息sp1的计算式如下所示:
sp1[16 bytes] = Md5(UID[8 bytes] + Token[16 bytes] + tk1[16 bytes])
第二服务端信息sp2的计算式如下所示:
sp2[16 bytes] = Md5(加密Password )
服务端身份信息S-Credential的计算式如下所示:
S-Credential[32] = sp1 + sp2。
在一种可能的实现方式中,客户端对服务端进行身份认证时,包括以下步骤:
首先,接收服务端返回的服务端身份信息。
其次,根据预先存储的UID、Token和第一随机数tk1,计算服务端的第一服务端验证信息sp'1,并对预先存储的Password进行摘要计算,得到服务端的第二服务端验证信息sp'2 。
在一种可能的实现方式中,第一服务端验证信息sp'1的计算式如下所示:
sp'1 = Md5(UID[8 bytes] + Token[16 bytes] + tk1[16 bytes])
第二服务端验证信息sp'2的计算式如下所示:
sp'2 = Md5(Md5(Password )。
再次,根据第一服务端验证信息和第二服务端验证信息,对服务端身份信息进行认证。
具体地,在第一服务端验证信息sp'1等于第一服务端信息sp1,且第二服务端验证信息sp'2等于第二服务端信息sp2时,判断该服务器通过身份认证。
在客户端和服务端双方认证通过的情况下,客户端和服务端将分别根据自身存储的设备密钥计算客户端密钥、客户端初始化向量、服务端密钥和服务端初始化向量。
在一种可能的实现方式中,客户端和服务端还分别预先存储有协商好第一盐值、第二盐值、第三盐值和第四盐值。其中,四个盐值为4个随机生成的随机数,四个随机数各不相同。
客户端在根据自身存储的设备密钥UID、Token、Password、第一随机数tk1、第二随机数tk2、第一盐值salt1、第二盐值salt2、第三盐值salt3和第四盐值salt4计算客户端密钥ck、客户端初始化向量civ1、服务端密钥sk和服务端初始化向量siv1时,包括以下步骤:
对Password进行加密,得到加密Password。此处需要说明的是,该加密方式与服务端加密Password的算法相同,例如,服务端对Password进行一次MD5计算得到加密Password,则此处客户端也同样对存储的Password进行一次MD5计算得到加密Password。
根据UID、Token、加密Password、第一随机数tk1、第二随机数tk2以及第一盐值salt1,计算客户端密钥ck。在一种可能的实现方式中,客户端密钥ck的计算式可以如下所示:
ck=MD5(UID + Token + MD5(Password ) + tk1 + tk2 + Salt1)
根据UID、Token、加密后的Password、第一随机数tk1、第二随机数tk2以及第二盐值salt2,计算客户端初始化向量civ1。
在一种可能的实现方式中,客户端初始化向量civ1的计算式可以如下所示:
civ1=MD5(UID + Token + MD5(Password ) + tk1 + tk2 + Salt2)
根据UID、Token、加密后的Password、第一随机数tk1、第二随机数tk2以及第三盐值Salt2,计算服务端密钥sk。
在一种可能的实现方式中,服务端密钥sk的计算式可以如下所示:
sk=MD5(UID + Token + MD5(Password ) + tk2 + tk1 + Salt3)
根据UID、Token、加密后的Password 、第一随机数tk1、第二随机数tk2 以及第四盐值Salt4,计算服务端初始化向量siv1。
在一种可能的实现方式中,服务端初始化向量siv1的计算式可以如下所示:
siv1=MD5(UID + Token + MD5(Password ) + tk2 + tk1 + Salt4)
客户端将计算出的客户端密钥ck、客户端初始化向量civ1、服务端密钥sk和服务端初始化向量siv1存储在客户端,这样,在客户发送数据时,便可以基于客户端密钥ck、客户端初始化向量civ1对发送的数据进行加密得到客户端加密数据,同时在接收到服务端加密数据时,基于服务端密钥sk和服务端初始化向量siv1对服务端加密数据进行解密,得到发送数据的响应数据。
图2示出根据本公开另一实施例的数据传输加密方法的流程图,该方法由服务端(即数据接收端)执行,如图2所示,服务端在执行该数据传输加密方法时包括步骤S2100-S2600。
S2100,接收客户端加密数据,并获取服务端存储的客户端密钥和当前客户端向量。
其中,该客户端加密数据即为客户端当前发送数据pqt的客户端加密数据eqt。该当前客户端向量civt是根据当前发送数据pqt的前一发送数据pqt-1进行更新后的向量。更新得到当前客户端向量civt具体过程参照客户端,在此不再赘述。
S2200,根据客户端密钥和当前客户端向量对客户端加密数据进行解密,得到当前发送数据。
具体地,根据客户端密钥ck和当前客户端向量civt对客户端加密数据eqt进行解密,得到当前发送数据pqt。其中,该解密过程为对当前发送数据pqt进行加密得到客户端加密数据eqt的逆过程,在此不再赘述。
S2300,对当前发送数据进行响应,得到当前响应数据。
在客户端将当前发送数据的校验和与客户端加密数据一起发送至服务端的实施例中,服务端在解密得到当前发送数据后,将根据当前发送数据的校验和验证得到的解密结果是否正确,在验证解密结果正确的情况下,在对当前发送数据进行响应,得到当前响应数据。
S2400,获取服务端存储的服务端密钥和当前服务端向量。其中,当前服务端向量sivt是根据当前响应数据ppt的前一响应数据ppt-1进行更新后的向量。需要说明的是,服务端预先存储有服务端密钥sk和服务端初始化向量siv1。在当前响应数据为针对客户端首发数据pq1的第一响应数据pp1时,先根据服务端密钥sk和服务端初始化向量siv1对第一响应数据pp1进行加密,然后再根据第一响应数据pp1对服务端初始化向量siv1进行更新得到服务端向量siv2。在当前响应数据为针对客户端第二发送数据pq2的第二响应数据pp2时,先使用服务端密钥sk和服务端向量siv2对第二响应数据pp2进行加密,然后再根据第二响应数据pp2对服务端向量siv2进行更新得到服务端向量siv3,以此类推。
在一种可能的实现方式中,在根据当前响应数据的前一响应数据更新得到当前服务端向量时,包括以下步骤:
第一,获取前一响应数据的第二校验和。具体参见更新得到当前客户端向量的相关步骤,在此不再赘述。
第二,将对前一响应数据进行加密的服务端向量向预设方向移位第二数据长度后,将第二校验和填补至移位后的服务端向量的移位末端,得到当前服务端向量。具体参见更新得到当前客户端向量的相关步骤,在此不再赘述。
S2500,根据服务端密钥和当前服务端向量对当前响应数据进行加密,得到服务端加密数据,具体参见步骤S1200,在此不再赘述。
S2600,将服务端加密数据发送至客户端。
通过步骤S2100-S2600,可以实现对一事一密的客户端发送数据进行解密,同时也实现了对服务端响应数据的一事一密反馈,提高了客户端与服务端数据传输的安全性。
在一种可能的实现方式中,服务端在对客户端的身份进行认证时,包括以下步骤:
第一,接收客户端发送的客户端身份信息。
第二,根据服务端预先存储的UID、Token和第二随机数tk2,计算客户端的第一客户端验证信息cp'1,并通过对预先存储的客户端的加密Password (即Md5(Password ))进行摘要计算得到客户端的第二客户端验证信息cp'2。
在一种可能的实现方式中,第一客户端验证信息cp'1的计算式如下所示:
cp'1 = Md5(UID[8 bytes] + Token[16 bytes] + tk2[16 bytes])
第二客户端验证信息cp'2的计算式如下所示:
cp'2 = Md5(Md5(Password )
第三,根据第一客户端验证信息和第二客户端验证信息,对客户端身份信息进行认证。
具体地,在第一客户端验证信息cp'1等于第一客户端信息cp1,且第二客户端验证信息cp'2等于对第二客户端信息cp2进行两次MD5得到的摘要时,即cp'2等于Md5(Md5(Password )时,判断客户端通过身份认证。
在双方通过身份认证后,服务端将基于服务端存储的设备密钥UID、Token、Password 以及第一随机数tk1、第二随机数tk2、第一盐值salt1、第二盐值salt2、第三盐值salt3和第四盐值salt4,计算客户端密钥ck、客户端初始化向量civ1、服务端密钥sk和服务端初始化向量siv1。具体步骤参照客户端的计算过程,在此不再赘述。
为了更清楚地说明本公开的数据传输加密方法,下面结合图3对该数据传输加密方法进行进一步说明。如图3所示,该数据传输加密方法包括以下步骤S0-S12。
S0、客户端客户端向服务器发起挑战,该此步骤产生第一随机数tk1作为客户端会话临时密钥,并将客户端UID和第一随机数tk1发送给服务器。
S1、服务器在接收到客户端发送的挑战后,将产生第二随机数tk2作为服务端会话临时密钥,并将第二随机数tk2返回给客户端。
S2、客户端使用设备唯一标识符(UID)、Token、tk2及Password经过摘要计算后得到客户端身份信息,并发送至服务端。
S3、服务器使用与S2相同的算法验证客户端身份信息,并使用UID、Token、tk1及Password经过摘要计算后得到服务端身份信息,并发送至客户端做身份验证。在双方认证通过后,根据规则生成客户端上行数据AES Key得到ck、生成客户端上行数据初始IV得到civ1,用于解密来自客户端的数据。再根据规则生成服务端下行数据AES Key得到sk、生成服务端下行数据初始IV得到siv1,用于加密服务器发送的数据。
S4、客户端使用相同的算法验证服务器的身份。并在双方认证通过后,根据规则生成客户端上行数据AES Key得到ck、生成客户端上行数据初始IV得到civ1,用于加密发送给服务器的数据。再根据规则生成服务端下行数据AES Key得到sk、生成服务端下行数据初始IV得到siv1,用于解密服务器发来的数据。
S5、客户端对当前发送数据pqt进行CRC32计算得到校验和cvt,并使用AES CBC 128PKCS5 Padding的方式根据ck和civt加密数据得到密文eqt。将civt左移32bit,并将校验和cvt作为移位后的civt的低32bit,得到civt+1。每次加密数据时以此类推不断变换civ。
S6、客户端将加密后的数据civt与校验和cvt发送给服务器。
S7、服务器使用ck和civt解密密文civt,得到明文pqt,再使用校验和cvt验证pqt的正确性。将civt左移32bit,并将校验和cvt作为civt的低32bit,得到civt+1。每次解密数据后以此类推不断变换civ。在验证pqt的正确的情况下,将明文pqt发送给业务层进行处理。
S8、服务器业务层处理数据pqt,并产生响应数据ppt。
S9、服务器对需要发送的响应数据ppt进行CRC32计算得到校验和svt,并使用AESCBC 128 PKCS5 Padding的方式根据sk和sivt加密数据得到密文ept。将sivt左移32bit,并将校验和svt作为sivt的低32bit,得到sivt+1。每次加密数据时以此类推不断变换siv。
S10、将加密后的数据ept与校验和svt发送给客户端。
S11、客户端使用sk和sivt解密密文ept,得到明文ppt,再使用校验和svt验证ppt的正确性。将sivt左移32bit,并将校验和svt作为sivt的低32bit,得到sivt+1。每次解密数据后以此类推不断变换siv。在验证ppt的正确的情况下,将明文ppt发送给业务层进行处理。
S12、客户端业务层处理数据ppt,完整流程结束。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种数据传输加密方法,其特征在于,包括:
获取当前发送数据以及存储在客户端的客户端密钥和当前客户端向量;
根据存储在所述客户端的客户端密钥和当前客户端向量对所述当前发送数据进行加密,得到客户端加密数据;
将所述客户端加密数据发送至服务端;
其中,存储在所述客户端的当前客户端向量是根据所述当前发送数据的前一发送数据的第一校验和进行更新后的向量;
在所述服务端接收到所述客户端加密数据之后,所述服务端将获取存储在所述服务端的客户端密钥和当前客户端向量,并根据存储在所述服务端的客户端密钥和当前客户端向量对所述客户端加密数据进行解密,得到所述当前发送数据;
其中,存储在所述服务端的当前客户端向量是根据所述当前发送数据的前一发送数据的第一校验和进行更新后的向量;
在所述当前发送数据为首发数据时,所述当前客户端向量为预设的初始客户端向量;
存储在客户端的客户端密钥基于客户端预先存储的设备的UID、Token和Password以及第一随机数tk1、第二随机数tk2和第一盐值salt1计算得到;
存储在客户端的初始客户端向量基于客户端预先存储的所述UID、所述Token、所述Password、所述第一随机数tk1、所述第二随机数tk2以及第二盐值salt2计算得到;
存储在服务端的客户端密钥基于服务端预先存储的设备的UID、Token和加密Password以及第一随机数tk1、第二随机数tk2和第一盐值salt1计算得到;
存储在服务端的初始客户端向量基于服务端预先存储的所述UID、所述Token、所述加密Password、所述第一随机数tk1、所述第二随机数tk2以及第二盐值salt2计算得到;
其中,所述第一盐值salt1和所述第二盐值salt2为所述客户端和所述服务端预先协商好的随机数。
2.根据权利要求1所述的方法,其特征在于,在根据所述当前发送数据的前一发送数据更新得到所述当前客户端向量时,包括:
获取所述前一发送数据的第一校验和;
将对所述前一发送数据进行加密的客户端向量向预设方向移位所述第一校验和的数据长度后,将所述第一校验和填补至移位后的客户端向量的移位末端,得到所述当前客户端向量。
3.根据权利要求1所述的方法,其特征在于,在获取当前发送数据后,还包括计算所述当前发送数据的校验和的步骤;
在将所述客户端加密数据发送至服务端时,还包括同时发送所述当前发送数据的校验和至所述服务端。
4.根据权利要求1所述的方法,其特征在于,在将所述客户端加密数据发送至服务端之后,还包括:
接收服务端加密数据,其中,所述服务端加密数据为所述服务端针对所述当前发送数据返回的当前响应数据的加密数据;
获取服务端密钥和当前服务端向量;
根据所述服务端密钥和所述当前服务端向量对所述服务端加密数据进行解密,得到所述当前响应数据,并对所述当前响应数据进行处理;
其中,所述当前服务端向量是根据所述当前响应数据的前一响应数据进行更新后的向量。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述当前发送数据为首发数据;
在获取首发数据之前,还包括对所述服务端进行身份认证的步骤;
在对所述服务端进行身份认证时,包括:
接收所述服务端返回的服务端身份信息,其中,所述服务端身份信息包括第一服务端信息和第二服务端信息,所述第一服务端信息根据所述服务端存储的对应客户端的设备标识和Token以及所述对应客户端向所述服务端发送的第一随机数确定,所述第二服务端信息通过对所述服务端存储的所述对应客户端的加密Password 进行摘要计算得到;
根据预先存储的设备标识、Token和所述第一随机数,计算所述服务端的第一服务端验证信息,并对预先存储的Password进行摘要计算,得到所述服务端的第二服务端验证信息;
根据所述第一服务端验证信息和所述第二服务端验证信息,对所述服务端身份信息进行认证。
6.根据权利要求5所述的方法,其特征在于,对所述加密Password进行一摘要计算得到所述第二服务端信息,对预先存储的Password进行两次摘要计算,得到所述服务端的第二服务端验证信息。
7.根据权利要求5所述的方法,其特征在于,在所述服务端通过身份认证后,还包括计算所述客户端密钥、所述客户端初始化向量、服务端密钥和服务端初始化向量的步骤;
在计算所述客户端密钥、所述客户端初始化向量、服务端密钥和服务端初始化向量时,包括:
获取所述设备标识、所述Token、所述Password 、所述第一随机数、所述服务端向所述客户端发送的第二随机数、第一盐值、第二盐值、第三盐值和第四盐值,并对所述Password进行加密;
根据所述设备标识、所述Token、加密后的Password、所述第一随机数、所述第二随机数以及所述第一盐值,计算所述客户端密钥;
根据所述设备标识、所述Token、加密后的Password、所述第一随机数、所述第二随机数以及所述第二盐值,计算所述客户端初始化向量;
根据所述设备标识、所述Token、加密后的Password、所述第一随机数、所述第二随机数以及所述第三盐值,计算所述服务端密钥;
根据所述设备标识、所述Token、加密后的Password、所述第一随机数、所述第二随机数以及所述第四盐值,计算所述服务端初始化向量。
8.一种数据传输加密方法,其特征在于,包括:
接收客户端加密数据,并获取客户端密钥和当前客户端向量,其中,所述客户端加密数据为客户端当前发送数据的加密数据;
根据所述客户端密钥和所述当前客户端向量对所述客户端加密数据进行解密,得到所述当前发送数据;
对所述当前发送数据进行响应,得到当前响应数据;
获取服务端密钥和当前服务端向量;
根据所述服务端密钥和所述当前服务端向量对所述当前响应数据进行加密,得到服务端加密数据;
将所述服务端加密数据发送至客户端;
其中,所述当前客户端向量是根据所述当前发送数据的前一发送数据进行更新后的向量,所述当前服务端向量是根据所述当前响应数据的前一响应数据进行更新后的向量;
存储在服务端的客户端密钥基于服务端预先存储的设备的UID、Token和加密Password以及第一随机数tk1、第二随机数tk2和第一盐值salt1计算得到;
存储在服务端的初始客户端向量基于服务端预先存储的所述UID、所述Token、所述加密Password、所述第一随机数tk1、所述第二随机数tk2以及第二盐值salt2计算得到;
其中,所述第一盐值salt1和所述第二盐值salt2为所述客户端和所述服务端预先协商好的随机数。
9.根据权利要求8所述的方法,其特征在于,在根据所述当前响应数据的前一响应数据更新得到所述当前服务端向量时,包括:
获取所述前一响应数据的第二校验和;
将对所述前一响应数据进行加密的服务端向量向预设方向移位所述第二校验的数据长度后,将所述第二校验和填补至移位后的服务端向量的移位末端,得到所述当前服务端向量。
10.根据权利要求8所述的方法,其特征在于,所述客户端加密数据为客户端首发数据的加密数据;
在接收客户端加密数据之前,还包括对所述客户端进行身份认证的步骤;
在对所述客户端进行身份认证时,包括:
接收所述客户端发送的客户端身份信息,其中,所述客户端身份信息包括第一客户端信息和第二客户端信息,所述第一客户端信息根据所述客户端存储的所述客户端的设备标识和Token以及服务端向所述客户端返回的第二随机数确定,所述第二客户端信息根据所述客户端存储的Password确定;
根据预先存储的所述客户端的设备标识、Token和所述第二随机数,计算所述客户端的第一客户端验证信息,并通过对预先存储的所述客户端的加密Password进行摘要计算得到所述客户端的第二客户端验证信息;
根据所述第一客户端验证信息和所述第二客户端验证信息,对所述客户端身份信息进行认证。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211106875.0A CN115189971B (zh) | 2022-09-13 | 2022-09-13 | 数据传输加密方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211106875.0A CN115189971B (zh) | 2022-09-13 | 2022-09-13 | 数据传输加密方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115189971A CN115189971A (zh) | 2022-10-14 |
CN115189971B true CN115189971B (zh) | 2022-12-20 |
Family
ID=83524596
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211106875.0A Active CN115189971B (zh) | 2022-09-13 | 2022-09-13 | 数据传输加密方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115189971B (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060143453A1 (en) * | 2002-06-19 | 2006-06-29 | Secured Communications, Inc | Inter-authentication method and device |
US8165160B2 (en) * | 2006-09-29 | 2012-04-24 | Intel Corporation | Method and system to validate a write for a device on a serial bus |
JP4818975B2 (ja) * | 2007-03-30 | 2011-11-16 | 西日本電信電話株式会社 | 情報通信システム |
CN108234501B (zh) * | 2018-01-11 | 2020-12-11 | 北京中电普华信息技术有限公司 | 一种基于量子密钥融合的虚拟电厂安全通信方法 |
CN113497778B (zh) * | 2020-03-18 | 2023-05-12 | 北京同邦卓益科技有限公司 | 一种数据的传输方法和装置 |
CN113992401B (zh) * | 2021-10-27 | 2023-03-24 | 同程网络科技股份有限公司 | 数据处理方法和装置 |
-
2022
- 2022-09-13 CN CN202211106875.0A patent/CN115189971B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115189971A (zh) | 2022-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11018854B2 (en) | Data conversion systems and methods | |
CN108599925B (zh) | 一种基于量子通信网络的改进型aka身份认证系统和方法 | |
US8130961B2 (en) | Method and system for client-server mutual authentication using event-based OTP | |
CN106412862B (zh) | 一种短信加固方法、装置及系统 | |
CN108509787B (zh) | 一种程序认证方法 | |
WO2005008950A1 (en) | Secure seed generation protocol | |
CN112637161B (zh) | 数据传输方法和存储介质 | |
CN102916810B (zh) | 传感器认证方法、系统和装置 | |
CN113486324B (zh) | 基于sm2算法实现三因素匿名身份认证的方法 | |
CN114765543A (zh) | 一种量子密码网络扩展设备的加密通信方法及系统 | |
CN115189971B (zh) | 数据传输加密方法 | |
CN116318654A (zh) | 融合量子密钥分发的sm2算法协同签名系统、方法及设备 | |
CN115865520A (zh) | 移动云服务环境中具有隐私保护的认证和访问控制方法 | |
KR101472507B1 (ko) | 위탁 연산 방법 | |
CN113014376B (zh) | 一种用户与服务器之间安全认证的方法 | |
JP3746919B2 (ja) | 可変認証情報を用いる資格認証方法 | |
EP3185504A1 (en) | Security management system for securing a communication between a remote server and an electronic device | |
CN110868285B (zh) | 认证方法、服务器、系统和计算机可读存储介质 | |
KR20000039411A (ko) | 암호화 메커니즘 및 일회용 패스워드를 이용한 인증 방법 | |
CN113315628A (zh) | 密钥封装方法、装置、设备及存储介质 | |
CN114070549A (zh) | 一种密钥生成方法、装置、设备和存储介质 | |
CN110890959A (zh) | 一种账户改密的方法、系统及装置 | |
CN111200602B (zh) | 一种分权管理方法、加密卡、管理员锁和密码机 | |
JP2002063139A (ja) | 端末装置、サーバ装置および端末認証方法 | |
CN115460020B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: Building 613A, Building 5, Qilin Artificial Intelligence Industrial Park, No. 266 Chuangyan Road, Qilin Technology Innovation Park, Nanjing City, Jiangsu Province, 211135 Patentee after: Zhongke Wuqi (Nanjing) Technology Co.,Ltd. Address before: Room 1108, Floor 11, No. 27, Zhichun Road, Haidian District, Beijing 100088 Patentee before: JEEJIO (BEIJING) TECHNOLOGY Co.,Ltd. |