CN117857060A - 一种二维码离线核验方法、系统及存储介质 - Google Patents
一种二维码离线核验方法、系统及存储介质 Download PDFInfo
- Publication number
- CN117857060A CN117857060A CN202410245375.8A CN202410245375A CN117857060A CN 117857060 A CN117857060 A CN 117857060A CN 202410245375 A CN202410245375 A CN 202410245375A CN 117857060 A CN117857060 A CN 117857060A
- Authority
- CN
- China
- Prior art keywords
- key
- data
- dimensional code
- aes
- verification
- 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.)
- Granted
Links
- 238000012795 verification Methods 0.000 title claims abstract description 190
- 238000000034 method Methods 0.000 title claims abstract description 96
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 96
- 230000008569 process Effects 0.000 claims abstract description 55
- 238000013475 authorization Methods 0.000 claims abstract description 9
- 238000005516 engineering process Methods 0.000 claims abstract description 9
- 238000004458 analytical method Methods 0.000 claims abstract description 8
- 230000006870 function Effects 0.000 claims description 34
- 230000009466 transformation Effects 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 15
- 238000011084 recovery Methods 0.000 claims description 14
- 230000002441 reversible effect Effects 0.000 claims description 10
- 238000003745 diagnosis Methods 0.000 claims description 9
- 238000012544 monitoring process Methods 0.000 claims description 9
- 101100217298 Mus musculus Aspm gene Proteins 0.000 claims description 8
- 238000006467 substitution reaction Methods 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 6
- 230000007246 mechanism Effects 0.000 claims description 6
- 101100462495 Caenorhabditis elegans rsa-1 gene Proteins 0.000 claims description 4
- 238000009795 derivation Methods 0.000 claims description 3
- 238000012937 correction Methods 0.000 claims description 2
- 230000008439 repair process Effects 0.000 claims description 2
- YSMRWXYRXBRSND-UHFFFAOYSA-N TOTP Chemical compound CC1=CC=CC=C1OP(=O)(OC=1C(=CC=CC=1)C)OC1=CC=CC=C1C YSMRWXYRXBRSND-UHFFFAOYSA-N 0.000 claims 30
- 238000012423 maintenance Methods 0.000 description 16
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000013024 troubleshooting Methods 0.000 description 4
- 230000004075 alteration Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000000873 masking effect Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 208000015181 infectious disease Diseases 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种二维码离线核验方法、系统及存储介质,方法包括步骤:生成安全的二维码;使用混合加密方案,结合对称加密和非对称加密的优点,确保数据的安全性,并且能够在离线设备中进行快速的解密和校验;在离线状态下,使用一次性密码算法实现身份认证的额外保护;离线设备核验系统进行二维码身份认证的流程,以及离线核验设备的解密过程;配置离线核验设备以实现不需要互联网连接的身份认证和授权过程;离线设备故障处理。本发明保证核验过程的安全性和可靠性;对离线设备的二维码解码和解析、防伪防篡改技术优化,实现稳定的离线核验。
Description
技术领域
本发明属于网络通信、信息安全技术领域,尤其涉及一种二维码离线核验方法、系统及存储介质。
背景技术
在无法连接网络的情况下,部分核验二维码的设备需要一套可支持离线设备安全核验二维码的方法。目前,二维码的使用已经非常广泛,但在离线环境下,如何安全地验证二维码的真伪性仍然是一个难题。目前最常见的方法是提供基于二维码识别的验证服务,但在离线环境下,这种服务将无法进行。
因此,需要提供一种新的二维码离线核验方法,以解决离线设备无法连接网络的问题。
发明内容
需要一种新的二维码离线核验方法,以解决离线设备无法连接网络的问题。这种方法需要综合考虑二维码生成和识别技术、离线数据传输和存储技术、以及二维码安全验证技术等方面的因素。该二维码离线核验方法可以有效解决离线设备无法连接网络的问题,为用户提供更加便捷的二维码核验服务。
本发明第一方面公开的一种二维码离线核验方法,包括以下步骤:
生成安全的二维码:为了防止伪造和篡改,生成二维码时加密身份认证数据,并添数字签名和TOTP密码算法来保护数据完整性和安全性;在验证二维码时,解密身份认证数据并通过数字签名、时间戳和TOTP密码算法来保证数据的完整性、有效性;
数据加密:使用混合加密方案,结合对称加密和非对称加密的优点,确保数据的安全性,并且能够在离线设备中进行快速的解密和校验;同时使用数字签名和时间戳防止伪造和篡改;
在离线状态下,使用一次性密码算法实现身份认证的额外保护;所述一次性密码算法使用一个固定的密钥和当前时间来生成一个短期有效的密码,防止重放攻击和窃取攻击;
离线设备核验系统进行二维码身份认证的流程,以及离线核验设备的解密过程:验证二维码时验证数字签名和时间戳的有效性,使用AES密钥对数据进行解密;在离线核验设备上,使用RSA私钥解密RSA加密后的AES密钥,然后使用该密钥对数据进行解密;对解密后的数据进行数字签名验证以确保数据的完整性和正确性;
配置离线核验设备以实现不需要互联网连接的身份认证和授权过程;
离线设备故障处理:在设备出现故障时,对故障进行快速诊断,确定故障原因;对设备数据的定期备份,在设备故障时,通过数据恢复系统将备份数据还原到设备中,保证核验数据不会丢失;对于一些故障无法本地解决的情况,通过远程连接到设备并对设备进行远程操作。
进一步地,所述安全的二维码包含如下信息:
用户身份信息;
生成二维码时的时间戳,以确保二维码生成的时间与核验的时间相符合;
生成二维码的同时生成一个基于时间的TOTP密钥;
将这些信息进行整合,形成一个完整的数据集,并进行加密和数字签名等操作,以确保数据的安全性和完整性,下面是二维码中包含信息的公式:
二维码数据集 = 用户身份信息 + 时间戳 + TOTP密钥
TOTP密钥公式:TOTP密钥 = Kdf(Ks, T)
其中,Ks为主密钥,T为时间戳,Kdf为密钥派生函数;
加密和数字签名的过程用以下公式表示:
加密后的数据 = E(Kd, 二维码数据集)
数字签名 = Sign(Kp, 加密后的数据)
其中,Kd为对称密钥,用于加密二维码数据集;Kp为私钥,用于生成数字签名,E为加密算法,Sign为数字签名算法。
本发明第二方面公开的二维码离线核验系统,包括:
二维码生成模块:为了防止伪造和篡改,生成二维码时加密身份认证数据,并添数字签名和TOTP密码算法来保护数据完整性和安全性;在验证二维码时,解密身份认证数据并通过数字签名、时间戳和TOTP密码算法来保证数据的完整性、有效性;
数据加密模块:使用混合加密方案,结合对称加密和非对称加密的优点,确保数据的安全性,并且能够在离线设备中进行快速的解密和校验;同时使用数字签名和时间戳防止伪造和篡改;
在离线状态下,使用一次性密码算法实现身份认证的额外保护;所述一次性密码算法使用一个固定的密钥和当前时间来生成一个短期有效的密码,防止重放攻击和窃取攻击;
离线设备核验系统:进行二维码身份认证的流程,以及离线核验设备的解密过程:验证二维码时验证数字签名和时间戳的有效性,使用AES密钥对数据进行解密;在离线核验设备上,使用RSA私钥解密RSA加密后的AES密钥,然后使用该密钥对数据进行解密;对解密后的数据进行数字签名验证以确保数据的完整性和正确性;
离线核验设备:实现不需要互联网连接的身份认证和授权过程;
离线设备故障处理模块:在设备出现故障时,对故障进行快速诊断,确定故障原因;对设备数据的定期备份,在设备故障时,通过数据恢复系统将备份数据还原到设备中,保证核验数据不会丢失;对于一些故障无法本地解决的情况,通过远程连接到设备并对设备进行远程操作。
本发明第三方面公开的一种计算机可读存储介质,设置在所述二维码离线核验系统中,其中,在所述计算机可读存储介质包括的程序被处理器运行时,控制所述二维码离线核验系统运行。
本发明的有益技术效果如下:
高效稳定:通过对离线设备的二维码解码和解析、防伪防篡改技术、设备故障处理等方面进行优化和改进,可以实现高效、稳定的离线核验,不受网络环境和服务器状态的影响。
安全可靠:通过数字签名、加密等安全措施,以及本地认证机制的实现,可以保证核验过程的安全性和可靠性,避免二维码被篡改或伪造,保护产品的知识产权和消费者的权益。
降低成本:通过优化解码和解析算法,尽量降低算力和存储资源的使用,可以在保证核验准确性的前提下,降低硬件成本和维护成本,提高产品的市场竞争力。
附图说明
图1本发明的数据加密后生成二维码的生码流程;
图2本发明的二维码核验流程;
图3本发明的基于TOTP算法的服务器端身份认证流程;
图4本发明的基于TOTP算法的离线核验设备端身份认证流程。
具体实施方式
下面结合附图对本发明作进一步的说明,但不以任何方式对本发明加以限制,基于本发明教导所作的任何变换或替换,均属于本发明的保护范围。
在离线状态下,部分核验二维码的设备无法连接网络,无法进行在线核验,而传统的二维码核验方法一般都需要连接网络才能实现,因此本发明提出一种可支持离线设备安全核验二维码的方法,能够在离线状态下对二维码进行快速准确的核验,同时保证核验的安全性和可靠性,以满足特定应用场景下的需求。
由于离线设备无法在核验过程中实时获取服务器端的认证信息,针对离线设备安全核验二维码的需求,本发明重点解决防伪和防篡改技术问题,提供一套可靠的本地认证机制,防止伪造和篡改。此外,还对二维码进行数字签名和加密等安全措施,以保证核验过程的安全性和可靠性。
在解决防伪和防篡改技术的同时,也需要考虑离线状态下的二维码解码和解析,以及设备故障处理。在离线设备核验二维码时,设备故障可能会导致核验失败或出现错误,因此需要一套完善的异常处理机制,包括故障诊断、数据备份和恢复、以及故障报警等方面的技术支持,以保证核验的稳定性和可靠性。
本发明提供了一种安全稳定的离线二维码核验方法,能够在核验设备未连接互联网的情况下,通过核验用户提供的二维码来完成用户身份核验,具体包括以下步骤:
1.生成安全的二维码
为了防止伪造和篡改,生成二维码时加密身份认证数据,并添数字签名和TOTP密码算法来保护数据完整性和安全性。在验证二维码时,需要解密身份认证数据并通过数字签名、时间戳和TOTP密码算法来保证数据的完整性、有效性。
数据加密:使用了混合加密方案,结合对称加密和非对称加密的优点,确保数据的安全性,并且能够在离线设备中进行快速的解密和校验。同时使用了数字签名和时间戳等信息的加入也能够有效防止伪造和篡改。
密码算法(TOTP)使用:在离线状态下,使用一次性密码算法(TOTP)可以实现身份认证的额外保护。TOTP算法是一种基于时间同步的算法,它使用一个固定的密钥和当前时间来生成一个短期有效的密码,可以有效防止重放攻击和窃取攻击。
2.离线设备核验系统
支持离线核验二维码的软件,主要完成了二维码身份认证的流程和实现方法,以及离线核验设备的解密过程。验证二维码时需要验证数字签名和时间戳的有效性,使用AES密钥对数据进行解密。在离线核验设备上,需要使用RSA私钥解密RSA加密后的AES密钥,然后使用该密钥对数据进行解密。最后,需要对解密后的数据进行数字签名验证以确保数据的完整性和正确性。
3.配置离线设备:配置离线核验设备是为了实现不需要互联网连接的身份认证和授权过程。这种方法通常用于需要高安全性和隐私性的场合,例如银行、政府机构、企业、医疗机构等。
4.离线设备故障处理方法
故障诊断:在设备出现故障时,需要对故障进行快速诊断,确定故障原因。通过对设备状态、日志和传感器数据等信息的实时监控和分析,可以快速发现故障点,并给出针对性的解决方案。
数据备份和恢复:在设备故障时,需要保证核验数据不会丢失。为此,本发明提供一套数据备份和恢复系统,可以实现对设备数据的定期备份,并在设备故障后,通过数据恢复系统将备份数据还原到设备中,从而保证核验数据不会丢失。
远程维护:对于一些故障无法本地解决的情况,本发明还提供一种远程维护的解决方案。通过远程连接到设备并对设备进行远程操作,可以实现对设备进行维护和故障排除,从而保证核验设备的正常运行。
实施例
参考图1的一个数据加密后生成二维码的生码流程,主要用于保护数据传输的安全性和完整性。它涉及对数据进行加密、数字签名和时间戳,最终生成一个二维码以供离线核验设备扫描使用。本发明的二维码离线核验办法包括以下步骤:
S1、生成安全的二维码
设计安全的二维码需要加密身份认证数据,并添加数字签名、时间戳和TOTP来保护数据完整性和安全性。在验证二维码时,需要解密身份认证数据并验证数字签名、时间戳和TOTP的有效性。
二维码中包含如下信息:
用户身份信息:需要收集用户的身份信息,例如用户名、用户ID、手机号码、电子邮件地址等。
时间戳:需要在生成二维码的同时记录生成二维码的时间戳,以确保二维码生成的时间与核验的时间相符合,从而防止二维码被伪造。
TOTP密钥:需要在生成二维码的同时生成一个基于时间的TOTP密钥,并将这个密钥嵌入到二维码中。TOTP密钥是用于生成TOTP验证码的关键。
确定这些信息后,将这些信息进行整合,形成一个完整的数据集,并进行加密和数字签名等操作,以确保数据的安全性和完整性,下面是二维码中包含信息的公式:
二维码数据集 = 用户身份信息 + 时间戳 + TOTP密钥
TOTP密钥公式:TOTP密钥 = Kdf(Ks, T)
其中,Ks为主密钥,T为时间戳,Kdf为密钥派生函数。
加密和数字签名的过程用以下公式表示:
加密后的数据 = E(Kd, 二维码数据集)
数字签名 = Sign(Kp, 加密后的数据)
其中,Kd为对称密钥,用于加密二维码数据集;Kp为私钥,用于生成数字签名。E为加密算法,Sign为数字签名算法。
为了保证数据的安全性,在生成二维码时对数据进行加密。在扫描二维码时,需要先进行解密,才能得到原始数据。
S2、数据加密,包括以下步骤:
S21.生成二维码时对身份认证数据进行对称加密:
生成二维码时应该对身份认证数据进行对称加密,为保证数据的安全性,优选地,本实施例选择使用高强度的AES-256对称加密算法。
在AES-256对称加密算法中,需要选择一个256位的加密密钥K来对要加密的数据M进行分块加密。每个加密块的长度应该为128位,即 M = M1M2...Mn。
加密块的加密过程包括以下两个步骤:
a) 将密钥K与数据块Mi进行异或操作:Ci = K XOR Mi。
b) 对每个加密块进行多轮的AES变换,每轮变换包括字节替代、行移位和列混淆三个操作。在每一轮变换中,都会使用不同的子密钥来进行加密,这些子密钥是通过主密钥按照特定规则生成的。假设变换轮数为Nr,加密块Ci在第r轮变换后的结果为:Ci(r)。
最后一个加密块需要进行最终轮变换,该步骤包括字节替代、行移位、列混淆和密钥加操作。加密后的数据块Ci(r)转化为16进制字符串,并添加到二维码中。
注意事项:
在进行数据加密时,要注意选择一个安全的密钥,可以采用随机数生成算法生成密钥。
在进行加密操作时,要注意每个加密块的长度,以及加密块的分组模式,避免出现数据泄露或者数据丢失的问题。
S22. 对加密后的数据进行非对称加密,使用RSA非对称加密算法将AES-256密钥加密。优选地,为确保RSA密钥的安全性,选择使用硬件安全模块或者离线密钥生成等方式来保证密钥的安全。
生成RSA密钥对。为了确保密钥的安全,可以使用离线密钥生成方式,即在离线的设备上生成密钥对,避免密钥泄露。
将生成的AES密钥使用公钥加密。这里使用了RSA-OAEP算法,该算法是RSA加密算法的一种变种,能够提供更好的安全性。
RSA-OAEP加密算法的公式描述如下:
假设消息为m,其长度为k bits,其中k<= n - 2h - 2,其中n是RSA公钥的模数长度,h是哈希函数输出的长度(单位为比特)。
1)选择一个安全的哈希函数H,将m哈希成一个h比特的值。本发明用mHash表示这个哈希值。
2)选择一个长度为n-k-2h-2的随机数r,并将其转换为一个长度为k+2h比特的字符串R。
3)对R进行掩码操作。假设掩码函数为G,其输入为R和一个h比特的值X,输出为一个长度为k+2h比特的字符串。掩码函数的定义为:
G(R, X) = (R XOR G1(X)) || H(R XOR G1(X) XOR X),其中,|| 表示拼接操作,G1是另一个哈希函数。
4)将mHash作为X,对掩码后的R进行加密得到一个长度为k+2h比特的密文C。
5)将密文C进行掩码操作,得到另一个长度为k+2h比特的字符串P。掩码函数G的逆函数G^-1为:
G^-1(P, X) = (P XOR G2(X)) || (R XOR H(P XOR G2(X) XOR X))
其中,G2是另一个哈希函数。
6)截取P的最后k比特,得到加密后的密文C'。
最终的RSA-OAEP加密算法的密文为(C', P)。在解密时,首先将P解码得到掩码后的密文C,再通过解密得到原始的哈希值mHash和随机数r,最后验证哈希值和填充是否正确即可。
将加密后的数据和RSA公钥一起组合成二维码。在验证二维码时,先使用RSA私钥解密AES密钥。这里同样需要保证RSA私钥的安全性,使用硬件安全模块等方式来防止私钥泄露。使用解密后的AES密钥对二维码中加密的数据进行解密,得到原始数据。对比解密后的原始数据和本地数据进行校验,确保数据的完整性和正确性。
S23. 将加密后的数据和RSA加密后的AES密钥一起生成二维码,并在二维码中加入数字签名和时间戳等信息来防止伪造和篡改。
使用AES-256加密算法对需要加密的数据进行加密,并得到加密后的数据(记为Ciphertext):
Ciphertext = AES_{256}(Plaintext, Key)
其中,AES_{256}表示AES-256加密算法,Plaintext表示需要加密的明文数据,Key表示AES-256密钥,Ciphertext表示加密后的数据。
使用RSA非对称加密算法对AES-256密钥进行加密,并得到加密后的AES密钥(记为EncryptedKey):
EncryptedKey = RSA_{pub}(Key)
其中,RSA_{pub}表示RSA公钥加密算法,Key表示AES-256密钥,EncryptedKey表示加密后的AES密钥。
将加密后的数据和RSA加密后的AES密钥一起生成二维码,并在二维码中加入数字签名和时间戳等信息来防止伪造和篡改。
将Ciphertext和EncryptedKey组合成一个数据包(记为Payload),按照一定的格式进行编码,如JSON格式等:
Payload = { "Ciphertext": Ciphertext, "EncryptedKey": EncryptedKey }
使用数字签名技术对Payload进行签名,以确保二维码数据的完整性和不可篡改性。可以使用SHA-256哈希算法计算Payload的哈希值,并使用RSA私钥对哈希值进行签名:
Signature = RSA_{priv}(SHA256(Payload))
其中,RSA_{priv}表示RSA私钥签名算法,SHA256表示SHA-256哈希算法,Payload表示数据包,Signature表示数字签名。
添加时间戳,记录生成二维码的时间,以便后续验证:
Timestamp = current\ time
将Payload、数字签名和时间戳等信息组合成一个二维码图像,并进行二维码纠错等处理。
这样的混合加密方案可以结合对称加密和非对称加密的优点,既保证了数据的安全性,又能够在离线设备中进行快速的解密和校验。同时,数字签名和时间戳等信息的加入也能够有效防止伪造和篡改。
S3、使用一次性密码算法(TOTP)实现身份认证的额外保护
在离线状态下,使用一次性密码算法(TOTP)可以实现身份认证的额外保护。TOTP算法是一种基于时间同步的算法,它使用一个固定的密钥和当前时间来生成一个短期有效的密码,可以有效防止重放攻击和窃取攻击。
TOTP算法的公式如下:
TOTP = HMAC(K, floor((T - T0) / X))
其中:
K:密钥,通常为一个字符串。
T:当前时间戳,通常使用UTC时间表示。
T0:起始时间戳,通常为Unix时间戳的某个值(例如0或者1970年1月1日)。
X:时间步长,表示每个密码的有效时间长度,通常为30秒。
floor((T - T0) / X):将时间戳T与起始时间戳T0的差值除以时间步长X并向下取整得到的整数值。
HMAC:哈希函数,常用的有SHA-1、SHA-256等。
TOTP算法的输出是一个由哈希函数计算出的固定长度的一次性密码。
步骤S3具体包括:
S31. 服务器生成密钥并安全传输
服务器生成密钥,并通过HTTPS协议安全地将TOTP密钥传输到手机上,确保密钥在传输过程中不会被截获或篡改。
K = base32_decode(random_key)
其中,random_key是一个随机生成的字符串,经过base32编码处理后得到K。base32_decode是将字符串解码为字节流的函数。
S32.手机获取TOTP密钥并嵌入二维码
手机通过HTTPS协议安全地获取服务器生成的TOTP密钥,并将该TOTP密钥嵌入到二维码中,确保密钥在传输过程中不会被截获或篡改。
otpauth://totp/issuer:account?secret=K&issuer=issuer&algorithm=SHA1&digits=6&period=30
其中,otpauth是一种统一资源标识符方案,用于在支持TOTP算法的设备上配置和导入二次认证信息,totp表示这是一个使用时间为基础的一次性密码(TOTP),issuer表示TOTP的发行方,account表示用户账户,secret表示服务器生成的TOTP密钥,作为一个随机的、安全的密钥,用于生成一次性密码,K是服务器生成的密钥,issuer=issuer 就是为TOTPURI提供了一个发行方的标识符,实际使用时,可以将issuer参数设置为相应的值,以便更好地描述和识别您的TOTP服务或应用,SHA1是哈希算法,digits表示验证码的位数,即生成的一次性密码的长度,6是验证码的位数,period表示每个验证码的有效期,30是每个验证码的有效期;
S33.离线设备扫码获取TOTP密钥并生成验证码
离线设备通过扫码获取到验证码和TOTP密钥,并使用TOTP算法生成一个验证码。离线设备应该确保其系统时间和在线设备的系统时间是同步的,以防止生成的验证码有误差。
HMAC(K, T) = SHA1(K ⊕ 0x5c || SHA1(K ⊕ 0x36 || T))
其中,HMAC是哈希函数,K是服务器生成的密钥,T是一个时间戳。"||"表示拼接操作,"⊕"表示异或操作,其中,0x5c 和 0x36 是两个常量,以十六进制表示。它们分别用于在计算HMAC过程中异或(XOR)密钥(K)的两个不同版本。0x5c 是一个64位的常量,它在HMAC计算中用于异或K的每一个字节(byte)。它的二进制表示为:01011100。0x36也是一个64位的常量,它在HMAC计算中用于异或K的每一个字节(byte)。它的二进制表示为:00110110。
TOTP算法将当前时间戳(以30或60秒为单位)除以30或60得到一个整数值X,然后将X作为T的值代入上述公式,得到一个哈希值。最后,将哈希值取模(对10^digits取模),得到一个长度为digits的验证码。
S34.验证过程中考虑时间窗口和防止重放攻击
在验证过程中,离线设备生成的验证码的有效期是有限的,通常为30秒或60秒,因此应该考虑到这个时间窗口,并在时间窗口内进行比较。同时,应该采用防止重放攻击的技术,以防止用户恶意重放验证码。
S35.离线核验系统需要实现一个基于TOTP算法的验证码验证模块,用于验证从手机端扫描的二维码中提取的TOTP密钥和用户输入的TOTP验证码的有效性。
在离线核验系统中包括一个TOTP算法的验证模块。该模块应该能够从二维码中解码出TOTP密钥,并使用TOTP算法计算出相应的TOTP验证码。
S36. 验证模块首先需要获取当前的系统时间,并将其转换为整数形式
从操作系统中获取当前的时间戳(例如UNIX时间戳)。将时间戳转换为整数格式,以便于TOTP算法进行计算。
S37. 验证模块通过TOTP算法计算出当前的TOTP验证码
在验证模块中实现TOTP算法。使用TOTP密钥和当前的整数时间戳作为输入,计算出当前的TOTP验证码。
S38. 验证模块将用户输入的TOTP验证码与计算出的TOTP验证码进行比对,以确定用户的身份是否有效
从用户输入中获取TOTP验证码。将用户输入的TOTP验证码与计算出的TOTP验证码进行比较,如果相同则认为用户身份有效。
S39.离线核验系统需要在本地数据库中增加一个TOTP密钥字段,用于存储用户的TOTP密钥。
在本地数据库中创建一个新的TOTP密钥字段。当用户生成新的TOTP密钥时,将其存储到该字段中。在每次验证时,系统会从数据库中获取用户的TOTP密钥,并使用TOTP算法来计算出相应的TOTP验证码。在验证模块中编写逻辑来从数据库中获取用户的TOTP密钥。使用TOTP密钥和当前时间戳计算出TOTP验证码,然后与用户输入的TOTP验证码进行比较。
总体来说,使用TOTP算法可以在离线状态下提高身份认证的安全性,确保数据的完整性和正确性。但需要注意的是,由于TOTP算法的短期有效性,因此需要及时进行身份认证操作。同时,为了保证TOTP算法的安全性,需要定期更换密钥和时钟周期等参数,以避免被攻击者窃取并重放攻击。
S4、离线设备核验系统使用如下验证流程:
S41:验证二维码的流程
在验证二维码时,需要按照相应的流程进行验证。具体流程如下:
对二维码图像进行扫描或者拍照,得到二维码数据。对二维码数据进行解码,得到Payload、数字签名和时间戳等信息。使用RSA公钥验证数字签名的有效性,以确保Payload的完整性和不可篡改性。可以使用SHA-256哈希算法计算Payload的哈希值,并使用RSA公钥对签名进行验证;其中,"Payload"是指从二维码数据中解码出的信息负载。
验证时间戳的有效性,以确保验证的时效性使用以下公式:
CurrentTime - TimeStamp \leq ValidityPeriod
其中,CurrentTime表示当前时间,TimeStamp表示二维码中的时间戳,ValidityPeriod表示二维码的有效期限,在验证时间戳的有效性时,使用 "\leq" 运算符来比较当前时间和二维码中的时间戳与有效期限之间的关系;如果当前时间减去时间戳的值小于等于有效期限,则二维码为有效二维码,否则为无效二维码。
使用RSA私钥解密EncryptedKey,得到AES-256密钥,使用以下公式:
AES_{Key} = RSA_{Decrypt}(EncryptedKey, RSA_{Privatekey})
其中,AES_{Key}表示AES密钥,EncryptedKey表示RSA加密后的AES密钥,RSA_{Privatekey}表示RSA私钥,RSA_{Decrypt}表示RSA解密函数。
使用AES-256密钥对Ciphertext进行解密,得到原始数据,使用以下公式:
Plaintext = AES_{Decrypt}(Ciphertext, AES_{Key})
其中,Plaintext表示解密后的原始数据,Ciphertext表示待解密的密文,AES_{Key}表示用于解密的AES密钥,AES_{Decrypt}表示AES解密函数。
需要注意的是,在实际应用中,还需要考虑二维码的安全性和防伪能力。可以使用水印、防伪标记、密钥轮换等方式来增强二维码的安全性和防伪能力。
S42:离线核验设备解析二维码并解密数据
在离线核验设备上,读取二维码并解析出加密后的数据和RSA加密后的AES密钥,使用离线存储的RSA私钥进行解密获取AES密钥,然后再使用该密钥对加密后的数据进行解密,得到身份认证数据。
读取二维码信息:使用扫描设备读取二维码中的信息。
验证数字签名和时间戳:通过验证数字签名和时间戳等信息来防止伪造和篡改,确保二维码数据的完整性和安全性。
验证数字签名和时间戳
验证数字签名的公式通常涉及到哈希函数和非对称加密:
S = RSA^-1 (sign, pubKey)
verify = Hash(data) == S
其中:
sign:二维码中包含的数字签名。
pubKey:公钥,用于解密数字签名。
RSA^-1:RSA加密算法的解密函数,用于解密数字签名。
data:二维码中的原始数据,用于进行数字签名的哈希处理。
Hash:哈希函数,用于计算数据的哈希值。
==:等于号,表示两者相等。
验证时间戳的公式如下:
verify = abs(T - T0)<= delta
其中:
T:当前时间戳。
T0:二维码中的时间戳。
delta:允许的时间差,通常为几分钟(例如3分钟)。
分离加密后的数据和RSA加密后的AES密钥:通过解析二维码,将加密后的数据和RSA加密后的AES密钥分离出来。
解密RSA加密的AES密钥:使用设备上离线存储的RSA私钥对RSA加密后的AES密钥进行解密,得到AES密钥。
解密RSA加密的AES密钥的公式如下:
AES_key = RSA^-1(key, privKey)
其中:
key:二维码中RSA加密后的AES密钥。
privKey:设备上离线存储的RSA私钥。
RSA^-1:RSA加密算法的解密函数,用于解密RSA加密后的AES密钥。
AES_key:解密后得到的AES密钥。
使用AES密钥对加密后的数据进行解密:使用得到的AES密钥对加密后的数据进行解密。
使用AES密钥对加密后的数据进行解密的公式如下:
decrypted_data = AES_decrypt(encrypted_data, AES_key)
其中:
encrypted_data:二维码中加密后的数据。
AES_key:使用RSA解密后得到的 AES 密钥。
AES_decrypt:AES解密函数,用于将加密后的数据解密。
decrypted_data:解密后得到的数据。
AES-256密钥对加密后的数据进行解密:
获取密钥
从二维码中获取经RSA加密后的AES密钥EncryptedKey,使用RSA私钥RSA_{Privatekey}解密,得AES-256密钥AES_{Key}: AES_{Key} = RSA_{Decrypt}(EncryptedKey, RSA_{Privatekey})
解密数据
从二维码中获取经AES-256密钥加密后的数据块 C_i^{(Nr)},将其转换为原始的二进制数据块。
按照相反的步骤进行解密:
进行最终轮变换:
M_n^{(Nr)}= InvSubBytes(InvShiftRows(InvMixColumns(C_n^{(Nr)}) \oplusK^{(Nr)}));
其中,
C_n^{(Nr)}:表示进行AES-256加密后得到的最终密文数据块,n 表示每个数据块(通常为128位)的索引。
K^{(Nr)}:表示最后一轮的轮密钥(Round Key),在解密时,与加密过程中使用的轮密钥相反顺序使用。
InvMixColumns(C_n^{(Nr)}):表示对密文数据块 C_n^{(Nr)} 进行逆MixColumns操作。在解密过程中,需要进行逆混淆变换,与加密过程中的MixColumns相对应。
InvShiftRows(InvMixColumns(C_n^{(Nr)})):表示对逆MixColumns操作的结果进行逆ShiftRows操作。同样,这是逆变换版本的ShiftRows步骤。
InvSubBytes(InvShiftRows(InvMixColumns(C_n^{(Nr)}))):表示对逆ShiftRows操作的结果进行逆SubBytes操作。
M_n^{(Nr)}:表示进行最终轮解密后得到的数据块,n 可以表示每个数据块(通常为128位)的索引。
进行多轮逆变换:
M_i^{(r)} = InvSubBytes(InvShiftRows(InvMixColumns(M_i^{(r+1)}) \oplus K^{(r)})),其中 r = Nr-1, Nr-2, \ldots, 1;
M_i^{(r+1)}:表示上一轮解密后得到的数据块,这是初始值,初始化为最后一轮解密后得到的数据块 M_n^{(Nr)},其中 n 表示每个数据块(通常为128位)的索引。
K^{(r)}:表示第 r 轮的逆轮密钥(Inverse Round Key),这是解密过程中使用的轮密钥,与加密过程中使用的轮密钥相反顺序使用。在解密过程中,轮密钥的顺序与加密过程中相反。
InvMixColumns(M_i^{(r+1)}):表示对上一轮解密得到的数据块 M_i^{(r+1)}进行逆MixColumns操作。在解密过程中,需要进行逆混淆变换,与加密过程中的MixColumns相对应。
InvShiftRows(InvMixColumns(M_i^{(r+1)})):表示对逆MixColumns操作的结果进行逆ShiftRows操作。同样,这是逆变换版本的ShiftRows步骤。
InvSubBytes(InvShiftRows(InvMixColumns(M_i^{(r+1)}))):表示对逆ShiftRows操作的结果进行逆SubBytes操作。同样,这是逆变换版本的SubBytes步骤。
M_i^{(r)}:表示第r轮解密后得到的数据块。
进行解密子密钥生成:使用AES_{Key}和Nr作为输入,生成解密所需的轮密钥K^{(r)};
AES_{Key}:指的是AES-256算法中使用的主密钥(Master Key),也称为加密密钥。
Nr:表示AES-256加密或解密的总轮数。
K^{(r)}:表示第 r 轮解密所需的轮密钥(Round Key)。
进行异或密钥操作:M_i^{(r)} = M_i^{(r+1)} \oplus K^{(r)};
其中,M_i^{(r+1)}:表示上一轮解密后得到的数据块。初始值为最后一轮解密后得到的数据块 M_n^{(Nr)},其中 n 表示每个数据块(通常为128位)的索引。
K^{(r)}:表示第 r 轮解密所需的轮密钥(Round Key)。在解密过程中,与加密过程相反,需要按照相反顺序使用轮密钥。第1轮解密使用的是第 Nr 轮加密时生成的轮密钥,第2轮解密使用的是第 Nr-1 轮加密时生成的轮密钥,以此类推,直到第Nr轮解密使用的是第1轮加密时生成的轮密钥。
M_i^{(r)}:表示第 r 轮解密后得到的数据块。
获取原始数据
将解密块M_i^{(Nr)}进行异或操作得到原始数据块M_i: M_i = K \oplus M_i^{(Nr)},其中K为加密数据时使用的密钥。
需要注意的是,在解密RSA加密的AES密钥时,需要确保RSA私钥的安全性,可以使用硬件安全模块或者离线密钥生成等方式来保证密钥的安全。此外,为了保证二维码数据的完整性和安全性,在生成二维码时应该加入数字签名和时间戳等信息来防止伪造和篡改。
优选地,本实施例中还配置离线设备,配置离线核验设备是为了实现不需要互联网连接的身份认证和授权过程。这种方法通常用于需要高安全性和隐私性的场合,例如银行、政府机构、企业、医疗机构等。
下面是配置离线核验设备的详细步骤:
1.选择合适的离线核验设备。可以选择支持多种身份认证方式的设备,例如智能手机、平板电脑、智能手表、智能门锁等。
2.安装核验软件。根据设备的类型和操作系统选择合适的核验软件,并在设备上安装。核验软件可以从官方网站、应用商店或其他可信渠道下载。安装完成后,需要进行基本配置,例如语言、地区、时区等。
3.配置离线核验规则。在核验软件中设置离线核验规则,以确保身份认证和授权的安全性和准确性。
4.测试和验证。在配置完离线核验规则后,需要进行测试和验证,以确保规则能够正常运行并满足业务需求。可以在设备上模拟不同场景下的使用情况,并进行测试和验证。
5.更新和维护。定期更新和维护核验软件和规则,以确保设备的安全性和性能。可以通过自动更新或手动更新的方式来更新软件和规则,同时需要定期检查设备的硬件状态和系统日志,以发现和解决故障和漏洞。
总之,配置离线核验设备需要仔细考虑业务需求和安全性要求,同时需要对软件和规则进行测试和验证,并定期更新和维护设备。这样才能确保设备的稳定性和安全性,提供可靠的身份认证和授权服务。
在设备出现故障时,需要对故障进行快速诊断,确定故障原因。为此,本实施例还提供一套故障诊断系统,通过对设备状态、日志和传感器数据等信息的实时监控和分析,可以快速发现故障点,并给出针对性的解决方案。
为了快速诊断设备故障原因,可以建立一套故障诊断系统,具体步骤如下:
监控设备状态:通过设备传感器和状态监控模块,实时监测设备的状态,包括温度、电压、CPU利用率等关键参数。
记录设备日志:在设备运行期间,记录所有设备操作日志,并对日志进行分类和整理,方便后续故障诊断。
故障诊断:通过对设备状态、日志和传感器数据等信息的实时监控和分析,快速发现故障点,并给出针对性的解决方案。
提供故障报告:根据故障诊断结果,生成故障报告,包括故障原因、解决方案和修复时间等信息,方便后续处理。
数据备份和恢复:在设备故障时,需要保证核验数据不会丢失。为此,本发明提供一套数据备份和恢复系统,可以实现对设备数据的定期备份,并在设备故障后,通过数据恢复系统将备份数据还原到设备中,从而保证核验数据不会丢失。
为了保证核验数据不会丢失,在设备故障时,本实施例建立一套数据备份和恢复系统,具体步骤如下:
数据备份:定期对设备核验数据进行备份,并将备份数据存储在本地或云端存储设备中,以便在设备故障时进行恢复。
数据恢复:在设备故障后,通过数据恢复系统将备份数据还原到设备中,恢复设备核验数据。
数据同步:为了保证备份数据的实时性,可以建立数据同步机制,将设备核验数据同步到云端存储设备中,以便在设备故障时进行恢复。
对于一些故障无法本地解决的情况,本实施例还提供一种远程维护的解决方案。通过远程连接到设备并对设备进行远程操作,可以实现对设备进行维护和故障排除,从而保证核验设备的正常运行。
远程维护是一种通过远程连接到设备并对设备进行维护和故障排除的方法,可以保证核验设备的正常运行。本发明提供以下实现方案:
1.远程连接技术:需要使用可靠的远程连接技术,如SSH、VPN等,来确保远程连接的安全性和可靠性。
2.远程维护软件:需要使用专门的远程维护软件,如TeamViewer、AnyDesk等,来实现远程连接和操作设备。
3.远程操作权限控制:为了保证安全性,需要对远程操作进行权限控制,只授权有资质的人员进行远程维护操作。
4.远程维护日志记录:为了方便追踪和排查故障,需要记录每一次远程维护操作的日志信息,包括操作人员、时间、操作内容等。
5.远程维护监控系统:需要建立远程维护监控系统,对远程维护操作进行实时监控,及时发现异常情况并进行处理。
6.远程维护安全防护:需要对远程维护过程进行安全防护,包括防止黑客攻击、恶意软件感染等,确保远程维护过程的安全性。
综上所述,通过上述实现方案,可以实现对离线核验设备的远程维护和故障排除,确保设备的正常运行。
通过解决二维码离线核验过程中的三个关键问题,本发明的有益技术效果如下:
高效稳定:通过对离线设备的二维码解码和解析、防伪防篡改技术、设备故障处理等方面进行优化和改进,可以实现高效、稳定的离线核验,不受网络环境和服务器状态的影响。
安全可靠:通过数字签名、加密等安全措施,以及本地认证机制的实现,可以保证核验过程的安全性和可靠性,避免二维码被篡改或伪造,保护产品的知识产权和消费者的权益。
降低成本:通过优化解码和解析算法,尽量降低算力和存储资源的使用,可以在保证核验准确性的前提下,降低硬件成本和维护成本,提高产品的市场竞争力。
本文所使用的词语“优选的”意指用作实例、示例或例证。本文描述为“优选的”任意方面或设计不必被解释为比其他方面或设计更有利。相反,词语“优选的”的使用旨在以具体方式提出概念。如本申请中所使用的术语“或”旨在意指包含的“或”而非排除的“或”。即,除非另外指定或从上下文中清楚,“X使用A或B”意指自然包括排列的任意一个。即,如果X使用A;X使用B;或X使用A和B二者,则“X使用A或B”在前述任一示例中得到满足。
而且,尽管已经相对于一个或实现方式示出并描述了本公开,但是本领域技术人员基于对本说明书和附图的阅读和理解将会想到等价变型和修改。本公开包括所有这样的修改和变型,并且仅由所附权利要求的范围限制。特别地关于由上述组件(例如元件等)执行的各种功能,用于描述这样的组件的术语旨在对应于执行所述组件的指定功能(例如其在功能上是等价的)的任意组件(除非另外指示),即使在结构上与执行本文所示的本公开的示范性实现方式中的功能的公开结构不等同。此外,尽管本公开的特定特征已经相对于若干实现方式中的仅一个被公开,但是这种特征可以与如可以对给定或特定应用而言是期望和有利的其他实现方式的一个或其他特征组合。而且,就术语“包括”、“具有”、“含有”或其变形被用在具体实施方式或权利要求中而言,这样的术语旨在以与术语“包含”相似的方式包括。
本发明实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以多个或多个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。上述提到的存储介质可以是只读存储器,磁盘或光盘等。上述的各装置或系统,可以执行相应方法实施例中的存储方法。
综上所述,上述实施例为本发明的一种实施方式,但本发明的实施方式并不受所述实施例的限制,其他的任何背离本发明的精神实质与原理下所做的改变、修饰、代替、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
Claims (10)
1.一种二维码离线核验方法,其特征在于,包括以下步骤:
生成安全的二维码:为了防止伪造和篡改,生成二维码时加密身份认证数据,并添数字签名和TOTP密码算法来保护数据完整性和安全性;在验证二维码时,解密身份认证数据并通过数字签名、时间戳和TOTP密码算法来保证数据的完整性、有效性;
数据加密:使用混合加密方案,结合对称加密和非对称加密的优点,确保数据的安全性,并且能够在离线设备中进行快速的解密和校验;同时使用数字签名和时间戳防止伪造和篡改;
在离线状态下,使用一次性密码算法实现身份认证的额外保护;所述一次性密码算法使用一个固定的密钥和当前时间来生成一个短期有效的密码,防止重放攻击和窃取攻击;
离线设备核验系统进行二维码身份认证的流程,以及离线核验设备的解密过程:验证二维码时验证数字签名和时间戳的有效性,使用AES密钥对数据进行解密;在离线核验设备上,使用RSA私钥解密RSA加密后的AES密钥,然后使用该密钥对数据进行解密;对解密后的数据进行数字签名验证以确保数据的完整性和正确性;
配置离线核验设备以实现不需要互联网连接的身份认证和授权过程;
离线设备故障处理:在设备出现故障时,对故障进行快速诊断,确定故障原因;对设备数据的定期备份,在设备故障时,通过数据恢复系统将备份数据还原到设备中,保证核验数据不会丢失;对于一些故障无法本地解决的情况,通过远程连接到设备并对设备进行远程操作。
2.根据权利要求1所述的一种二维码离线核验方法,其特征在于,所述安全的二维码包含如下信息:
用户身份信息;
生成二维码时的时间戳,以确保二维码生成的时间与核验的时间相符合;
生成二维码的同时生成一个基于时间的TOTP密钥;
将这些信息进行整合,形成一个完整的数据集,并进行加密和数字签名操作,以确保数据的安全性和完整性,下面是二维码中包含信息的公式:
二维码数据集=用户身份信息+时间戳+TOTP密钥
TOTP密钥公式:TOTP密钥=Kdf(Ks,T)
其中,Ks为主密钥,T为时间戳,Kdf为密钥派生函数;
加密和数字签名的过程用以下公式表示:
加密后的数据=E(Kd,二维码数据集)
数字签名=Sign(Kp,加密后的数据)
其中,Kd为对称密钥,用于加密二维码数据集;Kp为私钥,用于生成数字签名,E为加密算法,Sign为数字签名算法。
3.根据权利要求1所述的一种二维码离线核验方法,其特征在于,为了保证数据的安全性,在生成二维码时对数据进行加密,数据加密包括以下步骤:
生成二维码时,使用AES-256对称加密算法对身份认证数据进行对称加密:
使用RSA非对称加密算法对AES-256对称加密算法加密后的数据进行非对称加密,生成RSA密钥对;
使用RSA-OAEP算法将生成的AES密钥使用公钥加密;最终的RSA-OAEP加密算法的密文为(C',P),在解密时,首先将P解码得到掩码后的密文C,再通过解密得到原始的哈希值mHash和随机数r,最后验证哈希值和填充是否正确;
将加密后的数据和RSA加密后的AES密钥一起生成二维码,并在二维码中加入数字签名和时间戳来防止伪造和篡改。
4.根据权利要求1所述的一种二维码离线核验方法,其特征在于,使用一次性密码算法实现身份认证的额外保护,具体包括服务器处理流程和离线设备核验系统验证流程,服务器处理流程包括:
服务器生成密钥,并通过HTTPS协议安全地将TOTP密钥传输到手机上,确保密钥在传输过程中不会被截获或篡改,
K=base32_decode(random_key)
其中,random_key是一个随机生成的字符串,经过base32编码处理后得到K,base32_decode是将字符串解码为字节流的函数;
手机通过HTTPS协议安全地获取服务器生成的TOTP密钥,并将该TOTP密钥嵌入到二维码中,确保密钥在传输过程中不会被截获或篡改;
otpauth://totp/issuer:account?secret=K&issuer=issuer&algorithm=SHA1&digits=6&period=30
其中,otpauth是一种统一资源标识符方案,用于在支持TOTP算法的设备上配置和导入二次认证信息,totp表示这是一个使用时间为基础的一次性密码,issuer表示TOTP的发行方,account表示用户账户,secret表示服务器生成的TOTP密钥,作为一个随机的、安全的密钥,用于生成一次性密码,K是服务器生成的密钥,issuer=issuer就是为TOTP URI提供了一个发行方的标识符,实际使用时,可以将issuer参数设置为相应的值,以便更好地描述和识别您的TOTP服务或应用,SHA1是哈希算法,digits表示验证码的位数,即生成的一次性密码的长度,6是验证码的位数,period表示每个验证码的有效期,30是每个验证码的有效期;
离线设备通过扫码获取到验证码和TOTP密钥,并使用TOTP算法生成一个验证码:
HMAC(K, T) = SHA1(K ⊕ 0x5c || SHA1(K ⊕ 0x36 || T))
其中,HMAC是哈希函数,K是服务器生成的密钥,T是一个时间戳,"||"表示拼接操作,"⊕"表示异或操作,0x5c和0x36是两个常量,以十六进制表示,它们分别用于在计算HMAC过程中异或密钥的两个不同版本;TOTP算法将当前时间戳除以30或60得到一个整数值X,然后将X作为T的值代入上述公式,得到一个哈希值,最后,将哈希值取模,得到一个长度为digits的验证码;
在验证过程中,离线设备生成的验证码的有效期在时间窗口内进行比较,同时,用防止重放攻击的技术,以防止用户恶意重放验证码;
验证模块获取当前的系统时间,并将其转换为整数形式;
验证模块使用TOTP密钥和当前的整数时间戳作为输入,计算出当前的TOTP验证码;
验证模块将用户输入的TOTP验证码与计算出的TOTP验证码进行比对,以确定用户的身份是否有效;
在本地数据库中创建一个新的TOTP密钥字段,当用户生成新的TOTP密钥时,将其存储到该字段中,每次验证时,会从数据库中获取用户的TOTP密钥,并使用TOTP算法来计算出相应的TOTP验证码;
离线设备核验系统验证流程包括:
获取二维码数据,并进行解码,得到Payload、数字签名和时间戳信息;Payload是指从二维码数据中解码出的信息负载;
使用RSA公钥验证数字签名的有效性,以确保Payload的完整性和不可篡改性;验证时间戳的有效性,以确保验证的时效性使用以下公式:
CurrentTime - TimeStamp \leq ValidityPeriod
其中,CurrentTime表示当前时间,TimeStamp表示二维码中的时间戳,ValidityPeriod表示二维码的有效期限,在验证时间戳的有效性时,使用 "\leq" 运算符来比较当前时间和二维码中的时间戳与有效期限之间的关系,如果当前时间减去时间戳的值小于等于有效期限,则二维码为有效二维码,否则为无效二维码;
使用RSA私钥解密EncryptedKey,得到AES-256密钥,使用以下公式:
AES_{Key} = RSA_{Decrypt}(EncryptedKey, RSA_{Privatekey})
其中,AES_{Key}表示AES密钥,EncryptedKey表示RSA加密后的AES密钥,RSA_{Privatekey}表示RSA私钥,RSA_{Decrypt}表示RSA解密函数;
使用AES-256密钥对Ciphertext进行解密,得到原始数据,使用以下公式:
Plaintext = AES_{Decrypt}(Ciphertext, AES_{Key})
其中,Plaintext表示解密后的原始数据,Ciphertext表示待解密的密文,AES_{Key}表示用于解密的AES密钥,AES_{Decrypt}表示AES解密函数;
在离线核验设备上,读取二维码并解析出加密后的数据和RSA加密后的AES密钥,使用离线存储的RSA私钥进行解密获取AES密钥,然后再使用该密钥对加密后的数据进行解密,得到身份认证数据,包括:
读取二维码信息;
验证数字签名和时间戳,验证数字签名的公式涉及到哈希函数和非对称加密,包括:
S = RSA^-1 (sign, pubKey)
verify = Hash(data) == S
其中:
sign为二维码中包含的数字签名;
pubKey为公钥,用于解密数字签名;
RSA^-1为RSA加密算法的解密函数,用于解密数字签名;
data是二维码中的原始数据,用于进行数字签名的哈希处理;
Hash为哈希函数,用于计算数据的哈希值;
==为等于号,表示两者相等;
验证时间戳的公式如下:
verify = abs(T - T0) <= delta
其中:
T为当前时间戳;
T0为二维码中的时间戳;
delta为允许的时间差;
分离加密后的数据和RSA加密后的AES密钥;
解密RSA加密的AES密钥:使用设备上离线存储的RSA私钥对RSA加密后的AES密钥进行解密,得到AES密钥,解密RSA加密的AES密钥的公式如下:
AES_key = RSA^-1(key, privKey)
其中:
key:二维码中RSA加密后的AES密钥;
privKey:设备上离线存储的RSA私钥;
RSA^-1:RSA加密算法的解密函数,用于解密RSA加密后的AES密钥;
AES_key:解密后得到的AES密钥;
使用AES密钥对加密后的数据进行解密,公式如下:
decrypted_data = AES_decrypt(encrypted_data, AES_key)
其中:
encrypted_data为二维码中加密后的数据;
AES_key为使用RSA解密后得到的 AES密钥;
AES_decrypt为AES解密函数,用于将加密后的数据解密;
decrypted_data为解密后得到的数据;
AES-256密钥对加密后的数据进行解密,包括:
获取密钥:从二维码中获取经RSA加密后的AES密钥EncryptedKey,使用RSA私钥RSA_{Privatekey}解密,得到AES-256密钥AES_{Key}: AES_{Key} = RSA_{Decrypt}(EncryptedKey, RSA_{Privatekey});
解密数据:从二维码中获取经AES-256密钥加密后的数据块 C_i^{(Nr)},将其转换为原始的二进制数据块;
按照相反的步骤进行解密:
进行最终轮变换:
M_n^{(Nr)}= InvSubBytes(InvShiftRows(InvMixColumns(C_n^{(Nr)}) \oplus K^{(Nr)}));
C_n^{(Nr)}:表示进行AES-256加密后得到的最终密文数据块,n 表示每个数据块的索引;
K^{(Nr)}:表示最后一轮的轮密钥(Round Key),在解密时,与加密过程中使用的轮密钥相反顺序使用;
InvMixColumns(C_n^{(Nr)}):表示对密文数据块 C_n^{(Nr)} 进行逆MixColumns操作;在解密过程中,需要进行逆混淆变换,与加密过程中的MixColumns相对应;
InvShiftRows(InvMixColumns(C_n^{(Nr)})):表示对逆MixColumns操作的结果进行逆ShiftRows操作;
InvSubBytes(InvShiftRows(InvMixColumns(C_n^{(Nr)}))):表示对逆ShiftRows操作的结果进行逆SubBytes操作;
M_n^{(Nr)}:表示进行最终轮解密后得到的数据块,n 可以表示每个数据块的索引;
进行多轮逆变换:
M_i^{(r)} = InvSubBytes(InvShiftRows(InvMixColumns(M_i^{(r+1)}) \oplus K^{(r)})),其中 r = Nr-1, Nr-2, \ldots, 1;
M_i^{(r+1)}:表示上一轮解密后得到的数据块,这是初始值,初始化为最后一轮解密后得到的数据块 M_n^{(Nr)},其中 n 表示每个数据块的索引;
K^{(r)}:表示第 r 轮的逆轮密钥,这是解密过程中使用的轮密钥,与加密过程中使用的轮密钥相反顺序使用;在解密过程中,轮密钥的顺序与加密过程中相反;
InvMixColumns(M_i^{(r+1)}):表示对上一轮解密得到的数据块 M_i^{(r+1)} 进行逆MixColumns操作;在解密过程中,需要进行逆混淆变换,与加密过程中的MixColumns相对应;
InvShiftRows(InvMixColumns(M_i^{(r+1)})):表示对逆MixColumns操作的结果进行逆ShiftRows操作;
InvSubBytes(InvShiftRows(InvMixColumns(M_i^{(r+1)}))):表示对逆ShiftRows操作的结果进行逆SubBytes操作;
M_i^{(r)}:表示第r轮解密后得到的数据块;
进行解密子密钥生成:使用AES_{Key}和Nr作为输入,生成解密所需的轮密钥K^{(r)};
AES_{Key}:指的是AES-256算法中使用的主密钥,也称为加密密钥;
Nr:表示AES-256加密或解密的总轮数;
K^{(r)}:表示第 r 轮解密所需的轮密钥;
进行异或密钥操作:M_i^{(r)} = M_i^{(r+1)} \oplus K^{(r)};
M_i^{(r+1)}:表示上一轮解密后得到的数据块;初始值为最后一轮解密后得到的数据块 M_n^{(Nr)},其中n表示每个数据块的索引;
K^{(r)}:表示第r轮解密所需的轮密钥;
M_i^{(r)}:表示第r轮解密后得到的数据块;
获取原始数据;
将解密块M_i^{(Nr)}进行异或操作得到原始数据块M_i:M_i = K \oplus M_i^{(Nr)},其中K为加密数据时使用的密钥。
5.根据权利要求1所述的一种二维码离线核验方法,其特征在于,故障诊断的具体步骤如下:
通过设备传感器和状态监控模块,实时监测设备的状态,包括温度、电压、CPU利用率;
在设备运行期间,记录所有设备操作日志,并对日志进行分类和整理;
通过对设备状态、日志和传感器数据信息的实时监控和分析,快速发现故障点,并给出针对性的解决方案;
根据故障诊断结果,生成故障报告,包括故障原因、解决方案和修复时间。
6.根据权利要求1所述的一种二维码离线核验方法,其特征在于,数据备份和恢复的步骤如下:
定期对设备核验数据进行备份,并将备份数据存储在本地或云端存储设备中,以便在设备故障时进行恢复;
在设备故障后,通过数据恢复系统将备份数据还原到设备中,恢复设备核验数据;
建立数据同步机制,将设备核验数据同步到云端存储设备中,以便在设备故障时进行恢复。
7.根据权利要求1所述的一种二维码离线核验方法,其特征在于,将加密后的数据和RSA加密后的AES密钥一起生成二维码,并在二维码中加入数字签名和时间戳来防止伪造和篡改,具体包括:
使用AES-256加密算法对需要加密的数据进行加密,并得到加密后的数据Ciphertext:
Ciphertext = AES_{256}(Plaintext, Key)
其中,AES_{256}表示AES-256加密算法,Plaintext表示需要加密的明文数据,Key表示AES-256密钥,Ciphertext表示加密后的数据;
使用RSA非对称加密算法对AES-256密钥进行加密,并得到加密后的AES密钥EncryptedKey:
EncryptedKey = RSA_{pub}(Key)
其中,RSA_{pub}表示RSA公钥加密算法,Key表示AES-256密钥,EncryptedKey表示加密后的AES密钥;
将加密后的数据和RSA加密后的AES密钥一起生成二维码,并在二维码中加入数字签名和时间戳来防止伪造和篡改:
将Ciphertext和EncryptedKey组合成一个数据包Payload,按照一定的格式进行编码:
使用数字签名技术对Payload进行签名,以确保二维码数据的完整性和不可篡改性:可以使用SHA-256哈希算法计算Payload的哈希值,并使用RSA私钥对哈希值进行签名:
Signature = RSA_{priv}(SHA256(Payload))
其中,RSA_{priv}表示RSA私钥签名算法,SHA256表示SHA-256哈希算法,Payload表示数据包,Signature表示数字签名;
添加时间戳,记录生成二维码的时间,以便后续验证:
Timestamp = current\ time
将Payload、数字签名和时间戳组合成一个二维码图像,并进行二维码纠错处理。
8. 根据权利要求1所述的一种二维码离线核验方法,其特征在于,在AES-256对称加密算法中,选择一个256位的加密密钥K来对要加密的数据M进行分块加密,每个加密块的长度为128位,即M = M1M2...Mn;
加密块的加密过程包括以下两个步骤:
a) 将密钥K与数据块Mi进行异或操作:Ci = K XOR Mi;
b) 对每个加密块进行多轮的AES变换,每轮变换包括字节替代、行移位和列混淆三个操作;在每一轮变换中,都使用不同的子密钥来进行加密,这些子密钥是通过主密钥按照特定规则生成的,假设变换轮数为Nr,加密块Ci在第r轮变换后的结果为:Ci(r);
最后一个加密块需要进行最终轮变换,该步骤包括字节替代、行移位、列混淆和密钥加操作,加密后的数据块Ci(r)转化为16进制字符串,并添加到二维码中。
9.一种使用权利要求1-8任一项所述方法的二维码离线核验系统,其特征在于,包括:
二维码生成模块:为了防止伪造和篡改,生成二维码时加密身份认证数据,并添数字签名和TOTP密码算法来保护数据完整性和安全性;在验证二维码时,解密身份认证数据并通过数字签名、时间戳和TOTP密码算法来保证数据的完整性、有效性;
数据加密模块:使用混合加密方案,结合对称加密和非对称加密的优点,确保数据的安全性,并且能够在离线设备中进行快速的解密和校验;同时使用数字签名和时间戳防止伪造和篡改;
在离线状态下,使用一次性密码算法实现身份认证的额外保护;所述一次性密码算法使用一个固定的密钥和当前时间来生成一个短期有效的密码,防止重放攻击和窃取攻击;
离线设备核验系统:进行二维码身份认证的流程,以及离线核验设备的解密过程:验证二维码时验证数字签名和时间戳的有效性,使用AES密钥对数据进行解密;在离线核验设备上,使用RSA私钥解密RSA加密后的AES密钥,然后使用该密钥对数据进行解密;对解密后的数据进行数字签名验证以确保数据的完整性和正确性;
离线核验设备:实现不需要互联网连接的身份认证和授权过程;
离线设备故障处理模块:在设备出现故障时,对故障进行快速诊断,确定故障原因;对设备数据的定期备份,在设备故障时,通过数据恢复系统将备份数据还原到设备中,保证核验数据不会丢失;对于一些故障无法本地解决的情况,通过远程连接到设备并对设备进行远程操作。
10.一种计算机可读存储介质,其特征在于,设置在权利要求9所述二维码离线核验系统中,其中,在所述计算机可读存储介质包括的程序被处理器运行时,控制所述二维码离线核验系统运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410245375.8A CN117857060B (zh) | 2024-03-05 | 2024-03-05 | 一种二维码离线核验方法、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410245375.8A CN117857060B (zh) | 2024-03-05 | 2024-03-05 | 一种二维码离线核验方法、系统及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117857060A true CN117857060A (zh) | 2024-04-09 |
CN117857060B CN117857060B (zh) | 2024-05-17 |
Family
ID=90534801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410245375.8A Active CN117857060B (zh) | 2024-03-05 | 2024-03-05 | 一种二维码离线核验方法、系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117857060B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102932148A (zh) * | 2012-10-25 | 2013-02-13 | 成都市易恒信科技有限公司 | 基于cpk认证的安全二维码防伪系统与方法 |
CN107180351A (zh) * | 2017-04-13 | 2017-09-19 | 上海动联信息技术股份有限公司 | 一种脱机动态二维码生成方法、支付方法及设备 |
CN107818463A (zh) * | 2017-09-25 | 2018-03-20 | 九派天下支付有限公司 | 一种基于totp算法的离线支付方法及系统 |
CN108650082A (zh) * | 2018-05-08 | 2018-10-12 | 腾讯科技(深圳)有限公司 | 待验证信息的加密和验证方法、相关装置及存储介质 |
CN108712383A (zh) * | 2018-04-17 | 2018-10-26 | 新大陆(福建)公共服务有限公司 | 一种离线安全二维码的生成方法及计算机可读存储介质 |
WO2018198036A1 (en) * | 2017-04-24 | 2018-11-01 | Just Log Me S.R.L. | Authentication system and identity management without password by single-use qr code and related method |
CN108737394A (zh) * | 2018-05-08 | 2018-11-02 | 腾讯科技(深圳)有限公司 | 离线验证系统、扫码设备和服务器 |
US20210367753A1 (en) * | 2018-11-02 | 2021-11-25 | Shenyang Institute Of Automation, Chinese Academy Of Sciences | Trusted measurement and control network authentication method based on double cryptographic values and chaotic encryption |
CN115834077A (zh) * | 2022-11-11 | 2023-03-21 | 北京深盾科技股份有限公司 | 控制方法、控制系统、电子设备及存储介质 |
CN116055178A (zh) * | 2023-01-12 | 2023-05-02 | 中京天裕科技(杭州)有限公司 | 一种支持离线环境的otp认证方法 |
-
2024
- 2024-03-05 CN CN202410245375.8A patent/CN117857060B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102932148A (zh) * | 2012-10-25 | 2013-02-13 | 成都市易恒信科技有限公司 | 基于cpk认证的安全二维码防伪系统与方法 |
CN107180351A (zh) * | 2017-04-13 | 2017-09-19 | 上海动联信息技术股份有限公司 | 一种脱机动态二维码生成方法、支付方法及设备 |
WO2018198036A1 (en) * | 2017-04-24 | 2018-11-01 | Just Log Me S.R.L. | Authentication system and identity management without password by single-use qr code and related method |
CN107818463A (zh) * | 2017-09-25 | 2018-03-20 | 九派天下支付有限公司 | 一种基于totp算法的离线支付方法及系统 |
CN108712383A (zh) * | 2018-04-17 | 2018-10-26 | 新大陆(福建)公共服务有限公司 | 一种离线安全二维码的生成方法及计算机可读存储介质 |
CN108650082A (zh) * | 2018-05-08 | 2018-10-12 | 腾讯科技(深圳)有限公司 | 待验证信息的加密和验证方法、相关装置及存储介质 |
CN108737394A (zh) * | 2018-05-08 | 2018-11-02 | 腾讯科技(深圳)有限公司 | 离线验证系统、扫码设备和服务器 |
US20210367753A1 (en) * | 2018-11-02 | 2021-11-25 | Shenyang Institute Of Automation, Chinese Academy Of Sciences | Trusted measurement and control network authentication method based on double cryptographic values and chaotic encryption |
CN115834077A (zh) * | 2022-11-11 | 2023-03-21 | 北京深盾科技股份有限公司 | 控制方法、控制系统、电子设备及存储介质 |
CN116055178A (zh) * | 2023-01-12 | 2023-05-02 | 中京天裕科技(杭州)有限公司 | 一种支持离线环境的otp认证方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117857060B (zh) | 2024-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Checkoway et al. | A systematic analysis of the Juniper Dual EC incident | |
Barker et al. | NIST special publication 800-57 | |
US7974415B2 (en) | System and method for updating keys used for public key cryptography | |
TWI440351B (zh) | 可檢驗的、對洩漏有抵抗性的加密與解密 | |
US7127067B1 (en) | Secure patch system | |
CN102916971B (zh) | 一种电子数据固化系统及方法 | |
US20070257813A1 (en) | Secure network bootstrap of devices in an automatic meter reading network | |
US20050166263A1 (en) | System and method providing disconnected authentication | |
CN111555872B (zh) | 一种通信数据处理方法、装置、计算机系统及存储介质 | |
US9762560B2 (en) | Method for generating cryptographic “one-time pads” and keys for secure network communications | |
CN110855667B (zh) | 一种区块链加密方法、装置及系统 | |
US9515989B1 (en) | Methods and apparatus for silent alarm channels using one-time passcode authentication tokens | |
CN113783683A (zh) | 基于传感器网络的云平台隐私保护可验证数据聚合方法 | |
CN113591109B (zh) | 可信执行环境与云端通信的方法及系统 | |
CN111212026A (zh) | 基于区块链的数据处理方法、装置及计算机设备 | |
Liu et al. | Data integrity audit scheme based on quad Merkle tree and blockchain | |
CN111490874B (zh) | 一种配网安全防护方法、系统、装置及存储介质 | |
CN117857060B (zh) | 一种二维码离线核验方法、系统及存储介质 | |
CN114553566B (zh) | 数据加密方法、装置、设备及存储介质 | |
CN116155483A (zh) | 区块链签名机安全设计方法及签名机 | |
CN116781265A (zh) | 一种数据加密的方法和装置 | |
Shanmukesh et al. | Secure DLMS/COSEM communication for Next Generation Advanced Metering Infrastructure | |
CN114553557A (zh) | 密钥调用方法、装置、计算机设备和存储介质 | |
KR101290818B1 (ko) | 보안 패치 시스템 | |
CN116827821B (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 |