CN115174261A - 基于分阶划层与密中密分发的混合加密解密系统与方法 - Google Patents

基于分阶划层与密中密分发的混合加密解密系统与方法 Download PDF

Info

Publication number
CN115174261A
CN115174261A CN202210921081.3A CN202210921081A CN115174261A CN 115174261 A CN115174261 A CN 115174261A CN 202210921081 A CN202210921081 A CN 202210921081A CN 115174261 A CN115174261 A CN 115174261A
Authority
CN
China
Prior art keywords
encryption
decryption
key
data
hybrid
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
CN202210921081.3A
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to CN202210921081.3A priority Critical patent/CN115174261A/zh
Publication of CN115174261A publication Critical patent/CN115174261A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network 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
    • H04L63/0478Network 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 applying multiple layers of encryption, e.g. nested tunnels or encrypting the content with a first key and then with at least a second key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network 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
    • H04L63/0485Networking architectures for enhanced packet encryption processing, e.g. offloading of IPsec packet processing or efficient security association look-up
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • H04L9/16Cryptographic 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

基于分阶划层与密中密分发的混合加密解密系统与方法
技术领域
本发明涉及密码学信息加密技术领域,尤其涉及一种运用混合加密解密与分布式密中密双层分发的系统、设备与方法。
背景技术
目前,基于互联网的信息传输已经渗透到社会的方方面面,从数字金融到信息化国防,许多具有高安全性与保密性要求的行业也愈发依赖互联网作为信息获取、存储和交换的媒介,保障互联网信息的安全性已成为组织、企业乃至国家互联网战略的关键环节。然而,互联网信息安全的发展如今受到多方不同因素的制约。一方面,现代计算机计算能力的飞速增长使得传统密码学保护方法的安全性越发受到挑战;另一方面,尽管量子计算机与量子加密技术对信息安全的保护具有不错的前景,暂不论从技术开发到成熟所需要的时间,在产业中实现量子化保护过渡的过程往往也不是一蹴而就的。
本着减少“菜单成本”的原则,基于现有技术改进以实现更高安全性的保护成为了近年来密码学研究的一个重要的方向。其中,公钥密码学的应用使得信息传递双方通过非对称的密钥实现对信息的加密解密,私钥不在互联网上传输,成为互联网安全划时代的进步。进一步地,为了减少加解密的时间消耗,运用公钥密码学加密对称式密码学的会话密钥,再利用对称式密码学的会话密钥对消息加密,实现了安全性与速度的双平衡。此外,为了克服实际只有一次保护的上述方法,多次加密的方法逐渐也被推广与应用,典型的应用即为3DES、嵌套加盐哈希,希望通过使用不同密钥多次加密实现基于排列组合复杂度的提升,进而提升信息的安全性。
但是,以上三种公知的改进方法已成熟多年,策略也已被业界研究的比较透彻,其缺陷也愈发得到暴露和展现:公钥密码学最大的问题在于公钥的公开,在许多情况下公私钥对的必然性会带来密文的安全性不足的问题,同时,在拥有密文和公钥的情况下,理论上存在着循环运算即可获得明文的可能性;公钥密码学加密对称式密码学的会话密钥的方法也并非完美,在一定的情况下,密码的破译者可以跳过公钥密码学加密的步骤,直接对运用于对称式加密的消息进行破解,此时,数据的安全性直接取决于对称式加密办法的安全性,在暴力破解下,安全性的提升与公钥密码学的参与几乎无关;而多次加密的方法借着以空间复杂度和时间复杂度换取因排列组合带来更高安全性的思路虽然可取,但传统的利用同一算法、以固定的次数进行多次加密的方法存在规则固定、排列组合过于简单、易于判定解密结果、时间复杂度消耗带来安全性提升的幅度不足等问题。
由于密码学要求的安全性主要取决于破解运算的复杂性,诚然,在一般领域中,现有技术的复杂程度几乎能够胜任绝大多数信息安全的场景,通过增加密钥位长也可以进一步地增加复杂程度;但在某些涉及关键性信息安全的领域,为了安全的目的盲目增加密钥位长则会牺牲巨大的加解密时间复杂度(经典的实验证明:公钥密码学应用中,增加1倍密钥位长,加解密运行时间会增加8倍),尤其是在运用于海量信息处理之时,低速度带来的低吞吐量是显然与未来互联网发展相违背的;另外,我国密码学发展的相对滞后使得我国未能充分参与相关国际标准的制定,从而使我国的信息安全进一步受到挑战。
因此,我们仍然需要一种更先进、更复杂、更快捷、同时更安全的技术,为未来更长时效、更高规格的信息安全保驾护航;更需要一套更加自主、完善的解决方案来为我国互联网+产业和国家战略事业的发展保驾护航。研发出能够以更低的加解密时间复杂度带来更高安全性的密码学技术,并能够自主建立标准,运用于相关产业以保障信息安全,是本领域技术人员亟待解决的问题。
以上信息作为背景信息只是为了辅助理解本发明的产生背景,并没有确定或承认任意上述内容是否可用作相对于本发明的现有技术。
发明内容
为了实现以更低时间复杂度带来更高安全性的密码学技术,并建立相关的应用标准,本发明利用排列组合与分组分发思路本身带来破解复杂性的提升,运用多种密码编码学和网络传输手段,提供了一套能够实现基于分阶划层与密中密分发的混合加密解密系统和方法的解决方案。
具体的发明内容包括:一种混合加密方法,一种混合解密方法,一种针对混合加解密的不定长头部数据实现信息管理与签名校验方法,一种针对混合加解密密钥和证书的存储和管理方法,一种针对混合加解密的加密手段的管理方法,一种针对混合加密解密配合分布式密中密双层分发的运作、管理和保护的方法,一种实现上述功能的系统、设备、存储介质,以及一种制式哈希和替换表生成方法。
需要说明的是,为区别于其他混合加解密方法,本发明所涉的混合加密方法、混合解密方法在以下将称为H-(Hybrid Minus)加密方法,与H-(Hybrid Minus)解密方法,取混合(Hybird)与时间复杂度的减少(Minus)之意。
在进一步阐述发明内容之前,首先对发明内容中所涉的关键名词进行如下界定和解释:
阶(step):多次加密中,对消息的一次加密定义为进行了一阶的加密(encrypteda step)。多次加密,即需要依次对各阶(step)逐阶加密(encrypt step by step),每一阶完成加密后,对消息的全部明文或是对上一阶加密完成后的全部密文进行了一次完整的加密。在多次解密中,阶(step)的定义类同。
块(block):分组加密中,对消息某一部分提取并实施加密操作,该部分称之为块(block)。通常,一次完整的加密需要对若干甚至许多块进行分组加密,得到最终的密文。在多次解密中,块(block)的定义类同。
层(stage):多次加密中,对消息某一阶(step)的加密若需要分块,对每一块(block)消息中使用不同加密算法、不同密钥或不同加密手段进行加密操作的一个部分定义为一层(a stage)。对消息某一阶(step)的加密一般分为若干或许多块(block),分块内由不同的层(stage)组成,不同块(block)间由相同的层划分组成,一阶的加密由不同层的重复划分为不同的块加密最终实现。在多次解密中,层(stage)的定义类同。
一次加密的吞吐量长度:进行完整的某一加密操作所能够处理的最大数据量,例如AES-128的加密吞吐量长度为128bits。
一次解密的吞吐量长度:进行完整的某一解密操作所能够处理的最大数据量,例如AES-128的解密吞吐量长度为128bits。
加解密时间复杂度:用于衡量加密、解密过程消耗的时间,以计算机通常的计量方法为例,加解密时间复杂度可以使用基本语句执行次数来衡量,通常用于比较相对时间复杂度。为了衡量绝对时间复杂度以体现在应用中不同加解密操作所消耗的时间差异,我们定义使用AES-128加密、解密特定长度二进制数据所消耗时间为单位时间,下文中涉及的绝对时间复杂度将以单位时间来衡量。
破解复杂度:使用一般方法,得到加密所用的全部密钥,并利用密文破解出明文所需要的运算量,由于破解复杂度通常难以精确测定,且具有不确定性,在下文中我们仅以相对量对破解复杂度进行估计。
体码规则:为精准实现对不同加密方法或散列函数算法方法的定位,为不同加密方法或散列函数算法方法定义一套映射方案,使用对应的编码即可唯一确定使用的加密方法或散列函数算法。
行:一套包含所有可能选择的备选加密方法对应的密钥或证书的信息,多行的情况下,多行拥有多套包含所有可能选择的备选加密方法对应的密钥或证书的信息。
列:包含一条或者多条包含以相应体码规则对应的加密方法对应的密钥或证书的信息。
组:当列中包含一条密钥或证书的信息时,定义该列包含一组;类似,当列中包含k条密钥或证书的信息时,定义该列包含k组。
封装:即数据封装,为使得数据便于操作和识别,即将数据外加一个外壳的过程,通常以在数据头部写入相应的信息为数据封装形式,封装形式与内部编码无关。
解封:即数据解封,为获取脱去封装后的原始数据,将数据脱去封装外壳的过程,通常以在数据头部读取相应的信息、还原数据的原始内容为数据解封形式,解封形式与内部编码无关。
不定长头部数据:一种封装格式,由其可拓展性和长度的不定性得名,下文中一般指本发明中用于封装H-加密数据的基本格式,在加密数据之前附加一部分用于识别和管理的数据,即不定长头部数据。
替换表:用于替换被替换内容的对照表,查找替换表,可以根据被替换内容查找到对应的替换内容,亦可根据替换内容唯一的查找到被替换内容。
流式传输:通过网络进行顺序、实时的进行数据多次的部分传输,最终传输完成全部数据,下文中一般指由于待传输内容过长,将待传输内容进行分块后,多次、顺序地部分传输,实际运用中也可用于实时的数据传输。
密钥:指用来完成加密、解密等密码学操作所使用的秘密信息,在对称式密码学中指对称式密钥,在非对称的公钥密码学中包含公钥、私钥。
证书:证书通常在互联网通讯中标志身份认证的数字证书,有公钥证书、私钥证书之区分,下文中一般指包含有公钥或私钥的数字证书,不同的是,除了用于身份认证外,H-加解密算法通常利用证书中的公钥、私钥实现某一阶、层的加密、解密操作。
混合加解密密钥和证书的存储和管理方法:用于存储混合加解密密钥和证书的数据结构与管理方法,下文中一般指本发明第四方面内容,提供了一种适配H-混合加解密密钥和证书以及相关必要数据的数据结构,数据结构提供了相关操作和方法,用于管理、更新、存储相关数据,以及提供了接口供H-加解密所调用。
密钥和证书的数据库:用于保存H-加解密可能使用到的现有密钥和用于认证或加密的证书的数据库,下文中一般指以文件形式存储在本地、不进行传输、保存有H-加解密可能使用到的现有密钥和用于认证或加密的证书的文件,可以对该数据库进行导入,成为数据结构,以供加密、解密使用。
场景和用途标志:区分加密和传输场景和用途的标志,下文中一般指对可能拥有明文并加密、发送和接收并可能能够解密的主体数量进行区分的标志,主要分为三种模式:P2P、P2N以及N2P,不同模式拥有不同的可能加密、发送的主体数量以及不同能够解密的主体数量,在对应H-加密方法上,不同模式具有不同方法适用性。
P2P模式:加密发送方和解密接受方均只有一方的模式(Person to Person),适用于只有一方拥有待加密数据、只有一方需要接收数据的一对一场景,支持所有的对称式加密方法和非对称加密方法,发送方和接收方均需验证对方身份,支持数字签名。
P2N模式:加密发送方只有一方而解密接受方具有多方的模式(Person toNumbers),适用于只有一方需要向多方发送数据的一对多场景,支持所有的对称式加密方法和部分非对称加密方法,接收方均需验证发送方身份,支持数字签名。
N2P模式:加密发送方具有多方而解密接受方只有一方的模式(Numbers toPerson),适用于有多方需要向一方发送数据的多对一场景,仅支持所有的对称式加密方法,收发双方均无需验证对方身份,不支持数字签名。
机器码:以可执行程序运行的机器为标志的代码,依据硬件生成,因机而异,下文中一般指密钥和证书的数据库中,用于标志执行加密、解密机器而生成的随机码。
上一次修改时颁发的唯一编码:以上一次内容修改为标志的代码,完全随机生成,因修改而异,下文中一般指密钥和证书的数据库中,用于标志所使用的个人密钥库、接口公钥、完整公钥的旧版本,为密钥库更新匹配其旧版本而生成的随机码。
最新修改后的唯一编码:以最新内容修改为标志的代码,完全随机生成,因修改而异,下文中一般指密钥和证书的数据库中,用于标志所使用的个人密钥库、接口公钥、完整公钥来源而生成的随机码。
个人密钥库:一种本地保存的分布式的数据库,尤其存储由本用户生成或设定的全部的密钥和全部的证书,下文中一般指本发明第四方面中标志密钥和证书的数据库的数据结构,以及数据结构写入本地文件后的文件内容。
接口密钥组:一组用于加密其他密钥和证书的密钥和证书组,下文中一般指在密中密双层分发中,用于第二次分发加密所用的接口公钥、接口私钥所对应的接口密钥组。
(用于传输的)接口公钥:下文中一般指在密中密双层分发中,第一次分发的公钥组(尤其是证书),亦是用于第二次分发加密所用的接口公钥。
(用于传输的)完整公钥:下文中一般指在密中密双层分发中,第二次分发的公钥组、对称式(不仅仅包含非对称的公钥,同时包含对称式密钥)密钥。
合规化检验:下文中一般指数据结构中,一种校验数据结构是否拥有完整进行相关操作所必要数据的操作,通常是一个校验函数。
混合加解密的加密手段的管理方法:管理、指导H-加解密的方法、使用的密钥、使用的替换表等实现加密解密与封装的数据结构与方法,下文中一般指本发明第五方面内容,提供了一种包含H-混合加解密方法、运用的密钥和证书、运用的替换表以及相关必要数据的数据结构,数据结构提供了相关操作和方法,用于管理、指导H-加解密和运用不定长头部数据实现封装,提供了输出接口为不定长头部数据读写、识别H-模块内容,以及提供了接口供H-加解密、运用不定长头部数据封装所调用。
允许解密的时间限制:允许进行解密操作的时间限制,下文中一般指不定长头部数据中H-模块设置的限制进行H-解密操作的时间,在限制的时间内,使用正确的解密方法和相关密钥和证书可以解密出明文,在限制的时间外,即使拥有正确的解密方法和相关密钥和证书也不允许进行解密。
允许解密的机器限制:允许进行解密操作的硬件机器限制,下文中一般指不定长头部数据中H-模块设置的允许进行H-解密操作的机器码,在所有允许的机器码内,使用正确的解密方法和相关密钥和证书可以解密出明文,在所有允许的机器码外,即使拥有正确的解密方法和相关密钥和证书也不允许进行解密。
混合加密解密配合分布式密中密双层分发的运作、管理和保护的方法:执行、管理、保护混合加密解密以及分布式密中密双层分发的方法,下文中一般指本发明第六方面内容,提供了一套包含两次进行密钥分发、统筹加密和封装、统筹解密和解封等与H-加密解密和封装相关的方法,以及针对特殊场景对需要进行的操作作出了改进和优化,包含调用第一至第五方面数据结构与操作的接口,完整的实现H-相关的全部操作。
配置文件:下文中一般指本发明第六方面中,对接口公钥、完整公钥、完整公钥的更新在不定长头部数据标志用途的内容中写入的内容,另也可指存储包含加密所用信息的文件信息,即对个人密钥库、接口公钥、完整公钥等进行本地文件写入后的文件。
本用户的接口私钥:下文中一般指与本用户接口公钥相对应的私钥组。
接收方的接口公钥:下文中一般指进行混合加密和分发中,待接收用户的接口公钥。
经商议但不使用网络传输的对称式密钥:下文中一般指使用P2N模式进行第二次完整公钥的密文分发时,由于接收方具有多个,选择的一串经商议但不使用网络传输的对称式密钥,用于替代P2P模式中的接收方的接口公钥参与对第二次完整公钥的加密。
网络传输:使用网络进行文件、数据、消息的传输,具有收发双方不需要通过硬件交换信息、可能被第三方劫持而导致信息泄露。
物理传输:使用非网络的方式进行文件、数据、消息的传输,具有收发双方需要通过硬件交换信息、交换信息的过程不需要网络的参与、不会产生第三方劫持而导致信息泄露的情况。
母密钥或证书:加密、解密过程中使用的基本的密钥或证书(中的密钥),下文中一般指(任何)对称式加密(以及对应解密)方法所使用的密钥、利用接收方公钥加密的非对称加密(以及对应解密)方法所使用的密钥、利用发送方私钥加密的非对称加密(以及对应解密)方法所使用的密钥、利用接收方公钥加密对称密钥进行加密(以及对应解密)方法中的非对称密钥、利用密钥交换进行对称式加密(以及对应解密)方法中的私钥。
母密钥或证书的使用方法:加密、解密过程中利用母密钥或证书进行加密、解密操作所使用的加密方法,下文中一般指在网络上传输密钥的对称式加密(以及对应解密)方法、不使用网络传输密钥的对称式加密(以及对应解密)方法、利用接收方公钥加密的非对称加密(以及对应解密)方法、利用发送方私钥加密的非对称加密(以及对应解密)方法、利用接收方公钥加密对称密钥加密(以及对应解密)方法、利用密钥交换进行对称式加密(以及对应解密)方法。
子密钥或证书:加密、解密过程中被基本的密钥或证书使用的密钥或证书(中的密钥),下文中一般指利用接收方公钥加密对称密钥进行加密(以及对应解密)方法、利用密钥交换进行对称式加密(以及对应解密)方法中的公钥。
完整公钥(非接口公钥)的更新:下文中一般指在不变更接口公钥时(一旦变更接口公钥,对应的所有非接口密钥均作废),可以对完整公钥(非接口公钥)中的部分密钥进行更新,使用新的密钥(非对称密钥和对称式密钥)替换旧的密钥,并可创建新密钥,并将经过更新的非对称公钥和对称式密钥以及(经过强制更新的)替换表重新分发的过程。
为了实现上述目的,本发明所采用的技术方案是:
第一方面,本发明实施例提供一种混合加密方法(H-加密方法),以实现利用现存的多种密码学手段,通过分阶化层、排列组合使加解密时间复杂度尽可能降低的同时带来以几何增长的高破解复杂度,将明文加密为密文,所述的方法包括:
选定一个阶数m,为每一阶i选定一个层数ni(1≤i≤m且i∈Z),可使用向量的形式记录如下:
n1 n2 … nm-1 nm
为每一阶的每一层选定一种加密方法和密钥;
进入循环;
从第一阶i=1开始,若该阶只有一层,则块大小等于层大小(加密吞吐量),明文长度除以块大小得到块划分的数量,若非整除,则向上取整,对非尾部的完整块,运用该层选定的加密方法对明文全文进行加密,若分块时不能整除,则当直到遇见第一个需要填充的层时,记录进行填充的层数(明文记录时为1),记录填充的体码规则或长度,然后对该层内容进行填充并运用该层选定的加密方法对该层一次加密吞吐量长度的内容进行加密,然后结束本阶的加密,并进行i自增;若该阶有多层,则块大小等于该阶所有层大小(加密吞吐量)之和,明文长度除以块大小得到块划分的数量,若非整除,则向上取整,对非尾部的完整块,在块内按照层的划分,依次对每一层运用该层选定的加密方法对该层一次加密吞吐量长度的内容进行加密,完成某一块内的加密,依次使用同样的方法对下一非尾部的完整块进行加密处理,若存在余留明文长度小于块吞吐量长度时,即存在需要填充加密的情况时,在块内按照层的划分,先依次对每一不需填充的层运用该层选定的加密方法对该层一次加密吞吐量长度的内容进行加密,若分块时不能整除,则当直到遇见第一个需要填充的层时,记录进行填充的层数,记录填充的体码规则或长度,然后对该层内容进行填充并运用该层选定的加密方法对该层一次加密吞吐量长度的内容进行加密,然后结束本阶的加密,即使该分块的该层后还有其他层,跳过,并进行i自增;
当阶数i≥2时,以上一阶加密后的密文作为本阶待加密的明文,重复与i=1时类同的加密工作,并进行i自增;
循环,直至i=m+1,跳出循环,加密完毕,i=m阶加密后的密文即为最终的密文。
在应用于不同场景和不同用途时,针对待传输消息每阶每层所选定加密方法具有一定的限制:
当应用于P2N场景时,由于接收方具有多方,而发送方仅有一方,对待传输消息的任意阶、任意层使用的加密方法被限制在仅能够使用任意对称式加密方法,包含在网络上传输密钥的对称式加密方法,以及不使用网络传输密钥的对称式加密方法;不允许对待传输消息的任意阶、任意层使用任意非对称加密方法。
当应用于N2P场景时,由于接收方仅有一方,而发送方可以由多方,对待传输消息的任意阶、任意层使用的加密方法被限制在仅能够使用任意对称式加密方法,利用接收方公钥加密的非对称加密方法,以及利用接收方公钥加密对称密钥的加密方法;不允许对待传输消息的任意阶、任意层使用利用发送方私钥加密的非对称加密方法以及利用密钥交换进行对称式加密方法。
当应用于P2P场景时,由于接收方仅有一方,而发送方也仅有一方,对待传输消息的任意阶、任意层使用的加密方法被允许使用任意对称式加密方法与任意非对称加密方法。
以表格形式表现如下:
Figure BDA0003777632010000061
第二方面,本发明实施例提供一种混合解密方法(H-解密方法),以实现对上述第一方面所述加密方法所加密的密文解密为明文,所述的方法包括:
获取所选定的阶数m,以及每一阶i选定的层数ni(1≤i≤m且i∈Z),可使用向量的形式记录如下:
n1 n2 … nm-1 nm
(获取途径来源于本发明下述第三方面和第五方面中“针对混合加解密的不定长头部数据实现信息管理与签名校验方法”以及“针对混合加解密的加密手段的管理方法”,将在下文介绍);
获取每一阶的每一层所选定的加密方法和密钥,
(获取途径来源于本发明下述第三方面、第四方面和第五方面的“针对混合加解密的不定长头部数据实现信息管理与签名校验方法”、“针对混合加解密密钥和证书的存储和管理方法”、以及“针对混合加解密的加密手段的管理方法”,将在下文介绍);
进入循环;
从最外阶i=m开始,若该阶只有一层,则块大小等于层大小(解密吞吐量),密文长度除以块大小得到块划分的数量,在只有一层的情况下,块数一定是整数,运用该层选定的解密方法对密文全文进行解密,直到遇见最后一个分块时,获取已记录的进行填充的层数(明文记录时为1),获取已记录的填充的体码规则或长度,运用该层选定的解密方法对该层一次解密吞吐量长度的内容进行解密,对解密完成后的内容删除尾部填充的长度,然后结束本阶的解密,并进行i自减;若该阶有多层,则块大小等于该阶所有层大小(解密吞吐量)之和,密文长度除以块大小得到块划分的数量,若非整除,则向上取整,对非尾部的完整块,在块内按照层的划分,依次对每一层运用该层选定的解密方法对该层一次解密吞吐量长度的内容进行解密,完成某一块内的解密,依次使用同样的方法对下一非尾部的完整块进行解密处理,直到遇见最后一个分块时,获取已记录的进行填充的层数,获取已记录的填充的体码规则或长度,若已记录的填充长度为0,则按照同样的方法对尾部块进行解密处理,否则,在块内按照层的划分,先依次对每一不需填充的层运用该层选定的解密方法对该层一次解密吞吐量长度的内容进行解密,直到遇见已记录的进行填充的层时,运用该层选定的解密方法对该层一次解密吞吐量长度的内容进行解密,对解密完成后的内容删除尾部填充的长度,然后结束本阶的解密,并进行i自减;
当阶数i<m时,以上一阶加密后的明文作为本阶待解密的密文,重复与i=m时类同的解密工作,并进行i自减;
循环,直至i=0,跳出循环,解密完毕,i=1阶解密后的明文即为最终的明文。
第三方面,本发明实施例提供一种不定长头部数据的封装格式,尤其是一种配合上述第一方面、第二方面混合加密方法(H-加密方法)以及混合解密方法(H-解密方法)使用的针对混合加解密的不定长头部数据实现信息管理与签名校验方法,配合下述第四方面、第五方面、第六方面对H-密钥证书、加密方式、密钥分发的相关方法,使用不定长头部数据实现信息封装的封装格式;同时实现加密方法识别、用途方法识别、明文哈希校验、密钥哈希校验、加密方法管理以及数字签名认证等功能,所述的方法包括:
一种封装格式,区别于其他文件格式的区分性头部信息,本发明第三方面所涉的不定长头部数据具有区分性的类文件格式的特征,通常用于为各类密文封装、含密钥和证书的配置信息封装等;
一种封装信息的方法,根据需要封装的信息与加密所涉及的方法,生成相应的不定长头部数据,并封装信息;
一种解封信息的方法,识别并检验出信息所携带的不定长头部数据,根据不定长头部数据对不定长头部数据的数据域进行完整性校验和数字签名校验、根据不定长头部数据对封装的信息进行完整性校验、根据不定长头部数据生成相应的加密所涉及的方法,校验和生成通过,解封信息;
一个可供H-加密、解密和相关封装程序调用的接口,用于配合H-加解密和封装实现与不定长头部数据相关操作的全部功能;
一个调用其他相关方面方法与功能获取信息、处理信息、传递信息的接口,用于实现与不定长头部数据相关操作的全部功能。
进一步,针对不定长头部数据的封装格式,所使用的方法包括:
建立不定长头部数据的三个区域,依次为:内容域、校验域、分割域。
区分不定长头部数据的两种形式:可视化形(长形)、简形(短形)。
不定长头部数据的内容域和校验域中,不同信息以模块的形式存在,模块内具有三类区域,依次为:标准说明符域、体码规则域、模块信息域。
内容域依次记录如下模块,必要的模块有:
识别使用本发明第三方面的不定长头部信息的标识模块;
识别使用本发明第三方面的不行长头部信息的版本号模块;
所封装信息使用的加密情况的说明模块,通常是一套可选的各类加密类型、H-混合加密类型或明文的标志;
所封装信息的类型说明模块,通常是一套可选的配置文件、文本信息、二进制信息、文件信息、公钥证书、私钥证书等的标志;
所采用加密算法的方法说明模块,通常是一套包含各类现有的加密方法的标志和对应体码规则,选择H-时此模块缺省或不生效;
所采用填充的方法说明模块,通常是一套填充类型和对应的体码规则,选择H-时此模块缺省或不生效;
所封装信息内容的哈希管理模块,通常是一套包含所封装信息内容的密文形式的哈希的标志,所选用散列函数的体码规则,对所封装信息内容的密文作哈希的哈希值;
所采用加密方法的哈希管理模块等,通常是一套包含所采用密钥、所采用证书或H-模块内容的哈希的标志,所选用散列函数的体码规则,以及对所采用密钥、所采用证书或H-模块内容作哈希的哈希值;
可选的模块有:
H-加密手段管理内容模块,通常是一套包含H-加密手段管理内容的次级封装内容;
非H-加密手段管理模块,通常是一套包含配合本发明下述第四方面针对混合加解密密钥和证书的存储和管理方法,进行不传递证书的非H-加密隐蔽分发时,所使用数据结构的最新修改后的唯一编码、以替换表形式记录的所使用母密钥或证书的行列、组、母密钥或证书使用方法、子密钥或证书的行列、组;
备注内容模块,通常是包含可自定义备注信息的内容,流式加密中可能另外用于长度对齐,使用临时对称式密钥时可能用于存储加密后的临时密钥;
流式传输管理模块,通常是一套包含流状态,上一次流的流唯一编码以及本次流的流唯一编码。
需要说明的是,当选择部分可选模块时,数据域中部分必要模块可以缺省,具体情况详见下表:
Figure BDA0003777632010000081
因此,上述必要模块仅是针对一般情况下完整的写入所必要的模块,在特殊情况和特殊优化下,部分模块可能不需要写入,此时需要写入的模块应以特殊情况和优化下需要的为准。
校验域仅包含一个对内容域所有内容作哈希的哈希管理模块,包含内容校验、数字签名等功能,实现哈希管理以及数字签名校验的完整功能;当选用数字签名校验时,该模块内保存经过用于签名的私钥对哈希值加密后的数据。
分割域仅记录用于结束整个不定长头部数据、分割不定长头部与下文有效信息的模块。
进一步,按照模块对不定长头部数据的定义,与不定长头部数据相关的操作包括:
一种封装信息的方法,包括:
根据需要封装的信息与加密所涉及的方法,选择所需要使用的内容域中的模块,并完成对模块中数据的处理以及写入准备;
在文件头部,计算所封装密文和加密方法(密钥、证书或H-模块内容)的哈希值,依次写入内容域中需要写入的模块,即不定长头部信息的标识模块、版本号模块、加密情况的说明模块、类型说明模块、加密算法的方法说明模块、填充的方法说明模块、所封装信息内容的哈希管理模块、所采用加密方法的哈希管理模块;按照选择,可选地写入可选的H-加密手段管理内容模块、非H-加密手段管理模块、备注内容模块、流式传输管理模块等;至此完成内容域的写入;
对内容域内容以相应的方法作哈希,可选择地对哈希进行数字签名,写入校验域;
写入分割域的内容;
写入所有的区域,完成对数据的封装。
一种解封信息的方法,包括:
识别并检验出信息所携带的不定长头部数据,在文件头部,依次读取内容域中的模块,即不定长头部信息的标识模块、版本号模块、加密情况的说明模块、类型说明模块、加密算法的方法说明模块、填充的方法说明模块、所封装信息内容的哈希管理模块、所采用加密方法的哈希管理模块;按照现存的可选模块,读取可能存在的H-加密手段管理内容模块、非H-加密手段管理模块、备注内容模块、流式传输管理模块等;至此完成内容域的读取;
读取校验域中进行散列变换和可选的数字签名的方法,读取其中的哈希或经数字签名后的哈希,如选择了数字签名则需要进行签名验证和解密,得到内容域的哈希明文;
进行哈希校验工作,根据内容域的哈希明文对不定长头部数据的内容域进行完整性校验、根据不定长头部数据对封装的信息进行完整性校验、根据不定长头部数据对封装的信息使用的加密方法(密钥、证书或H-模块内容)进行完整性校验;
进行还原加密方法的工作,根据不定长头部数据中关于加密方法的信息,导出并生成相应的加密所涉及的方法(需要依托本发明其他方面完成,如依托本发明第五方面关于混合加密的加密手段的管理方法);
校验和生成通过,完成对数据的解封。
应当说明的是,本发明第三方面所涉的不定长头部数据中所涉的数据和操作,具有可拓展性的特点,表现为:内容域可根据实际使用以及科学技术的发展需要增删相应模块、校验域亦可根据实际使用需要以及科学技术的发展需要增删相应的功能,可根据实际使用以及科学技术的发展需要增删相应操作,同时理论无存储形式的限制、无存储长度的限制,具有可拓展性。同时,本发明第三方面所涉的使用的针对混合加解密的不定长头部数据实现信息管理与签名校验方法中所涉的相关数据和操作仅为部分必要数据和操作,本领域的普通技术人员在无需创造性劳动的前提下,针对本发明第三方面的方法的任何增删等改动,都属于本发明的保护范围。
第四方面,本发明实施例提供一种混合加解密密钥和证书的存储和管理方法,尤其是一种配合上述第一方面、第二方面混合加密方法(H-加密方法)以及混合解密方法(H-解密方法),配合上述第三方面不定长头部数据的数字签名功能等,配合下述第五方面、第六方面有关于混合加解密的加密手段的管理方法与分发的相关方法,针对混合加解密密钥和证书的存储和管理方法,所述的方法包括:
一个密钥和证书的数据库的数据结构,本发明第四方面所涉的密钥和证书的存储和管理方法对应的数据结构具有数据库的特征,通常用于存储本用户的密钥和证书的数据、存储其他用户以配置文件形式传输的需要本地存储的密钥和证书的数据、存储有关混合加解密的加密手段的管理方法等;
一个与密钥和证书的数据库的数据结构相关的管理方法,能够初始化、生成、修改、校验数据结构中的数据,能将数据结构中的数据进行本地文件的写入,保存成磁盘文件形式,并能够读取磁盘文件中写入的数据结构,重新生成数据结构;
一个可供H-加密、解密和相关封装程序调用的接口,用于配合H-加解密实现混合加解密密钥和证书的存储和管理方法的全部功能;
一个调用其他相关方面方法与功能获取信息、处理信息、传递信息的接口,用于实现混合加解密密钥和证书的存储和管理方法的全部功能。
进一步,针对混合加解密密钥和证书的存储,完整的数据结构需要包含下列内容:
按照行、列存储的密钥或证书的存储情况,通常以bool形式的true表示该行、列存储有密钥或证书;
按照行、列存储的密钥或证书的最新一次修改情况,通常以bool形式的true表示该行、列的密钥或证书是最新一次修改的;
按照行、列、组存储对应的密钥或证书;
用于混合加解密行、列中密钥或证书内容的替换表,通常是随机的一套覆盖全部已存密钥或证书的替换表;
用于混合加解密组号的替换表,通常是随机的一套包含具有预设所有可能组号的替换表;
用于混合加解密密钥使用方法的替换表,通常是随机的一套包含不同用途下所有可能密钥使用方法的替换表;
用于混合加解密阶、层设定的不同可能组合的替换表,通常是随机的一套包含支持全部组合的替换表;
用于混合加解密场景和用途标志的替换表,通常是随机的一套可选P2P、P2N、N2P的替换表;
用于混合加解密的填充情况替换表,通常是随机的一套包含所有可能填充的阶、层位置和填充长度的替换表;
用于混合加解密涉及时间的数字替换表,通常是随机的一套包含年时间、月时间和每一位数字的替换表;
标志本用户私有的密钥证书或经传输获取的其他用户的密钥证书的标志;
标志数据结构完整性的标志,通常是一套可选错误、本用户数据、其他用户接口公钥、其他用户完整公钥等的标志;
版本号、创建日期、最后修改日期、有效期、自初创建以来的修改次数;
生成所存储密钥和证书的机器的机器码;
上一次修改时颁发的唯一编码;
所使用密钥库的最新修改后的唯一编码。
进一步,按照对完整存储内容的定义,与混合加解密密钥和证书的存储和管理的数据结构相关的方法与操作包括:
存储内容的合规化检验(所有权和完整性标志的不同,检验内容不同),通常用于检查数据结构中是否具有不合法的设置和不完善的内容;
生成版本号、创建日期、最后修改日期、有效期、自初创建以来的修改次数;
获取版本号、创建日期、最后修改日期、有效期、自初创建以来的修改次数;
生成所存储密钥和证书的机器的机器码;
生成上一次修改时颁发的唯一编码、最新修改后的唯一编码;
设置标志本用户私有的密钥证书或经传输获取的其他用户的密钥证书的标志;
设置标志数据结构完整性的标志;
当标志本用户的密钥证书时,初始化该数据结构,自动生成版本号、创建日期、最后修改日期、有效期、自初创建以来的修改次数、机器码、上一次修改时的唯一编码、最新修改后的唯一编码;
当标志其他用户的密钥证书时,初始化该数据结构,允许设置生成版本号、创建日期、最后修改日期、有效期、自初创建以来的修改次数、机器码、上一次修改时颁发的唯一编码、最新修改后的唯一编码;
所有相关数据成员到相应替换表的转换,相应替换表到所有相关数据成员到转换;
生成随机的、具有特定长度的可用于对称式加密的密钥;
当标志本用户的密钥证书时,允许通过行、列、组获取按照行、列、组存储对应的密钥或证书,允许通过行、列、组修改按照行、列、组存储对应的密钥或证书,允许通过行、列、组删除按照行、列、组存储对应的密钥或证书;允许通过替换表获取按照行、列、组存储对应的密钥或证书,允许通过替换表修改按照行、列、组存储对应的密钥或证书,允许通过替换表删除按照行、列、组存储对应的密钥或证书;且存储的所有公钥密码学的非对称密钥或证书必须含有公钥、私钥;上述的修改、删除允许单次单项修改,亦允许单次多项修改;
当标志其他用户的密钥证书时,允许通过替换表获取按照行、列、组存储对应的密钥或证书,允许通过替换表修改按照行、列、组存储对应的密钥或证书,允许通过替换表删除按照行、列、组存储对应的密钥或证书;且存储的所有公钥密码学的非对称密钥或证书必须仅含有公钥;上述的修改、删除允许单次单项修改,亦允许单次多项修改;
当标志本用户的密钥证书时,每一次完成初设、修改存储的密钥或证书时,自动修改按照行、列存储的密钥或证书的存储情况、最新一次密钥或证书的修改情况、最后修改日期、有效期、自初创建以来的修改次数、上一次修改时颁发的唯一编码、最新修改后的唯一编码,自动刷新重设全部替换表;
当标志其他用户的密钥证书时,每一次完成初设、修改存储的密钥或证书时,自动修改按照行、列存储的密钥或证书的存储情况、最新一次密钥或证书的修改情况,允许且必须设置修改最后修改日期、有效期、自初创建以来的修改次数、上一次修改时颁发的唯一编码、最新修改后的唯一编码,自动刷新重设全部替换表;
当标志本用户的密钥证书时,自动生成用于混合加解密行、列中密钥或证书内容的替换表,自动生成用于混合加解密组号的替换表,自动生成密钥使用方法的替换表,自动生成阶、层设定的不同可能组合的替换表,自动生成解密场景和用途标志的替换表,自动生成填充情况替换表,自动生成涉及时间的数字替换表;
当标志其他用户的密钥证书时,允许且必须设置用于混合加解密行、列中密钥或证书内容的替换表,自动生成用于混合加解密组号的替换表,自动生成密钥使用方法的替换表,自动生成阶、层设定的不同可能组合的替换表,自动生成解密场景和用途标志的替换表,自动生成填充情况替换表,自动生成涉及时间的数字替换表;
当标志本用户的密钥证书时,每一次完成修改任何替换表时,自动检测每一替换表内替换内容是否重复并自动替换重复项,自动修改最后修改日期、有效期、自初创建以来的修改次数、上一次修改时颁发的唯一编码、最新修改后的唯一编码,将(对密钥和证书的)最新一次修改情况置为全false;每一次修改任何替换表时,该表内所有的数据必须同时被修改和重置;
当标志其他用户的密钥证书时,每一次完成修改任何替换表时,自动检测每一替换表内替换内容是否重复并自动替换重复项,允许且必须设置修改最后修改日期、有效期、自初创建以来的修改次数、上一次修改时颁发的唯一编码、最新修改后的唯一编码,将(对密钥和证书的)最新一次修改情况置为全false;每一次修改任何替换表时,该表内所有的数据必须同时被修改和重置;
当标志本用户的密钥证书时,在完成初始化操作和合规化检验后,允许对数据结构中所有内容进行本地文件的写入,用于本地保存该分布式的数据库(定义此文件为本用户的个人密钥库),包括对版本号、创建日期、最后修改日期、有效期、自初创建以来的修改次数、机器码、上一次修改时颁发的唯一编码、最新修改后的唯一编码、标志本用户私有的密钥证书或经传输获取的其他用户的密钥证书的标志(标志为本用户)、密钥或证书的存储情况、全部的密钥和全部的证书、密钥或证书内容的替换表、组号的替换表、密钥使用方法的替换表、阶、层设定的不同可能组合的替换表、场景和用途标志的替换表、填充情况替换表、涉及时间的数字替换表等数据的写入;允许本用户对写入本地文件的个人密钥库读取至数据结构,并进行合规化检验;
当标志本用户的密钥证书时,在完成初始化操作和合规化检验后,允许对数据结构中所有内容进行本地文件的写入,用于向其他用户第一次明文分发部分配置文件(定义此文件为用于传输的接口公钥),包括对版本号、创建日期、最后修改日期、有效期、自初创建以来的修改次数、机器码、上一次修改时颁发的唯一编码、最新修改后的唯一编码、标志本用户私有的密钥证书或经传输获取的其他用户的密钥证书的标志(标志为其他用户)、接口密钥或公钥证书的存储情况、接口公钥证书(所有密钥证书中特定一组的密钥证书,且导出为公钥证书)等数据的写入;允许接受到本文件的(特定的或非特定的)其他用户对写入本地文件的用于传输的接口公钥读取至数据结构,并进行合规化检验以及进行本地文件的写入;
当标志本用户的密钥证书时,在完成初始化操作和合规化检验后,允许对数据结构中所有内容进行本地文件的写入,用于向其他用户第二次密文分发部分配置文件(定义此文件为用于传输的完整公钥),包括对版本号、创建日期、最后修改日期、有效期、自初创建以来的修改次数、机器码、上一次修改时颁发的唯一编码、最新修改后的唯一编码(要求与接口公钥文件具有一致的唯一编码,即两次分发过程不允许对数据结构进行任何更改)、标志本用户私有的密钥证书或经传输获取的其他用户的密钥证书的标志(标志为其他用户)、密钥或证书的存储情况(或密钥或证书的最新一次修改情况)、全部的密钥和公钥证书(或最新一次修改的密钥或证书的)、密钥或证书内容的替换表、组号的替换表、密钥使用方法的替换表、阶、层设定的不同可能组合的替换表、场景和用途标志的替换表、填充情况替换表、涉及时间的数字替换表等数据的写入;允许接受到本文件的(特定的或非特定的)其他用户对写入本地文件的用于传输的完整公钥读取至数据结构,并进行合规化检验以及进行本地文件的写入;
当标志其他用户的密钥证书时,若需要根据新的其他用户的用于传输的完整公钥修改数据结构进而更新本地保存的旧的其他用户的用于传输的完整公钥时,若新的其他用户的用于传输的完整公钥的机器码与旧的其他用户的用于传输的完整公钥的机器码相同,新的其他用户的用于传输的完整公钥的上一次修改时颁发的唯一编码与旧的其他用户的用于传输的完整公钥的最新修改后的唯一编码相同,且其他用户的用于传输的完整公钥中所有的接口公钥没有更改,则可以使用新的其他用户的用于传输的完整公钥覆盖旧的此用户的用于传输的完整公钥,所有项目的信息均更新为新的用于传输的完整公钥中的信息。
应当说明的是,本发明第四方面所涉的混合加解密密钥和证书的存储和管理方法的数据结构和操作,具有可拓展性的特点,表现为:可根据实际使用以及科学技术的发展需要增删相应需要增删的数据和操作、可根据实际使用需要以及科学技术的发展更改相应存储数据和实现操作的形式,同时理论无存储形式的限制、无存储长度的限制,具有可拓展性。同时,本发明第四方面所涉的使用的混合加解密密钥和证书的存储和管理方法中所涉的相关需要的数据和操作仅为部分必要数据和操作,本领域的普通技术人员在无需创造性劳动的前提下,针对本发明第四方面的方法的任何增删等改动,都属于本发明的保护范围。
第五方面,本发明实施例提供一种混合加解密的加密手段的管理方法,尤其是一种配合上述第一方面、第二方面混合加密方法(H-加密方法)以及混合解密方法(H-解密方法),配合上述第三方面不定长头部数据的可选的H-模块,配合上述第四方面针对混合加解密密钥和证书的存储和管理方法,配合下述第六方面混合加密解密配合分布式密中密双层分发的运作、管理和保护的方法,针对混合加解密的加密手段的管理方法,所述的方法包括:
一种管理混合加解密加密手段的数据结构;
一种初始化、生成、修改数据结构中数据成员的方法;
用于配合上述第三方面不定长头部数据的可选的H-模块,将数据结构中的加密手段以特定的格式导出的方法,用于写入不定长头部数据的可选的H-模块;
用于配合上述第三方面不定长头部数据的可选的H-模块,对不定长头部数据的可选的H-模块中的数据以特定的格式导入的方法,生成数据结构中需要的各项加密手段;
一种合规性检验,通常用于检查数据结构中是否具有不合法的设置和不完善的内容;
用于配合上述第一方面混合加密方法(H-加密方法)和上述第四方面密钥和证书的存储和管理方法所存储的密钥和证书,指导混合加密方法进行混合加密;
用于配合上述第二方面混合解密方法(H-解密方法)和上述第四方面密钥和证书的存储和管理方法所存储的密钥和证书,指导混合解密方法进行混合解密;
一个可供H-加密、解密和相关封装程序调用的接口,用于配合H-加解密实现混合加解密的加密手段的管理的全部功能;
一个调用其他相关方面方法与功能获取信息、处理信息、传递信息的接口,用于实现混合加解密的加密手段的管理的全部功能。
进一步,针对混合加解密加密手段管理方法的数据结构,完整的数据结构需要包含:
目标用户密钥和证书的数据库的数据结构的最新修改后的唯一编码;
可选的本用户密钥和证书的数据库的数据结构的最新修改后的唯一编码;
标志H-模块与头部数据所封装信息的明文、密文形式的标志;
标志H-模块与头部数据所封装信息用途的标志,通常是一套可选密文、以固定方法加密的密文、用于传输的接口公钥、用于传输的完整公钥、用于传输的完整公钥的更新、用于保存到本地的本用户的个人密钥库的标志;
混合加解密的场景和用途标志;
混合加解密的阶、层设定;
以行、列、组形式表示的每阶、每层使用密钥和证书以及使用方法,通常是一套包含母密钥或证书的行、母密钥或证书的列、母密钥或证书的组、母密钥或证书的使用方法、子密钥或证书的行、子密钥或证书的列、子密钥或证书的组的次级数据结构;
以每阶层数和填充体码规则或长度表示的填充情况,通常是一套包含每阶填充的层位置、每阶填充的层的填充体码规则或长度的次级数据结构;
不定长头部数据中对所封装信息类型的标志;
可选的允许解密的时间限制,通常是一套包含允许解密的起始时间、允许解密的终止时间的数据结构;
可选的允许解密的机器限制,通常是一套包含一个或若干允许解密机器的机器码的数据结构;
进一步,按照对管理混合加解密加密手段完整的数据结构的定义,与混合加解密的加密手段完整的数据结构相关的操作包括:
设定所使用的目标用户密钥和证书的数据库的数据结构的最新修改后的唯一编码,所使用的可选的本用户密钥和证书的数据库的数据结构的最新修改后的唯一编码,所使用的标志H-模块与头部数据所封装信息的明文、密文形式,所使用的标志H-模块与头部数据所封装信息用途,所使用的混合加解密的场景和用途,所使用的混合加解密的阶、层,所使用的以行、列、组形式表示的每阶、每层使用密钥和证书以及使用方法,所使用的不定长头部数据中所封装信息类型,可选的允许解密的时间限制,可选的允许解密的机器限制等;
允许外部修改以每阶层数和填充体码规则或长度表示的填充情况;
将数据结构中的加密手段以特定的格式导出,用于写入不定长头部数据的可选的H-模块;
对不定长头部数据的可选的H-模块中的数据以特定的格式导入,生成数据结构中需要的各项加密手段。
进一步,针对将数据结构中的加密手段以特定的格式导出并写入不定长头部数据的可选的H-模块,写入不定长头部数据的可选的H-模块的内容需要包含:
目标用户密钥和证书的数据库的数据结构的最新修改后的唯一编码;
本用户密钥和证书的数据库的数据结构的最新修改后的唯一编码;
标志H-模块与头部数据所封装信息的明文、密文形式的标志;
标志H-模块与头部数据所封装信息用途的标志,通常是一套可选密文、以固定方法加密的密文、用于传输的接口公钥、用于传输的完整公钥、用于传输的完整公钥的更新、用于保存到本地的本用户的个人密钥库的标志;
混合加解密的场景和用途的替换表;
混合加解密的阶、层设定的替换表;
以目标用户(或本用户)的替换表形式表示的每阶、每层使用密钥和证书以及使用方法,通常是一套包含母密钥或证书的行列替换表、母密钥或证书的组替换表、母密钥或证书的使用方法替换表、子密钥或证书的行列替换表、子密钥或证书的组的替换表的组合;通常在此之后附以随机字节随机数的干扰;
以目标用户的替换表形式表示的填充情况,通常是一套包含每阶填充的层位置替换表、每阶填充的层的填充体码规则或长度替换表的组合;通常在此之后附以随机字节随机数的干扰;
以目标用户的替换表形式表示的完成H-封装的时间点;
以目标用户的替换表形式表示的允许解密的时间限制,通常是一套包含允许解密的起始时间替换表、允许解密的终止时间替换表的组合;
以目标用户的替换表形式表示的允许解密的机器限制,通常是一套包含一个或若干允许解密机器的机器码的组合;通常在此之后附以对所有机器码的制式哈希值;
以目标用户的替换表形式表示的所封装信息加密后在尾部附以随机字节随机数的长度替换表,通常以填充体码规则或长度替换表形式记录;
需要注意的是,上述需要导出和写入的内容仅是针对一般情况下完整的写入所必要的内容,在特殊情况和特殊优化下,部分内容可能不需要写入,此时需要写入的内容应以特殊情况和优化下需要的为准。
进一步,对不定长头部数据的可选的H-模块中的数据以特定的格式导入,生成数据结构中需要的各项加密手段,从不定长头部数据的可选的H-模块导入的内容需要包含与上述导出的内容相同;需要注意的是,上述需要导入的内容仅是针对一般情况下完整的导入所必要的内容,在特殊情况和特殊优化下,部分内容可能已经缺省不需要导入,此时需要导入的内容应以特殊情况和优化下需要的为准。
应当说明的是,本发明第五方面所涉的针对混合加解密的加密手段的管理方法的数据结构和写入H-模块的数据,均具有可拓展性的特点,表现为:可根据实际使用以及科学技术的发展需要增删相应需要增删的数据、可根据实际使用需要以及科学技术的发展更改相应存储数据的形式,同时理论无存储形式的限制、无存储长度的限制,具有可拓展性。同时,本发明第五方面所涉的使针对混合加解密的加密手段的管理方法中所涉的相关需要的数据仅为部分必要数据,本领域的普通技术人员在无需创造性劳动的前提下,针对本发明第五方面的方法的任何增删等改动,都属于本发明的保护范围。
第六方面,本发明实施例提供一种混合加密解密配合分布式密中密双层分发的运作、管理和保护的方法,尤其是一种配合上述第一方面、第二方面混合加密方法(H-加密方法)以及混合解密方法(H-解密方法),配合上述第三方面不定长头部数据的可选的H-模块,配合上述第四方面针对混合加解密密钥和证书的存储和管理方法,配合上述第五方面有关混合加解密的加密手段的管理方法,针对混合加密解密配合分布式密中密双层分发的运作、管理和保护的方法,所述的方法包括:
生成用户信息;
第一次接口公钥的明文分发;
第二次完整公钥的密文分发;
接口公钥的重置;
完整公钥(非接口公钥)的更新;
H-加密、密文的封装与分发;
密文的接收、H-解密与解封;
基于H-改进的数字签名方案;
针对流式传输加密、封装的优化;
针对对称式加密反破译的优化;
针对临时对称式密钥在封装中的优化;
一个调用其他相关方面方法与功能获取信息、处理信息、传递信息、实现加密、解密、封装、运算的接口,用于实现混合加密解密配合分布式密中密双层分发的运作、管理和保护,即统筹地实现本发明上述一至五方面的全部功能。
进一步,针对生成用户信息的过程,所使用的方法为:
依托本发明第四方面针对混合加解密密钥和证书的存储和管理方法的数据结构与操作,生成本用户所有密钥和证书的完整的数据结构,完成合规性检查,并写入本地文件,保存本用户的个人密钥库。
进一步,针对第一次接口公钥的明文分发的过程,所使用的方法包括且仅限于P2N模式,为:
依托本发明第四方面针对混合加解密密钥和证书的存储和管理方法的数据结构与操作,利用本用户的个人密钥库,还原本用户密钥和证书的完整的数据结构,并导出本用户的用于传输的接口公钥;以明文的形式,使用不定长头部数据进行封装:在不定长头部数据中选择H-模块进行封装,所封装信息的类型选择为配置文件,不选择数字签名,在H-中标志为明文,用途选择为接口公钥,写入进行封装的时间点,允许设置允许解密的时间限制(亦可不设置允许解密的时间限制),其他内容缺省;
在网络上公开发送本用户的用于传输的接口公钥;
在网络上接收其他用户的用于传输的接口公钥,依托本发明第三方面不定长头部数据实现信息封装的操作,核对和校验不定长头部数据和H-数据,进而依托本发明第四方面针对混合加解密密钥和证书的存储和管理方法的数据结构与操作,还原其他用户包含接口公钥等信息的数据结构,并写入本地文件,初步保存其他用户的个人密钥库;
需要说明的是,第一次接口公钥的明文分发不支持P2N、N2P模式,由于公开分发的特征,仅支持P2N模式。
进一步,针对第二次完整公钥的密文分发,所使用的方法包括且仅限于P2P、P2N模式,包含:
第二次完整公钥的密文分发(P2P模式):
依托本发明第四方面针对混合加解密密钥和证书的存储和管理方法的数据结构与操作,利用本用户的个人密钥库,导出本用户的用于传输的完整公钥;对拥有本用户接口公钥并需要接收完整公钥的用户,依托本发明第一方面针对混合加密方法(H-加密方法)的操作,使用预设的用于传输的完整公钥的H-加密方法,先使用本用户的接口私钥进行混合加密,再使用接收方的接口公钥进行混合加密,每次混合加密后,在加密后密文尾部附加小于最外阶下一层输出吞吐量长度的随机数位流;使用不定长头部数据进行封装:在不定长头部数据中选择H-模块进行封装,所封装信息的类型选择为配置文件,不选择数字签名,在H-中标志为密文,用途选择为完整公钥,在H-中明文标志为P2P模式,写入进行封装的时间点,并将待接收用户的机器码设为唯一允许解密的机器,允许设置允许解密的时间限制(亦可不设置允许解密的时间限制),其他内容缺省,并进行合规性检验;
对待接收用户发送(经封装和加密的)本用户的用于传输的完整公钥;
从待接收用户接收其发送的(经封装和加密的)其用于传输的完整公钥,依托本发明第三方面不定长头部数据实现信息封装的操作,核对和校验不定长头部数据和H-数据,依托本发明第五方面针对混合加解密的加密手段的管理方法的数据结构与操作,分析H-数据,确认为该用户的用于传输的完整公钥,确认已拥有其用于传输的接口公钥;依托本发明第二方面针对混合解密方法(H-解密方法)的操作,使用预设的用于传输的完整公钥的H-解密方法,先使用本用户的接口私钥进行解密,再使用对方用户的接口公钥进行解密;进而依托本发明第四方面针对混合加解密密钥和证书的存储和管理方法的数据结构与操作,还原该用户包含完整公钥、替换表等信息的数据结构,并写入本地文件,完成保存该用户的个人密钥库;
以及:
第二次完整公钥的密文分发(P2N模式):
依托本发明第四方面针对混合加解密密钥和证书的存储和管理方法的数据结构与操作,利用本用户的个人密钥库,导出本用户的用于传输的完整公钥;对拥有本用户接口公钥并需要接收完整公钥的所有可能的其他用户,依托本发明第一方面针对混合加密方法(H-加密方法)的操作,使用预设的用于传输的完整公钥的H-加密方法,先使用本用户的接口私钥进行混合加密,再使用经商议但不使用网络传输的对称式密钥进行混合加密,每次混合加密后,在加密后密文尾部附加小于最外阶下一层输出吞吐量长度的随机数位流;使用不定长头部数据进行封装:在不定长头部数据中选择H-模块进行封装,,所封装信息的类型选择为配置文件,不选择数字签名,在H-中标志为密文,用途选择为接口公钥,在H-中明文标志为P2N模式,写入进行封装的时间点,同时允许将待接收的所有可能的其他用户的机器码设为唯一允许解密的机器(亦可不设置允许解密的机器),允许设置允许解密的时间限制(亦可不设置允许解密的时间限制),其他内容缺省,并进行合规性检验;
对可能接收所有可能的其他用户发送(经封装和加密的)本用户的用于传输的完整公钥;
从对可能接收所有可能的其他用户接收其发送的(经封装和加密的)其用于传输的完整公钥,依托本发明第三方面不定长头部数据实现信息封装的操作,核对和校验不定长头部数据和H-数据,依托本发明第五方面针对混合加解密的加密手段的管理方法的数据结构与操作,分析H-数据,确认为其他用户的用于传输的完整公钥,确认已拥有其用于传输的接口公钥;依托本发明第二方面针对混合解密方法(H-解密方法)的操作,使用预设的用于传输的完整公钥的H-解密方法,先使用经商议但不使用网络传输的对称式密钥进行解密,再使用对方用户的接口公钥进行解密;进而依托本发明第四方面针对混合加解密密钥和证书的存储和管理方法的数据结构与操作,还原其他用户包含完整公钥、替换表等信息的数据结构,并写入本地文件,完成保存其他用户的个人密钥库。
需要说明的是,第二次完整公钥的加密分发除了可以通过网络传输之外,物理传输可以进一步增强安全性;P2P模式下,分别使用收、发双方密钥进行二重混合加密,实际上是数字签名的变体形式,只有正确的发送方才能生成有效的加密;另外,第二次完整公钥的加密分发不支持N2P模式,由于可能包含的定向分发及保密的特征,仅支持P2P、P2N模式。
不同次分发和加解密对N2P、P2P、P2N模式的支持情况如下表所示:
Figure BDA0003777632010000151
进一步,针对接口公钥的重置,所使用的方法包括:
依托本发明第四方面针对混合加解密密钥和证书的存储和管理方法的数据结构与操作,当生成本用户新的用于传输的接口公钥时,由于接口公钥改变,强制刷新数据结构其他所有数据,包括清除其他证书和密钥、重设机器码、重设两次唯一识别码、重设替换表和重设其他数据;
完成本用户其他所有密钥和证书的重新生成,成为完整的个人密钥库;
写入本地文件,保存本用户的新的个人密钥库。
需要注意的是,新的个人密钥库不继承旧的个人密钥库的上一次修改时颁发的唯一编码和其最新修改后的唯一编码,与旧的个人密钥库失去关联,且无法通过旧的个人密钥库修改生成新的个人密钥库;因此,在正常使用时,应避免重置接口公钥;设计之初,接口公钥的强度是较强的,因此,当且仅当接口公钥有被破译的风险时,应该重置接口公钥。
需要注意的是,重置接口公钥后,应当重新依次进行两次分发。
进一步,针对完整公钥(非接口公钥)的更新,所使用的方法包括且仅限于P2P、P2N模式,包含:
完整公钥(非接口公钥)的更新(P2P模式):
依托本发明第四方面针对混合加解密密钥和证书的存储和管理方法的数据结构与操作,利用本用户的旧的个人密钥库,修改完整公钥(非接口公钥),并进行相关操作,完成合规性检验,写入本地文件,保存本用户的新的个人密钥库;
依托本发明第四方面针对混合加解密密钥和证书的存储和管理方法的数据结构与操作,利用本用户的个人密钥库,导出本用户的用于传输的完整公钥的更新版本(保存经修改的密钥和证书,不保存未经修改的密钥和证书);由于接口公钥未发生改变,旧的个人密钥库的最新修改后的唯一编码成为新的个人密钥库的上一次修改时颁发的唯一编码,其他用户可以依托该用户旧的个人密钥库;对拥有本用户原完整公钥并需要接收新修改的完整公钥的用户,使用预设的用于传输的完整公钥的H-加密方法,先使用本用户的接口私钥进行混合加密,再使用接收方的接口公钥进行混合加密,每次混合加密后,在加密后密文尾部附加小于最外阶下一层输出吞吐量长度的随机数位流;使用不定长头部数据进行封装:在不定长头部数据中选择H-模块进行封装,所封装信息的类型选择为配置文件,不选择数字签名,在H-中标志为密文,用途选择为对完整公钥的修改,在H-中明文标志为P2P模式,写入进行封装的时间点,并将待接收用户的机器码设为唯一允许解密的机器,允许设置允许解密的时间限制(亦可不设置允许解密的时间限制),其他内容缺省,并进行合规性检验;
对待接收用户发送(经封装和加密的)本用户的用于传输的完整公钥;
从待接收用户接收其发送的(经封装和加密的)其用于传输的完整公钥的更新,依托本发明第三方面不定长头部数据实现信息封装的操作,核对和校验不定长头部数据和H-数据,依托本发明第五方面针对混合加解密的加密手段的管理方法的数据结构与操作,分析H-数据,确认为该用户的用于传输的完整公钥的更新,确认已拥有其原用于传输的完整公钥;依托本发明第二方面针对混合解密方法(H-解密方法)的操作,使用预设的用于传输的完整公钥的H-解密方法,先使用本用户的接口私钥进行解密,再使用对方用户的接口公钥进行解密;进而依托本发明第四方面针对混合加解密密钥和证书的存储和管理方法的数据结构与操作,更新该用户包含的已修改的完整公钥、替换表等信息的数据结构,并写入本地文件,完成更新该用户的个人密钥库;
以及:
完整公钥(非接口公钥)的更新(P2N模式):
依托本发明第四方面针对混合加解密密钥和证书的存储和管理方法的数据结构与操作,利用本用户的旧的个人密钥库,修改完整公钥(非接口公钥),并进行相关操作,完成合规性检验,写入本地文件,保存本用户的新的个人密钥库;
依托本发明第四方面针对混合加解密密钥和证书的存储和管理方法的数据结构与操作,利用本用户的个人密钥库,导出本用户的用于传输的完整公钥的更新版本(保存经修改的密钥和证书,不保存未经修改的密钥和证书);由于接口公钥未发生改变,旧的个人密钥库的最新修改后的唯一编码成为新的个人密钥库的上一次修改时颁发的唯一编码,其他用户可以依托该用户旧的个人密钥库;对拥有本用户原完整公钥并需要接收新修改的完整公钥的所有可能的其他用户,使用预设的用于传输的完整公钥的H-加密方法,先使用本用户的接口私钥进行混合加密,再使用经商议但不使用网络传输的对称式密钥进行混合加密,每次混合加密后,在加密后密文尾部附加小于最外阶下一层输出吞吐量长度的随机数位流;使用不定长头部数据进行封装:在不定长头部数据中选择H-模块进行封装,所封装信息的类型选择为配置文件,不选择数字签名,在H-中标志为密文,用途选择为对完整公钥的修改,在H-中明文标志为P2N模式,写入进行封装的时间点,同时允许将待接收的所有可能的其他用户的机器码设为唯一允许解密的机器(亦可不设置允许解密的机器),允许设置允许解密的时间限制(亦可不设置允许解密的时间限制),其他内容缺省,并进行合规性检验;
对可能接收所有可能的其他用户发送(经封装和加密的)本用户的用于传输的完整公钥;
从待接收用户接收其发送的(经封装和加密的)其用于传输的完整公钥的更新,依托本发明第三方面不定长头部数据实现信息封装的操作,核对和校验不定长头部数据和H-数据,依托本发明第五方面针对混合加解密的加密手段的管理方法的数据结构与操作,分析H-数据,确认为该用户的用于传输的完整公钥的更新,确认已拥有其原用于传输的完整公钥;依托本发明第二方面针对混合解密方法(H-解密方法)的操作,使用预设的用于传输的完整公钥的H-解密方法,先使用经商议但不使用网络传输的对称式密钥进行解密,再使用对方用户的接口公钥进行解密;进而依托本发明第四方面针对混合加解密密钥和证书的存储和管理方法的数据结构与操作,更新该用户包含的已修改的完整公钥、替换表等信息的数据结构,并写入本地文件,完成更新该用户的个人密钥库;
需要说明的是,完整公钥(非接口公钥)的更新除了可以通过网络传输之外,物理传输可以进一步增强安全性;P2P模式下,分别使用收、发双方密钥进行二重混合加密,实际上是数字签名的变体形式,只有正确的发送方才能生成有效的加密;另外,完整公钥(非接口公钥)的更新不支持N2P模式,由于可能包含的定向分发及保密的特征,仅支持P2P、P2N模式。
进一步,针对H-加密、密文的封装与分发,所使用的方法包括P2P、N2P、P2N模式,包含:
H-加密、密文的封装与分发(P2P模式):
依托本发明第四方面针对混合加解密密钥和证书的存储和管理方法的数据结构与操作,在拥有待接收用户的个人密钥库时,选定本用户的个人密钥库和待接收用户的个人密钥库,还原本用户密钥和证书的完整的数据结构以及待接收用户的完整的接口公钥的数据结构;
依托本发明第五方面针对混合加解密的加密手段的管理方法的数据结构与操作,创建管理混合加解密加密手段的数据结构,并依次对该数据结构进行如下方面的设置:设定所使用的待接收用户的密钥和证书的数据库的数据结构的最新修改后的唯一编码,所使用的本用户密钥和证书的数据库的数据结构的最新修改后的唯一编码,所使用的标志H-模块与头部数据所封装信息的明文、密文形式,所使用的标志H-模块与头部数据所封装信息用途,所使用的混合加解密的场景和用途,所使用的混合加解密的阶、层,所使用的以行、列、组形式表示的每阶、每层使用密钥和证书以及使用方法,所使用的不定长头部数据中所封装信息类型,可选的允许解密的时间限制,设定待接收用户的机器码为允许解密的机器限制等;最后,进行合规性检验;
依托本发明第四方面管理混合加解密加密手段的数据结构,依托本发明第一方面混合加密方法(H-加密方法)和本发明第四方面密钥和证书的存储和管理方法所存储的密钥和证书,指导混合加密方法,对需要加密的数据进行混合加密,得到经过H-加密后的密文,在密文最后附加随机长度的随机数位流,临时暂存此随机数位流的长度;在加密的过程中,对管理混合加解密加密手段的数据结构写入以每阶层数和填充体码规则或长度表示的填充情况;
使用不定长头部数据对加密后的密文进行封装:在不定长头部数据中选择H-模块进行封装,所封装信息的类型选择为相应的数据形式,可选数字签名,在H-中写入待接收用户的个人密钥库的最新修改后的唯一编码,写入本用户的个人密钥库的最新修改后的唯一编码,内容标志为密文,用途选择为密文,以待接收用户的个人密钥库对应的数据结构中的替换表为参考,以替换表形式写入P2P模式,以替换表形式写入H-加密采用的阶、层设定;若选用的密钥或证书是本用户的密钥或证书,则以本用户的个人密钥库对应的数据结构中的替换表为参考,其他的密钥或证书以待接收用户的个人密钥库对应的数据结构中的替换表为参考,按照阶、层设定、以替换表形式依次写入每层使用的母密钥或证书的行列、组、母密钥或证书的使用方法、子密钥或证书的行列、组;在此后附加随机长度的干扰随机位流;以待接收用户的个人密钥库对应的数据结构中的替换表为参考,按照阶、层设定,以替换表形式依次写入每阶填充的层数和填充的长度或体码规则,在此后附加随机长度的干扰随机位流,以时间替换表的形式写入进行封装的时间点,并将待接收用户的机器码设为唯一允许解密的机器,允许以时间替换表的形式设置允许解密的时间限制(亦可不设置允许解密的时间限制),最后以替换表形式写入加密完成后附加的随机位流的长度;依托本发明第三方面不定长头部数据实现信息封装的操作,对不定长头部数据中密文作哈希、对密钥或证书作哈希(此时对H-模块内容作哈希),完成内容域的写入;再对内容域作哈希,进行数字签名,完成校验域的写入,至此完成全部封装;
对待接收用户发送经过封装的密文;
需要再次强调的是,在P2P模式下,H-加密中每阶每层可以运用的加密方法包括且仅限于全部的对称式加密方法和全部的非对称加密方法,包括:在网络上传输密钥的对称式加密方法、不使用网络传输密钥的对称式加密方法、利用接收方公钥加密的非对称加密方法、利用发送方私钥加密的非对称加密方法、利用接收方公钥加密对称密钥的方法、利用密钥交换进行对称式加密方法;
以及:
H-加密、密文的封装与分发(N2P模式):
依托本发明第四方面针对混合加解密密钥和证书的存储和管理方法的数据结构与操作,在拥有待接收用户的个人密钥库时,选定待接收用户的个人密钥库,还原待接收用户的完整的接口公钥的数据结构;
依托本发明第五方面针对混合加解密的加密手段的管理方法的数据结构与操作,创建管理混合加解密加密手段的数据结构,并依次对该数据结构进行如下方面的设置:设定所使用的待接收用户的密钥和证书的数据库的数据结构的最新修改后的唯一编码,所使用的标志H-模块与头部数据所封装信息的明文、密文形式,所使用的标志H-模块与头部数据所封装信息用途,所使用的混合加解密的场景和用途,所使用的混合加解密的阶、层,所使用的以行、列、组形式表示的每阶、每层使用密钥和证书以及使用方法,所使用的不定长头部数据中所封装信息类型,可选的允许解密的时间限制,设定待接收用户的机器码为允许解密的机器限制等;最后,进行合规性检验;
依托本发明第四方面管理混合加解密加密手段的数据结构,依托本发明第一方面混合加密方法(H-加密方法)和本发明第四方面密钥和证书的存储和管理方法所存储的密钥和证书,指导混合加密方法,对需要加密的数据进行混合加密,得到经过H-加密后的密文,在密文最后附加随机长度的随机数位流,临时暂存此随机数位流的长度;在加密的过程中,对管理混合加解密加密手段的数据结构写入以每阶层数和填充体码规则或长度表示的填充情况;
使用不定长头部数据对加密后的密文进行封装:在不定长头部数据中选择H-模块进行封装,所封装信息的类型选择为相应的数据形式,不选择数字签名,在H-中写入待接收用户的个人密钥库的最新修改后的唯一编码,内容标志为密文,用途选择为密文,以待接收用户的个人密钥库对应的数据结构中的替换表为参考,以替换表形式写入N2P模式,以替换表形式写入H-加密采用的阶、层设定,按照阶、层设定、以替换表形式依次写入每层使用的母密钥或证书的行列、组、母密钥的或证书的使用方法、子密钥或证书的行列、组,在此后附加随机长度的干扰随机位流,按照阶、层设定、以替换表形式依次写入每阶填充的层数和填充的长度或体码规则,在此后附加随机长度的干扰随机位流,以时间替换表的形式写入进行封装的时间点,并将待接收用户的机器码设为唯一允许解密的机器,允许以时间替换表的形式设置允许解密的时间限制(亦可不设置允许解密的时间限制),最后以替换表形式写入加密完成后附加的随机位流的长度;依托本发明第三方面不定长头部数据实现信息封装的操作,对不定长头部数据中密文作哈希、对密钥或证书作哈希(此时对H-模块内容作哈希),完成内容域的写入;再对内容域作哈希,完成校验域的写入,至此完成全部封装;
对待接收用户发送经过封装的密文;
需要再次强调的是,在N2P模式下,H-加密中每阶每层可以运用的加密方法包括且仅限于全部的非对称加密方法和部分非对称加密方法,包括:在网络上传输密钥的对称式加密方法、不使用网络传输密钥的对称式加密方法、利用接收方公钥加密的非对称加密方法、利用接收方公钥加密对称密钥的方法;不允许对待传输数据的任意阶、任意层使用利用发送方私钥加密的非对称加密方法和利用密钥交换进行对称式加密方法;
以及:
H-加密、密文的封装与分发(P2N模式):
依托本发明第四方面针对混合加解密密钥和证书的存储和管理方法的数据结构与操作,选定本用户的个人密钥库,还原本用户的完整的接口公钥的数据结构;
依托本发明第五方面针对混合加解密的加密手段的管理方法的数据结构与操作,创建管理混合加解密加密手段的数据结构,并依次对该数据结构进行如下方面的设置:设定所使用的本用户的密钥和证书的数据库的数据结构的最新修改后的唯一编码,所使用的标志H-模块与头部数据所封装信息的明文、密文形式,所使用的标志H-模块与头部数据所封装信息用途,所使用的混合加解密的场景和用途,所使用的混合加解密的阶、层,所使用的以行、列、组形式表示的每阶、每层使用密钥以及使用方法,所使用的不定长头部数据中所封装信息类型,可选的允许解密的时间限制,设定待接收用户的机器码为允许解密的机器限制等;最后,进行合规性检验;
依托本发明第四方面管理混合加解密加密手段的数据结构,依托本发明第一方面混合加密方法(H-加密方法)和本发明第四方面密钥和证书的存储和管理方法所存储的密钥和证书,指导混合加密方法,对需要加密的数据进行混合加密,得到经过H-加密后的密文,在密文最后附加随机长度的随机数位流,临时暂存此随机数位流的长度;在加密的过程中,对管理混合加解密加密手段的数据结构写入以每阶层数和填充体码规则或长度表示的填充情况;
使用不定长头部数据对加密后的密文进行封装:在不定长头部数据中选择H-模块进行封装,所封装信息的类型选择为相应的数据形式,不选择数字签名,在H-中写入本用户的个人密钥库的最新修改后的唯一编码,内容标志为密文,用途选择为密文,以本用户的个人密钥库对应的数据结构中的替换表为参考,以替换表形式写入P2N模式,以替换表形式写入H-加密采用的阶、层设定,按照阶、层设定、以替换表形式依次写入每层使用的母密钥或证书的行列、组、母密钥的或证书的使用方法、子密钥或证书的行列、组,在此后附加随机长度的干扰随机位流,按照阶、层设定、以替换表形式依次写入每阶填充的层数和填充的长度或体码规则,在此后附加随机长度的干扰随机位流,以时间替换表的形式写入进行封装的时间点,允许以所有可能的待接收用户的机器码设为允许解密的机器(亦可不设置允许解密的机器),允许以时间替换表的形式设置允许解密的时间限制(亦可不设置允许解密的时间限制),最后以替换表形式写入加密完成后附加的随机位流的长度;依托本发明第三方面不定长头部数据实现信息封装的操作,对不定长头部数据中密文作哈希、对密钥或证书作哈希(此时对H-模块内容作哈希),完成内容域的写入;再对内容域作哈希,完成校验域的写入,至此完成全部封装;
对所有可能的待接收用户发送经过封装的密文;
需要再次强调的是,在P2N模式下,H-加密中每阶每层可以运用的加密方法包括且仅限于全部的非对称加密方法,包括:在网络上传输密钥的对称式加密方法、不使用网络传输密钥的对称式加密方法;不允许对待传输数据的任意阶、任意层使用任何非对称加密方法。
进一步,针对密文的接收、H-解密与解封,所使用的方法包括P2P、N2P、P2N模式,包含:
密文的接收、H-解密与解封(P2P模式):
接收经过封装的密文;
依托本发明第三方面不定长头部数据实现信息解封的操作,对使用不定长头部数据对密文的封装进行解封,同时进行哈希与数字签名校验(P2P模式支持数字签名校验),并获取所使用的密钥库的最新更新的唯一编码(通常包含两个,前者属于接收用户,后者属于发送用户),验证第一个唯一编码属于本用户,第二个唯一编码不属于本用户;获取H-模块中以明文和替换表形式的H-加密方法;依托本发明第五方面针对混合加解密的加密手段的管理方法的数据结构与操作,初步建立管理混合加解密加密手段的数据结构;
依托本发明第四方面针对混合加解密密钥和证书的存储和管理方法的数据结构与操作,根据获取到所使用的密钥库的唯一编码,在拥有发送用户的个人密钥库时,调用所使用的密钥库保存在本地的配置文件(通常是发送用户的个人密钥库和接收用户的个人密钥库),还原发送用户密钥和证书的完整的数据结构以及接收用户(本用户)的完整的接口公钥的数据结构;
根据获取到的H-加密方法,依托发送用户密钥和证书的完整的数据结构以及接收用户(本用户)的完整的接口公钥的数据结构,以接收用户(本用户)的个人密钥库对应的数据结构中的替换表为参考,将H-模块中所涉及替换表的部分转换为原文,包括:P2P模式,H-加密采用的阶、层设定;若选用的密钥或证书是接发送用户的密钥或证书,则以发送用户的个人密钥库对应的数据结构中的替换表为参考,其他的密钥或证书以接收用户(本用户)的个人密钥库对应的数据结构中的替换表为参考,将每层使用的母密钥或证书的行列、组、母密钥的或证书的使用方法、子密钥或证书的行列、组转换为原文;剔除在此后附加随机长度的干扰随机位流后,以接收用户(本用户)的个人密钥库对应的数据结构中的替换表为参考,继续转换:每阶填充的层数和填充的长度或体码规则;再次剔除在此后附加随机长度的干扰随机位流后,以接收用户(本用户)的个人密钥库对应的数据结构中的替换表为参考,继续转换:进行封装的时间点;读取允许解密的机器的机器码,完成对机器码内部哈希的校验,验证本用户机器码是否满足允许解密的机器;继续转换:允许解密的时间限制,并验证当前时间是否满足允许解密的时间限制;验证成功,继续转换:加密完成后附加的随机位流的长度;完成建立管理混合加解密加密手段的数据结构,并进行合规性检验;
依托本发明第四方面管理混合加解密加密手段的数据结构,依托本发明第二方面混合解密方法(H-解密方法)和本发明第四方面密钥和证书的存储和管理方法中个人密钥库对应的数据结构,指导混合解密方法,删去在密文最后附加的随机长度随机数位流后,对需要解密的数据部分进行混合解密,得到经过H-解密后的明文;在解密的过程中,根据管理混合加解密加密手段的数据结构中以每阶层数和填充体码规则或长度表示的填充情况,正确的完成算法去填充;
完成解密后的数据即为最终明文。
需要再次强调的是,在P2P模式下,H-加密中每阶每层可以运用的解密方法包括且仅限于全部的对称式解密方法和全部的非对称解密方法,包括:在网络上传输密钥的对称式解密方法、不使用网络传输密钥的对称式解密方法、利用接收方公钥加密的非对称解密方法、利用发送方私钥加密的非对称解密方法、利用接收方公钥加密对称密钥(使用接收方私钥解密)的方法、利用密钥交换进行对称式解密方法;此外,在使用上述最后两种解密方法时,可能会同时运用到发送用户的个人密钥库和接收用户的个人密钥库中对应的密钥或证书;
以及:
密文的接收、H-解密与解封(N2P模式):
接收经过封装的密文;
依托本发明第三方面不定长头部数据实现信息解封的操作,对使用不定长头部数据对密文的封装进行解封,同时进行哈希校验(N2P模式不支持数字签名校验),并获取所使用的密钥库的最新更新的唯一编码(通常包含一个,属于接收用户),验证唯一编码属于本用户;获取H-模块中以明文和替换表形式的H-加密方法;依托本发明第五方面针对混合加解密的加密手段的管理方法的数据结构与操作,初步建立管理混合加解密加密手段的数据结构;
发明第四方面针对混合加解密密钥和证书的存储和管理方法的数据结构与操作,根据获取到所使用的密钥库的唯一编码,在确认接收用户的个人密钥库为本用户个人密钥库时,调用其保存在本地的配置文件,还原接收用户(本用户)的完整的接口公钥的数据结构;
根据获取到的H-加密方法,依托接收用户的完整的接口公钥的数据结构,以接收用户(本用户)的个人密钥库对应的数据结构中的替换表为参考,将H-模块中所涉及替换表的部分转换为原文,包括:P2P模式,H-加密采用的阶、层设定,每层使用的母密钥或证书的行列、组、母密钥的或证书的使用方法、子密钥或证书的行列、组;剔除在此后附加随机长度的干扰随机位流后,继续转换:每阶填充的层数和填充的长度或体码规则;再次剔除在此后附加随机长度的干扰随机位流后,继续转换:进行封装的时间点;读取允许解密的机器的机器码,完成对机器码内部哈希的校验,验证本用户机器码是否满足允许解密的机器;验证成功,继续转换:允许解密的时间限制,并验证当前时间是否满足允许解密的时间限制;验证成功,继续转换:加密完成后附加的随机位流的长度;完成建立管理混合加解密加密手段的数据结构,并进行合规性检验;
依托本发明第四方面管理混合加解密加密手段的数据结构,依托本发明第二方面混合解密方法(H-解密方法)和本发明第四方面密钥和证书的存储和管理方法中个人密钥库对应的数据结构,指导混合解密方法,删去在密文最后附加的随机长度随机数位流后,对需要解密的数据部分进行混合解密,得到经过H-解密后的明文;在解密的过程中,根据管理混合加解密加密手段的数据结构中以每阶层数和填充体码规则或长度表示的填充情况,正确的完成算法去填充;
完成解密后的数据即为最终明文。
需要再次强调的是,在N2P模式下,H-加密中每阶每层可以运用的解密方法包括且仅限于全部的对称式解密方法和部分非对称解密方法,包括:在网络上传输密钥的对称式解密方法、不使用网络传输密钥的对称式解密方法、利用接收方公钥加密的非对称解密方法、利用接收方公钥加密对称密钥(使用接收方私钥解密)的方法、利用密钥交换进行对称式解密方法;不允许对待解密数据的任意阶、任意层使用利用发送方私钥加密的非对称解密方法、利用密钥交换进行对称式解密方法;此外,在使用N2P模式解密时,仅仅会运用到接收用户的个人密钥库中对应的密钥或证书,不会使用发送用户的个人密钥库,同时不会确认发送方的身份;
以及:
密文的接收、H-解密与解封(P2N模式):
接收经过封装的密文;
依托本发明第三方面不定长头部数据实现信息解封的操作,对使用不定长头部数据对密文的封装进行解封,同时进行哈希与数字签名校验(P2N模式支持数字签名校验),并获取所使用的密钥库的最新更新的唯一编码(通常包含一个,属于发送用户),验证唯一编码不属于本用户;获取H-模块中以明文和替换表形式的H-加密方法;依托本发明第五方面针对混合加解密的加密手段的管理方法的数据结构与操作,初步建立管理混合加解密加密手段的数据结构;
发明第四方面针对混合加解密密钥和证书的存储和管理方法的数据结构与操作,根据获取到所使用的密钥库的唯一编码,在拥有发送用户的个人密钥库时,调用其保存在本地的配置文件,还原发送用户的完整的接口公钥的数据结构;
根据获取到的H-加密方法,依托发送用户的完整的接口公钥的数据结构,以发送用户的个人密钥库对应的数据结构中的替换表为参考,将H-模块中所涉及替换表的部分转换为原文,包括:P2P模式,H-加密采用的阶、层设定,每层使用的母密钥的行列、组、母密钥的使用方法、子密钥的行列、组;剔除在此后附加随机长度的干扰随机位流后,继续转换:每阶填充的层数和填充的长度或体码规则;再次剔除在此后附加随机长度的干扰随机位流后,继续转换:进行封装的时间点;若存在,则读取允许解密的机器的机器码,完成对机器码内部哈希的校验,验证本用户机器码是否满足允许解密的机器;验证成功,继续转换:允许解密的时间限制,并验证当前时间是否满足允许解密的时间限制;验证成功,继续转换:加密完成后附加的随机位流的长度;完成建立管理混合加解密加密手段的数据结构,并进行合规性检验;
依托本发明第四方面管理混合加解密加密手段的数据结构,依托本发明第二方面混合解密方法(H-解密方法)和本发明第四方面密钥和证书的存储和管理方法中个人密钥库对应的数据结构,指导混合解密方法,删去在密文最后附加的随机长度随机数位流后,对需要解密的数据部分进行混合解密,得到经过H-解密后的明文;在解密的过程中,根据管理混合加解密加密手段的数据结构中以每阶层数和填充体码规则或长度表示的填充情况,正确的完成算法去填充;
完成解密后的数据即为最终明文;
需要再次强调的是,在P2N模式下,H-加密中每阶每层可以运用的解密方法包括且仅限于全部的对称式解密方法,包括:在网络上传输密钥的对称式解密方法、不使用网络传输密钥的对称式解密方法;不允许对待解密数据的任意阶、任意层使用任何非对称解密方法;此外,在使用N2P模式解密时,仅仅会运用到发送用户的个人密钥库中对应的密钥或证书,不会使用接收用户的个人密钥库。
需要强调的是,由于不同场景和不同用途中对是否确认发送方的身份的要求不同,不定长头部数据在P2N、N2P、P2P模式下对数字签名功能的支持情况是不同的,体现在:P2N、P2P模式支持数字签名,并要求确认发送方的身份;N2P模式不支持数字签名,同时不要求确认发送方身份。
以表格形式表现如下:
Figure BDA0003777632010000221
进一步,针对基于H-改进的数字签名方案,所使用的方法包括:
依托本发明第一方面混合加密方法(H-加密方法)和本发明第四方面密钥和证书的存储和管理方法中发送方的个人密钥库,使用个人密钥库中接口密钥组外指定的一组专用于数字签名的非对称密钥,以待签名数据的哈希值为待加密数据,使用预设的用于数字签名的H-加密方法,对哈希值的每阶、层使用发送方私钥加密的非对称加密的方法进行混合加密,得到经过H-加密后的密文,在加密后密文尾部附加小于最外阶下一层输出吞吐量长度的随机数位流,不进行任何封装,作为数字签名;
验证签名时,依托本发明第二方面混合解密方法(H-解密方法)和本发明第四方面密钥和证书的存储和管理方法中发送方的完整公钥,使用发送方的完整公钥中接口公钥组外指定的一组专用于数字签名的非对称公钥,以数字签名为待解密数据,使用预设的用于数字签名的H-解密方法,对哈希值的每阶、层使用发送方公钥的非对称解密的方法进行混合解密,在解密完最外阶后,去除在密文尾部附加的随机数位流后,逐阶进行混合解密,得到经过H-解密后的明文,即解密出的待签名数据的哈希值;计算待签名数据的哈希值,与解密出的待签名数据的哈希值相等则完成验证。
进一步,针对流式传输加密、封装的优化,所使用的方法包括:
在进行过密钥的两次分发,拥有加密解密必要的个人密钥库后,划分流式传输密文的传输步骤为握手、通信、数据的首次传输、数据的接续传输、数据的修补传输,另计流式传输首、尾,作为流状态;
各类步骤包括如下:
握手步骤,作为流传输的第一步,用于流传输申请方(发送方)的信息传递或流传输申请;
通信步骤,用于流传输双方进行状态传输、错误报警、重传申请的信息传递;
数据的首次传输步骤,用于首次传输经H-加密数据;
数据的接续传输步骤,用于接续首次传输,依次传输首次传输后剩余待传输的数据;
数据的修补传输步骤,用于接收方申请重传时,对未能完整传输的数据进行重新传输;
在进行流式传输任意步骤时,可以对包括不定长头部数据在内的所有数据使用长度对齐,即设定一次流式传输的吞吐量,当预估进行完封装后的数据小于一次流式传输的吞吐量时,使用不定长头部数据中的备注模块,为其附加随机数位流,直至满足一次流式传输的吞吐量。
运用于流式传输中的H-加密的全部过程与上述对应于不同场景和不同用途的一般的H-加密完全相同,参见上述H-加密对应的P2P、P2N、N2P模式;需要注意的是,握手步骤作为流式传输的第一次传输,以H-方法加密,后续所有需要的传输所使用的H-加密方法应与握手内容加密所使用的H-加密方法完全一致,体现在:使用的个人密钥库的最新修改后的唯一编码,内容标志,用途标志,H-加密采用的阶、层设定,每层使用的母密钥或证书的行列、组、母密钥的或证书的使用方法、子密钥或证书的行列、组,唯一允许解密的机器,允许解密的时间限制的一致性上;每阶、层填充情况允许不同,进行封装的时间点允许不同,加密后密文尾部附加的随机数位流长度允许不同;另外,首次传输步骤与接续传输步骤中每阶、层填充情况应具有一致性,加密后密文尾部附加的随机数位流长度也应具有一致性;
使用不定长头部数据对加密后的密文进行封装时,与一般的情况具有不同:
进行握手步骤的封装时,在不定长头部数据中选择H-模块进行封装,所封装信息的类型选择为相应的数据形式,选择流式传输模块,流式传输状态写入握手,上一次流的流唯一编码缺省,生成并写入本次流的流唯一编码,在H-中写入(与P2P、P2N、N2P模式)对应的个人密钥库的最新修改后的唯一编码,内容标志为密文,用途选择为密文,以(与P2P、P2N、N2P模式)对应的替换表为参考,以替换表形式写入对应的模式,以替换表形式写入H-加密采用的阶、层设定,按照阶、层设定、以替换表形式依次写入每层使用的母密钥或证书的行列、组、母密钥的或证书的使用方法、子密钥或证书的行列、组,在此后附加随机长度的干扰随机位流,按照阶、层设定、以替换表形式依次写入每阶填充的层数和填充的长度或体码规则,在此后附加随机长度的干扰随机位流,以时间替换表的形式写入进行封装的时间点,(根据P2P、P2N、N2P模式与实际需求可选地)设置允许解密的机器,(根据P2P、P2N、N2P模式与实际需求可选地)设置允许解密的时间限制,最后以替换表形式写入加密完成后附加的随机位流的长度;依托本发明第三方面不定长头部数据实现信息封装的操作,对不定长头部数据中密文作哈希、对密钥或证书作哈希(此时对H-模块内容作哈希),完成内容域的写入;再对内容域作哈希,完成校验域的写入;进行长度对齐,至此完成握手步骤的封装;
进行通信步骤的封装时,除流式传输状态写入为通信、需要写入上一次流的流唯一编码外,其余方法与握手步骤的封装一致;
进行数据的首次传输步骤的封装时,在不定长头部数据中选择H-模块进行封装,所封装信息的类型选择为相应的数据形式,选择流式传输模块,流式传输状态写入首次传输(若为最后一次传输,写入尾),写入上一次流的流唯一编码,生成并写入本次流的流唯一编码,缺省不定长头部数据中的版本号模块、加密算法的方法说明模块、填充的方法说明模块,以及所采用加密方法的哈希管理模块;由于所使用的H-加密方法应与握手内容加密所使用的H-加密方法完全一致,在H-中仅以替换表形式依次写入每阶填充的层数和填充的长度或体码规则,在此后附加随机长度的干扰随机位流,以时间替换表的形式写入进行封装的时间点,以替换表形式写入加密完成后附加的随机位流的长度;依托本发明第三方面不定长头部数据实现信息封装的操作,对不定长头部数据中密文作哈希,完成内容域的写入;再对内容域作哈希,完成校验域的写入;进行长度对齐,至此完成首次传输步骤的封装;
进行数据的接续传输步骤的封装时,在不定长头部数据中选择H-模块进行封装,所封装信息的类型选择为相应的数据形式,选择流式传输模块,流式传输状态写入接续传输(若为最后一次传输,写入尾),写入上一次流的流唯一编码,生成并写入本次流的流唯一编码,缺省不定长头部数据中的版本号模块、加密情况的说明模块、信息的类型说明模块、加密算法的方法说明模块、填充的方法说明模块,以及所采用加密方法的哈希管理模块;由于所使用的H-加密方法应与握手内容加密所使用的H-加密方法完全一致,每阶填充情况与首次传输步骤一致,在H-中仅写入以时间替换表的形式写入进行封装的时间点,以替换表形式写入加密完成后附加的随机位流的长度;依托本发明第三方面不定长头部数据实现信息封装的操作,对不定长头部数据中密文作哈希,完成内容域的写入;再对内容域作哈希,完成校验域的写入;进行长度对齐,至此完成接续传输步骤的封装;需要注意的是,为了使得接续传输步骤中每阶填充情况与首次传输步骤一致,每次数据传输(不论是首次传输还是接续传输)待加密的数据量应是一致的,否则应使用修补传输;
进行数据的修补传输步骤封装时,除流式传输状态写入为修补传输外,其余方法与首次传输步骤的封装一致。
在流式传输进行不同步骤的封装时,H-模块中需要写入的内容因步骤而具有差异,以表格形式表现如下:
Figure BDA0003777632010000241
配合针对流式传输的优化,允许以最小的外部代价传输最大量的数据流,充分利用流式传输的连续性,通过减少封装写入的内容最大化的扩展数据的收发吞吐量,提高流式传输的效率,使H-加密与相关封装能够适应流式传输已得到广泛使用的现代互联网。
进一步,针对对称式加密反破译的优化,所使用的方法为:
当H-加密中采用有多种对称式加密方法或完全采用对称式加密方法(尤其是不依赖于个人密钥库选用不依赖网络传输的对称式密钥),或者当使用P2P模式进行允许密钥交换的混合加密时,为了充分发挥H-对解密混淆的作用,可选地,在加密时让某一阶使用仅包含一层的对称式加密方法,其使用的密钥可以使用来自于其他所有阶、层所使用的其他对称式密钥、非对称密钥的公钥部分、非对称密钥经过密钥交换生成的密钥(仅限P2P模式),经过唯一且确定的方法生成(该密钥来源于其余密钥的实时生成,不进行任何的存储、交换和分发),通常以其他对称式密钥的组合或者哈希的方式生成密钥,使用该密钥对明文进行所选定该阶第一层(唯一一层)的加密;
实际上,在H-多阶、层中,可以使任意一阶只包含一层,并使用该方法加密该阶,不过通常以第一阶第一层实现上述方法实现较易;
实现一阶一层、利用全部密钥加密,保证了在所使用全部密钥和证书未能被完全破译之前,破译者不可能通过破译部分密钥从而部分地破译密文,进一步增强了破解复杂度,保障了传输信息的安全;尤其针对使用大量对称式加密方法的实例,破译者往往面临着多个不定的对称式密钥需要同时破解,不可能脱离其他密钥单独验证某一阶、层所使用的对称式密钥的正确性,只有多个不定的对称式密钥同时正确才能解密,实际上通过增加破译时面临排列组合的难度,从而增强了破解复杂度,运用于使用大量对称式加密方法的实例,是能够进一步保障加密传输信息的安全性的。
进一步,针对临时对称式密钥在封装中的优化,所使用的方法为:
当对数据进行H-加密时需要使用临时对称式密钥或当不使用网络传输密钥的对称式加密方法中的对称式密钥难以通过物理传输时,运用H-混合加密方法、接口公钥或对数据进行H-加密所选用密钥的其他密钥,可以以密文的形式、在一定程度降低安全性的情况下使得上述临时对称式密钥的分发变得容易。
当期望使用接口公钥对所使用的全部临时对称式密钥加密时,依照P2P、P2N对应的方法,先使用本用户的接口私钥进行混合加密,再使用接收方的接口公钥进行混合加密,或:使用预设的用于传输的完整公钥的H-加密方法,先使用本用户的接口私钥进行混合加密,再使用经商议但不使用网络传输的对称式密钥进行混合加密;在密文最后附上对数据进行H-加密时相等长度的随机数位流进行干扰,不进行封装,作为密文结果;需要注意的是,使用接口公钥对所使用的全部临时对称式密钥加密不支持N2P模式;
当期望使用对数据进行H-加密所选用密钥的其他密钥对所使用的全部临时对称式密钥加密时,从H-加密所选用的全部密钥和证书中剔除所使用的全部临时对称式密钥,从相应的阶层设定中剔除所使用的全部临时对称式密钥对应的阶、层位置(如(1,4,9)变为(1,3,7))成为新的阶、层设定,再按照新的阶层设定使用剔除后的H-加密所选用的全部密钥和证书进行H-混合加密,写入以接收方替换表表示的填充情况;在密文最后附上对数据进行H-加密时相等长度的随机数位流进行干扰,不进行封装,作为密文结果;
以上不经封装的加密数据即是加密后的临时对称式密钥,可以将其写入母密钥的使用方法或不定长头部数据中的注释模块,随被加密的数据一同分发。
应当说明的是,本发明第六方面所涉的针对混合加密解密配合分布式密中密双层分发的运作、管理和保护的全部方法,均具有可拓展性的特点,表现为:可根据实际使用以及科学技术的发展需要增删相应使用的数据、可根据实际使用需要以及科学技术的发展更改相应处理数据的方法、可根据实际使用需要以及科学技术的发展完善相应传输数据的方法,同时理论无传输内容的限制、无传输形式的限制、无传输长度的限制,具有可拓展性。同时,第六方面所涉的针对混合加密解密配合分布式密中密双层分发的运作、管理和保护的方法仅为部分必要方法,本领域的普通技术人员在无需创造性劳动的前提下,针对本发明第六方面的方法的任何增删等改动,都属于本发明的保护范围。
第七方面,本发明实施例提供一种系统,尤其是一种配合本发明任何发明内容和任意实施例所涉方法,能够执行本发明任何方面中任何有关于:混合加密解密(H-加密解密),不定长头部数据封装和解封,管理和存储密钥和证书,管理和存储H-加密方法,分布式密中密双层分发的运作、管理和保护工作等的系统。
第八方面,本发明实施例提供一种设备,尤其是一种配合本发明任何发明内容和任意实施例所涉方法,能够执行本发明任何方面中任何有关于:混合加密解密(H-加密解密),不定长头部数据封装和解封,管理密钥和证书,管理H-加密方法,分布式密中密双层分发的运作、管理和保护工作等的设备;
包括一种能够执行混合加密(H-加密),不定长头部数据封装,管理密钥和证书,管理H-加密方法,分布式密中密双层分发的运作、管理和保护工作等的发送方设备;
包括一种能够执行混合解密(H-解密),不定长头部数据解封,管理密钥和证书,管理H-加密方法,分布式密中密双层分发的运作、管理和保护工作等的接收方设备;
包括一种能够执行混合加密解密(H-加密解密),不定长头部数据封装和解封,管理密钥和证书,管理H-加密方法,分布式密中密双层分发的运作、管理和保护工作等的兼容发送和接收的设备。
第九方面,本发明实施例提供一种存储介质,尤其是一种配合本发明任何发明内容和任意实施例所涉方法,能够存储本发明任何方面中涉及的可执行指令和执行过程中产生的任何数据的存储介质,包括能够存储:本发明任何方面中涉及的可执行指令,混合加密解密(H-加密解密)数据,不定长头部数据封装数据,管理和存储密钥和证书的数据,管理和存储H-加密方法的数据,分布式密中密双层分发中产生的数据等的存储介质。
第十方面,本发明实施例提供一种制式哈希和替换表生成方法,尤其是一种能够为上述第五方面针对混合加解密的加密手段的管理方法的数据结构与操作中,H-模块中允许解密的机器码部分的制式哈希提供生成方法的方法,以及一种能够为上述第三方面至第六方面中所涉替换表提供生成方法的方法,所述方法包括:
一种能够对待求哈希的数据,利用现有散列函数生成安全的制式哈希的方法,通常是一个可以追溯的、利用同样待求哈希的数据能够生成同样制式哈希的方法;
一种能够基于被替换数据,利用现有散列函数与随机数位流生成与被替换数据对应的随机替换表的方法,通常是一个不可追溯、不可求逆的、利用相同被替换数据可以生成不同的替换表的方法。
进一步,针对生成制式哈希,所使用的方法包括:
选择若干(记为n)种可具有不同输出长度、分组长度、运算方法的散列函数(尤其是密码学散列函数),按照输出长度由小到大排列,依次记作HF1、HF2…HFn
进入循环;
第一次循环,若待求哈希的数据小于散列函数HF1的分组长度,则将数据复制扩充直至填满散列函数HF1的分组长度,对填充完成的数据作哈希变换,得到哈希值H1;若待求哈希的数据大于散列函数HF1的分组长度,则直接对待求哈希的数据使用HF1作哈希变换(使用散列函数内部的尾部填充机制),得到哈希值H1
第二次循环,以哈希值H1作为本轮待求哈希的数据,由于散列函数按照输出长度由小到大排列,通常地,哈希值H1必小于散列函数HF2的分组长度(若不小于,则不填充直接变换,使用散列函数内部的尾部填充机制),将数据复制扩充直至填满散列函数HF2的分组长度,对填充完成的数据使用HF2作哈希变换,得到哈希值H2
当循环次数i大于2且小于等于n时,类似于第二次循环,以第i-1轮生成的哈希值Hi-1作为第i轮待求哈希的数据,填充至填满散列函数HFi的分组长度后,对填充完成的数据使用HFi作哈希变换,得到哈希值Hi
当循环次数i大于n时,跳出循环,哈希值Hn即是所求的制式哈希。
需要说明的是,多轮使用具有不同输出长度的散列函数变换后,制式哈希具有抗逆向攻击和抗字典攻击的特性:只有使用原像按照相同的方法,才能生成对应的哈希,且能够自定义散列函数使用方法使得原有字典无法通过多轮哈希直接定位原文,不仅增加了哈希值抗攻击的安全性,而且可以根据实际使用需要选用不同的方法实现不同的输出长度。
进一步,针对生成随机替换表,所使用的方法包括:
选择若干(记为n)种可具有不同输出长度、分组长度、运算方法的散列函数(尤其是密码学散列函数),按照输出长度由大到小排列,依次记作HF1、HF2…HFn
进入循环;
第一次循环,若被替换数据小于散列函数HF1的分组长度,则使用随机数位流在被替换数据后填充直至填满散列函数HF1的分组长度,对填充完成的数据作哈希变换,得到哈希值H1;若被替换数据大于散列函数HF1的分组长度,则直接对被替换数据使用HF1作哈希变换,得到哈希值H-1,以哈希值H-1作为被替换数据,使用随机数位流在待求哈希的数据(H-1)后填充直至填满散列函数HF1的分组长度,对填充完成的数据作哈希变换,得到哈希值H1
第二次循环,以哈希值H1作为本轮被替换数据,由于散列函数按照输出长度由大到小排列,因此;若哈希值H1小于散列函数HF2的分组长度时,用随机数位流在被替换数据后填充直至填满散列函数HF2的分组长度,对填充完成的数据作哈希变换,得到哈希值H2;若哈希值H1大于散列函数HF2的分组长度,则直接对被替换数据使用HF2作哈希变换,得到哈希值H-2,以哈希值H-2作为被替换数据,使用随机数位流在被替换数据(哈希值H-2)后填充直至填满散列函数HF2的分组长度,对填充完成的数据作哈希变换,得到哈希值H2
当循环次数i大于2且小于等于n时,类似于第二次循环,以第i-1轮生成的哈希值Hi-1作为第i轮被替换数据,用随机数位流填充至填满散列函数HFi的分组长度或进行哈希变换得到哈希值H-i再用随机数位流填充至填满散列函数HFi的分组长度后,对填充完成的数据使用HFi作哈希变换,得到哈希值Hi
当循环次数i大于n时,跳出循环,哈希值Hn即是所求的随机替换表。
需要说明的是,通过加盐(salt)和多轮使用具有不同输出长度的散列函数变换后,逐次压缩散列函数输出的长度,既可以保证输出替换表的随机性、不可追溯性、和不可求逆性,能够保证多次使用同样被替换数据能够生成不同的替换表,也能通过自定义散列函数使用方法获得不同长度的替换表输出;不过,HFn的输出长度不宜过短,否则可能出现替换表重复、抗生日攻击能力较差的情形;为了防止利用统计学分布推测替换表所对应的被替换数据,重要的被替换数据应当由多组不同的、随机使用的替换表。
综上,本发明提供了一套能够实现基于分阶划层与密中密分发的混合加密解密系统和方法的解决方案,包括了一种混合加密方法,一种混合解密方法,一种针对混合加解密的不定长头部数据实现信息管理与签名校验方法,一种针对混合加解密密钥和证书的存储和管理方法,一种针对混合加解密的加密手段的管理方法,一种针对混合加密解密配合分布式密中密双层分发的运作、管理和保护的方法,一种实现上述功能的系统、设备、存储介质,以及一种制式哈希和替换表生成方法。
总体的实现流程是:在能够实现相关功能的设备、系统以及存储介质上,利用密钥和证书的存储和管理方法,通过混合加解密的加密手段的管理方法指导混合加密(H-加密),对明文进行加密,采用不定长头部数据实现封装和管理,在两次分布式分发接口公钥、完整公钥后,传输经混合加密和封装后的数据;同样地,接收经混合加密和封装后的数据后,根据已获得的完整公钥,对不定长头部数据解封后,利用密钥和证书的存储和管理方法,通过混合加解密的解密手段的管理方法指导混合解密(H-解密),还原出明文。
本发明的有益效果可以经由不同方面分别阐述。
本发明的第一方面、第二方面中的混合加密方法(H-加密方法)和混合解密方法(H-解密方法)使得加密过程能够自定义,通过划分阶进行多重加密增强了混合加密的破解复杂度,而通过划分层进行同阶不同密钥的分组加密保证了加密一阶总体时间复杂度的不变,配合分阶划层的加密思路,使得尽可能的减少时间复杂度的同时增强了破解复杂度,当使用对称式加密的时候尤为明显:破译者在多阶、层多组对称式密钥不可知的情况下,即使知道了加密所采用的阶、层安排方法与每阶、层所使用的加密算法,使用暴力完成破解的前提必须是完全正确的破解出了所有的对称式密钥(不可独立确定破译出密钥的正确性);其利用多组密钥、分阶划层、排列组合的方式,本质上增加了总密钥(所有密钥的和)的使用位长,使得破译者对特定位长密钥暴力破解时排列组合出可能情况的组合数大大增加,但在加密时处理的密钥长度仅是总密钥中的部分密钥,分层的过程使得加密时处理的明文长度远远小于使用密钥全部的组数,因此,尽可能的减少时间复杂度的同时增强了破解复杂度,有效地解决了以更低的加解密时间复杂度带来更高安全性的密码学技术的问题。同时,能够自定义加密过程可以有效的干扰破译者对具体加密方法的识别,经常变换加密所采用的阶、层安排方法与每阶、层所使用的加密算法、加密密钥,使得混合加密的过程更加具有随机性、隐蔽性,也使得混合加密的用途更加广泛。
本发明的第三方面、第四方面、第五方面中的不定长头部数据、密钥和证书的存储和管理方法、加密手段的管理方法能够为H-加密、H-解密过程提供必要的数据、提供方法指导,以及为加密后的数据提供封装以便识别、传输、处理,使得H-加解密方法的发明具有可操作性、易维护性、可变化性;同时,唯一编码、替换表等数据的准备为后续第六方面关于密中密双层分发的方法奠定了基础。
本发明的第六方面中的密中密双层分发的方法,使得真正参与加密的密钥或证书(即使是公钥)不会因配置文件的分发而被暴露于网络之中,破译者无法仅根据经封装的密文获得有关与加密相关的任何有效密钥,要想得到加密所需要的对称式密钥或非对称密钥中的公钥部分,破译者往往需要获取包含完整公钥的第二次密文分发,而第二次密文分发经过了更复杂、经专门优化的特定H-加密方法(理论复杂度与对密文使用暴力破解时的复杂度相当),包含多次混合的对称加密以及非对称加密,此外,在不使用网络进行第二次分发的情况下,破译者无从获得任何有关与加密相关的任何有效密钥,而由于H-混合加密方法的排列组合特性,暴力破解又是极复杂的,因此,密中密双层分发的方法能够大大降低破译者获取与加密相关有效密钥的可能性,反而,在(含有非对称加密时)获取到与加密相关的公钥时,由于根据公钥(往往具有很长的位长)获得私钥又是极其复杂的,因此在破译了第二次分发的内容后破译者也无法在短时间破译密文,种种因素使得密中密双层分发的方法能够极大为H-加密方法提供良好的分发特性,使得密钥在分发过程中受到保护,进一步增强加密的安全性;使用替换表代替明文写入不定长头部数据,则是从另一方面防止破译者获得与加密方法相关的其他信息,如H-加密中对阶、层的设定情况,每阶、层所选用的加密算法,每阶加密后填充情况等,破译者无法仅根据经封装的密文获得有关与加密相关的任何加密方法,在无法获得加密方法的情况下,破译者往往需要获取包含完整公钥的第二次密文分发,而第二次密文分发经过了更复杂、经专门优化的特定H-加密方法(理论复杂度与对密文使用暴力破解时的复杂度相当),包含多次混合的对称加密以及非对称加密,此外,在不使用网络进行第二次分发的情况下,破译者无从获得任何有关与加密相关的任何加密方法,同样由于H-混合加密方法的排列组合特性,暴力破解又是极复杂的,另外,由于随机替换表采用加盐(salt)处理,替换表具有无法追溯的抗逆哈希处理能力,因此,密中密双层分发的方法能够大大降低破译者获取与加密相关加密方法的可能性,使得加密方法在密文传输的过程中受到保护,进一步增强安全性;完整公钥(非接口公钥)的更新和分发的方法,使得用于加密的密钥和与加密方法相关的替换表能够及时更新,在原密钥具有安全风险时能够及时刷新,可自定义的更新方式能够最大化的使得更新的过程具有针对性(如,只更新对称式密钥部分),节约用于更新分发导致资源的浪费的同时也能进一步增强安全性;针对流式传输加密、封装和针对对称式加密反破译的优化根据具体使用场合的不同,在效率性、安全性两个方面对一般H-加密和一般密中密双层分发做了改进,使得前者能够适应流式传输中最大化利用传输带宽的特性,让传输更有效率,使得后者能够为加密数据提供防范部分破译的抗性,让加密更加安全,拓展了混合加密解决方案的适用范围,尝试建立了相关标准。
本发明的第七方面、第八方面、第九方面中的系统、介质、存储设备为以上第一至第六方面方法的执行提供了硬件和平台的支持,使得所发明的方法能够在现实中、产业里得到实用,将科学技术运用于信息安全的保障中,实现了从理论到实践的跨越。
本发明的第十方面中的制式哈希和随机替换表的生成方法满足了用于H-封装的相关数据的生成,前者的复杂性、可重复性和后者的随机性、(相对)唯一性能够最大化的保障加密方法在分发过程中受到保护,为高安全性解决方案的实现奠定了基础。
因此,本发明的有益效果在于提供了一种能够以更低的加解密时间复杂度带来更高安全性的密码学加密、编码、分发技术,并自主建立了加密、解密、封装、管理和传输的标准,有助于在当代互联网+时代进一步保障信息安全。
附图说明
为了更清楚的说明本发明采用的技术方案,下面结合附图进行进一步的说明。
显然,下面描述的一些附图仅是本发明的一些具体的实施例,对本领域普通技术人员来讲,在不付出创造性劳动的前提下,可以根据发明思想以及以下附图获得其他的附图。
图1是本发明中阶(step)的示意图;多次加密中,对消息的一次加密定义为进行了一阶的加密(encrypted a step),H-混合加密算法依赖多阶、多层的加密。
图2是本发明中层(stage)的示意图;多次加密中,对消息某一阶(step)的加密若需要分块,对每一块(block)消息中使用不同加密算法、不同密钥或不同加密手段进行加密操作的一个部分定义为一层,H-混合加密算法的每阶中支持多层加密。
图3是基于本发明第一方面以及实施例一,使用H-混合加密方法进行加密的实现流程图。
图4是基于本发明第一方面以及实施例一,以三阶(1,4,9)层为例,使用H-混合加密方法进行加密的过程示意图。
图5是基于本发明第二方面以及实施例二,使用H-混合解密方法进行解密的实现流程图。
图6是基于本发明第二方面以及实施例二,以三阶(1,4,9)层为例,使用H-解密加密方法进行解密的过程示意图。
图7是基于本发明第三方面以及实施例三,使用不定长头部数据封装格式的内容示意图。
图8是基于本发明第三方面以及实施例三,配合不定长头部数据的方法与接口的结构示意图。
图9是基于本发明第四方面以及实施例四,密钥和证书的数据库的数据结构的内容示意图。
图10是基于本发明第四方面以及实施例四,混合加解密密钥和证书的存储和管理方法与对应的接口的结构示意图。
图11是基于本发明第五方面以及实施例五,管理混合加解密加密手段的数据结构的内容示意图。
图12是基于本发明第五方面以及实施例五,写入不定长头部数据可选的H-模块的内容示意图。
图13是基于本发明第五方面以及实施例五,管理混合加解密加密手段的方法与对应的接口的结构示意图。
图14是基于本发明第六方面以及实施例六,实现分布式密中密双层分发的过程示意图。
图15是基于本发明第六方面以及实施例六,统筹地实现H-加密、密文的封装与分发的过程示意图。
图16是基于本发明第六方面以及实施例六,统筹地实现密文的接收、H-解密与解封的过程示意图。
图17是基于本发明第六方面以及实施例六,使用H-混合加密、混合解密方法实现的数字签名的实现流程图。
图18是基于本发明第六方面以及实施例六,针对流式传输不同步骤进行封装的差异比较图。
图19是基于本发明第七方面以及实施例七,一种能够执行本发明上述任何方面中任何有关于:混合加密解密(H-加密解密),不定长头部数据封装和解封,管理和存储密钥和证书,管理和存储H-加密方法,分布式密中密双层分发的运作、管理和保护工作系统的结构图。
图20是基于本发明第八方面以及实施例八,一种发送方设备、接收方设备或兼容发送和接收的设备的结构图。
图21是基于本发明第十方面以及实施例十,生成制式哈希的实现流程图。
图22是基于本发明第十方面以及实施例十,生成随机替换表的实现流程图。
具体实施方式
为了能够清晰地阐述本发明的目的、内部机理与实现过程,展现本发明的优势,下文中将结合本文附图对本发明的实施技术方案进行清楚、完整的表述。需要说明的是,所描述的实施例仅为本发明的一部分实施例,而不是全部实施例,基于本发明所描述的实施例,本领域的普通技术人员在无需创造性劳动的前提下所获得的所有实施例,都属于本发明的保护范围。
需要强调的是,以下所属具体实施方式中使用的伪代码计算机语言为C++语言,使用的操作系统为Windows系统,使用函数封装程序本体,因便于实现和表述所致,而不代表本发明保护的范围仅限于C++语言、Windows操作系统和以函数封装的实施例,在任何计算机语言、任何操作系统与任何形式下实现的基于本发明的任何实施例都属于本发明的保护范围。
具体实施方式的示例内容将展现十个不同的实施例,分别针对:H-混合加密方法,H-混合解密方法,混合加解密的不定长头部数据实现信息管理与签名校验方法,混合加解密密钥和证书的存储和管理方法,混合加解密的加密手段的管理方法,混合加密解密配合分布式密中密双层分发的运作、管理和保护的方法,实现上述功能的系统、设备、存储介质,以及制式哈希和替换表生成方法这十个不同方面进行具体实施方式的具体阐述。
实施例一
据图3,在解决混合加密方法(H-加密方法)问题上所采用的程序流程是从第一阶到最外阶m阶、每一阶内一块一块地、每一块中从第1层到第ni层一层一层加密,其一般形式的具体流程如下:
选定一个整数的阶数m,为每一阶i(1≤i≤m且i∈Z)选定一个层数ni(1≤i≤m且i∈Z),向量法记作n1 n2 … nm-1 nm,计算机中可以用包括int在内的整数数组表示为STAGE[m],每一个元素STAGE[k]作为每一阶的层数;
为每一阶i的每一层ni选定一种加密方法Func()和密钥Key,为简化起见,我们假设加密算法函数原型为void Func(unsigned char*plain,unsigned char*cipher),即两个参数中第一个参数传入输入吞吐量长度的待加密数据的地址,第二个参数保存经过加密后输出吞吐量长度的密文的地址,另外,对称式密钥和非对称密钥所有必要的元素均封装成为Key,并不用显式地传给加密算法函数;
循环:从第一阶i=1开始,逐阶地每阶进行加密,判断:
若该阶只有一层,则块大小block_size等于唯一一层的大小,即该层选用的加密算法的输入吞吐量input_size_of_Func_STEPi_STAGE1,明文长度Length_of_Plain除以块大小block_size得到块划分的数量Number_of_block,若非整除,则向上取整(为了应对长明文情况,明文长度Length_of_Plain和块划分的数量Number_of_block均推荐采用UINT64型),对非尾部的完整块,运用该层选定的加密方法Func_STEPi_STAGE1()对明文全文进行加密,若分块时不能整除,则当直到遇见第一个需要填充的层时,记录进行填充的层数(明文记录时为1),记录填充的体码规则或长度,然后对该层内容进行填充Padding_Func()并运用该层选定的加密方法Func_STEPi_STAGE1(),对该层一次加密吞吐量长度的内容进行加密,然后结束本阶的加密,并进行i自增;
若该阶有多层,则块大小block_size等于该阶所有层(1至ni层)大小之和,即block_size=input_size_of_Func_STEPi_STAGE1+…+input_size_of_Func_STEPi_STAGEni,明文长度Length_of_Plain除以块大小block_size得到块划分的数量Number_of_block,若非整除,则向上取整(为了应对长明文情况,明文长度Length_of_Plain和块划分的数量Number_of_block均推荐采用UINT64型),对非尾部的完整块,在块内按照层的划分,从第一块开始,依次对每一块内每一层(1至ni层)运用该层(j层)选定的加密方法Func_STEPi_STAGEj()对该层一次加密吞吐量长度的内容进行加密,完成某一块内的加密,依次使用同样的方法对下一非尾部的完整块进行加密处理,若存在余留明文长度小于块吞吐量长度时,即存在需要填充加密的情况时,在块内按照层的划分,先依次对每一不需填充的层(例如1至i层)运用该层选定的加密方法Func_STEPi_STAGEi()对该层一次加密吞吐量长度的内容进行加密,若分块时不能整除,则当直到遇见第一个需要填充的层时,不妨设为j层,记录进行填充的层数j,记录填充的体码规则或长度,然后对该层(j层)内容进行填充Padding_Func()并运用该层选定的加密方法Func_STEPi_STAGEj()对该层一次加密吞吐量长度的内容进行加密,然后结束本阶的加密,即使该分块的该层后还有其他层(即j<ni时),跳过,并进行i自增;
直至不满足循环条件i≤m,跳出循环;
加密完毕,i=m阶加密后的密文即为最终的密文。
将一般形式的H-混合加密的过程写作程序伪码,即:
Figure BDA0003777632010000301
Figure BDA0003777632010000311
Figure BDA0003777632010000321
为便于阐述其他实施例使用本实施例方法进行H-混合加密的过程,现将本实施例所示H-混合加密方法进行封装,成为Hybrid_Minus_Encrypt();函数,调用该函数意为使用本实施例方法进行H-混合加密。
需要特殊说明的是,该一般形式的H-混合加密方法在阶数m和每阶的层数ni选定在理论上是没有限制的,往往根据需要获得保护强度、密钥数量的承受能力、时间复杂度等需要自行确定,通常阶数不超过5阶、每阶层数不超过9层;在阶数不变的情况下增加层数可以在不增加时间复杂度的情况下增加复杂度和安全性,但盲目地增加某阶的层数可能会导致待加密数据小于块大小而无法完整利用每一层加密带来的保护作用,在此情况下需要增加阶数以获得进一步的安全作用,增加阶数则可以有效地防止部分破译的可能性,而为了使得H-混合加密某阶的某层对前一阶某层加密内容具有混淆和掩蔽作用,使得跨阶破译层不能得到部分明文信息(破译了不同阶对应位置的层,如破译了全部阶的第一层,希望获得对应于第一层所有密文内容的明文),除了增加阶数、使用本发明发明内容第六方面针对对称式加密反破译的优化外,使不同阶对应层的层大小(加密吞吐量)不对齐通常也是建议的选择,譬如第一阶第一层选用层大小为256-11bytes(PCKS 1.5填充模式下)的RSA 2048,第二阶第一层选择层大小为16bytes的AES 256是建议的处理方式;
H-混合加密在每阶、每层中,按照相应的P2P、P2N、N2P要求,可以选择多种加密方法,包括各种对称式加密方法、非对称式加密方法;在发明之初,现有的对称式加密方法和非对称式加密方法已呈现出各有利弊局面,且各有其最佳应用条件,同样地,在密钥不通过网络传输的情况下使用不使用网络传输密钥的对称式加密方法,或使用本发明发明内容或下述其他实施例中涉及的数据库存储密钥或证书、但使用物理传输配置文件的情况,是H-混合加密方法在任何情况下最安全的应用实例(如用户A和用户B可以通过物理手段传输密钥,而加密密文时通过对称式加密,并使用互联网传输密文):破译者在多阶、层多组对称式密钥不可知的情况下,即使知道了加密所采用的阶、层安排方法与每阶、层所使用的加密算法,使用暴力完成破解的前提必须是完全正确的破解出了所有的对称式密钥(不可独立确定破译出密钥的正确性),利用多组密钥、分阶划层、排列组合的方式,使得破译者对特定位长密钥暴力破解时排列组合出可能情况的组合数大大增加,因此,因无从下手导致的暴力破解组合数增加是使得H-混合加密方法更加安全的根本原因,配合多阶防止部分破译的效果(难以判定破译出的内容是否为真正的明文),使得H-在减少时间复杂度的同时拥有极强的破解复杂度;
但通常地,仅仅使用不使用网络传输密钥的对称式加密方法是不符合现代互联网信息传输现状的(用户A和用户B或用户与服务器仅通过互联网链接,缺少安全的信道传输对称式密钥),因此我们支持使用多种非对称加密方法,应对需要使用网络传输密钥(公钥)的实例;但使用非对称加密方法加密、需要在网络上传输公钥的情况,则未能充分利用H-混合加密方法利用排列组合的思路增强破译复杂度,由于根据每一个公钥计算出对应私钥的过程是独立的,且可以独立地确定破译出私钥的正确性,其安全性完全依赖与所使用公钥对应的非对称加密的强度;为使得破译复杂度进一步增强,需要配合本发明发明内容第六方面或下述实施例六中涉及的密中密双层分发机制;
而使用本发明发明内容第三方面或下述实施例三中涉及的数据库中所存储对称式密钥(在使用接口公钥加密、通过网络传输配置文件的情况下),使用在网络上传输密钥的对称式加密方法加密则是在配置文件未被破译情况下相对安全的应用实例,其安全性仍然依赖与接口公钥对应的非对称加密的强度,在一定时间内可以被认为是安全的;而相比采用数据库中非对称式密钥、使用非对称加密方法的实例,由于根据每一个公钥计算出对应私钥的过程依然是复杂的,采用数据库中非对称式密钥、使用非对称加密方法加密的实例则安全于采用数据库中所存储对称式密钥、使用在网络上传输密钥的对称式加密方法加密的实例;由于非对称加密往往需要消耗极大的时间复杂度,采用(非对称)密钥交换(生成对称式密钥)进行对称式加密的方法往往能在此种情况下平衡安全性与时间复杂度;
尽管运用对称式加密或非对称加密具有不同的安全特性,在应用于不同场景和不同用途时,我们针对待传输消息每阶每层所选定加密方法做出了限制,论证部分详见本发明发明内容中第一方面,结论如下:当应用于P2N场景时,对待传输消息的任意阶、任意层使用的加密方法被限制在仅能够使用任意对称式加密方法,不允许对待传输消息的任意阶、任意层使用任意非对称加密方法;当应用于N2P场景时,对待传输消息的任意阶、任意层使用的加密方法被限制在仅能够使用任意对称式加密方法,利用接收方公钥加密的非对称加密方法,以及利用接收方公钥加密对称密钥的加密方法,不允许对待传输消息的任意阶、任意层使用利用发送方私钥加密的非对称加密方法以及利用密钥交换进行对称式加密方法;当应用于P2P场景时,对待传输消息的任意阶、任意层使用的加密方法被允许使用任意对称式加密方法与任意非对称加密方法,不存在实际限制;
此外,虽然在上述伪代码实现中,我们以内存和指针的方式完成了对每阶、每层的加密内容的存储,在实际加密大量数据、且本地磁盘文件读写是安全的情况下,使用Windows API等接口中文件系统接口的功能对磁盘文件进行读写可以减少程序对内存的占用。
需要进一步特殊说明的是,在实际解决方案中,选定阶数、选定层数、选定加密方法、选定密钥、存储填充情况等过程都依赖于本发明发明内容第四方面、第五方面和对应的实施例四、实施例五中混合加解密密钥和证书的存储和管理方法以及混合加解密的加密手段管理方法的相应选择、设置、数据等,不需要手动选择和设置,本实施例仅就H-混合加密方法的完整操作流程对此做出简要的介绍。
另外,据图4,我们给出一种H-混合加密方法的实例化实现,即分3阶,每一阶分别为1、4、9层的H-混合加密方法的实现(实际上,按照应用的需要不同,加密算法应侧重选择对称式加密算法或非对称式加密算法),为简化起见,用于形象地展示实际应用中H-混合解密的细节,其原理与上述过程完全相同,由篇幅所限,在此不再赘述。
实施例二
据图5,在解决混合解密方法(H-解密方法)问题上所采用的程序流程是从最外阶m阶到第一阶、每一阶内一块一块地、每一块中从第1层到第ni层一层一层解密,其一般形式的具体流程如下:
获取所选定的阶数m,以及每一阶i(1≤i≤m且i∈Z)选定的层数ni(1≤i≤m且i∈Z),向量法记作n1 n2 … nm-1 nm,计算机中可以用包括int在内的整数数组表示为STAGE[m],每一个元素STAGE[K]作为每一阶的层数;
获取每一阶i的每一层ni所选定的加密方法和密钥,得到相应的解密方法Func()和密钥Key,为简化起见,我们假设解密算法函数原型为void Func(unsigned char*cipher,unsigned char*plain),即两个参数中第一个参数传入输入吞吐量长度的待解密数据的地址,第二个参数保存经过解密后输出吞吐量长度的明文的地址,另外,对称式密钥和非对称密钥所有必要的元素均封装成为Key,并不用显式地传给解密算法函数;
循环:从最外阶i=m开始,逐阶地每阶进行解密,判断:
若该阶只有一层,则块大小block_size等于唯一一层的大小,即该层选用的解密算法的输入吞吐量input_size_of_Func_STEPi_STAGE1,密文长度Length_of_Cipher除以块大小block_size得到块划分的数量Number_of_block,在只有一层的情况下,块数一定是整数(为了应对长密文情况,密文长度Length_of_Cipher和块划分的数量Number_of_block均推荐采用UINT64型),对非尾部的完整块,运用该层选定的解密方法Func_STEPi_STAGE1()对密文全文进行解密,直到遇见第一个需要去填充的层时,获取已记录的填充的体码规则或长度,运用该层选定的解密方法Func_STEPi_STAGE1(),对该层一次解密吞吐量长度的内容进行解密,然后对该层内容进行去填充DePadding_Func(),然后结束本阶的加密,并进行i自减;
若该阶有多层,则块大小block_size等于该阶所有层(1至ni层)大小之和,即block_size=input_size_of_Func_STEPi_STAGE1+…+input_size_of_Func_STEPi_STAGEni,密文长度Length_of_Cipher除以块大小block_size得到块划分的数量Number_of_block,若非整除,则向上取整(为了应对长密文情况,密文长度Length_of_Cipher和块划分的数量Number_of_block均推荐采用UINT64型),对非尾部的完整块,在块内按照层的划分,从第一块开始,依次对每一块内每一层(1至ni层)运用该层(j层)选定的解密方法Func_STEPi_STAGEj()对该层一次解密吞吐量长度的内容进行解密,完成某一块内的解密,依次使用同样的方法对下一非尾部的完整块进行加密处理,直到遇见最后一个分块时,获取已记录的进行填充的层数,获取已记录的填充的体码规则或长度,先依次对每一不需填充的层运用该层选定的解密方法对该层一次解密吞吐量长度的内容进行解密,直到遇见已记录的进行填充的层(j层)时,运用该层选定的解密方法Func_STEPi_STAGEj()对该层一次解密吞吐量长度的内容进行解密,然后结束本阶的解密,即使该分块的该层(j层)后还有其他层(即j<ni时),跳过,并进行i自减;
直至不满足循环条件i≥1,跳出循环;
解密完毕,i=1阶解密后的明文即为最终的明文。
将一般形式的H-混合解密的过程写作程序伪码,即:
Figure BDA0003777632010000351
Figure BDA0003777632010000361
Figure BDA0003777632010000371
为便于阐述其他实施例使用本实施例方法进行H-混合解密的过程,现将本实施例所示H-混合解密方法进行封装,成为Hybrid_Minus_Decrypt();函数,调用该函数意为使用本实施例方法进行H-混合解密。
需要特殊说明的是,在应用于不同场景和不同用途时,我们针对待传输消息每阶每层所选定加密方法做出了限制,因此,对应使用的解密方法也应当局限于对应的方法,详见本发明发明内容中第一方面和上述实施例一,在此不再赘述;
实际使用中需要一定的报错机制,例如获取到所选定的阶数、所选定的层数出错,所选定的密钥出错等,用于提升实际解密效率和改善用户使用体验,但不属于本发明内容,因此暂不展开讨论;
此外,虽然在上述伪代码实现中,我们以内存和指针的方式完成了对每阶、每层的解密后内容的存储,在实际加密大量数据、且本地磁盘文件读写是安全的情况下,使用Windows API等接口中文件系统接口的功能对磁盘文件进行读写可以减少程序对内存的占用。
需要进一步特殊说明的是,在实际解决方案中,获取所选定的阶数、所选定的层数、所选定的解密方法、所选定的密钥、存储的填充情况等过程都依赖于本发明发明内容第四方面、第五方面和对应的实施例四、实施例五中混合加解密密钥和证书的存储和管理方法以及混合加解密的加密手段管理方法的相应选择、设置、数据等,本实施例仅就H-混合解密方法的完整操作流程对此做出简要的介绍。
另外,据图6,我们给出一种H-混合解密方法的实例化实现,即分3阶,每一阶分别为1、4、9层的H-混合解密方法的实现,用于形象地展示实际应用中H-混合解密的细节,其原理与上述过程完全相同,由篇幅所限,在此不再赘述。
实施例三
据图7、图8,在解决混合加解密的不定长头部数据实现信息管理与签名校验方法问题上,本实施例提供一种不定长头部数据的封装格式,用于各类密文封装、含密钥和证书的配置信息封装等;此外,本实施例提供一种使用不定长头部数据封装信息的方法和解封信息的方法,用于封装数据和解封数据,所使用的具体方法依次如下:
针对不定长头部数据的封装格式,划分不定长头部数据分为三个区域,依次为:内容域、校验域、分割域;内容域写入所封装数据的基本信息、加密信息和校验信息等,校验域支持散列函数和数字签名工具,用于校验内容域信息的完整性和来源的真实性,分割域用于提示不定长头部数据的结束,进入所封装的有效数据;
区分不定长头部数据的两种形式,依次为:可视化形(长形)、简形(短形);可视化形(长形)具体地显示所封装内容尤其是所封装内容对应标准说明符的可视化形式,用于开发和调试阶段寻找漏洞、定位错误信息,具有更长的数据体量,简形(短形)以抽象的符号显示所封装内容尤其是所封装内容对应标准说明符的符号形式,用于实际应用中的封装,具有更短的数据体量和更高的空间利用率;
不定长头部数据的内容域和校验域中,不同信息以模块的形式存在,模块内具有三类区域,依次为:标准说明符域、体码规则域、模块信息域;标准说明符域不仅说明该模块为何种模块,在可选的标准说明符下同时可以显示所选择的内容,体码规则域通常用于替换存储加解密密钥以及散列函数的种类和方法,一般为四位数字,模块信息域则存储无法使用简单替换存储的完整信息,如哈希值等;
具体地,针对需要写入的格式,定义如下具有作用的字符或字符串(其中括号外对应长形下字符的形式,括号内对应短形下字符的形式):
内容域左边界符:‘<’(‘<’),ASCII码为60;内容域右边界符:‘>’(‘>’),ASCII码为62;用于标识内容域的左右边界;
模块间分割符:‘-’(短形不存在),ASCII码为45;用于长形模块间的区分;
模块左边界符:‘[’(短形不存在),ASCII码为91;模块域右边界符:‘]’(短形不存在),ASCII码为93;用于长形标识模块的左右边界;
模块标准说明符域与体码规则域分割符:‘:’(‘:’),ASCII码为58;用于模块内区分标准说明符域与体码规则域;
体码规则域与信息域分割符:‘:’(‘:’),ASCII码为58;用于模块内区分体码规则域与信息域;
对应模块化的形式,内容域必要的模块有:
识别使用本发明第三方面的不定长头部数据标识模块,用于标志使用了本发明的不定长头部数据进行封装,不含边界符,仅包括固定的标准说明符域;其中不定长头部数据标识模块的标准说明符为:“DOFMULTIUSAGESAFEHEAD”(“DOFS”);
识别使用本发明第三方面的不定长头部信息的版本号模块,用于指示封装不定长头部数据的版本信息,用于版本识别、兼容和排斥,仅限长形含边界符,仅包括固定的标准说明符域和由6位以ASCII码组成的数字版本号组成的模块信息域;其中版本号模块的标准说明符为:“HEAD_BUILT”(“%%0”),6位数字版本号为软件更新的2位年编号、2位月编号、2位日编号组成,如210819;
所封装信息使用的加密情况的说明模块,用于初步识别不定长头部数据封装数据的明文或加密形态,定位所使用的加密方法或H-混合加密方法,仅限长形含边界符,仅包括可选的标准说明符域;其中加密情况的说明模块的标准说明符的长形由预设支持的加密算法组成,短形由顺序排列的符号组成,如:“PLAIN”(“%00”)、“RSA_PUB_PRI”(“%01”)、“RSA_PRI_PUB”(“%02”)、“H_MINUS”(“%03”);
所封装信息的类型说明模块,用于识别不定长头部数据封装数据的类型,如密文、证书、配置文件(接口公钥、完整公钥……)、二进制优化类型、文本优化类型等,仅限长形含边界符,仅包括可选的标准说明符域;其中类型说明模块的标准说明符的长形由预设支持的封装数据结构组成,短形由顺序排列的符号组成,如:“CIPHER”(“%10”)、“PUB_CERT”(“%11”)、“PRI_CERT”(“%12”)、“CONFIG”(“%13”)、“BIN”(“%14”)、“TEXT”(“%15”);
所采用加密算法的方法说明模块,当不定长头部数据所封装数据是密文形式时,用于在采用非H-加密方法时识别其所采用的加密算法,仅限长形含边界符,仅包括固定的标准说明符域和由4位以ASCII码组成的加密算法体码规则,体码规则唯一地对应一种具体的加密算法;其中加密算法的方法说明模块的标准说明符为:“ALG_PATH”(“%20”),4位以ASCII码组成的加密算法体码规则以不定长头部数据软件具体版本的设定为限,以支持的加密算法使用体码规则替代,如可将AES-128使用“0040”代替、AES-256使用“0044”代替;
所采用填充的方法说明模块,当不定长头部数据所封装数据是密文形式时,用于在采用非H-加密方法时识别其所采用的加密填充形式,仅限长形含边界符,仅包括固定的标准说明符域和由4位以ASCII码组成的填充体码规则或填充长度,在一种具体的加密算法下,体码规则唯一地对应一种填充的形式,当无法使用填充形式标识填充情况,必须使用填充长度表示时,允许使用4位以ASCII码组成的填充长度;其中填充的方法说明模块的标准说明符为:“PADDING”(“%30”),4位以ASCII码组成的填充体码规则以不定长头部数据软件具体版本的设定为限,以加密算法支持的填充模式使用体码规则替代,如可定义RSA非对称加密下使用PCKS 1.5的填充形式的体码规则为“0001”;
所封装信息内容的哈希管理模块,用于存储不定长头部数据所封装数据的哈希值,进而对数据的完整性进行校验,仅限长形含边界符,包括固定的标准说明符域和存储哈希值的模块信息域;其中所封装信息内容的哈希管理模块的标准说明符为:“CONTEXT_HASH”(“%40”),模块信息域中明文存储使用与校验域相同的散列函数对不定长头部数据所封装数据求哈希后的哈希值;
所采用加密方法的哈希管理模块等,当不定长头部数据所封装数据是密文形式时,用于存储加密不定长头部数据所封装数据的密钥或证书的哈希值,当选择H-混合加密算法和H-模块时,存储H-模块内容的哈希值,进而对加密方法的完整性进行校验,仅限长形含边界符,包括固定的标准说明符域和存储哈希值的模块信息域;其中所采用加密方法的哈希管理模块的标准说明符为:“KEY_HASH”(“%50”),模块信息域中明文存储使用与校验域相同的散列函数对密钥、证书或H-模块内容求哈希后的哈希值;
可选的模块有:
H-加密手段管理内容模块(简称为:H-模块),当不定长头部数据所封装数据是与H-混合加密有关的数据,如使用H-混合加密的密文、配合H-混合加密的接口公钥、配合H-混合加密的完整公钥、配合H-混合加密的个人密钥库等时,选择使用H-模块,仅限长形含边界符,包括固定的标准说明符域和存储管理混合加解密加密手段数据结构的导出数据的模块信息域;其中H-加密手段管理内容模块的标准说明符为:“H_MINUS”(“%/0”),模块信息域中存储本发明第五方面和实施例5中导出的H-模块内容;
非H-加密手段管理模块(简称为:非H-模块),当不定长头部数据所封装数据未采用H-混合加密时,可选地,当使用本发明第四方面和实施例四中针对混合加解密密钥和证书的存储和管理方法中个人密钥库中的密钥或证书加密时,用于以替换表的形式存储加密所使用的密钥以及加密方法,仅限长形含边界符,包括固定的标准说明符域和存储非H-加密手段的模块信息域;其中非H-加密手段管理模块的标准说明符为:“ECP_H_M”(“%/1”),模块信息域中分别存储加密所使用的本发明第四方面和实施例四中针对混合加解密密钥和证书的存储和管理方法中个人密钥库的最新修改的唯一编码、以替换表形式记录的所使用母密钥或证书的行列、组、母密钥或证书使用方法、子密钥或证书的行列、组;
备注内容模块,当需要写入备注信息时,用于加密者根据需要写入其他备注信息,当选择流式传输中,可用于添加随机数位流实现长度对齐,当选择使用临时对称式密钥时,可用于存储加密后的临时密钥,仅限长形含边界符,包括固定的标准说明符域和备注内容模块的模块信息域;其中备注内容模块的标准说明符为:“EX_NOTE”(“%/2”),模块信息域中可根据需要存储其他备注信息,或配合本发明第六方面和实施例六写入随机数位流实现流式传输长度对齐、写入加密后的临时密钥以配合临时密钥的使用;
流式传输管理模块,当配合本发明第六方面和实施例六的相关内容选择流式传输时,用于传输流式传输所必要的状态信息和判定信息,仅限长形含边界符,包括固定的标准说明符域、由4位以ASCII码组成的流式状态体码规则、以及流式传输管理模块的模块信息域;其中流式传输管理模块的标准说明符为:“STREAM”(“%/3”),4位以ASCII码组成的流式状态体码规则则代表不同的流式传输状态,可简单定义为:首(“0001”)、尾(“0002”),握手步骤(“0010”)、通信步骤(“0020”)、数据的首次传输步骤(“0030”)、数据的接续传输(“0040”)、数据的修补传输(“0050”),步骤和首、尾的体码规则可以以数字相加运算得到复合解,如数据的接续传输步骤+尾为“0042”,数据的修补传输步骤+尾为“0052”,流式传输管理模块的模块信息域分别存储上一次流的唯一编码和本次流的唯一编码(本次流的唯一编码同时可作为下一次流的“上一次流的唯一编码”),用于实现流式传输的分块接续性;
对应模块化的形式,校验域仅包含对内容域所有内容作哈希或进行数字签名的哈希管理模块,即:
内容域哈希管理模块,用于校验内容域信息的完整性和来源的真实性(来源主体校验),支持散列函数和数字签名,仅限长形含边界符,包括可选的标准说明符域、由4位以ASCII码组成的哈希体码规则、(可选地)由4位以ASCII码组成的数字签名加密算法体码规则、以及内容域哈希管理模块信息域;其中内容域哈希管理模块的标准说明符长形由仅哈希、支持的数字签名方法组成,短形由顺序排列的符号组成,如:“HASH_ONLY”(“%?0”)、“SIGN_RSA”(“%?1”)、“SIGN_DSA”(“%?2”)、“SIGN_ECC”(“%?3”)、“SIGN_H_M”(“%?4”),4位以ASCII码组成的哈希体码规则以不定长头部数据软件具体版本的设定为限,以支持的散列函数使用体码规则替代,如可将SHA-1使用“0160”代替、SHA-256使用“0256”代替、SHA-512使用“0512”代替等,(可选的)4位以ASCII码组成的数字签名加密算法体码规则以不定长头部数据软件具体版本的设定为限,以支持数字签名的的加密算法使用体码规则替代,如可将RSA3072使用“0018”代替、RSA4096使用“0020”代替等,模块信息域则存储对内容域所有内容使用选定的散列函数作哈希后的哈希值,当使用数字签名时,存储数字签名对哈希值签名后的签名信息;需要注意的是,数字签名的选择受到加密所使用的场景和用途限制,在本发明发明内容第六方面已经给出相关论述,现仅重申结论:只有P2P、P2N模式支持在不定长头部数据中使用数字签名功能;
对应模块化的形式,分割域仅包含用于提示不定长头部数据的结束的模块用于结束整个不定长头部数据,之后进入有效信息不包含边界符,仅包含分割域符,即:“====!!!!”(“====!!!!”);
因此,在不考虑实际运用的情形下,显示全部模块的不定长头部数据的形式可以被表示为如下:
可视化形(长形):<DOFMULTIUSAGESAFEHEAD-[HEAD_BUILT:***六位版本号***]-[***加密方法说明符***]-[***类型说明符***]-[ALG_PATH:**四位加密算法体码规则**]-[PADDING:**四位填充体码规则**]-[CONTEXT_HASH:*****封装信息内容的哈希值*****]-[KEY_HASH:*****加密方法的哈希值*****]-[H_MINUS:*****H-模块内容*****]-[ECP_H_M:***密钥库的唯一编码***:****密钥和方法替换表****]-[EX_NOTE:****备注内容****]-[STREAM,**四位状态体码规则**:****上次流的唯一编码****:****本次流的唯一编码****]>[***内容域哈希说明符***,**四位哈希体码规则**,**四位数字签名算法体码规则**:*****内容域的哈希值或签名内容*****]====!!!!
简形(短形):DOFS%%0:***六位版本号***%0*%1*%20:**四位加密算法体码规则**%30:**四位填充体码规则**%40:*****封装信息内容的哈希值*****%50:*****加密方法的哈希值*****%/0:*****H-模块内容*****%/1:***密钥库的唯一编码***:****密钥和方法替换表****%/2:****备注内容****%/3,**四位状态体码规则**:****上次流的唯一编码****:****本次流的唯一编码****%?*,**四位哈希体码规则**,**四位数字签名算法体码规则**:*****内容域的哈希值或签名内容*****====!!!!
通常地,这些模块不总是需要同时具有,在选择H-模块或选择流式传输模块时会缺省部分必要的模块,另外,可选的模块也是部分互斥的,例如H-模块和非H-模块;不同情况下对模块的依赖在本发明发明内容第六方面已经给出相关论述,在此不再赘述,不过需要说明的是,不使用的模块可以直接缺省(不写入),而不是不写入内容,以提高封装信息的空间利用率;
另外,我们提供一组实验中实例化的不定长头部数据的内容,该实例未使用任何可选模块:
可视化形(长形)的实例:<DOFMULTIUSAGESAFEHEAD-[HEAD_BUILT:210719]-[RSA_PUB_PRI]-[CIPHER]-[ALG_PATH:0008]-[PADDING:0000]-[CONTEXT_HASH:CF02A41447FEA4B8C1CB9D645E67B3E0]-[KEY_HASH:765648A2C60A81C2961343DCAD0C0331]>[HASH_ONLY,0128:F81F0162157D99C755EC1C162777ECC1]====!!!!
简形(短形)的实例:DOFS%%0:210719%01%15%20:0008%35:0000%40:CF02A41447FEA4B8C1CB9D645E67B3E0%50:765648A2C60A81C2961343DCAD0C0331%?0,0128:42E09A1D7C3AA199F6D8CE046A326E93====!!!!
针对使用不定长头部数据封装信息的方法,一般首先选择相应的模块,运算和生成所有模块的信息后,写入被封装数据的头部预留的空间(需要预运算以预留空间),完成封装,其一般形式的具体流程如下:
根据需要封装的信息与加密所涉及的方法,根据用途选择所需要使用的内容域中的必要的模块,根据选择选择所需要使用的内容域中的可选的模块,获取所选模块中需要的数据(如版本号、所封装信息的加密情况、所封装信息的类型等),并完成对所选模块中需要生成的数据进行数据生成(如将所封装信息的加密情况转换为标准说明符Encrypt_Condition对应的可选选项、将所封装信息的类型转换为标准说明符Data_Type对应的可选选项等),并依次计算所封装密文和加密方法(密钥、证书或H-模块内容)的哈希值,做好写入准备;
进行预运算,计算出预留头部的空间;
在头部预留的空间内,根据实际需要写入的内容,依次写入内容域中需要写入的模块,包括:不定长头部信息的标识模块、版本号模块、加密情况的说明模块、类型说明模块、加密算法的方法说明模块、填充的方法说明模块、所封装信息内容的哈希管理模块、所采用加密方法的哈希管理模块;按照选择,可选地写入可选的H-加密手段管理内容模块、非H-加密手段管理模块、备注内容模块、流式传输管理模块等,至此完成内容域的写入;
对内容域的全部内容以所选择散列函数的方法作哈希,可选地对哈希进行数字签名,将哈希值或签名写入校验域;
写入分割域的内容,完成对数据的封装。
将一般形式的使用不定长头部数据封装信息的过程简化后写作程序伪码,即:
Figure BDA0003777632010000411
Figure BDA0003777632010000421
Figure BDA0003777632010000431
为便于阐述其他实施例使用本实施例方法进行不定长头部数据封装的过程,现将本实施例所示的使用不定长头部数据进行封装的方法进行封装,成为Head_Package();函数,调用该函数意为使用本实施例方法使用不定长头部数据对信息进行封装。
需要注意的是,由于不定长头部数据各模块涉及不同运用情况下选择与不选择的问题、选择的互斥问题、信息传输与保存问题、选择和实际写入差异问题、短形长形区别写入问题、不合规检测问题等,实际使用不定长头部数据封装信息的过程十分复杂,由于篇幅限制,本文经过简化的程序伪码在不失一般性的同时对该过程进行了简要的描述,可以起到介绍说明的作用,尽管如此,该程序伪码在许多方面的表述仍然不够严谨,望知悉;
需要特殊说明的是,不定长头部数据理论上没有形式、长度和规格限制;不过在实际应用中,为了便于识别模块中的模块信息域中的信息,为模块信息域内数据的编码形式需要进行限制,通常限制为16进制字符编码(不允许其他特殊的编码影响模块的识别),在其他的情况下,拓展至Base64编码亦是允许的;为了最大化利用内存,并保障所需要数据完整的存储,通常需要根据内容量较大的模块限制,对不定长头部数据的长度作以限制,经实验,H-模块通常是内容量较大的模块,完整的情况下可达到KB级,因此不定长头部数据的长度应至少达到KB级,考虑到可能的数字签名内容,通常地,4KB以上的长度即可满足一般需要。
针对解封不定长头部数据所封装信息的方法,一般首先使用标识模块识别不定长头部数据,若识别到标识模块,读取所含有的模块,导出模块中与加密和内容相关的信息后,分别对加密方法、所封装密文进行哈希校验,对内容域进行哈希校验和可选的数字签名校验,全部通过校验后还原加密所涉及的方法,其一般形式的具体流程如下:
使用标识模块识别不定长头部数据,若识别到标识模块,依次读取内容域中的模块,即不定长头部信息的标识模块、版本号模块、加密情况的说明模块、类型说明模块、加密算法的方法说明模块、填充的方法说明模块、所封装信息内容的哈希管理模块、所采用加密方法的哈希管理模块;按照提供的可选模块,读取存在的可选模块,包括:H-加密手段管理内容模块、非H-加密手段管理模块、备注内容模块、流式传输管理模块等;至此完成内容域的读取;
读取校验域中散列函数和可选的数字签名加密算法的体码规则,还原所使用散列函数的方法和可选的数字签名的加密算法,读取信息域中的哈希值或经数字签名后的哈希值,如选择了数字签名则需要进行签名解密Resign_Sigunature_Rule(),得到内容域的哈希明文;
进行哈希校验工作,根据不定长头部数据对封装的信息进行完整性校验(比较计算出的哈希与模块中的哈希是否相同)、根据不定长头部数据对封装的信息使用的加密方法(密钥、证书或H-模块内容)进行完整性校验(比较计算出的哈希与模块中的哈希是否相同)、根据内容域的哈希明文对不定长头部数据的内容域进行完整性校验(比较计算出的哈希与模块中的哈希是否相同);
进行还原加密方法的工作,根据不定长头部数据中关于加密方法的信息,导出并生成相应的加密所涉及的方法(需要依托本发明其他方面完成,如依托本发明第五方面关于混合加密的加密手段的管理方法);
校验和生成通过,完成对数据的解封。
将一般形式的解封不定长头部数据所封装信息过程简化后写作程序伪码,即:
Figure BDA0003777632010000432
Figure BDA0003777632010000441
Figure BDA0003777632010000451
为便于阐述其他实施例使用本实施例方法进行不定长头部数据解封的过程,现将本实施例所示的使用不定长头部数据进行解封的方法进行封装,成为Head_DePackage();函数,调用该函数意为使用本实施例方法对使用不定长头部数据的信息进行解封。
需要注意的是,由于不定长头部数据各模块涉及不同运用情况下选择与不选择的问题、选择的互斥问题、信息传输与保存问题、选择和实际写入差异问题、短形长形区别写入问题、不合规检测问题等,实际法对使用不定长头部数据的信息进行解封的过程十分复杂,由于篇幅限制,本文经过简化的程序伪码在不失一般性的同时对该过程进行了简要的描述,可以起到介绍说明的作用,尽管如此,该程序伪码在许多方面的表述仍然不够严谨,望知悉;
此外,据图8,本实施例中,对使用不定长头部数据进行封装、解封的全部方法可以封装成为一个接口,通过调用该接口,可以对经过加密的数据等使用不定长头部数据进行封装,得到经过封装的数据;同时,通过调用该接口,可以对经过封装的数据使用不定长头部数据进行封装,得到脱去封装的数据;配合本发明第五方面和实施例五中导入H-模块和导出H-模块的接口,可以进一步实现存储加密方法、导出并生成相应的加密所涉及的方法等功能。
实施例四
据图9、图10,在解决混合加解密密钥和证书的存储和管理方法的问题上,本实施例提供一种针对混合加解密密钥和证书的存储和管理的数据结构,用于存储用于H-混合加解密、密中密双层分发所需要的密钥、证书、替换表等信息;此外,本实施例提供一种与密钥和证书的数据库的数据结构相关的管理方法的方法,用于初始化、生成、修改、校验数据结构中的数据,能将数据结构中的数据进行本地文件的写入,保存成磁盘文件形式,并能够读取磁盘文件中写入的数据结构,重新生成数据结构,所使用的具体方法依次如下:
针对混合加解密密钥和证书的存储和管理的数据结构,本实施例命名其为classKey_Cert_Series,其具体数据成员的内容和形式可参考如下:
按照行、列存储的密钥或证书的存储情况,用于标注存储密钥或证书的三维数组的哪些位置存储由相应的密钥或证书;按照行、列存储的密钥或证书的存储情况通常以二维数组来实现,如bool Series_Used[m][n];,m、n分别表示行、列的预留长度,按照前期实验的结果,可以划分11行(1行用于接口密钥、1行用于数字签名、9行用于加密)、137列(体码规则从0排列至136),即建立bool Series_Used[11][137];,通常以bool形式的true表示该行、列存储有密钥或证书,以bool形式的false表示该行、列未存储密钥或证书;
按照行、列存储的密钥或证书的最新一次修改情况,用于标注存储密钥或证书的三维数组的哪些位置是最新一次更新时修改的,可用于传输与更新完整公钥时仅传输和修改经过更改的完整公钥;按照行、列存储的密钥或证书的最新一次修改情况通常以二维数组来实现,如bool Series_Changed[m][n];,m、n同样分别表示行、列的预留长度,以之前的举例继续为例,可以建立bool Series_Changed[11][137];,通常以bool形式的true表示该行、列的密钥或证书是最新一次修改的,以bool形式的false表示该行、列的密钥或证书不是最新一次修改的;
按照行、列、组存储对应的密钥或证书,用于存储密钥或证书的内容,通常以明文存储,仅在行、列相应位置具有密钥或证书的位置存储,否则缺省;按照行、列、组存储对应的密钥或证书通常以三维数组来实现,如unsigned char Key_Cert[m][n][length];,m、n分别标识行、列的预留长度,length表示对密钥、证书内容预留的长度,由于按照体码规则进行列的排列,因此,每一列中存储的密钥或证书都是应用于同一加密方法的,且具有相同的长度,又由于不同的组在同一列中连续写入,因此,length预留的长度应当足够长,通常需要KB级别的长度,以之前的举例继续为例,可以建立unsigned char Key_Cert[11][137][65536];;然而由于所需要预留的总空间往往较大,其中不存储密钥或证书的空间可能会被浪费,为了最大化利用空间,在C++环境下可以使用动态分配的形式建立此三维数组:unsigned char*Key_Cert[11][137];,此时的数组仅有指针,需要存储时,为所需要存储的i行j列动态分配:Key_Cert[i][j]=new unsigned char[length];,以创建空间,以达到最大化利用空间的目的;三维数组中存储的密钥或证书依赖外部输入或生成;
用于混合加解密行、列中密钥或证书内容的替换表,用于在不定长头部数据H-模块中以替换表的形式说明混合加密采用了何行、何列的密钥或证书,通常采用随机生成固定长度的哈希值生成替换表,仅在行、列相应位置具有密钥或证书对应的位置存储(否则缺省),配合密中密双层分发,使得加密选用的密钥或证书具有隐蔽性,;用于混合加解密行、列中密钥或证书内容的替换表通常以三维数组来实现,如unsigned char Key_Cert_Substitution[m][n][static_length];,m、n分别标识行、列的预留长度,static_length表示所使用替换表的固定长度,以之前的举例继续为例,可以建立unsigned char Key_Cert_Substitution[11][137][32];;类似地,为了最大化利用空间,在C++环境下可以使用动态分配的形式建立此三维数组:unsigned char*Key_Cert_Substitution[11][137];,此时的数组仅有指针,需要存储时,为所需要存储的i行j列动态分配:Key_Cert_Substitution[i][j]=new unsigned char[static_length];,以创建空间,以达到最大化利用空间的目的;可采用本发明第十方面和实施例十的替换表生成方法生成替换表;
用于混合加解密组号的替换表,用于在同一行、列下存储多组密钥或证书的情况下说明混合加密采用了该行、列何组的密钥或证书(否则组号默认为0),配合密中密双层分发,使得加密选用的密钥或证书具有隐蔽性,通常包含具有预设所有支持组号的替换表;用于混合加解密组号的替换表通常以二维数组来实现,如unsigned char Group_Substitution[amount][static_length];,amount表示一列内最多支持的组数,static_length表示所使用替换表的固定长度,按照前期实验的结果为例,可以建立unsigned charGroup_Substitution[128][32];可采用本发明第十方面和实施例十的替换表生成方法生成替换表;
用于混合加解密密钥使用方法的替换表,用于指示使用密钥(尤其是母密钥)进行加密的加密方法,配合密中密双层分发,使得加密选用的加密方法具有隐蔽性,通常包含不同用途下所有支持的加密方法的替换表;用于混合加解密密钥使用方法的替换表通常以二维数组来实现,如unsigned char Enc_Method_Substitution[amount][static_length];,amount表示支持的加密方法的数量,tatic_length表示所使用替换表的固定长度,本发明支持6类不同的加密方法(前文所述,包含两种对称式、四种非对称式),static_length表示所使用替换表的固定长度,按照前期实验的结果为例,可以建立unsigned char Enc_Method_Substitution[6][32];可采用本发明第十方面和实施例十的替换表生成方法生成替换表;
用于混合加解密阶、层设定的不同可能组合的替换表,用于指示H-混合加密所采用的阶、层设定的情况,配合密中密双层分发,使得加密选择的阶、层设定具有隐蔽性,通常包含支持的全部阶、层设定组合的替换表;用于混合加解密阶、层设定的不同可能组合的替换表通常以多维数组来实现,如unsigned char Step_Stage_Set_Substitution[Step][Stage_1]…[Stage_m][static_length];,Step表示支持的最大阶数,Stage_i表示每阶内支持的层数,static_length表示所使用替换表的固定长度,按照前期实验的结果为例,支持建立unsigned char Step_Stage_Set_Substitution[4][9][9][9][9][32],如采用2阶(1,4)层,则对应[2][1][4][0][0]位置的替换表,如采用4阶(1,4,7,9)层,则对应[4][1][4][7][9];另外可以将阶、层的每一个数看作独立的位数,使其成为一个数,使用二维数组来实现,以上述的举例为例,可以建立unsigned char Step_Stage_Set_Substitution[49999][32],如采用2阶(1,4)层,则对应[21400]位置的替换表,如采用4阶(1,4,7,9)层,则对应[41479]位置的替换表;可采用本发明第十方面和实施例十的替换表生成方法生成替换表;
用于混合加解密场景和用途标志的替换表,用于指示H-混合加密所采用场景和用途标志的情况,配合密中密双层分发,使得加密选择的场景和用途标志设定具有隐蔽性,通常是可选P2P、P2N、N2P的替换表;用于混合加解密场景和用途标志的替换表通常以二维数组来实现,如unsigned char Condition_Substitution[3][static_length];,3表示支持的P2P、P2N、N2P三种模式,static_length表示所使用替换表的固定长度,以上述的举例继续为例,可以建立unsigned char Condition_Substitution[3][32],分别对应P2P、P2N、N2P三种模式的替换表;可采用本发明第十方面和实施例十的替换表生成方法生成替换表;
用于混合加解密的填充情况替换表,用于指示H-混合加密每阶填充的情况,配合密中密双层分发,使得加密每阶填充的情况具有隐蔽性,通常是包含所有可能填充的阶、层位置和填充体码规则或长度的替换表;用于混合加解密的填充情况替换表通常以两个二维数组来实现,分别指示填充的阶、层位置以及对应的四位数体码规则或长度,如unsignedchar Padding_Step_Stage_Substitution[Step][Stage][static_length];用来指示填充的阶、层位置,Step表示填充位置的阶数,Stage表示每填充位置的层数,static_length表示所使用替换表的固定长度;unsigned char Padding_Rule_Substitution[Rule_Length][static_length];用来指示填充的体码规则或长度,Rule_Length表示体码规则最大对应的数字或填充的最大长度,static_length表示所使用替换表的固定长度,按照前期实验的结果为例,可以建立unsigned char Padding_Step_Stage_Substitution[4][9][32];和unsigned char Padding_Rule_Substitution[8192][32];;可采用本发明第十方面和实施例十的替换表生成方法生成替换表;
用于混合加解密涉及时间的数字替换表,用于指示有关时间的情况,如封装时间、允许解密的时间等,配合H-模块中允许解密的时间,能够起到限制解密时间的作用,配合密中密双层分发,使得涉及时间的信息具有隐蔽性,运用于表示含有年、月、日、时、分、秒、毫秒的时间时,通常是包含年时间、月时间和每一位数字的替换表;用于混合加解密涉及时间的数字替换表通常以三个二维数组来实现,分别指示年时间、月时间和每一位数字用于标识时、分、秒、毫秒,如unsigned char Year_Substitution[Year_from_base][static_length];,用来指示年时间,Year_from_base表示距基准年(行业惯例为1970年)之后支持的年数,static_length表示所使用替换表的固定长度;unsigned char Month_Substitution[12][static_length];,用来指示月时间,12表示距12个月,static_length表示所使用替换表的固定长度;unsigned char Number_Substitution[10][static_length];,用于逐数字地标识时、分、秒、毫秒,10表示数字0到9,static_length表示所使用替换表的固定长度;按照前期实验的结果为例,可以建立unsigned char Year_Substitution[100][32];、unsigned char Month_Substitution[12][32];以及unsignedchar Number_Substitution[10][32];;可采用本发明第十方面和实施例十的替换表生成方法生成替换表;
标志本用户私有的密钥证书或经传输获取的其他用户的密钥证书的标志,用于标识数据结构所存储的数据为自有、自行生成、含有私钥的数据,或是使用接口公钥、完整公钥等他人数据生成的数据,标志着该数据结构中数据成员的归属,对应于不同的初始化、修改等操作和相关方法;标志本用户私有的密钥证书或经传输获取的其他用户的密钥证书的标志通常以一个bool型变量来实现,如bool Mine_or_Others;,通常以bool形式的true表示该数据结构为自有,以bool形式的false表示该数据结构为他人所有;
标志数据结构完整性的标志,用于标识数据结构所存储的数据的形式,进而在合规化测验中对应于不同规则进行测验,通常包含错误、本用户数据、其他用户接口公钥、其他用户完整公钥(完整公钥)等标志;标志数据结构完整性的标志通常以一个int或char型变量来实现,如int Integrity;或char Integrity;,通常以不同数值或不同ASCII码标志不同的选项,如错误对应“1”、本用户数据对应“2”、其他用户接口公钥对应“3”、其他用户完整公钥(完整公钥)对应“4”等;
版本号,用于指示混合加解密密钥和证书的存储和管理的数据结构的版本信息,用于版本识别、兼容和排斥;标志数据结构完整性的标志通常以一维数组来实现,如unsigned char Version[6];,6代表版本号由6位以ASCII码组成,6位版本号为软件更新的2位年编号、2位月编号、2位日编号组成,如210819;数据结构创建时自动生成或手动设置;
创建日期,即数据结构中数据最初创建的日期,用于记录数据创建日期,记录含有年、月、日、时、分、秒、毫秒的创建时间;创建日期通常以一维数组来实现,如unsigned charCreate_Time[18];,18代表创建日期由18位以ASCII码组成,18位创建日期为4位年编号、2位月编号、2位日编号、2位时编号、2位分编号、2位秒编号、4位毫秒编号组成,如202108191735192540;数据结构时自动生成或手动设置;
最后修改日期,即数据结构中数据最后修改的日期,用于记录数据最后修改日期,记录含有年、月、日、时、分、秒、毫秒的创建时间;最后修改日期通常以一维数组来实现,如unsigned char Lated_Change_Time[18];,18代表最后修改日期由18位以ASCII码组成,18位最后修改日期为4位年编号、2位月编号、2位日编号、2位时编号、2位分编号、2位秒编号、4位毫秒编号组成,如202108192151170950;数据结构修改时自动刷新或手动设置;
有效期,即数据结构中密钥和证书建议的有效截止的日期,用于记录密钥和证书截止生效日期、判断数据结构的密钥和证书是否有效,记录含有年、月、日、时、分、秒、毫秒的有效截止时间;有效期通常以一维数组来实现,如unsigned char Valid_Time[18];,18代表最后修改日期由18位以ASCII码组成,18位最后修改日期为4位年编号、2位月编号、2位日编号、2位时编号、2位分编号、2位秒编号、4位毫秒编号组成,如202308192151170950;在修改时以最后修改日期加以有效时限(建议为2年)自动生成或手动设置;
自初创建以来的修改次数,即数据结构中数据经最初创建后修改的次数,用于记录数据经最初创建后修改的次数;自初创建以来的修改次数通常以一个UNINT64变量来实现,如UNINT64Change_Times;,使用UNINT64的目的是支持较大量修改的计数;数据结构创建时初设为0、修改时自动自增或手动设置;
生成所存储密钥和证书的机器的机器码,即最初创建数据结构中密钥和证书的机器的识别码,用于记录密钥或证书所属用户的机器码,辨识数据结构中密钥和证书的归属,此外,配合H-模块中允许解密的机器,能够起到限制解密机器的作用;生成所存储密钥和证书的机器的机器码通常以一维数组来实现,如unsigned char Device_Code[static_length];,static_length表示所使用机器码的固定长度,按照前期实验的结果为例,可以建立unsigned char Device_Code[128],对应使用SHA-512创建的机器码,并以16进制扩字节保存;数据结构创建时自动生成或手动设置;
上一次修改时颁发的唯一编码,即上次修改数据结构时随机生成的唯一编码,用于唯一标志该数据结构上一次修改后的历史版本,配合最新修改后的唯一编码实现定位旧、新数据库,进而实现密钥或证书的更新;上一次修改时颁发的唯一编码通常以一维数组来实现,如unsigned char Last_Unique_Code[static_length];,static_length表示所使用唯一编码的固定长度,按照前期实验的结果为例,可以建立unsigned char Unique_Code[128],对应使用SHA-512创建的唯一编码,并以16进制扩字节保存;数据结构修改时自动生成或手动设置;
最新修改后的唯一编码,即最新修改数据结构后随机生成的唯一编码,用于唯一定位、标志该数据结构的编码,用于H-模块定位加密所使用的数据库、根据接口公钥第一次分发补全对应的完整公钥、完整公钥更新、P2P模式识别对方身份等诸多用途;最新修改后的唯一编码通常以一维数组来实现,如unsigned char Unique_Code[static_length];,static_length表示所使用唯一编码的固定长度,按照前期实验的结果为例,可以建立unsigned char Unique_Code[128],对应使用SHA-512创建的唯一编码,并以16进制扩字节保存;数据结构修改时自动生成或手动设置;需要特殊说明的是,最新修改后的唯一编码作为数据结构内容唯一性的代表,可以唯一地定位、识别、查找数据结构,在需要调用数据结构时,往往使用最新修改后的唯一编码在本地查找相应的文件,并读取、还原数据结构;
为便于说明起见,上述的替换表均是以一对一的方式由待替换数据生成;通常地,一对一的生成能够满足实际需要,但一对一生成和使用的替换表通常具有较差的统计学反破译能力,即破译者可以利用统计的方法通过猜测经常出现的替换表对应的待替换数据;因此,在实际运用中,必要时,部分替换表应采用多备份生成和随机使用的方法,即使用一个待替换数据生成多组不相关的替换表,在使用时随机选用多组替换表中的某一组,而通过替换表查找待替换数据时可以一一对应;可能地,上述所有替换表都需要多备份生成和随机使用,考虑到空间实际利用率和统计学概率问题,多备份生成的备份量在理论上应满足使得替换表的调用频率满足统计学均匀分布的特征,即无论某一被替换数据出现的频次有多高,对其进行多备份生成替换表后随机调用替换表时,每一组替换表出现的频次应当相当,这通常需要依赖较大量的统计数据、以及依赖具体使用情景的选择偏好问题,按照前期实验的结果,在此本发明给出一个具体的情形:用于混合加解密组号的替换表,前文推荐的情形为unsigned char Group_Substitution[128][32];,即每一列最多支持128组,而通常,每一列中只保存一组数据,且使用组号的频次与组号大小成反比,经统计,可以为组号为0的组建立256个不同的替换表,为组号为1的组建立128个不同的替换表,……,为组号为7的组建立2个不同的替换表,为组号大于7的组建立1个替换表,可以使得替换表的调用频率满足统计学均匀分布的特征;
与混合加解密密钥和证书的存储和管理的数据结构相关的方法与操作多为初始化、生成、修改、校验等对数据进行赋值的操作,本领域内普通技术人员在不进行创造性劳动下可以容易地实现,由于操作较易且在发明内容中对具体的操作内容展开过详尽的说明,本实施例便再对所有的方法和操作进行重复说明,针对部分可能涉及较为复杂步骤操作,对其具体实施方法做出如下补充:
对于需要依赖于本用户或其他用户的所有权标志进行不同操作的步骤,需要根据不同所有权标志进行不同的操作,推荐地,可以将不同操作封装进同一接口,判断数据成员中标志的性质执行不同的语句;
针对存储内容合规化检验,在本用户或其他用户不同所有权标志下、在不同的完整性标志下,合规化检验对应不同的操作:本用户私有且是本用户数据时,需要校验所有数据成员的存在性和规范性(按照规范生成)、存储证书必须包含私钥、所存储的所有密钥和证书均有替换表与之对应、数据结构仍在有效期内等;其他用户所有且是其他用户接口公钥时,需要校验版本号、创建日期、最后修改日期、有效期、自创建以来的修改次数、机器码、两个唯一编码、密钥或证书存储情况、所有接口公钥证书的存在性和规范性、存储证书必须包含且仅包含接口公钥、不包含任何替换表、数据结构仍在有效期内等;其他用户所有且是其他用户完整公钥时,需要校验所有数据成员的存在性和规范性(按照规范生成)、存储证书必须包含且包含所有的公钥、所存储的所有密钥和证书均有替换表与之对应、数据结构仍在有效期内等;
针对所有相关数据成员到相应替换表的转换,替换表到所有相应信息的转换,应针对不同形式和用途的替换表分别开发不同的转换函数,并尽可能使用优化的数据库算法,使得转换过程尽量消耗更少的资源;转换过程基本是一个查表的过程,本领域一般技术人员利用公知的方法在不进行创造性劳动的条件下可以轻松完成,故不再赘述;
针对生成随机的、具有特定长度的可用于对称式加密的密钥,可以使用现有的伪随机数生成器,生成具有统计随机性能的随机数位流,作为对称式加密的密钥,公知的算法很多,在此不再赘述;
对于初始化生成和写入密钥或证书,完整的一次初始化(写入所有的密钥或证书、写入所有数据成员、写入所有替换表后)记为一次修改,修改次数为0,意为已经初始化;对于后续修改、删除任何密钥或证书,当选择单项修改时,修改或删除后,重新写入存储情况、最新修改情况、强制刷新替换表、更新唯一编码完成,记为一次修改,修改次数加1,当选择多修改时,完成所有项的修改或删除后,重新写入存储情况、最新修改情况、强制刷新替换表、更新唯一编码完成,记为一次修改,修改次数加1;对于所有替换表,允许对某种替换表进行独立的修改,要求表内所有元素必须同时修改,修改后更新唯一编码,记为一次修改,修改次数加1;
针对对数据结构中的数据进行本地文件的写入,当标志本用户的密钥证书时,在完成合规化检验后,允许直接将所有数据成员以明文的形式写入本地文件,成为本用户的个人密钥库,允许导出接口公钥所需的相关数据以明文形式写入本地文件(并经过封装),成为接口公钥,允许导出完整公钥所需的相关数据以明文形式写入本地文件(再经过加密和封装),成为完整公钥,允许导出完整公钥的更新所需的相关数据以明文形式写入本地文件(再经过加密和封装),成为完整公钥的更新;当标志其他用户的密钥证书时,不允许除了完整公钥的更新外任何情况下写入本地文件,但允许对其他用户的接口公钥、完整公钥、完整公钥的更新读取并还原数据结构;需要注意的是,当保存于本地硬盘中的数据不再安全时,应对写入的本地文件,尤其是本用户的个人密钥库、完整公钥等进行加密写入,具体使用的加密方法推荐对称式加密方法,密钥由登入的用户提供,该密钥不进行存储。
为便于阐述其他实施例使用本实施例方法初始化、生成、修改、校验、本地文件写入、从本地文件还原该混合加解密密钥和证书的存储和管理的数据结构,现将本实施例所示的与使用混合加解密密钥和证书的存储和管理相关的所有方法进行封装,成为功能不同的三个函数,包括:Key_Cert_Manage(MODE);函数,以不同MODE调用该函数意为初始化、生成、修改、校验本实施例中的数据结构,Key_Cert_Write(MODE);函数,以不同MODE调用该函数意为将数据结构以个人密钥库、接口公钥、完整公钥、完整公钥的更新的形式进行本地文件写入,Key_Cert_Read();函数,调用该函数意为读取本地文件中的数据并还原数据结构。
需要特殊说明的是,本实施例中需要大量用到数据存储、检索等数据库的相关操作,上述操作仅作为实施示例,用以对可能产生迷惑或复杂的方面进行重点解释;在实际使用中,应根据需要,选择适当的有关数据库存储、检索等实现方法,将本实施例对应发明内容第四方面的全部操作完整地实现,以达到存储和管理针对混合加解密密钥和证书的目的;
本实施例中针对混合加解密密钥和证书的存储和管理的数据结构不仅可用于本发明H-混合加密、密中密双层分发时,配合本发明第三方面、第五方面、第六方面用和实施例三、五、六用作密钥数据库进行密钥和证书的调用、接口公钥的生成或导入、完整公钥的生成或导入等;在使用非H-混合加密时,仍可配合本发明第三方面不定长头部数据中的非H-模块,调用本实施例中针对混合加解密密钥和证书的存储和管理的数据结构中的密钥证书完成加密和封装;
此外,据图10,本实施例中,与混合加解密密钥和证书的存储和管理的相关方法(即以上三个函数)可以封装成为一个接口,通过调用该接口,配合生成密钥和证书的接口、生成替换表的接口,可以对本实施例中的数据结构进行初始化、生成、修改、校验,得到完整的数据结构;同时,通过调用该接口,可以对完整的数据结构写入本地文件,得到可以用于存储、分发的数据库,配合本发明第六方面和实施例六中密中密分发的接口,可以实现双层密中密的分发;配合本发明第五方面和实施例五中导入H-模块和导出H-模块的接口,可以进一步实现调用数据结构中的密钥、证书或替换表,实现H-混合加密以及相关的封装。
实施例五
据图11、图12、图13,在解决混合加解密的加密手段的管理方法的问题上,本实施例提供一种针对一种管理混合加解密加密手段的数据结构,用于存储H-混合加解密、密中密双层分发所使用的数据库、阶、层设定、密钥、证书、替换表等信息;此外,本实施例提供一系列与管理混合加解密加密手段的数据结构相关的管理方法的方法,将数据结构中的加密手段以特定的格式导出,用于写入不定长头部数据H-模块的方法,以及一种用于将不定长头部数据H-模块内容导入,生成数据结构中所需要的各项加密手段的方法,一种使用数据结构中加密手段指导H-混合加密、解密的方法,所使用的具体方法依次如下:
针对管理混合加解密加密手段的数据结构,本实施例命名其为class H_Minus_Manager,其具体数据成员的内容和形式可参考如下:
目标用户密钥和证书的数据库的数据结构的最新修改后的唯一编码,用于P2N、N2P模式下指示H-混合加密所使用数据库的数据结构的最新修改后的唯一编码,用于P2P模式下指示H-混合加密中接收方用户数据库的数据结构的最新修改后的唯一编码,以定位相应的数据库并进行调用;目标用户密钥和证书的数据库的数据结构的最新修改后的唯一编码的实现形式对应本发明第四方面以及实施例四中数据结构中的最新修改后的唯一编码,通常以一维数组来实现,如unsigned char Target_Unique_Code[static_length];,static_length表示所使用唯一编码的固定长度,按照实施例四数据结构中的数据成员为例,可以建立unsigned char Target_Unique_Code[128],对应使用SHA-512创建的唯一编码,并以16进制扩字节保存;
可选的本用户密钥和证书的数据库的数据结构的最新修改后的唯一编码,用于P2P模式下指示H-混合加密中发送方用户数据库的数据结构的最新修改后的唯一编码,以定位相应的数据库并进行调用,仅在使用P2P模式下会被使用,以定位P2P模式支持的部分加密方法所需要的密钥或证书;本用户密钥和证书的数据库的数据结构的最新修改后的唯一编码的实现形式对应本发明第四方面以及实施例四中数据结构中的最新修改后的唯一编码,通常以一维数组来实现,如unsigned char Sent_Unique_Code[static_length];,static_length表示所使用唯一编码的固定长度,按照实施例四数据结构中的数据成员为例,可以建立unsigned char Sent_Unique_Code[128],对应使用SHA-512创建的唯一编码,并以16进制扩字节保存;
标志H-模块与头部数据所封装信息的明文、密文形式的标志,用于标志所封装数据封装前的明、密形式,如保存于本地的数据库、接口公钥均使用H-方法,但以明文形式封装,而加密的数据、完整公钥、完整公钥的更新等均使用H-方法,但以密文形式封装;标志H-模块与头部数据所封装信息的明文、密文形式的标志通常以一个bool型变量实现,如:boolPlain_Cipher;,通常以bool形式的true表示明文,以bool形式的false表示密文;
标志H-模块与头部数据所封装信息用途的标志,用于标志所封装数据的具体用途,通常是包含密文、以固定方法加密的密文、用于传输的接口公钥、用于传输的完整公钥、用于传输的完整公钥的更新、用于保存到本地的本用户的个人密钥库的标志选项的标志;标志H-模块与头部数据所封装信息用途的标志通常以一个int型变量实现,如:intMethod;,不同取值代表不同选项,如密文对应“1”,以固定方法加密的密文对应“2”,用于传输的接口公钥对应“3”,用于传输的完整公钥对应“4”,用于传输的完整公钥的更新对应“5”,用于保存到本地的本用户的个人密钥库对应“6”;
混合加解密的场景和用途标志,用于指示H-混合加密所采用场景和用途标志的情况,通常是可选P2P、P2N、N2P的替换表,此处为明文存储;混合加解密的场景和用途标志通常以一个int型变量实现,如int Condition;,不同取值代表不同选项,支持P2P、P2N、N2P三种模式,如P2P对应“1”,P2N对应“2”,N2P对应“3”;
混合加解密的阶、层设定,用于指示H-混合加密所采用的阶、层设定的情况,此处为明文存储;用于混合加解密的阶、层设定通常以一维数组来实现,int Step_Stage_Set[Step_amount+1];,Step_amount表示支持的最大阶数,在共Step_amount+1的每个元素中,分别存储所选用H-混合加密的阶数、每一阶的层数,按照前期实验的结果为例,支持建立int Step_Stage_Set[4+1];,如采用2阶(1,4)层,则每一元素分别存储,即Step_Stage_Set[0]=2;Step_Stage_Set[1]=1;Step_Stage_Set[2]=4,如采用4阶(1,4,7,9)层,则每一元素分别存储,即Step_Stage_Set[0]=4;Step_Stage_Set[1]=1;Step_Stage_Set[2]=4;Step_Stage_Set[3]=7;Step_Stage_Set[4]=9;;
以行、列、组形式表示的每阶、每层使用密钥和证书以及使用方法,用于说明混合加密采用了(对应接收方数据库或本用户数据库中)何行、何列的密钥或证书作为母、子密钥或证书,以及采用了何种加密方法,通常包含若干母密钥或证书的行、母密钥或证书的列、母密钥或证书的组、母密钥或证书的使用方法、子密钥或证书的行、子密钥或证书的列、子密钥或证书的组的次级数据结构,此处为明文存储;该次级数据结构可以命名为classKey_Cert_Method_Sec;,参考的实现形式为:
Figure BDA0003777632010000512
以行、列、组形式表示的每阶、每层使用密钥和证书以及使用方法通常以一维数组来实现,如Key_Cert_Method_Sec Key_Cert[support_length];,support_length表示支持的满阶数、满层数时最大层使用数量,以支持最大4阶、9层为例,可以建立Key_Cert_Method_Sec Key_Cert[36];,在每一个元素中,按照阶数由小到大、每阶内层数由小到大分别存储自第1阶1层至最后一阶最后一层每层使用的密钥和证书以及使用方法,即上述次级数据结构Key_Cert_Method;
以每阶层数和填充体码规则或长度表示的填充情况,用于说明混合加密每阶填充的情况,通常包含每阶填充的层位置、每阶填充的层的填充体码规则或长度的次级数据结构,此处为明文存储;该次级数据结构可以命名为class Padding_Sec;,参考的实现形式为:
Figure BDA0003777632010000521
以每阶层数和填充体码规则或长度表示的填充情况通常以一维数组来实现,如Padding_SecPadding_per_Step[support_length];,support_length表示支持的最大阶数,在每一个元素中,按照阶数由小到大分别存储自第1阶至最后一阶每阶的填充情况,即上述次级数据结构Padding_Sec;
不定长头部数据中对所封装信息类型的标志,用于针对不同封装信息类型对随机填充等方法进行优化,对应不定长头部数据中所封装信息的类型说明模块;不定长头部数据中对所封装信息类型的标志通常以一个int型变量实现,如:int Data_Type;,不同取值代表不同选项,如:密文对应“0”、公钥证书对应“1”、私钥证书对应“2”、“配置文件对应“3”、二进制优化类型对应“4”、文本优化类型对应“5”;
可选的允许解密的时间限制,用于限制解密时间,通常包含允许解密的起始时间、允许解密的终止时间的数据结构,此处为明文存储;允许解密的时间限制通常以数据结构的方式实现,数据结构可以命名为class Time_Limit;,参考的实现形式为:
Figure BDA0003777632010000522
可选的允许解密的机器限制,用于限制解密机器,通常包含一个或若干允许解密机器的机器码的数据结构,此处为明文存储;允许解密的机器限制通常以数据结构的方式实现,数据结构可以命名为classMachine_Limit;,参考的实现形式为:
Figure BDA0003777632010000523
针对将混合加解密的加密手段的管理方法的数据结构以特定格式导出并写入H-模块的方法,一般先设置、生成所有数据成员的信息,再将需要转化为替换表的明文信息转化为替换表,写入H-模块,其一般形式的具体流程如下:
在H-模块的空间内,或将要写入H-模块的临时空间内:
写入标识符“%H_0”;明文写入目标用户密钥和证书的数据库的数据结构的最新修改后的唯一编码Target_Unique_Code,以及可选的本用户密钥和证书的数据库的数据结构的最新修改后的唯一编码Sent_Unique_Code;
写入标识符“%H_1”;使用转换函数转换标志H-模块与头部数据所封装信息的明文、密文形式的标志Plain_Cipher的bool型为对应char型ASCII码的0和1,写入标志H-模块与头部数据所封装信息的明文、密文形式的标志;
写入标识符“%H_2”;使用转换函数转换标志H-模块与头部数据所封装信息用途的标志Method的int型为对应char型ASCII码(由于数字较小,可以转换),写入标志H-模块与头部数据所封装信息用途的标志;
写入标识符“%H_3”;使用转换函数转换混合加解密的场景和用途标志Condition为替换表,写入混合加解密的场景和用途的替换表;
写入标识符“%H_4”,使用转换函数转换混合加解密的阶、层设定Step_Stage_Set为替换表,写入混合加解密的阶、层设定的替换表;
写入标识符“%H_5”,使用转换函数转换每阶、每层使用的母密钥或证书、母密钥或证书的使用方法、子密钥或证书(已封装成数据结构Key_Cert_Method_Sec)为替换表,按照阶数由小到大、每阶内层数由小到大分别写入自第1阶1层至最后一阶最后一层每层使用的母密钥和证书、使用方法、子密钥和证书对应的替换表;
调用随机数位流生成函数,生成随机字节长度的随机数位流,在此之后附以随机字节随机数的干扰;
写入标识符“%H_6”,使用转换函数转换每阶的填充层数、体码规则或长度(已封装成数据结构Padding_Sec)为替换表,按照阶数由小到大分别写入自第1阶至最后一阶每阶填充层数、体码规则或长度对应的替换表;
调用随机数位流生成函数,生成随机字节长度的随机数位流,在此之后附以随机字节随机数的干扰;
写入标识符“%H_7”,使用转换函数转换完成H-封装的时间点(可以写入H-模块时间点记)中的年、月、日、小时、分钟、秒、毫秒为替换表,写入以目标用户的替换表形式表示的完成H-封装的时间点;
写入标识符“%H_8”,使用转换函数转换允许解密的时间限制中起止时间点(已封装成数据结构Time_Limit)的年、月、日、小时、分钟、秒、毫秒为替换表,先写入允许解密的起始时间点对应的替换表组,再写入允许解密的终止时间点对应的替换表组;
写入标识符“%H_9”,依次写入允许解密的机器(已封装成数据结构Machine_Limit)中每一个允许解密的机器对应的机器码,通常在此之后附以对所有机器码的制式哈希值;
写入标识符“%H_A”,使用转换函数转换H-混合加密后在尾部附以随机字节随机数的长度为替换表,写入以加密后在尾部附以随机字节随机数的长度的替换表;
将一般形式的导出数据结构并写入H-模块的过程简化后写作程序伪码,即:
Write(“%H_0”);Write(Target_Unique_Code);//写入“%H_0”,写入最新修改后的唯一编码
if(Condition==1)Write(Sent_Unique_Code);//当选择P2P,写入本用户唯一编码
Write(“%H_1”);Write(Convert(Plain_Cipher));//写入“%H_1”,写入明文、密文形式的标志
Write(“%H_2”);Write(Convert(Method));//写入“%H_2”,写入所封装信息用途的标志
Write(“%H_3”);Write(Convert(Condition));//写入“%H_3”,写入场景和用途标志的替换表
Write(“%H_4”);Write(Convert(Step_Stage_Set));//写入“%H_4”,写入阶、层设定的替换表
Write(“%H_5”);
for(int i=0;i<Number_of_All_Stage;i++)Write(Convert(Key_Cert_Method_Sec));
//写入“%H_5”,按顺序写入每层母密钥和证书、使用方法、子密钥和证书对应的替换表
//该层不存在子密钥和证书时,以与替换表等长的随机数位流替代
Write(PRNG());//写入随机字节随机数的干扰
Write(“%H_6”);
for(int i=0;i<Number_of_Step;i++)Write(Convert(Padding_Sec));
//写入“%H_6”,按顺序写入每阶填充层数、体码规则或长度对应的替换表
Write(PRNG());//写入随机字节随机数的干扰
Write(“%H_7”);Write(Convert(Time_Now));//写入“%H_7”,写入完成H-封装的时间点的替换表
Write(“%H_8”);Write(Convert(Time_Limit));//写入“%H_8”,写入允许解密时间限制的替换表
Write(“%H_9”);Write(Machine_Limit);//写入“%H_9”,写入允许解密的机器限制的全部机器码
Write(HASH(Machine_Limit));//写入允许解密的机器限制的全部机器码的制式哈希
Write(“%H_A”);Write(Convert(Random_Length_After_Cipher));//写入“%H_A”,写入H-混合加密后在尾部附以随机字节随机数的长度的替换表
//至此,完成H-模块全部内容的写入
为便于阐述其他实施例使用本实施例方法进行导出数据结构并写入H-模块的过程,现将本实施例所示的使用导出数据结构并写入H-模块的方法进行封装,成为Write_to_H_M_Module();函数,调用该函数意为导出本实施例数据结构的加密方法信息写入H-模块。
需要注意的是,由于导出数据结构并写入H-模块的内容涉及不同运用情况下选择与不选择的问题、选择的互斥问题、信息传输与保存问题、选择和实际写入差异问题、不合规检测问题等,实际导出数据结构并写入H-模块的过程十分复杂,由于篇幅限制,本文经过简化的程序伪码在不失一般性的同时对该过程进行了简要的描述,可以起到介绍说明的作用,尽管如此,该程序伪码在许多方面的表述仍然不够严谨,望知悉;
需要特殊说明的是,由于写入H-模块之前可能需要将数据结构中的数据成员使用一定形式的转换函数转换为对应的格式再写入,不同数据成员对应不同的转换函数,所使用到的转换函数分为两类,一是将bool或int转换为char型ASCII码的函数,二是将明文转换为对应替换表的函数;其中第一类函数十分简单,本领域内普通技术人员使用公知的方法在不进行创造性劳动下即可轻松完成,故不再介绍,第二类函数利用的是本发明发明内容第四方面和实施例四中,针对混合加解密密钥和证书的存储和管理的数据结构中对应的转换函数,可以直接转换;所使用的所有替换表通常为待接收用户数据库对应数据结构中的替换表;
在写入“%H_5”和“%H_6”时,写入随机字节随机数的干扰的目的通常在于防止破译者通过观察每层母密钥和证书、使用方法、子密钥和证书对应的替换表,以及每阶填充层数、体码规则或长度对应的替换表获得所使用H-混合加密方法的阶、层设定信息,使得H-混合加密方法更具有隐蔽性,进而增加其安全性;所附加的随机数位流应当较长,并且应当是替换表长度的整数倍数(最好是3*替换表长度(%H_5)和2*替换表长度(%H_6)),按照前期实验的结果为例,随机数位流应是32bytes的整数倍(最好是96bytes(%H_5)和64bytes(%H_6)),隐蔽效果能够达到较好;此外,对于所封装信息类型的标志中不同类型的信息,随机数位流的长度应予以优化,如为文本标志时,为便于文本传输,随机数位流长度应当不过于长,例如限制在512bytes内,又如为接口公钥时,为增强隐蔽效果,随机数位流长度应当不过于短,例如限制在512bytes以上。
针对对不定长头部数据的可选的H-模块中的数据以特定的格式导入,生成数据结构中需要的各项加密手段,从不定长头部数据的可选的H-模块导入的内容需要包含与上述导出的内容相同、流程类似,故在此不再赘述;为便于阐述其他实施例使用本实施例方法进行H-模块导入和生成的过程,现将本实施例所示的H-模块导入和生成的方法进行封装,成为Read_from_H_M_Module();函数,调用该函数意为从H-模块导入和生成本实施例中的数据结构。
针对利用本实施例中数据结构配合本发明第一、二方面,实施例一、二指导H-混合加解密的过程,即为混合加解密提供必要的信息和存储混合加解密产生的信息的过程,包含如下过程:
提供H-混合加解密的阶数m(请参考实施例一,下同);
提供H-混合加解密每阶的层数STAGE[m];
提供H-混合加解密每阶每层选定的加密方法Func()和密钥Key;
存储加密中填充产生的填充情况Padding_Info,或者提供解密时需要的填充情况Padding_Info;
存储加密后在尾部附加的随机数位流的长度,或者提供解密时需要去除尾部附加的随机数位流的长度;
由于上述操作多为传值过程,本领域内普通技术人员使用公知的方法在不进行创造性劳动下即可轻松完成,故不再介绍;
为便于阐述其他实施例使用本实施例方法进行指导H-混合加、解密的过程,现将本实施例所示的指导H-混合加密的方法进行封装,成为Direct_H_Enc();函数,调用该函数意为使用本实施例数据结构指导H-混合加密;同时,将本实施例所示的指导H-混合解密的方法进行封装,成为Direct_H_Dec();函数,调用该函数意为使用本实施例数据结构指导H-混合解密;
此外,据图13,本实施例中,与管理混合加解密加密手段的数据结构对应的相关方法可以封装成为一个接口,通过调用该接口,配合混合加解密密钥和证书的存储和管理的接口、H-混合加密的接口、H-混合解密的接口,在设定好加密手段并初始化得到完整的数据结构后,通过调用该接口,可以导出数据结构并写入H-模块,不定长头部数据中H-模块中的内容,配合本发明第三方面和实施例三中不定长头部数据中的接口,可以写入不定长头部数据H-模块的功能;通过调用该接口,配合本发明第三方面和实施例三中不定长头部数据中的接口,可以导入不定长头部数据中的H-模块,获取不定长头部数据中H-模块中的内容,生成完整的数据结构后,配合本发明第四方面和实施例四中密钥和证书数据库的接口,可以得到H-混合加密使用的加密手段;此外,在设定好加密手段并初始化得到完整的数据结构后,通过调用该接口,配合本发明第一方面和实施例一中H-混合加密的接口,可以使用所设定的加密手段指导H-混合加密;通过调用该接口,在使用H-模块信息生成完整的数据结构后,配合本发明第二方面和实施例二中H-混合解密的接口,可以使用所设定的加密手段指导H-混合解密。
实施例六
据图14~18,在解决混合加密解密配合密中密双层分发的运作、管理和保护的问题上,本实施例提供一系列包含生成用户信息,第一次接口公钥的明文分发,第二次完整公钥的密文分发,接口公钥的重置,完整公钥(非接口公钥)的更新,更新的完整公钥(非接口公钥)的分发,H-加密、密文的封装与分发,密文的接收、H-解密与解封,基于H-改进的数字签名方案,针对流式传输加密、封装的优化,针对对称式加密反破译的优化,针对临时对称式密钥在封装中的优化的方法的具体实施流程,以实现混合加密解密配合密中密双层分发所要求的安全性、便携性和适应性,所使用的具体方法依次如下:
需要提前说明的是,由于本实施例所使用的方法已经在发明内容中做出了详尽的解释,由于在实施例一至五对所有涉及的操作均做出了接口化的命名,因此,结合具体的附图,本实施例主要通过调用各接口函数对发明内容第六方面的方法进行具体的代码层实现,并尽可能充分地说明部分原理;各接口所涉及的操作请参见本发明实施例一至五;
针对生成用户信息,通常是调用Key_Cert_Manage(Generate),生成包含个人密钥库在内的用户信息,并使用Key_Cert_Write(Personal_Key);写入本地文件。
据图14,针对第一次接口公钥的明文分发,所使用的方法包括且仅限于P2N模式,在本用户已经生成了包含个人密钥库在内的用户信息后,通过导出接口公钥、选择H-模块并写入H-模块信息、使用不定长头部数据封装的步骤后,可以进行第一次接口公钥的明文分发;相同地,接收其他用户的接口公钥,通过对不定长头部数据解封和识别接口公钥、还原H-模块数据、将接口公钥写入本地文件的步骤后,完成接口公钥的明文接收;
将第一次接口公钥的明文分发的过程简化后写作程序伪码,即:
//当本用户已经生成了包含个人密钥库在内的用户信息,即完成Key_Cert_Manage(Generate);,分发:
Key_Cert_Read();//读取本地个人密钥库
Key_Cert_Write(Interface_PubKey);//从包含本用户个人密钥库的数据结构导出接口公钥
H_Minus_Manager Interface_PubKey_Struct_Dist();//实例化一个H-管理数据结构
Head_Package();//使用不定长头部数据进行封装,并选择H-模块
Write_to_H_M_Module();//向不定长头部数据写入H-模块
Distribute();//公开分发
//当需要获得其他特定用户的接口公钥时,接收:
Receive();//公开获得
Head_DePackage();//使用不定长头部数据进行解封,并进行校验
H_Minus_Manager Interface_PubKey_Struct_Rece();//实例化一个H-管理数据结构
Read_from_H_M_Module();//从不定长头部数据获取H-管理信息,并确认为接口公钥
Key_Cert_Manage(Create);//还原一个包含其他用户接口公钥的数据结构
Key_Cert_Write(Interface_PubKey);//从包含其他用户接口公钥的数据结构导出接口公钥
需要特殊说明的是,由于接口公钥是正确解密完整公钥所必备的密钥组(实际上是由多组非对称密钥的公钥证书组成),因此,在进行第二次完整公钥的密文分发前,必须公开分发接口公钥;接口公钥需要保障第二次完整公钥分发的安全性,因此,所选择的非对称密钥组应具有高强度的特性,通常采用RSA4096、ECC512级别以上的多组非对称密钥,其多组的数量应当满足对完整公钥进行安全的H-混合加密所需的数量要求,通常需要10条公钥以上;由于采用双层分发,因此接口公钥可以进行明文分发,第二次完整公钥的密文分发的安全性由非对称密钥的破译和H-混合加密的复杂性共同保障,由于第二次完整公钥的密文分发采用双H-混合加密(己方+对方),因此安全性通常能够保障;第一次接口公钥的明文分发仅能够采用P2N模式,是基于其公开分发特性所决定的,发送方不能够决定接收方的身份信息,并且允许所有需要的接收方进行接口公钥的接收。
据图14,针对第二次完整公钥的密文分发,所使用的方法包括且仅限于P2P、P2N模式,在本用户已经生成了包含个人密钥库在内的用户信息后,通过导出完整公钥、进行混合加密、选择H-模块并写入H-模块信息、使用不定长头部数据封装的步骤后,可以进行第二次完整公钥的密文分发;相同地,在拥有某用户的接口公钥时,接收该用户的完整公钥,通过对不定长头部数据解封和识别完整公钥、还原H-模块数据、进行混合解密、将完整公钥写入本地文件的步骤后,完成完整公钥的密文接收;
将第二次完整公钥的密文分发的过程简化后写作程序伪码,即:
//当本用户已经生成了包含个人密钥库在内的用户信息,即完成Key_Cert_Manage(Generate);,分发:
Key_Cert_Read();//读取本地个人密钥库
Key_Cert_Write(Complete_PubKey);//从包含本用户个人密钥库的数据结构导出接口完整公钥
H_Minus_Manager Complete_PubKey_Struct_Dist();//实例化一个H-管理数据结构
Direct_H_Enc(Complete_PubKey_Struct_Dist);//指导H-混合加密
Hybrid_Minus_Encrypt();//使用预设的用于传输的完整公钥的H-加密方法进行混合加密
//此处的加密方法与P2P、P2N模式有关,因模式而不同
Head_Package();//使用不定长头部数据进行封装,并选择H-模块
Write_to_H_M_Module();//向不定长头部数据写入H-模块
Distribute();//分发或物理传输
//拥有其他特定用户的接口公钥时,若需要完整公钥,接收:
Receive();//获得经过封装和加密的完整公钥
Head_DePackage();//使用不定长头部数据进行解封,并进行校验
H_Minus_Manager Complete_PubKey_Struct_Rece();//实例化一个H-管理数据结构
Read_from_H_M_Module();//从不定长头部数据获取H-管理信息,并确认为完整公钥
Key_Cert_Read();//读取本地该用户的接口公钥
Direct_H_Dec(Complete_PubKey_Struct_Rece);//指导H-混合解密
Hybrid_Minus_Decrypt();//使用预设的用于传输的完整公钥的H-解密方法进行混合解密
//此处的解密方法与P2P、P2N模式有关,因模式而不同
Key_Cert_Manage(Create);//还原一个包含其他用户完整公钥的数据结构
Key_Cert_Write(Complete_PubKey);//从包含其他用户接口公钥的数据结构导出完整公钥
需要特殊说明的是,由于接口公钥是正确解密完整公钥所必备的密钥组(实际上是由多组非对称密钥的公钥证书组成),因此,在进行第二次完整公钥的密文分发前,必须公开分发接口公钥;用于传输的完整公钥通常包括:除了接口公钥外的全部非对称公钥、全部预设的对称式密钥、全部的替换表等,此处的完整公钥通常不包含接口公钥,避免再分发导致的安全问题;完整公钥是通常用来加密数据和进行数字签名的对称式密钥、非对称密钥证书的集合,不同于用于分发密钥的接口公钥,完整公钥不用来分发密钥;第二次完整公钥的密文分发的安全性由非对称密钥的破译和H-混合加密的复杂性共同保障,在使用网络进行完整公钥的传输时,当接口公钥未能够被完全破译时,破译者无法获得任何有关完整公钥的信息,而使用物理传输完整公钥时,由于破译者无法获得加密后的完整公钥内容,因此在任何情况下无法获得任何有关完整公钥的信息;预设的用于传输完整公钥的H-加密方法一般是高强度的、特定的H-混合加密方法,如5阶(1,4,5,7,9)的H-混合加密方法,其中第一阶采用对称式加密反破译的优化中利用其他阶、层密钥交换生成的密钥(P2P)或非对称密钥(P2N)组合并哈希生成的密钥,以达到防止破译者破译部分密文的目的,其他阶采用对应的非对称加密方法(P2P)或可能的对称式加密方法(P2N);手法双方获得到对方用于传输的完整公钥,即意味着可以使用H-混合加密方法进行安全的加密和传输信息了,可自由选用P2N、N2P以及P2P模式;第二次完整公钥的密文分发包含P2P、P2N两种模式,产生差异的本质是由于接收该完整公钥的用户数不同而产生的使用H-混合加密方法的不同,P2P模式下只有特定的待接收用户能够解密完整公钥,P2N模式下拥有特定非对称密钥的用户能够解密完整公钥,具体的差异详见本发明发明内容五。
针对接口公钥的重置,由于改变了接口公钥,强制刷新个人密钥库的全部数据,包括全部的密钥、替换表、唯一编码等信息,通常是调用Key_Cert_Manage(ReGenerate),刷新地生成包含个人密钥库在内的用户信息,并使用Key_Cert_Write(Personal_Key);写入本地文件;
需要注意的是,重置接口公钥将不继承旧的数据库的任何信息,不同于完整公钥(非接口公钥)的更新会继承未更新的所有密钥。
针对完整公钥的更新,所使用的方法包括且仅限于P2P、P2N模式,在本用户已经生成了包含个人密钥库在内的用户信息后,在更改部分完整公钥(非接口公钥)后,通过导出完整公钥的更改部分以及替换表、进行混合加密、选择H-模块并写入H-模块信息、使用不定长头部数据封装的步骤后,可以进行完整公钥的更新的密文分发;相同地,在拥有某用户的完整公钥时,接收该用户的完整公钥的更新,通过对不定长头部数据解封和识别完整公钥的更新、还原H-模块数据、进行混合解密、将完整公钥的更新内容写入本地文件的步骤后,完成完整公钥更新的密文接收;
将完整公钥的更新的过程简化后写作程序伪码,即:
//当本用户已经生成了包含个人密钥库在内的用户信息,即完成Key_Cert_Manage(Generate);,更新:
Key_Cert_Read();//读取本地个人密钥库
Key_Cert_Manage(Update);//更改部分完整公钥(非接口公钥),重新生成替换表等
Key_Cert_Write(Personal_Key);//将更新内容写入本地个人密钥库
Key_Cert_Write(Updated_PubKey);//从包含本用户个人密钥库的数据结构导出接口完整公钥的更新
H_Minus_Manager UPDComplete_PubKey_Struct_Dist();//实例化一个H-管理数据结构
Direct_H_Enc(UPDComplete_PubKey_Struct_Dist);//指导H-混合加密
Hybrid_Minus_Encrypt();//使用预设的用于传输的完整公钥的H-加密方法进行混合加密
//对尾部进行随机数位流的写入
//此处的加密方法与P2P、P2N模式有关,因模式而不同
Head_Package();//使用不定长头部数据进行封装,并选择H-模块
Write_to_H_M_Module();//向不定长头部数据写入H-模块
Distribute();//分发或物理传输
//拥有其他特定用户的完整公钥时,若需要完整公钥的更新,接收:
Receive();//获得经过封装和加密的完整公钥的更新
Head_DePackage();//使用不定长头部数据进行解封,并进行校验
H_Minus_Manager UPDComplete_PubKey_Struct_Rece();//实例化一个H-管理数据结构
Read_from_H_M_Module();//从不定长头部数据获取H-管理信息,并确认为完整公钥的更新
Key_Cert_Read();//读取本地该用户的完整公钥以及接口公钥
Direct_H_Dec(UPDComplete_PubKey_Struct_Rece);//指导H-混合解密
Hybrid_Minus_Decrypt();//使用预设的用于传输的完整公钥的H-解密方法进行混合解密
//此处的解密方法与P2P、P2N模式有关,因模式而不同
Key_Cert_Manage(Update);//更新该完整公钥数据结构中的数据成员
Key_Cert_Write(Updated_PubKey);//从包含其他用户接口公钥的数据结构导出经过更新的完整公钥
需要特殊说明的是,进行完整公钥的更新要求接收方拥有该完整公钥的上一个版本,当且仅当接收方拥有该完整公钥的上一个版本时,才可进行完整公钥的更新,接收方未拥有该完整公钥、接收方拥有更早版本的情况下的更新是无法进行完整公钥的更新的;完整公钥的更新对象仅包括接口公钥外的其他密钥或证书,不包括接口公钥,完整公钥的更新在传输时仅传输经过更新的密钥和证书、替换表等,以减少传输内容、防止重复传输带来的安全问题;完整公钥的更新的安全性由非对称密钥的破译和H-混合加密的复杂性共同保障,在使用网络进行完整公钥的更新的传输时,当接口公钥未能够被完全破译时,破译者无法获得任何有关完整公钥的信息,而使用物理传输完整公钥时,由于破译者无法获得加密后的完整公钥内容,因此在任何情况下无法获得任何有关完整公钥的信息;加密完整公钥的更新的方法与加密完整公钥的方法一致;完整公钥的更新包含P2P、P2N两种模式,产生差异的本质是由于接收该完整公钥的更新的用户数不同而产生的使用H-混合加密方法的不同,P2P模式下只有特定的待接收用户(必须拥有完整公钥+接口公钥)能够解密完整公钥的更新,P2N模式下拥有特定非对称密钥的用户(必须拥有完整公钥+接口公钥)能够解密完整公钥的更新,具体的差异详见本发明发明内容第五方面。
据图15,针对H-加密、密文的封装与分发,所使用的方法包括全部的P2P、P2N、N2P模式,在拥有待接收用户的接口公钥以及完整密钥后,通过调用相应的数据库、选定混合加密方法、对明文进行混合加密、选择H-模块并写入H-模块信息、使用不定长头部数据封装的步骤后,可以对经过封装的密文进行分发;
将H-加密、密文的封装与分发的过程简化后写作程序伪码,即:
H_Minus_Manager Enc_Struct_Dist();//实例化一个H-管理数据结构,选定所使用的混合加密方法
if(P2P||N2P)Key_Cert_Read();//如果选择了P2P或N2P模式,读取本地待接收用户的接口公钥以及完整公钥
if(P2P||P2N)Key_Cert_Read();//如果选择了P2P或P2N模式,读取本地个人密钥库
Direct_H_Enc(Enc_Struct_Dist);//指导H-混合加密
Hybrid_Minus_Encrypt();//使选定的H-加密方法进行混合加密
//对尾部进行随机数位流的写入
Head_Package();//使用不定长头部数据进行封装,并选择H-模块
Write_to_H_M_Module();//向不定长头部数据写入H-模块
Distribute();//分发
需要特殊说明的是,进行H-加密、密文的封装与分发,当N2P模式时,要求发送方拥有接收方的完整公钥,当P2N模式时,要求发送方拥有本用户个人密钥库,当P2P模式时,要求收发方互相拥有对方完整公钥,当且仅当上述条件成立时,才得以正确地进行H-加密、密文的封装与分发;上述H-加密、密文的封装与分发是一个一般的流程,正常的H-加密、密文的封装与分发均依赖类似于上述流程的处理,只是内部细节的实现各不相同,详见本发明发明内容第六方面;一般的H-混合加密允许加密者在支持范围内自由选择加密所使用的算法、密钥、加密方法以及填充模式等,通过不定长头部数据H-模块,以替换表的形式进行记录;密文内容的安全性由完整公钥的破译和H-混合加密的复杂性共同保障,当完整公钥的密文内容未被破译时,破译者无法通过不定长头部数据获得任何关于加密的有效信息,从而无法破译密文,要希望破译密文,必须首先破译完整公钥,然后破译加密所使用的非对称密钥、对称密钥,才能破译密文,因此是具有多重安全保障的;
根据使用的场景和用途、使用的安全需要、密钥传输的需要等,H-混合加密的密钥选择可以在完整公钥中的对称密钥、完整公钥外的对称密钥、非对称密钥中选择;当完整公钥不通过网络传输时,所有的选项都是十分安全的,为了使加密所耗费的时间复杂度更低,通常选择对称密钥;当希望保障加密本更加安全时,通常推荐使用更多的完整公钥外的对称密钥(使用非网络传输手段传输);当希望保障在完整公钥遭到破解后信息的安全,通常推荐使用更多的非对称密钥;在完整公钥遭到破解前,使用完整公钥中的对称密钥是充分安全的;加密者应根据实际情况灵活选择密钥和加密的方法;
H-加密、密文的封装与分发包含P2P、P2N、N2P全部的三种模式,产生差异的本质是由于对收发方身份校验情况的不同而产生的使用H-混合加密方法的不同,P2P模式下需要分别校验收发双方的身份,P2N模式需要校验发送方的身份,N2P模式下需要校验接收方的身份,配合解密时间限制和解密机器限制,身份校验机制能够更灵活的运用。
据图16,针对密文的接收、H-解密与解封,所使用的方法包括全部的P2P、P2N、N2P模式,在拥有本用户的个人密钥库,P2P模式下拥有发送方的接口公钥和完整公钥时,通过接收经加密和封装的密文、对不定长头部数据解封、读取H-模块并导出H-模块信息、还原混合加密方法并生成相应的解密方法、调用相应的数据库、对密文进行混合解密的步骤后,可以还原出明文内容;
将密文的接收、H-解密与解封的过程简化后写作程序伪码,即:
Receive();//获得经加密和封装的密文
Head_DePackage();//使用不定长头部数据进行解封,并进行校验
H_Minus_Manager Dec_Struct_Rece();//实例化一个H-管理数据结构
Read_from_H_M_Module();//从不定长头部数据获取H-管理信息,并确认为密文
if(P2P||N2P)Key_Cert_Read();//如果选择了P2P或N2P模式,读取本地个人密钥库
if(P2P||P2N)Key_Cert_Read();//如果选择了P2P或P2N模式,读取本地待接收用户的接口公钥以及完整公钥
Direct_H_Dec(Dec_Struct_Rece);//指导H-混合解密
Hybrid_Minus_Decrypt();//使用预设的用于传输的完整公钥的H-解密方法进行混合解密
需要特殊说明的是,进行密文的接收、H-解密与解封,当N2P模式时,要求接收方拥有本用户个人密钥库,当P2N模式时,要求接收方拥有发送方的完整公钥,当P2P模式时,要求收发方互相拥有对方完整公钥,当且仅当上述条件成立时,才得以正确地进行文密文的接收、H-解密与解封;上述密文的接收、H-解密与解封是一个一般的流程,正常的密文的接收、H-解密与解封均依赖类似于上述流程的处理,只是内部细节的实现各不相同,详见本发明发明内容第六方面;密文的接收、H-解密与解封包含P2P、P2N、N2P全部的三种模式,产生差异的本质是由于对收发方身份校验情况的不同而产生的使用H-混合加密方法的不同,P2P模式下需要分别校验收发双方的身份,P2N模式需要校验发送方的身份,N2P模式下需要校验接收方的身份,配合解密时间限制和解密机器限制,身份校验机制能够更灵活的运用。
据图17,针对基于H-改进的数字签名方案,在发送方用户的个人密钥库,接收方拥有发送方完整公钥时,当需要生成数字签名时,通过调用个人密钥库、使用预设的用于数字签名的H-加密方法、对哈希值使用私钥加密公钥解密的方法进行H-混合加密的步骤后,即生成了数字签名;当需要验证数字签名时,通过调用发送方的完整公钥、使用预设的用于数字签名的H-解密方法、对数字签名使用私钥加密公钥解密的方法进行H-混合解密的步骤后,得到了解密后的待签名数据的哈希值,再对接收到的数据进行散列函数变换计算另一哈希值,两哈希值一致,则完成验证;
将基于H-改进的数字签名的过程简化后写作程序伪码,即:
H_Minus_Manager DS_Struct_Dist();//实例化一个H-管理数据结构,选定预设的用于数字签名的H-加密方法
Key_Cert_Read();//读取本地个人密钥库
Direct_H_Enc(DS_Struct_Dist);//指导H-混合加密
Hybrid_Minus_Encrypt();//使选定的H-加密方法进行混合加密
//对尾部进行随机数位流的写入
//生成了数字签名的签名内容
将基于H-改进的验证数字签名的过程简化后写作程序伪码,即:
Receive();//获得数字签名
H_Minus_Manager DS_Struct_Rece();//实例化一个H-管理数据结构
Key_Cert_Read();//如果选择了P2P或P2N模式,读取发送用户的完整公钥
Direct_H_Dec(DS_Struct_Rece);//指导H-混合解密
Hybrid_Minus_Decrypt();//使用预设的用于传输的完整公钥的H-解密方法进行混合解密
//得到了解密后的待签名数据的哈希值HASH_CONTEXT_1
HASH_CONTEXT_2=HASH(Data);//接收到的数据进行散列函数变换计算另一哈希值
Cmp(HASH_CONTEXT_1,HASH_CONTEXT_2);//比较,若两哈希值一致,则完成验证
需要特殊说明的是,数字签名功能通常配合不定长头部数据的校验域校验使用,当且仅当P2P模式下支持使用数字签名;数字签名内容的安全性由完整公钥的破译和H-混合加密的复杂性共同保障,当完整公钥的密文内容未被破译时,破译者无法通过不定长头部数据获得任何关于数字签名的有效信息,从而无法破译数字签名,要希望破译数字签名,必须首先破译完整公钥,然后破译数字签名加密所使用的非对称密钥,才能破译数字签名,因此是具有多重安全保障的;选择基于H-改进的数字签名方案往往是基于安全性最大化而牺牲空间复杂度和时间复杂度考虑的,由于非对称加密填充的问题,使用基于H-改进的数字签名方案生成的数字签名往往具有远大于哈希值长度的长度,通常是KB级的,因此应当慎重选择。
据图18,针对基于流式传输加密、封装的优化,配合本发明发明内容第三方面和实施例三的不定长头部数据,使用流式传输模块管理模块、使用改进的H-模块针对流式传输进行优化;其中加密的部分与一般的H-加密完全相同,在封装过程中,充分利用流式传输的连续性,通过减少封装写入的内容最大化的扩展数据的收发吞吐量,提高流式传输的效率;
由于本发明第六方面中对流式传输优化的阐述已经十分详尽,本实施例将仅对实现中不同步骤H-模块的写入展开伪代码层的对比:
握手和通信步骤写入H-模块的数据与一般情况下写入H-模块的数据相同,即写入:最新修改后的唯一编码,内容标志,用途选择,场景和用途模式,H-加密所采用的阶、层设定,母密钥或证书的行列、组,母密钥或证书的使用方法,子密钥或证书行列、组,每阶填充的情况,进行封装的时间点,(可选的)允许解密的机器,(可选的)允许解密的时间限制,密文后附加的随机数位流长度;
非接续传输步骤(包括数据的首次传输步骤和数据的修补传输步骤)写入H-模块的数据仅包括每阶填充的情况,进行封装的时间点,以及密文后附加的随机数位流长度,简化后写作程序伪码,即:
Write(“%H_6”);
for(int i=0;i<Number_of_Step;i++)Write(Convert(Padding_Sec));
//写入“%H_6”,按顺序写入每阶填充层数、体码规则或长度对应的替换表
Write(PRNG());//写入随机字节随机数的干扰
Write(“%H_7”);Write(Convert(Time_Now));//写入“%H_7”,写入完成H-封装的时间点的替换表
Write(“%H_A”);Write(Convert(Random_Length_After_Cipher));//写入“%H_A”,写入H-混合加密后在尾部附以随机字节随机数的长度的替换表
//至此,完成H-模块全部内容的写入
接续传输步骤写入H-模块的数据仅包括进行封装的时间点,以及密文后附加的随机数位流长度,简化后写作程序伪码,即:
Write(“%H_7”);Write(Convert(Time_Now));//写入“%H_7”,写入完成H-封装的时间点的替换表
Write(“%H_A”);Write(Convert(Random_Length_After_Cipher));//写入“%H_A”,写入H-混合加密后在尾部附以随机字节随机数的长度的替换表
//至此,完成H-模块全部内容的写入
需要特殊说明的是,流式传输优化的使用可以在使用流式传输加密的音视频等实例中得到使用,如实时高保密性的会议,亦可在分块传输的过程中使用,如超大压缩分卷的传输中使用;正常的合理使用中,流式传输优化的情况下,密文的安全程度与使用一般的同等H-混合加密方法的安全性相当;
应当说明的是,本发明提供的流式传输的优化仅包含最基本的反馈机制,虽然均支持P2P、P2N、N2P的不同模式,但主要适用于P2P模式的一对一信息交互,在P2N、N2P模式下可能涉及多用户信息交互的部分应采用其他方案处理多用户信息交互的需求,或基于本发明进一步拓展基于机器码或唯一识别码的多用户信息交互系统。
针对对称式加密反破译的优化,在H-混合加密方案中加入只有一层的一阶,采用其他阶所有层的对称式密钥、非对称密钥的公钥部分、非对称密钥经过密钥交换生成的密钥(仅限P2P模式),经过一确定方法(通常是一散列函数)将上述所有密钥变换成唯一的值(通常是哈希值),用作该阶该层的对称式密钥,进行加密,保证了全部密钥或证书未能被完全破译之前,破译者不可能通过破译部分密钥从而部分地破译密文;
其所采用的加密方法同本发明发明内容第一方面和实施例一中H-混合加密的方法一致,区别在于密钥生成的方式,即使用其他阶所有层的其他所有密钥生成该阶该层的密钥;
将对称式加密反破译的优化中一阶一层密钥生成的过程简化后写作程序伪码,即:
unsigned char*Key_STEP1_STAGE1;…;unsigned char*Key_STEP1_STAGEn1;
unsigned char*Key_STEPi_STAGE1;…;unsigned char*Key_STEPi_STAGEni;
unsigned char*Key_STEPi+2_STAGE1;…;unsigned char*Key_STEPi+2_STAGEni+2;
unsigned char*Key_STEPm_STAGE1;…;unsigned char*Key_STEPm_STAGEnm;
//其他阶、层的所有密钥
unsigned char*Key_comb;//用于存储组合后、未散列函数变换的密钥组
strcpy(Key_comb,Key_STEP1_STAGE1);…;strcpy(Key_comb,Key_STEP1_STAGEn1);
strcpy(Key_comb,Key_STEPi_STAGE1);…;strcpy(Key_comb,Key_STEPi_STAGEni);
strcpy(Key_comb,Key_STEPi+2_STAGE1);…;strcpy(Key_comb,Key_STEPi+2_STAGEni+2);
strcpy(Key_comb,Key_STEPm_STAGE1);…;strcpy(Key_comb,Key_STEPm_STAGEnm);
//依次拷贝并组合其他阶、层的所有密钥
unsigned char*Key_hash=HASH(Key_comb);//将其他阶、层的所有密钥的组合经散列函数得到哈希值,用作该阶、该层的对称式密钥
需要特殊说明的是,上述散列函数变换的方式并非利用其他阶、层的所有密钥生成对称式密钥的唯一方法,采用密码学散列函数作为唯一确定的方法生成密钥是一种推荐的办法;当采用散列函数变换时,通常需要考虑填充问题,即当将其他阶、层的所有密钥的组合Key_comb长度小于散列函数的分组长度时,需要进行可追溯、一一对应的填充以保障其防范字典攻击的安全性,例如循环复制填充直至填充满分组长度等。
针对临时对称式密钥在封装中的优化,本发明使用经变换的H-混合加密方法对临时密钥进行加密,并同密文一同分发;由于本发明第六方面中对临时对称式密钥在封装中的优化的阐述已经十分详尽,本实施例将仅对经过加密的临时密钥写入不定长头部数据的两种方法在伪代码层上展开实现;
将经过加密的临时密钥写入母密钥的使用方法的过程简化后写作程序伪码,即:
Write(Key_Cert_Method_Sec.Saved_Key);//将经过加密的临时密钥写入母密钥的使用方法,即附加的Saved_Key中
将经过加密的临时密钥写入不定长头部数据的注释模块的过程简化后写作程序伪码,即:
Write(EX_NOTE_Module);//将经过加密的临时密钥写入不定长头部数据的注释模块,即EX_NOTE_Module中
实施例七
据图19,在解决执行本发明所涉方法的系统的问题上,本实施例提供一种能够执行本发明任何发明内容和任意实施例所涉方法,即能够执行本发明上述任何方面中任何有关于:混合加密解密(H-加密解密),不定长头部数据封装和解封,管理和存储密钥和证书,管理和存储H-加密方法,分布式密中密双层分发的运作、管理和保护工作的系统,该系统包括:
H-混合加密的方法与接口,能够执行H-混合加密并输出密文;
H-混合解密的方法与接口,能够执行H-混合解密并输出明文;
不定长头部数据的方法与接口,能够进行不定长头部数据的封装、校验和解封;
混合加解密密钥和证书的存储和管理方法与接口,能够存储和调用个人密钥库、其他用户的接口公钥、完整公钥、替换表、其他信息等;
混合加解密的加密手段的管理方法与接口,能够设置H-混合加密方法、指导H-混合加密、写入不定长头部数据H-模块,能够导入不定长头部数据H-模块、还原H-加密方法并生成对应H-混合解密方法、指导H-混合解密;
分布式密中密双层分发接口,能够指导接口公钥的导出和分发,指导完整公钥的导出和分发,指导完整公钥的更新的导出和分发,密文的加密、封装、分发、接收、解封、解密,对不同情况下的加密和分发开展优化;
使用包括上述六个接口构成的系统,在接口内部实现功能、接口之间互相调用的系统内,能够实现:
通过指令的控制,生成本用户个人密钥库,并写入本地数据库;
通过指令的控制,通过调取本地本用户个人密钥库,导出本用户的接口公钥,封装,并进行分发;
通过指令的控制,通过调取本地本用户个人密钥库,导出本用户的完整公钥(或完整公钥的更新),使用H-混合加密,封装,并进行分发;
通过指令的控制,接收其他用户的接口公钥,解封,并写入本地数据库;
通过指令的控制,接收其他用户的完整密钥,通过调取本地该用户的接口公钥,解封,使用H-混合解密,并写入本地数据库;
通过指令的控制,通过调取本地其他用户的完整公钥(以及P2P情况下本用户个人密钥库),使用H-混合加密,封装,得到经加密和封装后的密文,并进行分发;
通过指令的控制,通过调取本地本用户个人密钥库(以及P2P情况下其他用户的完整公钥),对经加密和封装后的密文进行解封,使用H-混合解密,得到明文;
针对不同情况下的加密和分发开展优化;
需要特殊说明的是,上述系统可执行本发明任何发明内容和任意实施例所涉方法,具备执行方法相应的功能模块和有益效果。
实施例八
据图20,在解决执行本发明所涉方法的设备的问题上,本实施例提供一种发送方设备、接收方设备或兼容发送和接收的设备,即能够执行本发明上述任何方面中任何有关于:混合加密解密(H-加密解密),不定长头部数据封装和解封,管理密钥和证书,管理H-加密方法,分布式密中密双层分发的运作、管理和保护工作等,以及其中的子方法和子功能的设备,该设备包括:
一种能够执行混合加密(H-加密),不定长头部数据封装,管理密钥和证书,管理H-加密方法,分布式密中密双层分发的运作、管理和保护工作等的发送方设备;
一种能够执行混合解密(H-解密),不定长头部数据解封,管理密钥和证书,管理H-加密方法,分布式密中密双层分发的运作、管理和保护工作等的接收方设备;
一种能够执行混合加密解密(H-加密解密),不定长头部数据封装和解封,管理密钥和证书,管理H-加密方法,分布式密中密双层分发的运作、管理和保护工作等的兼容发送和接收的设备;
上述三种设备在硬件结构上类似,区别处在于包含可执行程序系统的不同以及支持的指令不同,因此统一介绍该发送方设备、接收方设备以及兼容发送和接收的设备的结构。据图20,(以下统称为设备)设备以通用计算设备的形式表现,设备的结构包含:
指令交互设备,典型地包含指令输入设备、指令识别和处理设备、指令发出设备、指令反馈设备;举例来说,可以是一个包含控制器的键盘、指向设备、显示器等,用户可以通过键盘输入指令,键盘中的微处理器能够识别、处理并发出用户输入的指令,通过指向设备将指令传输到接收设备,通过显示器反馈指令执行的结果;亦可以是一个自动化控制设备,自动的生成指令、处理并发出指令,通过指向设备将指令传输到接收的设备,自动地接收和反馈指令执行的结果;
指令接口,典型地包含传输指令到接收设备的硬件,举例来说,可以是一根拥有足够串并口连接线的电缆,将电子指令信号传输到接收设备,即包含可执行程序的系统;亦可以是无线传输设备、电路板蚀刻线路等;
包含可执行程序的系统,典型地包含且不限于操作系统、执行本发明所涉方法的系统等,通常存储于特定介质上,如本发明发明内容第九方面和实施例九中所涉介质;根据设备的用途不同,存储于介质中的系统可以包含不同的可执行程序,举例来说,例如当用作兼容发送和接收的设备时,执行本发明所涉方法的系统中可以包含H-混合加密的方法与接口、H-混合解密的方法与接口、不定长头部数据的方法与接口、混合加解密密钥和证书的存储和管理方法与接口、混合加解密的加密手段的管理方法与接口、分布式密中密双层分发接口的可执行程序;该包含可执行程序的系统通常以本地存储的系统的形式,也可通过网络环境来实现;可执行程序通常执行本发明发明内容或实施例中的方法,并具备执行方法相应的功能模块和有益效果;
随机存储设备,典型地包含随机存取存储器(RAM),举例来说,可以是微型计算机中的内存条,用于存储可执行程序运行中产生的临时数据、请求通用计算设备处理的数据、通用计算设备处理后的数据等,用于高速地与可执行程序、通用计算设备交互数据;可以是集成处理系统中的易失性闪存颗粒;亦可以是其他可移动/不可移动的、易失性/非易失性计算机系统存储介质,通常使用不可移动的、易失性存储器,以满足告诉交互数据的需要;
数据和地址总线,典型地包含总线传输器、总线存储器、总线控制器,包括但不限于控制器集成总线、处理器集成总线、外围总线、或多总线结构中的任意总线结构,举例来说,可以是处理器集成总线,通过处理器中的控制器、通过处理器集成总线与随机存储设备进行通信、地址访问和交互数据;亦可以是工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线,外围组件互联(PCI)总线等;
通用计算设备,典型地包含处理器、地址缓存器、数据缓存器等,包括但不限于各类集成的串行处理器、并行处理器、处理器单元、多处理器单元、多处理器阵列等,举例来说,可以是微型计算机中的集成CPU,通过与随机存储设备链接的数据和地址总线获取地址与数据,存储于内置的地址缓存器、数据缓存器中,并对数据进行处理,同样通过与随机存储设备链接的数据和地址总线存储经过处理的数据;亦可以是集成式处理设备的SoC芯片、微处理单元,大型服务器中的处理器阵列等;
I/O接口,典型地包含双向通信的硬件,举例来说,可以是一根拥有足够串并口连接线的电缆,供设备间的通信和交互,能够同步/异步、单向/双向地传输数字数据流;亦可以是无线传输设备、电路板蚀刻线路等;通常使用异步、双向的I/O接口或者同步、双向的I/O接口进行设备间的通信和交互;
硬件存储设备,典型地包含非易失存储介质,举例来说,可以是微型计算机中的磁盘驱动器,通过I/O接口与包含可执行程序的系统连接,用于读取和调用包含可执行程序的系统中的可执行程序;通过I/O接口与随机存储设备链接,用于读取和写入可执行程序需要调用或生成的数据;通过I/O接口与随机存储设备传输和通信,用于调取和存储设备间信息和数据的交互和收发中需要或产生的数据;亦可以是其他可移动/不可移动的、磁介质/光电介质或其他介质的存储设备,例如CD-ROM、DVD-ROM、可移动硬盘等;
传输通信设备,典型地包含通信发送设备、通信接收设备,举例来说,可以是微型计算机中的网卡、调制解调器,利用互联网连接发送数据和接收数据,完成密钥的收发、密文的收发等;可以是其他网络通信设备,如局域网(LAN)通信设备,广域网(WAN)通信设备,无线局域网(WLAN)适配器,近场通讯(NFC)设备或公共网络;亦可以是不依赖网络的物理通信设备,如离线传输设备,例如用于磁盘通信的设备、用于可移动磁盘通信的设备等;
需要特殊说明的是,上述设备结构仅包含了必要的一些硬件设备,结合发送方、接收方或兼容发送方接收方系统的需要,还可以包括且不限于:微代码、微处理器、控制器、设备驱动器、冗余处理单元、数据生成单元、熵生成单元、外部磁盘阵列、RAID系统、服务管理系统、用户管理系统、数据备份存储系统等设备。
设备的运作方式为:指令交互设备向包含可执行程序的系统发出指令;包含可执行程序的系统接收指令,通过I/O接口从硬件存储设备中调用相应的可执行程序、数据信息等,执行程序,将需要处理的数据、地址和指令写入随机存储设备,并通过I/O接口读取随机存储设备中需要读取的数据;通用计算设备通过数据和总线地址随机存储设备读取需要处理的数据,并处理数据,通过数据和总线地址将经过处理的数据写入随机存储设备;随机存储设备依照指令将经过处理、并需要存储的数据通过I/O接口写入硬件存储设备;依照指令交互设备向包含可执行程序的系统发出的指令,传输和通信设备将硬件存储设备中需要发送的数据进行发送,并接收需要接受的数据,通过I/O接口写入硬件存储设备;包含可执行程序的系统向指令交互设备反馈程序执行的结果。
实施例九
在解决执行本发明所涉方法的设备的问题上,本实施例提供一种一种存储介质,能够存储本发明发明内容任何方面和任意实施例中涉及的可执行指令和执行过程中产生的任何数据的存储介质,该指令被通用计算设备执行时能够实现本发明发明内容任何方面和任意实施例中的方法和功能;
即,存储混合加密解密(H-加密解密)的指令和产生的数据,不定长头部数据封装的指令和产生的数据,管理和存储密钥和证书的指令和产生的数据,管理和存储H-加密方法的指令和产生的数据,分布式密中密双层分发的指令和产生的数据,等,以及其中的子方法和子功能;
对于实体介质,可以采用一个或多个计算机可读、可读写的介质的任意组合;计算机计算机可读、可读写的介质可以是计算机可读、可读写信号介质或者计算机可读、可读写存储介质,举例来说,包括但不限于电、磁、光、电磁、红外线、半导体、生物基因的系统、装置或器件,或者以上任意的组合,具体地,包括但不限于任意类型的计算机磁盘、硬盘、软盘、光盘、固态硬盘、可移动磁盘、闪存颗粒、RAM、ROM、可擦写式可编程只读存储器(EPROM)、磁带、DNA数据存储器等,或者上述的任意合适的组合,即可以是任何包含存储程序和数据的有形介质,所存储的程序可以被相应装置、设备、系统或者器件使用或结合使用,所存储的数据可以被相应装置、设备、系统或者器件所读取和写入。
对于信号介质,可以采用包括在基带中或者在载波中作为数据信号所承载,其中的信号包含了计算机可读的程序代码以及执行过程中所产生的任何数据;传播的信号可以采用多种形式,包括但不限于电磁信号、光电信号、化学信号、生物信号等信号,以及上述任意合适的组合;其中,计算机可读的程序代码以及执行过程中所产生的任何数据可以使用任何适当的介质来传输,包括且不限于有线电磁信号、有线光电信号、化学信号、生物信号、无线射频信号、RF等等,以及上述任意合适的组合。
实施例十
据图20,在解决一种制式哈希生成的问题上所采用的程序流程是选择若干散列函数,按照输出长度由小到大逐次、多次地进行散列函数的运算,最终输出指定长度的制式哈希,一般形式的具体流程如下:
选择若干(记为n)种可具有不同输出长度、分组长度、运算方法的散列函数HFi_Hash_Func()(尤其是密码学散列函数),按照输出长度由小到大排列,依次记作HF1、HF2…HFn
拷贝待求哈希的数据Original_Data进入临时状态数组HASH_Data;
进入循环;
i=1,即第一次循环,若临时状态数组HASH_Data数据长度小于散列函数HF1的分组长度Get_Group_Length(HF1_Hash_Func()),则将数据复制扩充直至填满散列函数HF1的分组长度,对填充完成的数据作哈希变换HF1_Hash_Func(),得到哈希值H1;若临时状态数组HASH_Data数据长度大于散列函数HF1的分组长度Get_Group_Length(HF1_Hash_Func()),则直接对待求哈希的数据使用HF1作哈希变换HF1_Hash_Func()(使用散列函数内部的尾部填充机制),得到哈希值H1,存储在临时状态数组HASH_Data中;
i=2,第二次循环,以存储在临时状态数组HASH_Data中哈希值H1作为本轮待求哈希的数据,由于散列函数按照输出长度由小到大排列,通常地,哈希值H1必小于散列函数HF2的分组长度Get_Group_Length(HF2_Hash_Func())(若不小于,则不填充直接变换,使用散列函数内部的尾部填充机制),将数据复制扩充直至填满散列函数HF2的分组长度Get_Group_Length(HF2_Hash_Func()),对填充完成的数据使用HF2作哈希变换HF2_Hash_Func(),得到哈希值H2,同样存储在临时状态数组HASH_Data中;
当循环次数i>=2且i<=n时,类似于第二次循环,以第i-1轮生成的哈希值Hi-1作为第i轮待求哈希的数据,填充至填满散列函数HFi的分组长度后Get_Group_Length(HFi_Hash_Func()),对填充完成的数据使用HFi作哈希变换HFi_Hash_Func(),得到哈希值Hi存储在临时状态数组HASH_Data中;
当循环次数i>=n时,跳出循环,存储在临时状态数组HASH_Data中的哈希值Hn即是所求的制式哈希;
将一般形式的生成制式哈希的过程写作程序伪码,即:
Figure BDA0003777632010000651
需要特殊说明的是,所选择的散列函数的范围可以包括所有的散列函数,但出于密码学安全考虑,应当选取密码学散列函数,且应当选取较为前沿的新式密码学散列函数,比较推荐的函数分别是:SHA-1,SHA-256、SHA-512、SHA-3等;最终生成的制式哈希长度取决于最后一次进行散列函数变换所使用的散列函数,即是具有最大输出长度的散列函数HFn;制式哈希本质上采用了不加盐的多轮哈希,通过不同的散列函数的使用达到混淆的作用,即破译方必须完全了解制式哈希运算的规则,才可能通过字典法或暴力破解方法进行破译,当待求哈希数据较长时,往往无法通过哈希值确定待求哈希数据;制式哈希是可追溯、可重放的,即:使用同样的待求哈希数据、同样的散列函数可以获得完全相同的制式哈希,因此通常用作复杂数据的完整性校验;
此外,上述制式哈希生成过程采用的手动填充方式是可以根据需要进行拓展的,例如,当需要校验生成方身份时,可以强制填充,并采用加盐填充,填充内容可以包括生成方机器码或唯一编码(配合H-混合加密、封装、密中密双层分发时),例如:
Figure BDA0003777632010000661
又或是,当需要严格安全和防范字典法破译时,可以采用双倍于分组长度的填充,例如:
for(int j=len,int k=len;j<2*Get_Group_Length(HFi_Hash_Func());k++,j+=2){…}。
据图22,在解决一种随机替换表的生成的问题上所采用的程序流程是选择若干散列函数,按照输出长度由大到小逐次、多次地进行随机加盐的散列函数的运算,最终输出指定长度的随机替换表,一般形式的具体流程如下:
选择若干(记为n)种可具有不同输出长度、分组长度、运算方法的散列函数HFi_Hash_Func()(尤其是密码学散列函数),按照输出长度由大到小排列,依次记作HF1、HF2…HFn
拷贝被替换数据Original_Data进入临时状态数组HASH_Data;
进入循环;
i=1,第一次循环,若临时状态数组长度strlen(HASH_Data)小于散列函数HF1的分组长度Get_Group_Length(HF1_Hash_Func()),则使用随机数位流在被替换数据后填充直至填满散列函数HF1的分组长度,对填充完成的数据作哈希变换HF1_Hash_Func(),得到哈希值H1;若临时状态数组长度strlen(HASH_Data)大于散列函数HF1的分组长度Get_Group_Length(HF1_Hash_Func()),则直接对被替换数据使用HF1作哈希变换HF1_Hash_Func(),得到哈希值H-1,继续拷贝至临时状态数组HASH_Data中,以哈希值H-1作为被替换数据,使用随机数位流在待求哈希的数据(H-1)后填充直至填满散列函数HF1的分组长度Get_Group_Length(HF1_Hash_Func()),对填充完成的数据作哈希变换HF1_Hash_Func(),得到哈希值H1,存储在临时状态数组HASH_Data中;
i=2,第二次循环,以存储在临时状态数组HASH_Data中的哈希值H1作为本轮被替换数据,由于散列函数按照输出长度由大到小排列,因此;若哈希值H1小于散列函数HF2的分组长度Get_Group_Length(HF2_Hash_Func())时,用随机数位流在被替换数据后填充直至填满散列函数HF2的分组长度Get_Group_Length(HF2_Hash_Func()),对填充完成的数据作哈希变换HF2_Hash_Func(),得到哈希值H2;若哈希值H1大于散列函数HF2的分组长度Get_Group_Length(HF2_Hash_Func()),则直接对被替换数据使用HF2作哈希变换HF2_Hash_Func(),得到哈希值H-2,继续拷贝至临时状态数组HASH_Data中,以哈希值H-2作为被替换数据,使用随机数位流在被替换数据(哈希值H-2)后填充直至填满散列函数HF2的分组长度Get_Group_Length(HF2_Hash_Func()),对填充完成的数据作哈希变换F2_Hash_Func(),得到哈希值H2,存储在临时状态数组HASH_Data中;
当循环次数i>=2且i<=n时,类似于第二次循环,以存储在临时状态数组HASH_Data中的第i-1轮生成的哈希值Hi-1作为第i轮被替换数据,用随机数位流填充至填满散列函数HFi的分组长度Get_Group_Length(HFi_Hash_Func())或进行哈希变换HFi_Hash_Func()得到哈希值H-i,再用随机数位流填充至填满散列函数HFi的分组长度Get_Group_Length(HFi_Hash_Func())后,对填充完成的数据使用HFi作哈希变换HFi_Hash_Func(),得到哈希值Hi,存储在临时状态数组HASH_Data中;
当循环次数i>=n时,跳出循环,存储在临时状态数组HASH_Data中的哈希值Hn即是所求的随机替换表;
将一般形式的生成随机替换表的过程写作程序伪码,即:
Figure BDA0003777632010000671
需要特殊说明的是,所选择的散列函数的范围可以包括所有的散列函数,但出于密码学安全考虑,应当选取密码学散列函数,且应当选取较为前沿的新式密码学散列函数,比较推荐的函数分别是:SHA-1,SHA-256、SHA-512、SHA-3等;最终生成的替换表长度取决于最后一次进行散列函数变换所使用的散列函数,即是具有最小输出长度的散列函数HFn;随机替换表本质上采用了随机加盐的多轮哈希,通过不同散列函数的使用、随机数位流的加入达到混淆的作用,只有拥有对应被替换数据和相应替换表时才能将替换表唯一地转化为被替换数据,单纯的破解哈希值是无用的,由于所选用的散列函数的输出长度由长到短,即使碰撞找到了哈希值对应的可能原文也通常无法获得有效信息,保证了替换表的理论破解难度;随机替换表是一个不可追溯、不可求逆的、随机生成的数码表,即使使用相同的被替换内容、相同的散列函数,生成出的替换表将是不同的,通常仅用作替换作用,即:(运用于不定长头部数据H-模块中)可通过明文传输替换表替换被替换内容使其具有保密性,破译者只有破译了经加密传输的替换表对应规则(包含在完整公钥中),才可通过替换表查表获得被替换的内容,本质上属于一种替换加密手段;
此外,上述随机替换表生成过程采用的随机数位流填充方式是可以根据需要进行拓展的,例如,当需要严格安全和防范字典法破译时,可以采用原文、随机数位流穿插填充,双倍于分组长度的填充,例如:
Figure BDA0003777632010000672
Figure BDA0003777632010000681
最后应当重申的是,本发明所涉全部依赖于计算机程序的方法不局限于上述实施例中以C++语言实现的方案,可以使用一种或者多种程序设计语言或其组合来编写用于执行本发明所涉的数据结构与算法,所述程序设计语言包括且不限于传统面向对象设计语言,诸如Java、Smalltalk、C++、C#等,包括且不限于传统面向过程设计语言,诸如Basic、C语言、PHP等,包括且不限于前沿的Python、Groovy、Go语言、R语言等,包括且不限于轻量化设备语言,诸如JavaScript、Rust、B#等,包括且不限于计算机软件语言,诸如Matlab语言等,包括且不限于汇编语言、低级语言、二进制语言等;程序代码可以完全地、部分地在相应系统和设备上执行,或作为单独的软件固件、软件插件、软件或软件套组在相应的设备上执行;在涉及服务器程序执行的情况下,程序代码可以独立地、混合地、嵌入地等,以任何形式在一台或者多台服务器上执行部分或全部的功能;在涉及远程程序执行的情况下,可以使用包括但不限于广域网(WAN)和局域网(LAN)连接执行程序的系统和设备,或者可以使用计算机并联的方式执行;以任何计算机程序设计语言、任何具体实现形式实现本发明所涉方法的可执行程序、可执行程序生成的全部数据均受到本发明的保护;
本发明所涉全部有关硬件的具体实现形式不局限于上述实施例中任何列举出的硬件,任何能够执行本发明所涉硬件功能、具有相关特性、实现相同有益效果的硬件均受到本发明的保护;
此外,上述实现方式仅是本发明的某些较佳的实施示例以及所利用的具体技术原理的展示,本发明不限于上述的实施示例以及上述核心方法的实现形式,对本领域内普通技术人员在不进行创造性劳动下可能产生的明显变化、调整、替代与合理的增删不会脱离本发明的保护范围。因此,虽然以上示例对本发明在C++的环境下的具体实施做了十分详尽的说明,但是在不脱离本发明构思的情况下,在任何环境、使用任何形式的任何实施例都属于本发明的保护范围。本发明的保护范围由所附的权利要求决定。

Claims (10)

1.一种混合加密方法,其特征在于:
加密的过程采用分阶划层的混合加密形式,分多阶对待加密内容进行多重加密、在每一阶加密中对待加密内容进行分块并对不同块采用不同加密方法和密钥进行分组加密;
所述的加密过程包括:
选择加密的阶数、每一阶的层数,并逐阶、逐层选定加密方法与密钥;
从第一阶开始,按照该阶所有层的层大小(加密吞吐量)之和为一块的方法,对待加密内容进行分块;在每一块内,依次按照每一层的加密方法、使用每一层的密钥、对该层大小的待加密数据进行加密;逐块加密;直至该阶待加密内容的尾部块,对尾部块中尾部层进行填充后,按照该层的加密方法、使用该层的密钥、对该层大小的待加密数据进行加密,然后完成该阶的加密;
自第二阶起(如果存在),以上一阶加密后的密文作为待加密内容,逐阶进行加密,直到完成最后一阶的加密;
至此,在进行完必要的操作后,混合加密完成,最后一阶加密后的密文即是最终混合加密后的密文。
2.一种混合解密方法,其特征在于:
解密的过程采用分阶划层的混合解密形式,分多阶对待解密内容进行多重解密、在每一阶解密中对待解密内容进行分块并对不同块采用不同解密方法和密钥进行分组解密;
该混合解密的方法能够解密权利要求1所述的混合加密方法所生成的密文;
所述的解密过程包括:
根据加密的阶数、每一阶的层数、每阶每层选定加密方法与密钥,选择解密的阶数、每一阶的层数,并逐阶、逐层选定解密方法与密钥;
从最后一阶开始,按照该阶所有层的层大小(解密吞吐量)之和为一块的方法,对待解密内容进行分块;在每一块内,依次按照每一层的解密方法、使用每一层的密钥、对该层大小的待解密数据进行解密;逐块解密;直至该阶待解密内容的尾部块,按照该层的解密方法、使用该层的密钥、对该层大小的待解密数据进行解密,对尾部块中尾部层进行去填充后,然后完成该阶的解密;
自倒数第二阶起(如果存在),以上一阶解密后的数据作为待解密内容,逐阶进行解密,直到完成第一阶的解密;
至此,在进行完必要的操作后,混合解密完成,第一阶解密后的数据即是最终混合解密后的明文。
3.一种不定长头部数据实现信息管理与签名校验的方法,其特征在于:
包含一种不定长头部数据的封装格式;
包含一种使用不定长头部数据封装格式进行封装的方法,一种解封使用不定长头部数据封装数据的方法;该不定长头部数据的封装格式适用于封装经过权利要求1所述的混合加密方法所生成的密文;该封装格式中能够存储用于权利要求2所述的混合解密方法进行解密所需要的必要信息;
所述的不定长头部数据的封装格式包括:
内容域,存储所与封装数据相关信息的区域,可以包括且不限于不定长头部标志、不定长头部版本号、加密情况说明、数据类型说明、加密方法说明、填充方法说明、所封装数据哈希、所封装数据采用的加密方法哈希、H-加密管理、非H-加密管理、备注内容、流式传输管理等模块;
校验域,存储校验内容域数据的相关信息,可以包括且不限于内容域数据的哈希或数字签名的模块;
分割域,存储分割不定长头部数据与所封装内容的分割标志;
使用不定长头部数据封装格式进行封装的方法包括:选择不定长头部数据的封装格式中需要使用的模块、根据所封装内容的相关信息写入内容域数据、计算生成并写入校验域数据、写入分割域数据;
解封使用不定长头部数据封装数据的方法包括:识别不定长头部数据、读取内容域数据、读取校验域数据并对内容域进行校验、输出相关信息、根据分割域确定不定长头部数据结束位置并定位所封装数据的起始点。
4.一种混合加解密密钥和证书的存储和管理方法,其特征在于:
包含一种存储有密钥、证书、混合加密替换表等的数据结构;
包含一种初始化、生成、修改、校验数据结构中数据成员,从数据结构中导出并写入本地文件(数据库),从本地文件(数据库)中读取并导入数据结构的方法;
包含一种可供外部调用获取数据结构中数据成员的方法;
该存储有密钥、证书、混合加密替换表等的数据结构能够为权利要求1所述的混合加密方法提供混合加密所选择的加密算法、密钥以及其他所需要的数据库信息,能够为权利要求3所述的不定长头部数据格式的封装提供封装中所需要的信息;该数据结构中能够从权利要求3所述的不定长头部数据格式的解封中获得有关所封装内容的加密、填充、哈希及其他有关信息,从而能够为权利要求2所述的混合解密方法提供混合解密所需要的解密算法、密钥以及其他所需要的数据库信息;
所述的存储有密钥、证书、混合加密替换表等的数据结构包括:
密钥和证书,存储密钥、证书的数据以及相关的存储情况、修改情况,可以包括且不限于密钥和证书的存储情况、密钥和证书的修改情况、密钥和证书等;
替换表,存储需要替换的数据以及与其对应的替换表,可以包括且不限于密钥和证书位置对应的替换表、组号替换表、加密方法替换表、混合加密阶层设定替换表、场景和用途标志替换表、填充情况替换表、时间替换表等;
数据结构自身的信息,存储数据结构的性质、身份、归属、完整性,可以包括且不限于版本号、创建时间、最后修改时间、有效期、累计修改次数、创建的机器码、上次修改的唯一编码、最新修改的唯一编码、完整性标志等。
5.一种混合加解密的加密手段的管理方法,其特征在于:
包含一种管理混合加解密加密手段的数据结构;
包含一种初始化、生成、修改数据结构中数据成员的方法;
包含一种从数据结构中以特定的格式导出相关加密手段方法,一种以特定格式导入相关加密手段并生成数据结构中相应数据成员的方法;
包含一种可供外部调用获取数据结构中数据成员的方法,以及一种读写权利要求3所述的不定长头部数据中H-模块的方法;
该管理混合加解密加密手段的数据结构能够为权利要求1所述的混合加密方法提供混合加密所选择的加密手段、加密所使用的密钥和证书在数据库中的位置信息、其他所需要有关混合加密的信息等,配合权利要求4所述的存储有密钥、证书、混合加密替换表等的数据结构,能够指导权利要求1所述的混合加密方法进行混合加密操作,配合权利要求3所述的不定长头部数据的封装格式,能够导出加密手段并存储于不定长头部数据中;该数据结构中能够从权利要求3所述的不定长头部数据格式中获得有关加密手段的信息,从而配合权利要求4所述的存储有密钥、证书、混合加密替换表的数据结构,生成与加密手段对应的解密手段,能够指导权利要求2所述的混合解密方法进行混合解密操作;
所述的管理混合加解密加密手段的数据结构包括:
数据库定位信息,存储加解密所依赖的数据库的定位标志,可以包括且不限于目标用户数据库的唯一编码、本用户数据库的唯一编码等;
混合加解密手段,存储混合加解密所需要的加解密手段,可以包括且不限于明文密文标志、场景和用途标志、阶、层设定、密钥和证书的位置和加密方法、填充情况等;
安全信息,存储允许混合解密的安全条件,可以包括且不限于允许解密的机器码、允许解密的时间等;所述的从数据结构中以特定的格式导出相关加密手段方法的特征在于:将部分或全部的数据成员以明文或其他形式导出为具有特定格式的信息;
所述的以特定格式导入相关加密手段并生成数据结构中相应数据成员的特征在于:将包含混合加密手段且具有特定格式的信息导入数据结构,并生成对应的数据成员与内容。
6.一种密中密双层分发的运作、管理和保护的方法,其特征在于:
包含一种接口公钥的密钥组,一种接口公钥明文分发的方法,其特征在于:属于密中密双层分发中的第一次分发,明文分发一组公钥组用作接口公钥;该接口公钥由权利要求4所述的存储有密钥、证书、混合加密替换表的数据结构所导出,使用权利要求3所述的不定长头部数据的封装格式封装,能够为权利要求1所述的混合加密方法、权利要求2所述的混合解密方法提供混合加密、解密所选择的加解密算法、密钥以及其他所需要的加解密信息,能够为权利要求4所述的存储有密钥、证书、混合加密替换表的数据结构提供部分密钥、证书、替换表以及其他所需要的数据库信息;分发采用网络分发或物理分发的形式;接收到该接口公钥后,能够使用的权利要求3所述的不定长头部数据的封装格式进行解封,能够导入权利要求4所述的存储有密钥、证书、混合加密替换表的数据结构并写入本地数据库,能够为权利要求1所述的混合加密方法、权利要求2所述的混合解密方法提供混合加密、解密所选择的加解密算法、密钥以及其他所需要的加解密信息,能够提供足够的数据以供权利要求6所述的完整公钥分发的混合加解密过程提供密钥等信息;
包含一种完整公钥的密钥组,一种完整公钥密文分发的方法,其特征在于:属于密中密双层分发中的第二次分发,密文分发一组包含密钥、证书以及其他所需要信息的数据用作完整公钥;该完整公钥权利要求4所述的存储有密钥、证书、混合加密替换表的数据结构所导出,使用权利要求6所述的接口公钥作为密钥、使用权利要求1所述的混合加密方法进行混合加密,使用权利要求3所述的不定长头部数据的封装格式封装,能够为权利要求1所述的混合加密方法、权利要求2所述的混合解密方法提供混合加密、解密所选择的加解密算法、密钥以及其他所需要的加解密信息,能够为权利要求4所述的存储有密钥、证书、混合加密替换表的数据结构提供密钥、证书、替换表以及其他所需要的数据库信息;分发采用网络分发或物理分发的形式;接收到该完整公钥后,能够使用的权利要求3所述的不定长头部数据的封装格式进行解封,能够导入权利要求4所述的存储有密钥、证书、混合加密替换表的数据结构并写入本地数据库,能够为权利要求1所述的混合加密方法、权利要求2所述的混合解密方法提供混合加密、解密所选择的加解密算法、密钥以及其他所需要的加解密信息,能够提供足够的数据以供权利要求6所述的使用密中密双层分发的密钥进行混合加密、解密提供密钥、证书、替换表以及其他所需要的信息;
包含一种接口公钥重置的方法,其特征在于:重置接口公钥中的数据,使用权利要求6所述的接口公钥明文分发的方法进行分发;
包含一种完整公钥的更新的方法,其特征在于:更新接口公钥中的数据,使用权利要求6所述的完整公钥密文分发的的方法进行分发;
包含一种使用密中密双层分发的密钥进行混合加密、解密以及封装的方法,其特征在于:使用权利要求6所述的完整公钥写入的本地数据库,导入权利要求4所述的存储有密钥、证书、混合加密替换表的数据结构作为密钥、证书、混合加密替换表的数据库,使用权利要求5所述的管理混合加解密加密手段的数据结构设定混合加密、解密手段,使用权利要求5所述的管理混合加解密加密手段的数据结构指导混合加密、混合解密,使用权利要求1所述的混合加密方法进行混合加密或使用权利要求2所述的混合解密方法进行混合解密,使用权利要求3所述的不定长头部数据的封装格式进行封装、解封;
包含一种基于混合加密方法改进的数字签名的方法,其特征在于:数字签名中的加密、解密过程使用权利要求1所述的混合加密方法进行混合加密或使用权利要求2所述的混合解密方法进行混合解密;
包含一种针对流式传输下混合加密与封装的优化方法,其特征在于:具有握手、通信、数据的首次传输、数据的接续传输、数据的修补传输等步骤,使用权利要求6所述的使用密中密双层分发的密钥进行混合加密、解密以及封装的方法进行加密、解密、封装;
包含一种针对对称式加密下反破译的优化方法,其特征在于:使用多组密钥共同生成一对称式密钥,用作权利要求1所述的混合加密方法中某只有一层的阶的密钥,并使用权利要求6所述的使用密中密双层分发的密钥进行混合加密、解密以及封装的方法进行加密、解密、封装;
包含一种针对临时对称式密钥在封装中的优化方法,其特征在于:使用权利要求1所述的混合加密方法对临时对称式密钥进行加密,并存储在权利要求3所述的不定长头部数据的封装格式中。
7.一种系统,其特征在于:
能够执行权利要求1~6所述的部分或全部方法和功能。
8.一种设备,其特征在于:
可部分或全部包含:指令交互设备、指令接口、包含可执行程序的系统、随机存储设备、数据和地址总线、通用计算设备、I/O接口、硬件存储设备、传输通信设备;
包含可执行程序的系统的特征在于:其中的可执行指令能够执行权利要求1~6所述的部分或全部方法和功能。
9.一种存储介质,其特征在于:
包含计算机可执行指令的存储介质,其中的可执行指令能够执行权利要求1~6所述的部分或全部方法和功能。
10.一种制式哈希和随机替换表的生成方法,其特征在于:
采用多组散列函数、进行多次散列变换,生成:具有指定长度的、可追溯、可重放的制式哈希,具有指定长度的、不可追溯、可不可求逆的随机替换表;
该制式哈希和随机替换表适用于权利要求5所述的管理混合加解密加密手段的数据结构,权利要求4所述的存储有密钥、证书、混合加密替换表的数据结构中所需要的制式哈希和替换表;
制式哈希的生成过程包括:
选择若干可具有不同输出长度、分组长度、运算方法的散列函数,按照输出长度由大到小排列,记作HF1、HF2…HFn;
按照输出长度由大到小依次使用所选用的散列函数HF1、HF2…HFn对经过非随机填充后的待求哈希的数据进行散列变换;
最后一次使用HFn进行散列变换后得到的哈希值即是生成的制式哈希;
随机替换表的生成过程包括:
选择若干可具有不同输出长度、分组长度、运算方法的散列函数,按照输出长度由小到大排列,记作HF1、HF2…HFn;
按照输出长度由小到大依次使用所选用的散列函数HF1、HF2…HFn对经过随机填充后的被替换的数据进行散列变换;
最后一次使用HFn进行散列变换后得到的哈希值即是生成的随机替换表。
CN202210921081.3A 2022-08-02 2022-08-02 基于分阶划层与密中密分发的混合加密解密系统与方法 Pending CN115174261A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210921081.3A CN115174261A (zh) 2022-08-02 2022-08-02 基于分阶划层与密中密分发的混合加密解密系统与方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210921081.3A CN115174261A (zh) 2022-08-02 2022-08-02 基于分阶划层与密中密分发的混合加密解密系统与方法

Publications (1)

Publication Number Publication Date
CN115174261A true CN115174261A (zh) 2022-10-11

Family

ID=83477136

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210921081.3A Pending CN115174261A (zh) 2022-08-02 2022-08-02 基于分阶划层与密中密分发的混合加密解密系统与方法

Country Status (1)

Country Link
CN (1) CN115174261A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115567311A (zh) * 2022-10-12 2023-01-03 贵州电网有限责任公司 一种基于数据信息加密的加密系统及加密方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060190728A1 (en) * 2005-02-24 2006-08-24 Nima Veiseh System and method for three-phase data encryption
CN106790250A (zh) * 2017-01-24 2017-05-31 郝孟 数据处理、加密、完整性校验方法及身份鉴别方法及系统
CN109450937A (zh) * 2018-12-24 2019-03-08 深圳市华讯方舟卫星产业科技有限公司 信息安全通信方法、系统、网卡和存储介质
CN113438210A (zh) * 2021-06-04 2021-09-24 上海焜耀网络科技有限公司 一种数据传输处理方法、装置和电子设备
CN113556228A (zh) * 2021-07-29 2021-10-26 黄博暄 可用作种子的伪随机数的生成与相应唯一编码的生成方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060190728A1 (en) * 2005-02-24 2006-08-24 Nima Veiseh System and method for three-phase data encryption
CN106790250A (zh) * 2017-01-24 2017-05-31 郝孟 数据处理、加密、完整性校验方法及身份鉴别方法及系统
CN109450937A (zh) * 2018-12-24 2019-03-08 深圳市华讯方舟卫星产业科技有限公司 信息安全通信方法、系统、网卡和存储介质
CN113438210A (zh) * 2021-06-04 2021-09-24 上海焜耀网络科技有限公司 一种数据传输处理方法、装置和电子设备
CN113556228A (zh) * 2021-07-29 2021-10-26 黄博暄 可用作种子的伪随机数的生成与相应唯一编码的生成方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
成旭;张白一;: "基于多层前馈神经网络的分组密码设计", 计算机应用与软件, no. 06 *
梁敏;常朝稳;樊雪竹;: "加密存储算法和模式研究", 计算机工程, no. 13 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115567311A (zh) * 2022-10-12 2023-01-03 贵州电网有限责任公司 一种基于数据信息加密的加密系统及加密方法
CN115567311B (zh) * 2022-10-12 2023-05-05 贵州电网有限责任公司 一种基于数据信息加密的加密系统及加密方法

Similar Documents

Publication Publication Date Title
EP3692681B1 (en) A system and method for quantum-safe authentication, encryption and decryption of information
CN110313146B (zh) 模糊度增强
US8401186B2 (en) Cloud storage data access method, apparatus and system based on OTP
CN102377566B (zh) 一种电表数据的安全处理装置及系统
WO2019166001A1 (zh) 令牌生成和校验方法及智能终端
CN109543434B (zh) 区块链信息加密方法、解密方法、存储方法及装置
US9917695B2 (en) Authenticated encryption method using working blocks
CN109951268B (zh) 基于位置换和位变换的加密解密方法和装置
CN107135062A (zh) 一种改进的大文件的加密方法
CN108462686A (zh) 动态密钥的获取方法、装置、终端设备及存储介质
CN109194461A (zh) 基于双密钥流密码的单向链表顺序加密解密方法
CN105306194A (zh) 供加密档案和/或通讯协定的多重加密方法与系统
CN112738051A (zh) 数据信息加密方法、系统及计算机可读存储介质
US8675871B2 (en) Protecting a control vector in an optional block of a standard key block
CN115174261A (zh) 基于分阶划层与密中密分发的混合加密解密系统与方法
CN108199836B (zh) 一种密钥与设备绑定、解绑定的方法及装置
CN105339995A (zh) 解密装置、解密能力提供装置、其方法、以及程序
US9152801B2 (en) Cryptographic system of symmetric-key encryption using large permutation vector keys
WO2015166701A1 (ja) 暗号化方法、プログラム、および、システム
CN110113151B (zh) 一种对elf格式程序的非侵入式实时加解密方法
CN116389137A (zh) 一种基于网络信息安全的数据加密方法及系统
CN109768969A (zh) 权限控制方法及物联网终端、电子设备
CN101673328A (zh) 一种数字电影制作系统认证方法
CN114244509A (zh) 使用移动终端进行sm2一次一密双向认证开锁的方法
CN111314051B (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