CN111201749B - 用于安全数据通信的方法和系统 - Google Patents
用于安全数据通信的方法和系统 Download PDFInfo
- Publication number
- CN111201749B CN111201749B CN201880057218.7A CN201880057218A CN111201749B CN 111201749 B CN111201749 B CN 111201749B CN 201880057218 A CN201880057218 A CN 201880057218A CN 111201749 B CN111201749 B CN 111201749B
- Authority
- CN
- China
- Prior art keywords
- bit
- input
- output
- mapping
- segments
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/381—Currency conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3821—Electronic credentials
- G06Q20/38215—Use of certificates or encrypted proofs of transaction rights
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0822—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- Finance (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种计算机实现的方法,包括:接收包括N位输入片段的输入消息,N是大于1的整数;使用存储在非暂态存储介质中的2N×2N一对一映射,将N位输入片段转换成对应的N位输出片段;以及生成包括N位输出片段的输出消息。并且,一种用于供接收者验证从发送者接收的消息的计算机实现的方法,该消息包括第一部分和第二部分。这个方法包括:从见证实体接收令牌;通过消息的第一部分和令牌的联接处理来获得第一数据元素;通过使用与发送者相关联的密钥的、消息的第二部分的联接处理来获得第二数据元素;以及通过比较第一数据元素与第二数据元素来验证消息。
Description
相关申请的交叉引用
本申请援引35 U.S.C.119(e)要求Kuang等人于2018年4月26日提交的美国临时专利申请序列No.62/662,819的权益。本申请还是Kuang于2017年10月27日提交的美国专利申请序列No.15/796,577的部分继续(CIP);援引35U.S.C.120要求其权益。前述两个申请的内容通过引用并入本文。
技术领域
本发明大体上涉及数据保护,尤其涉及数据编码和解码。
背景技术
当前的数据加密技术依赖复杂数字问题的解决方案,这些问题提出了待解决的巨大挑战。但是,当拥有解决方案的“密钥”时,合法用户可以轻松获得对原始未加密数据的访问权。这是诸如AES(高级加密标准)之类的技术背后的原理,根据所述技术,可以安全地以加密形式传输数据。但是,只有在截获加密数据的恶意方在没有所需密钥的情况下不具有足够的计算能力和足够的目标数据可用于实际解决问题的时候,AES和其它加密技术提供的安全性才能持续存在。
为了对付全世界恶意团体不可避免的计算能力增加(随着量子计算机的出现,这种能力有望进一步提高),那些需要安全通信的人通常会寻求增加正在为其提出解决方案的数字问题的复杂性。但是,在问题复杂性方面这种升级的一种副作用是合法用户(即,具有所需密钥的用户)现在也必须花费越来越多的资源来保护和解密数据。因此,虽然合法用户所需的资源仍被设计为小于通过蛮力解决问题所需的资源,但它们对各种性能参数(诸如吞吐量和能耗)造成了不可忽略的负担。
因此,业界将欢迎高度安全且在计算上经济的数据保护解决方案。
发明内容
根据广义的方面,可以提供一种计算机实现的方法,包括:
-接收包括N位输入片段的输入消息,N是大于1的整数;
-使用存储在非暂态存储介质中的2N×2N一对一映射,将N位输入片段转换成对应的N位输出片段;以及
-生成包括N位输出片段的输出消息。
根据又一个广义的方面,可以提供一种包括计算机可读指令的非暂态计算机可读存储介质,该计算机可读指令在由处理器执行时使处理器执行一种方法,该方法包括:
-接收包括N位输入片段的输入消息,N是大于1的整数;
-使用存储在非暂态存储介质中的2N×2N一对一映射,将N位输入片段转换成对应的N位输出片段;以及
-生成包括N位输出片段的输出消息。
根据又一个广义的方面,可以提供一种计算机实现的方法,包括:
-接收包括N位输入片段的输入消息,N是大于1的整数;
-使用存储在非暂态存储介质中的2N×2N一对一映射,将N位输入片段转换成对应的N位输出片段;
-将N位输出片段重新组装为M位输入片段,M是大于1且不同于N的整数;
-使用存储在非暂态存储介质中的2M×2M一对一映射,将M位输入片段转换成对应的M位输出片段;以及
-生成包括M位输出片段的输出消息。
根据又一个广义的方面,可以提供一种包括计算机可读指令的非暂态计算机可读存储介质,该计算机可读指令在由处理器执行时使处理器执行一种方法,该方法包括:
-接收包括N位输入片段的输入消息,N是大于1的整数;
-使用存储在非暂态存储介质中的2N×2N一对一映射,将N位输入片段转换成对应的N位输出片段;
-将N位输出片段重新组装为M位输入片段,M是大于1且不同于N的整数;
-使用存储在非暂态存储介质中的2M×2M一对一映射,将M位输入片段转换成对应的M位输出片段;以及
-生成包括M位输出片段的输出消息。
根据又一个广义的方面,可以提供一种包括计算机可读指令的非暂态计算机可读存储介质,该计算机可读指令在由处理器执行时使处理器执行一种方法,该方法包括使用比片段的尺寸大的维度的一对一映射将数据的输入片段编码为具有相同尺寸的数据的输出片段。
根据又一个广义的方面,可以提供一种方法,该方法包括:使用比片段的尺寸大的维度的一对一映射将数据的输入片段编码为具有相同尺寸的数据的输出片段。
根据又一个广义的方面,可以提供一种包括计算机可读指令的非暂态计算机可读存储介质,该计算机可读指令在由处理器执行时使处理器执行一种方法,该方法包括使用置换映射将输入位流的个体的第一位集合编码为输出位流的相同尺寸的对应的第二位集合,该置换映射使得对于第一和第二集合的可能对应对中的大多数,一和零的相对比例在对中的两个集合之间是不同的。
根据又一个广义的方面,可以提供一种用于让接收者验证从发送者接收的消息的计算机实现的方法,该消息包括第一部分和第二部分,该方法包括:
-从见证(witnessing)实体接收令牌;
-通过消息的第一部分和令牌的联接处理来获得第一数据元素;
-通过使用与发送者相关联的密钥的消息的第二部分的联接处理来获得第二数据元素;以及
-通过比较第一与第二数据元素来验证消息。
根据又一个广义的方面,可以提供一种包括计算机可读指令的非暂态计算机可读存储介质,该计算机可读指令在由处理器执行时使处理器执行一种方法,该方法用于让接收者验证从发送者接收的消息,该消息包括第一部分和第二部分,该方法包括:
-从见证实体接收令牌;
-通过消息的第一部分和令牌的联接处理来获得第一数据元素;
-通过使用与发送者相关联的密钥的消息的第二部分的联接处理来获得第二数据元素;以及
-通过比较第一与第二数据元素来验证消息。
根据又一个广义的方面,可以提供一种由见证实体执行的计算机实现的方法,包括:
-从发送者获得代码和签名;
-咨询第一数据库以获得与代码相关联的熵数据;
-从熵数据生成令牌;
-在第二数据库中存储令牌与签名之间的关联;以及
-响应于接收到至少识别签名的请求,传输包括令牌的消息。
根据又一个广义的方面,可以提供一种包括计算机可读指令的非暂态计算机可读存储介质,该计算机可读指令在由处理器执行时使处理器执行一种方法,该方法包括:
-从发送者获得代码和签名;
-咨询第一数据库以获得与代码相关联的熵数据;
-从熵数据生成令牌;
-在第二数据库中存储令牌与签名之间的关联;以及
-响应于接收到至少识别签名的请求,传输包括令牌的消息。
根据又一个广义的方面,可以提供一种将启用互联网的电器(appliance)与应用设备同步的计算机实现的方法,该方法包括:
-在应用设备处:
-基于(i)用于先前与电器通信的先前编码映射和(ii)种子来生成编码映射;
-通过不穿越互联网的本地连接将编码映射传输到电器;
-在电器处:
-通过本地连接接收编码映射;以及
-使用编码映射以随后保护通过互联网与应用设备交换的数据。
根据又一个广义的方面,可以提供一种IoT系统,包括:
-包括处理和联网能力的应用设备,被配置为:
-基于(i)用于先前与电器通信的先前编码映射和(ii)种子来生成编码映射;以及
-通过不穿越互联网的本地连接将编码映射传输到电器;以及
-通过互联网连接到应用设备并且包括处理和联网能力的电器,被配置为:
-通过本地连接接收编码映射;以及
-使用编码映射以随后保护通过互联网与应用设备交换的数据。
附图说明
通过以下结合附图对实施例的描述,这些和其它方面将变得清晰,其中:
图1是示出发送设备、接收设备和信道的框图。
图2是示出根据非限制性实施例的数据编码处理中的步骤的流程图。
图3是示出根据非限制性实施例的数据编码处理中的各个步骤的概念框图。
图4A至4C是示出根据各种非限制性实施例的执行图2中的步骤之一的各种方式的框图。
图5是在非限制性实施例的具体示例的上下文中示出数据编码处理中的各个步骤的框图。
图6A-6D是示出根据各种非限制性实施例的分别到发送和接收设备的编码和解码映射的分布的框图。
图7A-7C图示了某些实施例可以如何应用于针对操作系统(OS)的应用加载场景。
图8示意性地示出了存储器空间和熵空间的相对尺寸。
图9是示出通过互联网从一个对等方到另一个对等方的通信的框图。
图10是示出两个对等方之间的初始秘密的生成和交换的示意性框图。
图11是示出通过互联网和通过替代信道从一个对等方到另一对等方的通信的框图。
图12是进一步详述图11中的通信的框图,示出了通过互联网和通过替代信道交换的具体消息。
图13是示出两个对等方Alice和Bob与服务器之间的消息交换的消息流图。
图14A和14B图示了用于从初始秘密生成置换矩阵的处理。
图15是示出两个对等方Alice和Bob与发布种子的服务器之间的消息交换的消息流图,从而导致Alice和Bob都可以访问加密密钥QK。
图16是图15的变体,其中种子由服务器广播。
图17A-17C是两个对等方之间的通信的变体。
图18是从概念上图示区块链中的交易的示意图。
图19是图示利用区块链交易对初始秘密进行编码的处理、以及用于从交易中检索初始秘密的处理的示意性框图。
图20是图示在区块链上的安全文件存储的示意性框图。
图21是示出在8位输入片段中的零与一的比例与具有这种比例的输入片段的出现可能性之间的关系的表。
图22是物联网(IoT)环境的网络图。
图23是示出IoT环境中的电器的示意图。
图24是图示在IoT环境中实现订阅-发布通信范例的代理的框图。
图25是示出在IoT环境中使用的包含数据的PUBLISH(发布)消息的示意图。
图26是示出在IoT环境中传输包含数据的PUBLISH消息的示意图。
图27是示出在IoT环境中传输包含种子的PUBLISH消息的示意图。
图28是IoT环境中的应用设备的框图。
图29是图示包含种子的消息在IoT环境中从应用设备到电器的传输的示意性框图。
图30是示出在IoT环境中使用的包含种子的PUBLISH消息的示意图。
图31是示出在替代IoT环境中使用的替代消息格式的示意图。
图32是示出涉及使用流密码的动态扩展的安全性增强的框图。
图33A是具有由两个对等方建立熵历史表的能力的通信系统的框图。
图33B是图示在由两个对等方建立熵历史表的上下文中的预备阶段的流程图。
图34是图示在由两个对等方建立熵历史表的上下文中的更新阶段的流程图。
图35示出了用于传送被见证的消息的系统。
图36是示出被见证的消息的生成的图。
图37是示出被见证的消息的接收的图。
图38示出了用于发布被见证的区块链交易的系统。
图39是示出被见证的区块链交易的生成的示意图。
图40是示出涉及多级量子化(quantropization)的安全性增强的框图。
图41是示出涉及位位置混洗的安全性增强的框图。
图42是示出涉及块量子化的安全性增强的框图。
图43是示出涉及动态扩展的安全性增强的框图。
附图应被认为是对某些示例的例示说明,而不应被认为是限制性的。
具体实施方式
图1示出了可以被配置为包含本发明的示例非限制性实施例的通信系统。具体而言,该系统包括发送设备110、接收设备120以及发送设备110与接收设备120之间的信道130。发送设备110和接收设备120可以均在移动电话、智能手机、膝上型计算机、台式计算机、车载车辆计算机、启用互联网的电器等中实现。
发送设备110可以通过信道130向接收设备120释放信号140。信号140可以是携带已经由发送设备110的元件编码的数字数据的经调制的信号。信道130可以是使用任何合适介质(包括有线、RF、光纤、自由空间光学、声学等中的一个或多个)物理地实现的任何合适的通信信道。信道130可以在逻辑上被实现为通过一个或多个数据网络(包括但不限于内联网、虚拟专用网络和互联网)的路径。
接收设备120也可以将包含用于发送设备110的数据的信号(未示出)释放到信道130上,使得发送设备110和接收设备120都通过信道130进行双向通信。但是,为了简化本文下面的描述,将不提供由接收设备120生成信号以朝着发送设备110传输的描述,因为它将与信号140的生成的描述紧密匹配。
在一个实施例中,发送设备110使用电(例如,来自电池、发电机、逆变器、电力线、光伏电池或变压器的DC或AC电)对携带输入位流的输入信号进行变换或改变,以便产生携带输出位流的输出信号。为此,发送设备110包括处理实体112和存储计算机可读指令的存储器114。存储器114可以以多种方式来实现,诸如磁盘或固态存储器,并且可以包括闪存、SRAM、DRAM、相变存储器等。处理实体112被配置为执行存储器114中的计算机可读指令。在这样做时,发送设备110的处理实体112使发送设备110实现各种处理,包括数据处理和控制处理。处理实体的示例可以包括电子部件,诸如微芯片上的计算机处理器或量子计算机。可以由处理实体112实现的处理的示例包括下面在本文中进一步详细描述的数据编码处理。数据编码处理可以被编码为存储器114中的计算机可读指令的子集116。输入/输出(I/O)118使处理实体112能够与外部进行通信,并且可以包括屏幕(例如,触摸屏)、键盘/鼠标、网络接口设备/卡(例如,以支持NFC、WiFi、以太网或蜂窝/GSM/LTE通信)、(一个或多个)USB端口等。
就其本身而言,接收设备120也使用电对携带输入位流的输入信号进行变换或改变,以便产生携带输出位流的输出信号。为此,接收设备120包括处理实体122和存储计算机可读指令的存储器124。处理实体122被配置为执行存储器124中的计算机可读指令。在这样做时,接收设备120的处理实体122使接收设备120实现各种处理,包括数据处理和控制处理。处理实体的示例可以包括电子部件,诸如微芯片上的计算机处理器或量子计算机。可以由处理实体122实现的处理的示例包括下面在本文中进一步详细描述的数据编码处理。数据解码处理可以被编码为存储器124中的计算机可读指令的子集126。输入/输出(I/O)118使处理实体122能够与外部进行通信,并且可以包括屏幕(例如,触摸屏)、键盘/鼠标、网络接口设备/卡(例如,以支持NFC、WiFi、以太网或蜂窝/GSM/LTE通信)、(一个或多个)USB端口等。
发送设备110(接收设备120)的部件(诸如处理实体112(122)和存储器114(124)以及各种其它输入和其它输出设备)可以通过各种互连(诸如总线)来连接。此类互连可以包括诸如PCI Express之类的外围部件互连(PCI)、通用串行总线(USB)、火线(IEEE1394)、光学总线结构等。在另一个实施例中,发送设备110和接收设备120的部件可以通过网络互连。例如,存储器114(124)可以包括位于通过网络互连的不同物理位置的多个物理存储器单元。而且,取决于确切的设备配置和类型,存储器114(124)可以是易失性的(例如,诸如RAM)、非易失性的(例如,诸如ROM、闪存等)或两者的某种组合。存储在存储器114(124)中的计算机可读指令可以被实现为执行特定任务或实现特定抽象数据类型的程序模块,诸如函数、对象、应用编程接口(API)、数据结构等。通常,计算机可读指令的功能可以在各种环境中根据期望进行组合或分布。
应当认识到的是,在一些情况下,发送设备110和接收设备120可以是同一个计算机,信道130可以是计算机的内部电路系统,处理实体112、122可以是同一个处理实体。存储器114、124可以是公共计算机存储器,并且子集116、126可以是公共计算机存储器的不同子集。
还应当认识到的是,术语“位流”一般而言涵盖二进制数位(digit)的序列。“位流”可以包括通过通信路径连续传输的表示数据流的位的序列。在一些情况下,术语“位流”可以涵盖可以被编码到计算机可读介质中或驻留在计算机可读介质上的位串或位的有序集合,诸如定义存储在固态或磁性驱动器上的文件的位。在一些情况下,“位流”可以包括数字消息的一部分,可以将其格式化为电子邮件、文本消息、即时消息、图像、视频、诸如Word、PDF等格式的文档,或以其它任何合适的方式。
数据编码处理
现在将进一步参考图2中的流程图和图3中的概念框图,针对接收/获得的输入位流310描述在某些非限制性实施例中可以由发送设备110的处理实体112实现的数据编码处理的非限制性实施例。
在可以由计算机可读指令116的执行造成的数据编码处理的步骤210处,处理实体112确定系统尺寸。这个系统尺寸表示为N,并且可以作为常数或变量存储在存储器114中。N是至少等于1的整数,并且通常为了提高安全性会更高。例如,在一些实施例中,N可以是2、4、6、8或至少等于10,而在其它实施例中,N可以至少等于20。在非限制性的具体示例实施例中,N可以是12、13或14。对于N的量值没有特别限制,但是可以预期,使用更大的N值将实现更高的安全性。而且,系统尺寸可以是固定的,或者可以随时间动态改变,如下所述。
在可以由计算机可读指令116的执行造成的数据编码处理的步骤220处,处理实体112使用维度大于每个片段的尺寸的一对一映射将数据的输入片段编码为具有相同尺寸的数据的输出片段。在实施例中,处理实体112获得指示2N个可能的输入索引和2N个可能的输出索引之间的一对一映射的数据,其中,回想一下,N表示系统尺寸。为了将这个映射与别处描述的其它映射消除歧义,在步骤220处获得的映射在本文中将被称为“编码映射”。
编码映射可以以不同的方式表述。例如,编码映射可以被表述为{P(x,y)},其是可以存储在存储器114中的坐标P(x,y)处的值的集合,其中对于每个x(在0和2N-1之间),有单个y(也在0和2N-1之间)使得P(x,y)=1,并且其中对于每个y,有单个x使得P(x,y)=1,并且其中对于x和y的所有其它组合,P(x,y)=0。编码映射因此可以表示从0到2N-1的每个值与0和2N-1之间的另一个(通常但不是必须)不同值之间的一对一关联。
从概念上讲,编码映射采取2N×2N矩阵“P”的形式,其中每一行和每一列包含单个“1”,其余矩阵元素(其中存在22N-2N个)是“0”。这种矩阵可以被称为“二进制置换矩阵”,并且可以存储在存储器114中。
在又一个示例中,编码映射可以采取开关架构输入-输出对应表的形式,该表将2N个开关输入中的每一个与2N个开关输出之一相关联。开关架构输入-输出对应表可以存储在存储器114中。使得其可以被存储在存储器114中并且由处理实体112适当地访问和解释的表示编码映射的其它方式在本发明的范围内。与系统尺寸(N)一样,编码映射可以是固定的,或者可以随时间动态改变,这将在后面进行描述。
在可以由计算机可读指令116的执行造成的数据编码处理的步骤230处,处理实体112将图3中的输入位流310细分或分离成图3中的多个输入位片段320,使得每个输入位片段320被配置为具有系统尺寸,即,每个输入位片段320为N位长。这可以被称为拆解(disassembly)处理。要注意的是,虽然分离二进制数据的常规方式是以8位(即,字节)为一组,但是N的值不必是8或其倍数,因此由于执行步骤230而产生的输入位片段320不一定是8位的倍数长。
在可以由计算机可读指令116的执行造成的数据编码处理的步骤240处,处理实体112产生多个输出位片段330,其中每个输出位片段330与输入位片段320中的相应位片段对应。每个输出位片段330被配置为具有系统尺寸,并且因此为N位长,即,就像输入位片段320一样。而且,输出位片段330中的给定输出位片段的内容通过编码映射与输入位片段320中相应输入位片段的内容相关,如将在下面描述的。具体而言,对于特定的N位输入位片段,将输入索引确定为特定的N位输入位片段的(十进制)值。然后,基于输入索引和编码映射来确定输出索引。最后,将对应的N位输出片段设置为这个输出索引的二进制表示。这可以被称为量子化处理。
在实际的实施方式中,可以有各种方式基于输入索引和编码映射来确定输出索引。在一个示例中,参考图4A,如果认为编码映射由集合{P(x,y)}表示,那么查找表402可以存储给出P(x,y)=1的x和y的各种组合。查找表402可以存储在存储器114中,其中2N个输入索引(“x”列)中的每一个与单个输出索引(“y”列)相关联。因此,步骤240可以涉及基于作为特定N位输入位片段的值而导出的输入索引来访问存储器114中的查找表402,以便获得输出索引。
在另一个示例中,参考图4B,如果认为编码映射由存储在存储器114中的2N×2N二进制置换矩阵P表示(在这个示例中,N=3),并且如果创建向量“g”作为在表示输入索引(即,特定N位输入位片段的(十进制)值)的列中包含“1”元素的1×2N(即,1×8)向量,那么步骤240可以涉及调用执行g与P之间的向量矩阵乘法的子例程。该子例程可以存储为存储在存储器114中并且可由处理实体112执行的计算机可读指令。向量矩阵乘法的结果将是在表示输出索引的列中包含“1”元素的1×2N(即,1×8)向量“g*”。
在又一个示例中,参考图4C,可以在发送设备110内实现具有2N个输入410和2N个输出420的硬件或软件开关架构400,并且编码映射可以被表示为开关架构400的开关架构输入-输出对应表401,如可以存储在存储器114中的那样。输入410与由对应的N位输入位片段320形成的接连的2N×1个输入数组中的位位置对应(每个输入数组仅在输入索引的位置处包含一个“1”元素,其余为零)。结果是在开关架构400的输出420处接连的2N×1个输出数组。每个这种输出数组仅在输出索引的位置处包含一个“1”元素,其余为零。输出索引的位置的十进制值被转换成二进制形式,从而产生N位输出位片段330中的对应输出位片段。
对于多个输入位片段320重复上述步骤,并且将认识到的是,使用计算机,特别是通过处理实体112,可以高效地实现操纵和计算。
在可以由计算机可读指令116的执行造成的数据编码处理的步骤250处,处理实体112可以将多个(例如,接连的)输出位片段330级联或组合成输出位流340,其本身然后可以被组织成字节(或任何其它方便的分组)并发送到信道130上,例如,它们可以由调制成经调制的信号之后的信号140携带。术语“经调制的信号”可以包括其一个或多个特性以将信息编码在信号中的方式被设置或改变的信号。
当然,可以添加输入位流310(即,在执行数据编码处理之前)和/或输出位流340(即,在执行数据编码处理之后)的附加编码和加密,以使整个数据编码过程甚至更安全。
现在参考图5描述数据编码处理的具体的非限制性示例。可以看到,输入数据流包括十六进制字节的序列,其值从右到左依次为57、85、33、30等。可以将十六进制字节分解成多个位,从而创建输入位流。然后,将输入位流分解(拆解)成尺寸为N的片段,在这个示例中,N=14。第一个14位输入位片段是00010101010111,其十进制值为1367,下一个14位输入位片段是00000011001110,其十进制值为206,依此类推。编码映射首先应用于十进制值1367。在这种情况下,编码映射由集合{P(x,y)}表示,其中对于0和214-1(=16383)之间的任何x,但是对于每个这样的x仅有y的一个值使得P(x,y)=1;在所有其它情况下P(x,y)=0;并且对于y和x也比照适用(mutatis mutandis)。在这个特定示例中,x的相关值为1367,并且要注意的是,对于除一个以外的所有y值,P(1367,y)=0。令y的这样的值为802。因此,P(1367,802)=1。然后,将802转换成14位二进制值,将其计算为00001100100010。
可以看到,输入位片段具有七个“1”,而输出位片段仅具有四个“1”。这表明编码映射不仅仅表示输入位片段中的位的置换。实际上,取决于编码映射的细节,输入位片段中的“1”的给定密度可以产生对应的输出位片段中的“1”的任何给定密度。
接下来,将编码映射应用于十进制值206。对于除14332以外的所有y值,令P(206,y)=0。因此,获得值14332作为“行”索引206的“列”索引。然后,将十进制值14332转换成14位二进制值,即,11011111111100。可以看到,在输入位片段和输出位片段中“1”的密度再次不同。然后可以以各种方式将输出位片段中的位级联起来并再次分组为比如十六进制字节,在这种情况下,从右到左产生22、03、FF、AD。
在计算机系统中,特定的N位输入位片段与对应的N位输出位片段之间的位模式的改变可以表现为用于存储和/或发送所讨论的位模式的信号的电压、电流或其它物理特性的差异。
照此,已经描述了一种通信方法,该通信方法使用一对一映射来将输入位流的各个位集合编码为输出位流的对应相同尺寸的位集合,其中输入位流的给定位集合中的一和零的相对比例常常不同于输出位流中的对应位集合中的一和零的相对比例。
更特别地,并且参考图21,图示了N=8的情况。8位输入片段(或输出片段)中一和零的相对比例的范围可以为0:8、1:7、2:6、3:5、4:4、5:3、6:2,7:1和8:0,对应于0.000、0.125、0.250、0.475、0.500、0.625、0.750、0.875和1.000的“权重”。每种情况下的组合的数量在第二列中被示为1、8、28、56、70、56、28、8、1,对应于1/256、8/256等的概率。组合的总数当然是28=256。给定任意映射,每个输入端口同等地可能映射到任何输出端口。照此,如果随机选择输入-输出对,那么它们具有相同权重的机会是:
权重为0.000的输入片段的概率乘以权重为0.000的输出片段的概率
+
权重为0.125的输入片段的概率乘以权重为0.125的输出片段的概率
+
等等。
这导致8位输入片段在通过256乘256映射被映射时保留其权重的总概率为0.077606或7.7606%。相反,这意味着当看其被映射到的输出片段时,至少90%的可能的输入片段将具有一和零的不同比例。换句话说,当输入和输出片段的尺寸为8时,输入和输出片段的可能对应对中的至少90%将在输入和输出片段之间具有一和零的不同相对比例。当然,当N越高时,差异将会是更大的百分比。显然,置换映射P不仅仅导致输入片段中的8位的置换。更确切地说,置换映射的维数大于输入和输出片段的尺寸。特别地,当输入和输出片段的尺寸为N时,置换映射P的尺寸可以为2N×2N,如果不更大的话。
在又一个示例中,利用存储在存储器中的2N×2N映射,获得输入位的有序集合。处理实体112将输入位的有序集合分解(拆解)为多个N位输入片段。然后,通过以下步骤产生与N位输入片段中的相应输入片段对应的N位输出片段:(i)将N位输入片段中的每一个扩展为2N位输入片段,对2N位输入片段应用2N×2N映射以确定2N位输出片段,将2N位输出片段压缩成N位输出片段。然后,使用结果所得的N位输出片段形成输出位的有序集合,并且可以将输出位的有序集合释放到物理介质上或存储在存储器中。
因此,上面已经示出了如何使用存储在非暂态存储介质中的2N×2N一对一映射将输入消息的N位输入片段转换成输出消息的对应N位输出片段。
数据解码处理
信号140沿着信道130行进并到达接收设备120。可以要求进行某些预处理以考虑信道丢失、失真和其它因素。但是,最终,接收设备120执行实际上与发送设备110执行的数据编码处理完全相同的数据解码处理,除了它是用解码映射而不是编码映射执行的以外。解码映射是编码映射的逆,以便恢复原始编码的数据。
因此,例如,在编码映射由{P(x,y)}表示的情况下,解码映射可以由{Q(x,y)}={P-1(x,y)}={P(y,x)}表示。这可以被称为去量子化处理。
可替代地,如果在数据编码处理期间应用的编码映射由二进制置换矩阵P表示,那么在数据解码处理期间将应用的解码映射可以由Q=PT(P的转置)表示。要注意的是,由于P的结构是二进制置换矩阵,因此PT×P=I。换句话说,如果对于数据编码处理的N位输入位片段是“未编码的位片段”(通过将P应用于未编码的位片段而得到的N位输出位片段是“编码的位片段”),并且如果对于数据解码处理的N位输入位片段是编码的位片段,此外如果由数据解码处理应用的二进制置换矩阵Q是P的转置,那么由数据解码处理产生的N位输出位片段将是原始的未编码的位片段。即,在解码处理之后恢复原始的N位输入位片段。然后可以将它们组装成位串,然后可以适当地调整其尺寸(例如,作为字节)。
由于P和Q之间的关系(即,Q=PT),因此可以在数据编码处理中使用Q,可以在数据解码处理中使用P,由于QT=P。因此,总的来说,编码和解码映射可以表示为一对对称的置换矩阵P、Q,各自是另一个的转置,其中一个用于编码,而另一个用于解码。可替代地,编码和解码映射可以被表述为单个二进制置换矩阵B、连同被提供给发送设备110和接收设备120以指示两个设备之一使用B而另一个使用BT的附加指示符(或“标志”)。
可以看到,数据编码和解码处理均未显著增加发送和接收设备110、120中处理实体112、122的计算负担。这是由于以下事实:数据编码和解码处理涉及诸如以下的操作:(i)从输入索引到输出索引的索引映射或(ii)稀疏向量-矩阵乘法,这两个操作中的任一个可以由现代计算机系统和处理实体高效地处置。照此,可以将编码和解码的能源成本以及CPU使用率保持在低水平,从而有可能导致更长的电池寿命、更少的等待时间并为其它任务释放处理资源。这与更复杂的数字方法(诸如质数分解)形成对比。
参考图8,可以看到,对于给定的N位位系统尺寸,可以说每个N个原始输入位的集合驻留在存储器中尺寸为N的“位空间”810中。可以说由这N个原始输入位携带的信息存在于尺寸为2N的“信息空间”820中。即,可以使用N个位来表述2N个值或其它信息元素。现在,要注意的是,对应的编码映射(例如,置换矩阵或开关架构输入-输出对应表或查找表)的尺寸为2N×2N。换句话说,编码映射的维数为2N。这意味着,如果将编码映射表示为二进制置换矩阵,那么存在(2N)!(=2N*((2N)-1)*((2N)-2)*...*3*2*1)个不同的可能置换矩阵,但其中只有一个表示被发送设备110用于N个原始输入位的特定集合的所选择的编码映射。可以说通过应用所选择的编码映射产生的N位输出位片段存在于“熵空间”830中,该空间是如此之大,以至于从实践的角度来看,即使对于相对小的N值,不再需要加密来保证安全性。使用编码映射将N位输入片段转换成N位输出片段的处理可以被称为“量子化”,而逆处理可以被称为“去量子化”。量子化中使用的特定2N×2N编码映射的输入-输出配置可以被称为“熵状态”,在一些非限制性实施例中可以将其表示为状态数组S[2N],但是可以使用多种其它方式来表达编码映射。
例如,即使在仅12位系统中,恶意第三方也需要猜测使用212阶乘(大于1013019)个可能的置换矩阵中的哪一个。此外,这还假设恶意方知道它是12位系统以便开始,而恶意方可能不容易获得该知识。对于当今的许多系统(包括量子计算机),这可以被认为是在计算上难以解决的问题,并且有可能阻止恶意方尝试“入侵”该系统。照此,虽然每个可能的2N输入位流确实确定性地映射到单个2N输出位流,但是这种映射不是仅由于输入位流中的位的置换而引起的;更确切地说,它是由于在大得多的空间中选择编码映射而引起的(即,在2N×2N矩阵的空间中选择一个2N×2N矩阵),这使其对于黑客来说相比于试图在任何合理的观察时段内找到“正确的”编码映射而言,“猜测”与观察到的N位输出位片段对应的原始输入位片段的N位值更加经济。由于即使在最大安全的系统中也无法防止外部方的“猜测”,因此可以得出结论,通过降低黑客的猜测有效性,由当前描述的实施例提供的数据保护级别实际上等同于由最大安全的系统提供的数据保护级别,但计算成本低。
本文所述的某些实施例所提供的低计算复杂度、低等待时间和针对入侵/黑客的增强安全性的这种组合可以帮助实现高带宽、实时、量子安全的通信。
描述以上内容的另一种方式是参考图9的概念图,该图示出了两个对等方Alice和Bob,每个对等方可以是膝上型计算机、智能手机、启用互联网的电器、车辆电子控制单元(ECU)、web服务器等。Alice具有图1的“发送设备”110的角色,并且通过执行指令116的子集来实现多个功能模块(例如,拆解器920A、量子化器930A、打包器940A和控制模块980A),这将在本文下面描述。类似地,Bob具有图1的“接收设备”120的角色,并且通过执行指令126的子集来实现多个功能模块(例如,解包器950B、去量子化器960B、组装器970B和控制模块980B),这将在本文下面描述。
具体而言,Alice接收信息片段(例如,明文输入位),然后由拆解器920A将其拆解为系统尺寸N的片段(例如,图2中的步骤230)。根据尺寸为2N×2N的编码映射(例如,置换矩阵P),量子化器930A将N位输入片段处理为对应的N位输出片段(例如,图2中的步骤240)。打包器940A将结果所得的N位输出片段打包成合适的格式(例如,图2中的步骤250),打包器可以在通过网络990(例如互联网)传输到Bob之前将N位输出片段分组在一起或将它们进一步分解。此外,Bob包括解包器950B,解包器950B将接收到的量子化的数据解包为N位输入片段。去量子化器960B应用解码映射(例如,PT)以获得N位输出位片段。然后,这些由组装器970B组装成合适的信息片段(例如,明文输出位)。
到目前为止,已经假设Alice和Bob使用匹配的编码和解码映射。在这方面,控制模块980A负责确定将由对应的量子化器930A使用的编码映射(例如,置换矩阵P)(例如,图2中的步骤210和220),而控制模块980B负责确定将由对应的去量子化器930B使用的解码映射(例如,置换矩阵PT)。现在将更加详细地描述控制模块980A、980B如何确定和商定要用于量子化和去量子化的编码和解码映射。
发送和接收设备之间的编码/解码映射的商定
回想Alice和Bob被映射到图1,使得Alice是发送设备110,而Bob是接收设备120,置换矩阵P被发送设备110使用,而这个矩阵的转置(即,PT)被接收设备120使用。但是,由于PT是可以从P导出的,因此有可能向两个设备仅建议置换矩阵P,以及建议告知发送设备110在其数据编码处理中使用P(即,不进行转置)、并且告知接收设备120在其数据解码处理中使用PT的标志(或其它指示符)。当然,反过来也是可能的(即,在数据编码处理中使用PT,而在数据解码处理中使用P)。
在编码映射由集合{P(x,y)}表示的情况下,发送设备110使用{P(x,y)},而接收设备120使用{P-1(x,y)}。再次,由于={P-1(x,y)}是可以从{P(x,y)}导出的(因为它等于{P(y,x)}),因此有可能向两个设备仅建议集合{P(x,y)},以及建议告知发送设备110在其数据编码处理中使用集合{P(x,y)}、并且告知接收设备120在其数据解码处理中使用{P(y,x)}的标志(或其它指示符)。当然,反过来也是可能的(即,在数据编码处理中使用{P(y,x)},而在数据解码处理中使用{P(x,y)})。
以下各节描述用于向发送设备110和接收设备120通知要使用的适当编码或解码映射的各种实施例。为了简单起见,编码映射由二进制置换矩阵P表示,并且解码映射由二进制置换矩阵PT表示;但是,也可以使用查找表或先前描述的集合{P(x,y),{P(y,x)}}。而且,在下面的每个实施例中,不是传输要由传输的特定接收者使用的具体矩阵(P或PT),而是有可能在传输中包括公共置换矩阵(P)连同指定意图是将P还是PT传输到接收者的标志或其它指示符。
第一初始化方法
在图6A所示的一个实施例中,发送设备110生成编码映射P,并将其存储在存储器114中。在初始化阶段期间,发送设备可以在信号615中向接收设备120发送PT。为此,发送设备110和接收设备120可以执行握手协议。这种握手协议可以使用当前的加密技术(诸如AES或DES)安全地实现。可替代地,该握手协议可以通过预定义系统尺寸M和对于发送设备110和接收设备120已知和/或可用的默认编码(和解码)映射使用本文所教导的技术来安全地实现。例如,在M=3的情况下,发送设备110可以使用8×8二进制置换矩阵R以对携带PT的数据进行编码,而接收设备可以在其数据解码处理中使用RT以从使用R编码的数据中恢复PT。
因此,数据保护方法的一个实施例可以包括:例如,使用私钥/公钥对中的私钥在将指示默认映射的数据发送到接收设备之前对该数据进行加密,其中私钥是发送设备唯一已知的,而公钥是接收设备已知的或可供接收设备使用的。
第二初始化方法
在图6B所示的另一个实施例中,中央服务器600可以与发送设备110和/或接收设备120安全地通信,以便在信号625和635中在初始化阶段期间分发置换矩阵P。这种安全通信可以使用当前的加密技术(诸如AES或DES)来实现,因为它仅要求传输足够的数据来定义2N×2N置换矩阵。可替代地,服务器600可以通过预定义的系统尺寸M、以及作为服务器600和发送设备110之间以及服务器600和接收设备120之间的共享秘密的默认编码(和解码)映射,使用本文所教导的技术与发送设备110和接收设备中的每一个进行通信(要注意的是,在初始化阶段期间,当与发送设备100和接收设备120通信时,服务器600可以使用不同的共享秘密)。中央服务器600配备有连接到存储器和I/O的处理器,其中处理器执行存储在存储器中的计算机可读指令,以执行上述指定功能。
第三初始化方法
在图6C所示的另一个实施例中,发送设备110和接收设备120可以均存储安全地安装在相应存储器114、124中的预定的置换矩阵(在发送设备110的情况下是P1,P2,...,在接收设备120的情况下是PT 1,PT 2...)的相应表610,表中的每个置换矩阵都由唯一的代码(1,2,...)来引用。因此,当发送设备110在其数据编码处理中正使用特定的置换矩阵、而不是将对应的置换矩阵转置发送到接收设备120时,发送设备110可以发送消息620,该消息指定与存储在接收设备120处的存储器124中的表6102中的那个置换矩阵对应的代码。因为与存储器124中的置换矩阵之一对应的代码对于不具有表6102的外部观察者是没有意义的,所以这允许发送设备110和接收设备120之间的传输不加密(即,明文)。这个实施例仅要求预先安全地填充表6101和6102。
作为上述实施例的扩展,发送设备110和/或接收设备120可以选择改变置换矩阵,或者可以由外部方(例如,用户、中央服务器)提示改变置换矩阵。这可以导致传输新的置换矩阵(适当地受保护或加密),或者传输与新的置换矩阵对应的代码(可以以明文发送)。可替代地,可以对置换矩阵改变的次序进行编程,使得仅仅对置换矩阵的改变的请求可以提示发送设备110和接收设备120以预定义的方式导航(“跳跃”)通过其置换矩阵的相应表6101、6102。此外,不需要后续的置换矩阵具有相同的系统尺寸。可以将系统尺寸指定为独立的变量,并且可以存在不同的复杂程度,诸如针对不同的系统尺寸使用不同的置换矩阵的表,使得当针对不同的系统尺寸接收到代码时,代码可以是有效的、但将引用不同尺寸的不同置换矩阵,但是由于双方事先在置换矩阵的表中的存储,因此双方都知道/可以使用代码。
在最初在发送设备和接收设备之间共享置换之后,双方可以商定使用本文档中描述的编码/解码机制来形成会话置换矩阵。将新形成的置换矩阵用于会话数据传输可以提高数据传输的安全性。
可以通过向发送设备110和/或接收设备120提供指示来触发会话置换矩阵的改变(可以涉及新的系统尺寸)。该指示可以指示要使用先前的(旧的)置换矩阵进行处理的N位输入片段(和/或N位输出片段)、与要使用新的置换矩阵进行处理的N位输入片段(和/或N位输出片段)之间的分离。在一个实施例中,该指示可以指定在要求改变置换矩阵(可以涉及新的系统尺寸)之前第一置换矩阵应用于的位(或片段)的数量。在另一个实施例中,该指示可以用信号通知对新的系统尺寸或置换矩阵的瞬时改变。在又一个实施例中,该指示可以用信号通知发送设备或接收设备要切换到新的系统尺寸或置换矩阵的时间。而且,该指示可以提供条件的集合,当满足这些条件时,将触发置换矩阵的改变,同时要理解的是,这样的条件正由发送和/或接收设备110、120监视。条件的示例是经过的时间、绝对时间(例如,天的改变)、已处理的位数、检测到的黑客入侵企图、通过I/O与用户的交互等。该指示可以由发送设备110控制并从发送设备110传输到接收设备120,或者可以由服务器(例如,中央服务器600)控制并发送到发送设备110和接收设备120两者。指示可以被编码为物理信号。
第四初始化方法
在图6D所示的另一个实施例中,易于彼此通信的所有发送设备和接收设备在同一安全设施650中产生。考虑例如在安全工厂中生产的设备,诸如车辆、卫星和智能手机。车辆、卫星或智能手机(在非限制性示例中在此图示为车辆A、车辆B和车辆C)因此可以设有嵌入有相同编码映射P的发送设备(分别为110A、110B、110C)以及嵌入有相同解码映射PT的接收设备(分别为120A、120B、120C)。以这种方式,车辆A、车辆B和车辆C之间可以相互通信(和/或与也知道P和PT的安全设施650处的中央服务器通信),并且一旦车辆A、车辆B和车辆C离开工厂650并进入市场,这个通信仍保持安全。不需要任何特定的车辆、卫星或智能手机来执行握手,也不需要初始化阶段。即使在12位系统的情况下,破解这种系统的难度也是如此之高(因为可以有212阶乘((212)!>1E+13019)个可能的置换矩阵),以至于设想单个编码映射将在车辆、卫星或智能手机的整个生命周期内提供足够的数据保护。因此,可以以防止任何外部访问或篡改的方式将映射安全地嵌入每个设备的存储器中。
第五初始化方法
在另一个实施例中,基于初始秘密在本地生成编码映射。这可以遵循图10所示并概述如下的一般处理:
·阶段1010:两个对等方(Alice和Bob)之间共享初始秘密S。
·阶段1020:Alice和Bob中的每一个都基于初始秘密S本地生成初始编码映射(例如,置换矩阵P)。
在阶段1010处有许多共享初始秘密S的方式。现在将更详细地描述三个变体。
初始秘密共享(阶段1010的变体1)
参考图11,它类似于图9,因为它示出了两个对等方Alice和Bob,其通过互联网990进行通信。Alice实现控制模块980A,而对等方Bob包括控制模块980B。控制模块980A、980B被初始化和调整,以允许Alice和Bob使用的编码映射和解码映射的适当同步。在图11的实施例中,Alice具有不仅通过互联网990而且还通过替代信道1100与Bob通信的能力。在实施例中,替代信道1100是带外(OOB)信道,该信道是带外的,因为它不利用互联网990。OOB信道1100的示例可以是在公共交换电话网络(PSTN)上建立的蜂窝链路,或者是NFC链路。
为了在图11的实施例中执行阶段1010,可以遵循现在参考图12中的图描述的处理。操作流程如下:
(1)首先,Alice生成标识符QID,并向Bob发送包含标识符QID的消息1210。
(2)接下来,Bob以确认的形式向Alice返回包含标识符QID的消息1220。
(3)然后,Alice生成或获得初始秘密S,其可以但不必是本地生成的随机数。
(4)然后,Alice根据标识符QID和初始秘密S生成代码1230(例如,QR码或散列码)。
(5)接下来,Alice通过替代/带外信道1100向Bob发送包含代码1230的消息1240。
(6)然后,Bob接收消息1240,并基于Bob对标识符QID的先验知识从代码1230中解码初始秘密S。
在这一点上,Alice和Bob均具有初始秘密S并且可以前进到阶段1020,稍后将对此进行描述。
初始秘密共享(阶段1010的变体2)
现在将参考图13中的图描述执行阶段1010(即,在Alice和Bob之间共享初始秘密S)的替代方式。这个实施例不使用Alice和Bob之间的带外信道,而是使用三方来实现初始秘密共享,即,Alice、Bob和网络元件1300(例如,服务器)。服务器1300具有通过互联网990与Alice和Bob通信的能力。操作流程如下:
(1)在Alice和Bob开始彼此交谈之前,Alice和Bob都向服务器1300发送相应的问候消息1310。服务器1300用包含服务器的公钥PUKS的相应答复消息1312答复Alice和Bob。要注意的是,服务器的公钥PUKS是公钥/私钥对的一部分,因此服务器1300被推定为知道其自己的私钥PRKS。
(2a)Alice生成令牌T和公钥/私钥对(PUKA,PRKA),将PUKA拆分成两部分:PUK_1A+PUK_2A;使用服务器的公钥PUKS对PUK_2A和令牌T进行加密;然后在消息1320中将结果发送到服务器1300;
(2b)服务器1300用其私钥PRKS解密消息1320,并检索PUK_2A和令牌T,然后记录令牌T、PUK_2A和Alice的IP地址Alice-IP。要注意的是,令牌T与Alice的IP地址Alice-IP相关联地存储在存储器中。
(2c)Alice然后向Bob发送消息1330Sec-Req(T,PUK_1A);
(3a)Bob接收消息1330中的T和PUK_1A。Bob还生成私钥/公钥对(PUKB,PRKB),这可以在接收消息1330之前完成;
(3b)Bob利用服务器的公钥PUKS对令牌T、Bob的公钥PUKB和Alice的IP地址Alice-IP进行加密,并且将结果得到的加密的消息1340发送到服务器1300。服务器1300用其私钥PRKS对消息1340进行解密,并检索令牌T、Bob的公钥PUKB和Alice的IP地址Alice-IP。然后,服务器1300寻找令牌T,并核实Alice的IP地址Alice-IP确实是与令牌T相关联的IP地址;
(3c)服务器1300用Bob的公钥PUKB对Alice的公钥的第2部分PUK_2A进行加密,并在消息1350中发送回Bob;
(3d)Bob用Bob的私钥PRKB对消息1350进行解密,并检索PUK_2A;Bob组装PUK_1A和PUK_2A以创建Alice公钥的全部PUKA;
(4a)Bob生成初始秘密S并用Alice的公钥PUKA对其进行加密。
(4b)Bob将消息1360Sec-Resp(PUKA(S))发送回Alice,该消息包含用Alice的公钥PUKA(Bob能够在步骤(3d)处组装)加密的初始秘密S;
(5)Alice用Alice的私钥PRKA对消息1360进行解密,并检索秘密S。
在这时候,Alice和Bob均具有初始秘密S并且可以前进到阶段1020,稍后将对此进行描述。
初始秘密共享(阶段1010的变体3)
区块链作为具有可靠冗余验证的分散式数据存储机制已引起了各领域的关注。示例应用包括加密货币(例如,比特币)的交换,这些加密货币经由链接在区块链上的交易进行转移。另一个示例应用包括智能合约的结算,从而经由区块链上的交易类似地转移缔约方的权利和义务。在这个实施例中,Alice使用区块链与Bob共享初始秘密S。
从概念上讲,区块链是一种数字分类账,其中按时间顺序公开性地记录交易。从技术角度来看,并参考图18,区块链1800是不断增长的记录(称为区块1810)的列表,这些记录使用密码术进行链接和保护。“区块”是容器数据结构,并列出一个或多个交易1820。
在特定的启用区块链的环境中进行交易的参与者具有地址,该地址可从参与者的“公钥”导出(例如,通过涉及公钥和有关网络的其它信息的散列函数)。继续参考图18,在启用区块链的环境中其他参与者已知参与者的公钥1830。参与者还具有用于签署交易的私钥1840。这样的其他参与者使用参与者的公钥1830来核实接收到的交易的签名。诸如椭圆曲线加密之类的算法可以被用于从私钥生成一个或多个公钥。在一个实施例中,这样的算法可以涉及将私钥转换成二进制表示、识别这种二进制表示中的值为1的位、并且将指数相乘的生成器变量求和以得出最终的公钥。虽然生成公钥的处理相当简单,但是逆转该处理的计算量却很大。私钥1840和公钥1830可以是大整数,但是由于这些数字可以非常大,因此它们倾向于使用由字母和数字组成的单独格式来表示(例如,钱包导入格式(WIF))。
私钥和一个或多个公钥可以由“钱包”存储。钱包1850可以是与给定参与者相关联的启用区块链的环境的软件客户端。钱包1850可以被实现为例如由移动电话或台式计算机中的处理器执行的计算机可读指令。除了存储参与者的私钥1840和一个或多个相关联的公钥1830之外,钱包1850还可以被配置为允许参与者接收和发送其中列出交易的区块。
继续参考图18并且另外参考图19,交易1820包括发送者的地址1910、接收者的地址1920、交易内容1930和签名1940。交易内容1930和参与者的私钥1840用于生成签名1940。还可生成散列消息认证码(HMAC)并将其插入交易1820中,以允许核实交易内容1930的真实性。
在将区块链应用于初始秘密共享的这个应用中,交易内容1930是初始秘密S的加密版本。具体而言,一旦Alice获得了初始秘密S并希望与Bob共享它,Alice的控制模块980A就首先使用Alice的私钥PRKA加上Bob的公钥PUKB来生成共享密钥Ks。共享密钥Ks具有可从Alice的私钥PRKA加上Bob的公钥PUKB的组合、以及从Alice的公钥PUKA加上Bob的私钥PRKB的组合导出的特殊性质。控制模块980A使用共享密钥Ks对初始秘密S进行加密(从而产生“共享秘密”SS)并在区块链上创建交易。该交易来自Alice,将发给Bob。当Bob检测到来自Alice的交易时,Bob的控制模块980B使用Bob的私钥PRKB加上Alice的公钥PUKA来生成相同的共享密钥Ks。然后,Bob使用这个共享密钥Ks从共享秘密SS中解密初始秘密S。
在这时候,Alice和Bob均具有初始秘密S并且可以前进到阶段1020,这将在下面描述。
应当注意的是,初始秘密S应当具有一定的最小长度。一般而言,初始秘密S的尺寸可以基于系统尺寸N,并且可以与N*2N位对应。例如,在N=10的情况下,初始秘密“S”的长度可以是10*210=10240位=1280字节。但是,这不应当视为限制,因为可以使用其它长度。
以上三个变体已经描述了在用于调整控制模块980A、980B的处理的阶段1010处可以在Alice和Bob之间共享初始秘密S的方式。现在更详细地描述阶段1020。
具体而言,Alice和Bob中的每一个都基于双方已知的初始秘密S在本地生成初始编码映射(例如,置换矩阵P)。参考图14A和14B还可以对此进行理解,其中控制模块980A、980B被配置为通过执行被称为“EntroGen(*)”的进程来生成置换矩阵P(以及其转置PT),在这种情况下,该进程的自变量为初始秘密S。
在图14A中,EntroGen(*)进程实现了用于生成P和PT的算法1410,该算法可以采用多种形式,诸如数组混洗算法,包括密钥调度算法(KSA)、Fisher-Yates(费雪耶兹)混洗等,其中信息状态为0到(2N-1)。在非限制性实施例中,2N×2N置换矩阵P可以由“状态数组”S[2N]表述。
可替代地,并且参考图14B,EntroGen(*)进程涉及使初始秘密S通过散列模块1420以生成中间秘密S*,然后该中间秘密S*由适当的(例如,数组混洗)算法1410来处理。散列模块1420确保S中的小差异将产生极大不同的置换矩阵P。
第六初始化方法
参考图33A,Alice和Bob中的每一个在相应的存储器中维护“熵历史表”3310、3320。熵历史表跟踪最近配置的熵“记录”。每个这种熵记录包括多个条目,包括与该记录相关联的对等方的ID(在“应用ID”列下,注意的是,这不是存储熵历史表的对等方的身份,而是与该对等方通信的另一个对等方的身份)、时间指示器(例如,“时间”列下的时间戳或时间帧或序列号)、熵状态(“QE”列下)和散列(“散列”列下)。回想一下,给定的熵状态与编码映射/置换矩阵唯一关联。由于每个熵记录与时间帧或序列值相关联,因此变得有可能轻松找到先前的熵状态并配置相关联的置换矩阵;如果提供了相同的时间指示器,那么这可以由Alice和Bob独立完成。要注意的是,每个时间指示器与熵状态相关联,并且与一个时间指示器相关联的熵状态取决于与先前时间指示器相关联的熵状态。通过使熵状态通过散列函数(可以是单向函数)来产生散列。
为了建立熵历史表,Alice和Bob参与两阶段交换。第一阶段是预备阶段。第二阶段是更新阶段。现在参考图33B以及步骤3310至3370描述预备阶段。
步骤3310:Alice生成公钥-私钥对。Alice的公钥表示为PUKA。
步骤3320:Alice向Bob发送包括Alice的公钥PUKA的消息。这个信息可以经由第三方到达Bob,即,不一定由Alice直接发送给Bob。
步骤3330:Bob选择或生成初始熵状态E0,并用Alice的公钥PUKA对其进行加密,从而得到PU(E0)。初始熵状态E0可以由状态数组S0[2N]表示。
步骤3340:Bob将初始熵状态E0的加密版本PU(E0)发送给Alice的ID。
步骤3350:Alice使用Alice已知但Bob不知道的私钥解密初始熵状态E0。现在,两个对等方共享初始熵状态E0。
步骤3360:Alice和Bob产生散列H0,并针对当前时间指示器t0用H0和E0更新它们的熵历史表。
步骤3370:Alice和/或Bob设置触发器以在稍后的时间(可能是将来的随机时间)触发更新阶段。在非限制性示例中,触发器可以被实现为定时器。
在这时候,Alice和Bob均具有初始熵状态E0。现在参考图34以及步骤3402至3432描述更新阶段。
步骤3402:触发器之一被触发。这可以是Alice的触发器或Bob的触发器。为了本讨论的目的,假设接收到的是Alice的触发器(例如,首先到期的定时器)。这意味着,是时候确定新的时间指示器t1的熵状态(表示为E1)和对应的散列(表示为H1)了。
步骤3404:Alice获得当前时间指示器t0的初始熵状态E0和散列H0。
步骤3406:Alice获得与熵状态E0唯一相关联的编码映射P(和PT)。
步骤3408:Alice请求表示为g的随机数。
步骤3410:Alice根据g和当前熵状态(该熵状态为初始熵状态E0)创建新的熵状态E1。例如,这可以涉及XOR(异或)运算,诸如E1=g(XOR)E0。当然,这仅仅是示例,并且不应当将其视为限制,因为许多其它操作是可能的。
步骤3412:Alice使用期望的技术从新的熵状态E1生成散列H1。
步骤3414:Alice用新的熵状态E0和相关联的散列H0并针对新的时间指示器t1更新其熵历史表。
步骤3416:Alice计算或以其它方式获得g的量子化的版本,即,P(g)。
步骤3418:Alice将散列H0和P(g)发送给Bob。要注意的是,g是量子化的,因此P(g)可以以明文形式发送,但是也可以对其加密。
步骤3420:Bob接收散列H0和P(g)。基于散列H0,Bob咨询熵历史表以找到对应的熵状态E0。
步骤3422:Bob获得与在步骤3420获得的熵状态E0相关联的编码映射P(和PT)。
步骤3424:Bob将解码映射PT应用于P(g)。仅在Bob和Alice具有相同熵历史表的情况下,这个操作才能得出g。即,如果Bob没有相同的熵历史表,那么Bob可能找不到与散列H0的匹配,或者如果以某种方式找到匹配,它将与熵状态E0不对应,这意味着步骤3422的结果将不会产生PT,而是产生将不允许g被提取的不同映射。
步骤3426:Bob以与Alice进行的方式相同的方式从g和当前的熵状态E0创建新的熵状态E1。例如,如前所述,这可以涉及XOR操作,诸如E1=g(XOR)E0。当然,这仅仅是示例并且不应当将其视为限制,因为许多其它类型的操作是可能的。
步骤3428:Bob使用期望的技术从新的熵状态E1生成散列H1。
步骤3430:Bob将散列H1和Bob的ID发送给Alice。
步骤3432:Alice接收散列H1并识别Bob的ID,并且看到Bob发送了针对时间指示器t1的期望散列H1。
现在认为双方都更新了它们的熵历史表。可以设置另一个触发器,并再次执行更新阶段。
更新熵历史表的另一种方法将是,在初始同步之后,将最新的熵状态(例如,Ex)用作对新的熵状态(例如,Ex+1)进行加密的对称密码密钥。
从以上所述,将注意到,每个熵状态取决于先前的熵状态,该先前的熵状态取决于其之前的熵状态。照此,创建了熵状态的链,并且每个这种熵状态Ex都定义编码映射Px。而且,只要对等方在时间指示器上达成一致,每个对等方就会知道要使用哪个熵状态,从而知道要使用哪个编码映射。
发送和接收设备之间的编码/解码映射商定之后的实现场景
应当认识到的是,上面提到的用于使用与特定“熵状态”相关联的编码映射将N位输入片段转换成N位输出片段的量子化技术可以用在各种实现场景中,从传输少量信号(诸如单个加密密钥)到传输大量信息(诸如实时流式传输应用数据)到本地生成加密密钥而不传输到另一方。
图17A-17C概念性地图示了与前述相关的各种可能的实现场景。在所有实现场景中,Alice配备有量子化模块982A,该模块包括与量子化(和去量子化)相关的必要功能模块,如前面所讨论的。类似地,Bob配备有量子化模块982B,该模块包括与去量子化(和量子化)相关的必要功能模块。假设Alice和Bob在使用哪个编码和解码映射方面已经达成一致;这可以根据上面提到的任何初始化方法(包括维护熵历史表和在当前时间指示器上达成一致)来实现。而且,可选地,Alice可以配备有应用模块981A,而Bob可以配备有应用模块981B。应用模块981A和981B在两个用户之间传送“应用数据”(诸如消息)。
第一实现场景:Alice使用的编码映射对要传输到Bob的加密密钥进行编码
参考图17A,Alice的应用模块981A使用例如常规的加密方案与Bob的应用模块981B传递应用数据。这种加密方案的示例可以是高级加密标准(AES),如果使用足够长的加密密钥,那么可以将其视为是安全的;但是,问题在于,如何使Alice和Bob知道相同的加密密钥而又不使该加密密钥面临安全风险。
为此,Alice的应用模块981A确定期望的加密密钥,在步骤1702处调用Alice的量子化模块982A。在步骤1704处,量子化模块982A将编码映射应用于加密密钥以产生量子化的密钥并将其返回给应用模块981A。然后,Alice的应用模块981A通过网络990将量子化的密钥发送到Bob的应用模块981B。然后,Bob的应用模块981B用量子化的密钥调用Bob的量子化模块982B(步骤1706),其对量子化的密钥进行去量子化(使用解码映射),以获得原始加密密钥,并将其返回给应用模块981B(步骤1708)。从这时起,应用模块981A和981B可以使用加密密钥(已从Alice安全传输到Bob)以使用AES、TLS(传输层安全性)、SSL(安全套接字层)或任何其它合适的加密协议来加密应用数据。虽然本描述处理了从Alice发送给Bob的密钥,但相反的情况也可以成立。
第二实现场景:Alice使用的编码映射对要传输到Bob的应用数据进行编码
参考图17B,Alice的应用模块981A将应用数据发送到Alice的量子化模块982A(步骤1712)。Alice的量子化模块982A对应用数据进行量子化(使用编码映射),并将量子化的数据返回给Alice的应用模块981A(步骤1714),Alice的应用模块981A通过网络990将量子化的数据发送到Bob的应用模块981B。在接收到量子化的数据后,Bob的应用模块981B将其发送到Bob的量子化模块982B以进行去量子化(步骤1716)。量子化模块982B对应用数据进行去量子化(使用解码映射),并将原始数据返回给Bob的应用模块981B(步骤1718),在那里对其进行解释和处理。
在第二实现场景的变体中,代替Alice的应用模块981A接收从量子化模块982A返回给它的量子化应用数据并将其转发到Bob的应用模块981B,Alice的量子化模块982A可以通过网络990将量子化应用数据直接发送到Bob的量子化模块982B。
第三实现场景:Alice和Bob使用的编码映射分别生成完全相同的加密密钥
参考图17C,Alice的应用模块981A使用例如常规加密方案与Bob的应用模块981B通信。这种加密方案的示例可以是高级加密标准(AES),如果使用足够长的加密密钥,那么可以将其视为是安全的。但是,问题在于,如何使Alice和Bob知道相同的加密密钥而不使该加密密钥面临安全风险。
在这个特定的实现场景中,加密密钥不会从Alice传输到Bob。而是Alice和Bob基于它们都知道的编码映射(例如,置换矩阵P)在本地生成加密密钥。
具体而言,可以参考以下阶段来描述本地生成加密密钥的该处理:
·阶段1030:Alice和Bob各自从种子源获得共同的种子。种子可以是随机生成的量。
·阶段1040:Alice和Bob各自使用编码映射(例如,置换矩阵P)和种子来创建加密密钥。
·阶段1050:Alice和Bob现在准备好使用加密密钥对其通信进行加密。
现在参考图15和16在两个可能的变体的上下文中描述上面提到的阶段。在这两个图中均示出了服务器1300,其可以具有生成随机数并通过互联网990与Alice和Bob通信的能力。
图15中所示的第一变体被称为请求-响应变体。假设Bob想要与Alice建立通信。操作流程如下(可以理解的是,Alice和Bob中的控制模块980A和980B被配置为执行这些动作):
(7a)Bob发送消息1510,以请求来自服务器1300的种子。消息1510指定Alice的客户端标识符(表示为QID)、Alice的IP地址(表示为Alice-IP)以及其它信息(诸如字节数)。
(7b)服务器1300生成种子(表示为SEED)。种子SEED可以通过服务器1300处的真正随机量子处理来生成。服务器1300与种子SEED相关联地记录Alice的客户端标识符QID和Alice的IP地址Alice-IP。服务器1300以消息1520响应Bob,该消息1520包含用于与Alice通信的种子SEED。
(8)Bob接收包含种子SEED的消息1520,并实现密钥生成处理以使用种子SEED和置换矩阵P(先前获得的)作为输入来生成加密密钥(表示为QK)。例如,可以将种子SEED视为与置换矩阵P进行矩阵乘法的信息输入。于是,输出将是加密密钥QK。由于种子SEED的随机性特征,因此结果所得的加密密钥QK也是随机的。
(9a)Alice发送消息1530,以请求来自服务器1300的种子。消息1530指定Alice的客户端标识符QID、Alice的IP地址Alice-IP以及其它信息(诸如字节数)。
(9b)服务器1300咨询其记录(例如,在存储器中),并且如果针对这个会话与Alice的标识符QID相关联,那么核实Alice的IP地址Alice-IP是否匹配Bob已经指示的地址(在消息1510中)。如果存在匹配,那么服务器1300以包含先前生成的种子SEED的消息1540进行响应;如果不匹配,那么服务器1300可以用警告消息(未示出)进行响应和/或Alice的请求被拒绝。
(9c)Alice接收包含种子SEED的消息1540,并使用种子SEED和置换矩阵P作为密钥生成处理的输入,生成与Bob生成的加密密钥相同的加密密钥QK。
在这时候,Alice和Bob拥有加密密钥QK。使用置换矩阵(诸如P)将种子(诸如SEED)转换成加密密钥(诸如QK)的该处理可以在安全通信过程期间按需重复。
应当注意的是,包含种子SEED的消息1520和1540不需要以最大的安全性来传输(例如,它们甚至可以以明文传输),这降低了密钥分发的复杂性。换句话说,如果第三方获得了种子SEED的知识,那么这不允许第三方获得加密密钥QK。这使得加密密钥QK的分发对于当今的互联网需求既可行又安全,同时避免了传统量子密钥分发的物理限制。
图16中所示的阶段1030-1050的第二变体被称为“广播”变体。照此,在这个变体中,服务器1300可以是用于真正量子随机种子的广播服务器。操作流程如下:
(7a)Alice向服务器1300发送消息1610,以指示其希望或意图收听种子。Bob发送类似的这种消息1620。
(7b)Alice和Bob都收听来自服务器1300的种子。在某个时刻,服务器1300发布包含种子SEED1、SEED2等的广播消息1630。包含种子的消息的示例格式可以是:除了签名以外还有4个字节的种子ID/时间戳、1K字节的种子,使得接收者可以核实种子的完整性。其它格式当然是可能的。
(7c)Alice和Bob均接收各种广播消息1620,并存储包含在这种消息中的种子SEED1、SEED2等。
(8a)Alice与Bob通信(消息流1640)以就使用哪个种子ID/时间戳达成一致。使用时间戳或种子ID是为了避免必须交换实际的种子。
(8b)Alice和Bob均使用商定的种子和置换矩阵P或其转置作为密钥生成处理的输入来生成加密密钥QK。
将认识到的是,在这时候,Alice和Bob拥有加密密钥QK。
在这样完成了阶段1030-1050(例如,通过或者第一变体或者第二变体)之后,Alice和Bob拥有加密密钥QK。即使用于生成加密密钥QK的种子被拦截,恶意第三方也不能轻易确定这个密钥。这是因为加密密钥QK是使用置换矩阵P(或其转置PT)生成的。因此,可以认为加密密钥QK的分发是安全的,并且如果加密密钥QK足够长,那么现在可以继续进行以使用AES(具有加密密钥QK)传输数据,同时保持高安全性级别。
通用应用用例
本技术的非限制性示例用例是使得能够通过互联网(例如,在智能手机、自动柜员机、公司服务器、数据中心、卫星、电子商务服务器、车辆、包括智能家用电器的IoT设备等之间)进行安全通信。
本发明的实施例可以应用于任何通信层,诸如OSI(开放系统互连)参考模型的任何层,因为它处理原始数据N位片段。近端设备获取输入位流,并将编码映射(例如,置换矩阵P)应用于N位片段,以产生N位片段的输出位流,从而最终调制输出位流,然后再将其通过信道130发送到远端设备;并且在接收到后,远端设备通过应用解码映射(例如,置换矩阵PT)来执行解码处理以获取回原始位流。这种物理层实施方式可以应用于长距离/城域点对点传输,以实现高度安全的数据通信。
如果在应用层中实现,那么编码处理可以由发送应用执行,并且解码处理可以在接收应用中执行。发送应用可以与接收应用共享置换矩阵P,并且当发送应用计划发送数据时,它通过给定的片段尺寸N执行置换切换,然后输出位片段将被转换成常规位流或字节流以便发送;在接收应用处,它将通过PT应用置换切换以恢复原始数据。在这种实施方式中,无需改变任何现有的信息基础设施,其就像即插即用那样起作用。
本发明的实施例也可以被实现为仅软件(诸如直接在应用中),或者软件嵌入式系统(诸如在网络协议栈内部,以便被启用和禁用),以及浏览器插件等。某些实施例也可以在诸如网络节点、路由器/无线和无线基站之类的数据通信设备中实现。同样,某些实施例可以被实现为智能手机传输/接收单元或移动应用。互联网信息通信的数据安全性因此可以得到改善。
另外的实施方式包括用于智能驾驶的车辆到车辆(V2V)通信,以在车辆之间提供高度安全的通信。
通过在云数据存储设备的前面提供集成的编码和解码设备,某些实施例可以被用于为云数据存储构建安全的空间。在将所有数据发送到存储设备之前,将由设备使用置换矩阵P对数据进行编码,而在从云中发送出去之前,由设备使用同一置换矩阵PT进行解码。
本技术的用例的其它非限制性示例可以是:
-使得能够进行自主车辆和中央服务器之间的安全通信。
-使得能够进行卫星和地面站之间的安全通信。
-使得能够进行道路上的车辆之间(V2V专用网络)的安全通信。
-使得能够进行安全的数据存储。
另一个非限制性示例用例涉及通过将置换切换子层嵌入到OS中以增强数据安全性并防止数据泄露而获得的个性化操作系统(OS)。置换切换子层如上所述那样利用置换切换矩阵。置换切换矩阵可以由每个单独的系统基于系统标识符自动确定。在这样做时,恶意软件无法在这种个性化的系统中运行。
图7A图示了OS将应用加载到存储器中然后运行它的典型处理。在这种情况下,如果恶意软件在系统中,那么它可能在计算系统中执行;这种类型的出现使恶意软件具有“一次编写即可在任何地方运行”的属性,这会对用户造成巨大损害。
相反,个性化的OS由具有嵌入式应用本地化程序(图7B)和嵌入式应用加载器(图7C)的典型OS组成。典型OS基于OS许可证和硬件系统特性生成安装的系统置换矩阵,并安全地存储到其系统中,或者在每次系统启动时在运行时间重新产生它。用户应用必须由嵌入式应用本地化程序在用户授权下进行“本地化”,其中对应用可执行文件进行置换切换(使用置换矩阵P)并生成存储到本地化应用映像中的本地化ID。
只能加载已本地化的应用(参见图7C)并通过置换矩阵PT应用置换切换,以返回到原始可执行文件从而加载到存储器中以便运行。同时,可以核实本地化的正确性。
将认识到的是,将防止自动下载的恶意软件在个性化的OS系统中执行。
具体应用用例:物联网(IoT)
现在参考图22,该图示出了示例物联网(IoT)环境2200。IoT环境2200一般是指通常具有一些数据报告或控制功能的启用IoT的对象2210的集合,这些对象通过诸如互联网990之类的网络与应用设备2220通信。启用IoT的对象2210的示例可以包括物理设备,诸如智能家用电器(洗衣机、烘干机、吸尘器、烤箱、冰箱、恒温器、相机等)、服装、玩具、医疗设备、车辆零件和各种其它嵌有电子器件、传感器(可选)、软件和网络通信接口的物品。应用设备2220有兴趣向各种启用IoT的对象2210发送消息并从其接收消息。应用设备2220的示例可以是智能手机、工作站、膝上型计算机或大型机服务器。IoT环境2200可以包括具有各种其它功能的进一步互连的网络元件2270、2280。
可以在这种环境中实现将启用互联网的对象2210(或启用互联网的电器)与应用设备2220同步的计算机实现的方法。这种方法可以包括在应用设备2220处执行的一部分和在启用互联网的设备处执行的一部分。除其它以外,应用设备2220尤其可以基于(i)用于先前与电器2210进行通信的先前编码映射和(ii)种子(例如,来自互联网上的远程服务器)来生成编码映射;并通过未穿越互联网的本地连接将编码映射传输到电器2210。就其本身而言,电器2220在通过本地连接接收到编码映射后,可以使用编码映射来随后保护通过互联网与应用设备2220交换的数据。应用设备2220还可以从电器2210接收编码的数据,并使用可从编码映射导出的解码映射对数据进行解码。
在启用IoT的对象2210之一是家用电器的示例中,并参考图23,除了电器2300还包括启用微处理器的IoT通信设备2310以外,电器2300在许多方面可以是常规的。IoT通信设备2310包括处理器2312、存储器2314和网络通信接口2316。也可以提供外部传感器2318,或者传感器2318可以被嵌入在电器2300中的其它地方,其中2318传感器的输出被供给IoT通信设备2310。IoT通信设备2310可以由与电器2300的其余部分相同的电源供电,或者它可以包括其自己的电源(例如,电池)。IoT通信设备2310还可以包括未具体示出的其它部件。
在这个示例中,存储器2314存储由处理器2312执行的计算机可读指令。在一些实施例中,计算机可读指令具有小的代码占用空间,有时小到30千字节(30KB),以便促进与电池供电的电器一起使用。通过执行存储器2314中的计算机可读指令,处理器2312可以执行各种处理,包括通信处理2320、数据安全处理2330、感测处理2340(可选)和对数据进行处理的处理2350。在其它实施例中,上面提到的功能可以由电器2300的现有硬件和软件来实现,即,在不存在专用的启用微处理器的IoT通信设备的情况下。附加处理可以被编码在存储在存储器2314中的计算机可读指令中并且可由处理器2312执行。
在启用IoT的对象是应用设备2220的示例中,并且参考图28,应用设备2220不要求专用的启用微处理器的IoT通信设备,因为可以使用应用设备2220的现有硬件和软件来提供必要的功能。在这方面,有用的是要注意,应用设备2220尤其包括处理器2812、存储器2814、网络通信接口2816和用户接口2818(其可以包括各种输入/输出设备,诸如屏幕、键盘、扬声器等)。
在这个示例中,存储器2814存储由处理器2812执行的计算机可读指令。计算机可读指令的执行可以使处理器2812执行操作系统2880和各种应用(或“app”)2882。一个这种app可以展示用于监视和/或控制电器2300的功能。为此,执行app可以涉及执行各种处理,包括通信处理2820、数据安全处理2830、对数据进行处理的处理2850和用户接口处理2860。附加处理和app可以被编码在存储在存储器2814中的计算机可读指令中,并且可由处理器2812执行。
现在将对上面提到的处理进行更详细的描述,因为它们适于电器2300或应用设备2220。
感测处理2340(由电器2300的IoT通信设备2310的处理器2312执行)可以包括从传感器2318获得读数并将该读数存储在存储器2314中的步骤。来自传感器2318的读数可以以规则的间隔或根据需要在接收到命令时获得。仅举几个非限制性的可能性,传感器2318的示例包括温度计、倾斜计、光传感器、湿度计、一氧化碳传感器、加速度计、压力传感器、图像传感器(例如,CCD)以及检测和测距传感器(雷达、激光雷达、声纳)。
对数据进行处理的处理2350(由电器2300的IoT通信设备2310的处理器2312执行)可以包括处理存储器2314中的传感器数据以便产生用于传输到外部方的可消耗数据的步骤。可消耗数据可以采取外部方要求的某种格式的字节流的形式。作为非限制性示例,感测处理2340可以每5分钟产生并存储一次温度读数,并且对数据进行处理的处理2350可以通过对存储在存储器2314中的12个最新条目求平均来确定1小时内的平均温度。
用户接口处理2860(由应用设备2220的处理器2812执行)可以包括与应用设备2220的用户交互以便获得来自用户的请求的指示的步骤。例如,用户可以请求来自远程电器(诸如电器2300)的读数,或者用户可以请求施加对这种电器的控制。用户接口处理2860还可以包括以特定格式(诸如以图形方式)向用户呈现信息的步骤。
就其本身而言,对数据进行处理的处理2850(由应用设备2220的处理器2812执行)可以包括在经由用户接口2818显示各种数据之前处理各种数据的步骤。对数据进行处理的处理2850因此可以对存储器2814中的数据执行各种操纵,包括图形和数学操纵。
现在转到通信处理2320(由电器2300的IoT通信设备2310的处理器2312执行),这个处理实现某些介质访问控制(MAC)和物理(PHY)规范以经由网络通信接口2316与附近的网络接入点2360通信。在家庭环境中,可以使用家庭路由器通过Wi-Fi无线地实现网络连接性。在电器2300和附近的接入点2360之间进行通信的其它低级协议包括蓝牙、近场通信(NFC)和Zigbee,以仅举几个非限制性的可能性。通常连接到服务提供商调制解调器(未示出)的家庭路由器2360随后向IoT通信设备2310提供对互联网的访问。
就其本身而言,通信处理2820(由应用设备2220的处理器2812执行)也可以实现某些介质访问控制(MAC)和物理(PHY)规范,以经由网络通信接口2316与附近的网络接入点2360进行通信。但是,可以代替地通过应用设备2220的操作系统来处置这种类型的用于提供到互联网的数据连接的低级通信。这种低级通信可以是常规的,因此这里将不对其进行描述。
此外,通信处理2320和通信处理2820两者还实现了用于与互联网上的实体进行通信的某些高层协议。这种高层协议的非限制性示例是MQTT(消息排队遥测传输),它在TCP/IP协议之上工作。有关MQTT协议的更多详细信息,可以在www.mqtt.org处找到,其内容通过引用并入。用于通过互联网与服务器通信的高层协议的其它非限制性示例包括高级消息队列协议(AMQP)、流文本定向消息传递协议(STOMP)、IETF约束应用协议、XMPP、DDS、OPC UA和Web应用消息传递协议(WAMP)。
MQTT协议遵循发布/订阅消息传递模型。代替传统的客户端-服务器模型(客户端与服务器直接通信),发布/订阅模型提供了两种类型的“客户端”参与者,它们通过代理传送消息。每个消息都有“主题”。每个客户端可以是某些主题的“发布者”客户端和/或某些其它主题的“订阅者”客户端。发布者客户端通过发布者和订阅者客户端都知道的代理(例如,在预定URL处)与订阅者客户端分离。代理过滤所有传入的消息并根据主题对它们进行分发。
代理被认为是任何发布/订阅消息传递模型(诸如通过MQTT协议实现)的核心。取决于具体的实现,代理可以处置多达数千个并发连接的启用IoT的对象。代理主要负责接收所有消息、根据主题过滤它们、确定谁对哪些主题感兴趣、然后将经过滤的消息发送给所有订阅的客户端。代理还保持所有持久客户端的会话,包括订阅和错过的消息。
现在考虑可以如何将MQTT协议映射到图22中的IoT环境2200,并且另外参考图23,可以将启用IoT的对象2210和应用设备2220视为MQTT客户端。特别地,电器2300可以是某些主题的发布者客户端和其它主题的订阅者客户端。类似地,应用设备2220可以是某些主题(包括电器2300订阅的那些主题)的发布者客户端,并且可以是某些其它主题(包括电器2300发布的那些主题)的订阅者客户端。网络元件之一(在这种情况下为网络元件2280)可以充当MQTT代理的角色。在非限制性示例中,MQTT代理2280可以被实现为互联网上具有预定IP地址的服务器。MQTT客户端2220、2300中的每一个都运行合适的MQTT协议库,并通过合适的网络连接与MQTT代理2280连接。MQTT协议处于TCP/IP之上,因此MQTT客户端2220、2300和MQTT代理2280均实现TCP/IP栈。
MQTT连接本身始终在一个MQTT客户端和MQTT代理2280之间;没有MQTT客户端直接连接到另一个MQTT客户端。通过MQTT客户端将CONNECT(连接)消息发送到MQTT代理2280来发起连接。MQTT代理2280用CONNACK消息和状况码进行响应。一旦建立了连接,只要客户端不发送DISCONNECT(去连接)命令或以其它方式丢失连接,MQTT代理2280就将保持连接打开。
在MQTT客户端连接到MQTT代理2280之后,它可以发布消息。MQTT协议实现了代理对消息的基于主题的过滤,因此每个消息都必须包含主题,MQTT代理2280将使用主题将消息转发给感兴趣的MQTT客户端。
PUBLISH(发布)消息可以包括主题的名称和有效载荷。SUBSCRIBE(订阅)消息包括主题的名称。MQTT代理2280标注哪些MQTT客户端已订阅了哪些主题。因此,当代理从MQTT客户端接收到针对特定主题的PUBLISH消息时,MQTT代理2280将PUBLISH消息路由到已订阅该特定主题的那些MQTT客户端。
图24示出了MQTT协议的订阅、发布和代理概念的示例,该概念应用于图21的IoT环境,并由每个相应的启用IoT的对象的通信处理(在电器2300的情况下,这是通信处理2320,而在应用设备2220的情况下,这是通信处理2820)执行。具体而言,电器2300可以被配置为捕获感测到的数据(例如,经由感测处理2340),并且可以具有在主题“X”下发布包含该感测到的数据的消息的能力。此外,主题X是应用设备2220感兴趣的。因而,如2410所表示的,应用设备2220向代理2280发送SUBSCRIBE消息(主题=X)。如2420所表示的,代理2280注册应用设备2220对主题X的兴趣。就其本身而言,如2430所表示的,电器2300将包含感测到的数据(DATA)的PUBLISH消息(主题=X)发送给代理2280。代理2280认识到应用设备2220对主题X感兴趣,因此,如2440所表示的,将带有数据(DATA)的PUBLISH消息(主题=X)路由到应用设备2220。
参考图25,示出了MQTT消息2500的格式,在这种情况下是PUBLISH消息。至少,所有MQTT消息都包括具有控制报头字段2512和分组长度字段2514的固定报头字段2510。控制报头字段2512指示MQTT消息的类型(在这种情况下为PUBLISH消息)。由于MQTT消息是可变长度消息,因此分组长度字段2514指示MQTT消息2500的长度。然后,取决于消息的类型,可以存在报头字段2520和有效载荷字段2530。对于PUBLISH消息确实存在此类字段,但是它们的长度和内容有所不同。特别地,报头字段2520包括主题名称长度字段2522、主题名称字段2524和消息ID字段2526(也称为时间戳)。主题名称长度字段2524指示PUBLISH消息2500涉及的主题,而主题名称长度字段2522指示主题名称长度字段2522的长度。对于消息ID字段2526,这可以指示由消息2500的源发出的序列号,该序列号对于每个消息可以是唯一的,或者对于具有相同主题的每个消息是唯一的。
最后,有效载荷字段2530包含要发布的应用消息。MQTT协议与数据无关,并且如何结构化有效载荷取决于用例。如果要发送二进制数据、文本数据或者甚至成熟的XML或JSON,那么它完全取决于发送方。
IoT环境中的对象会遭受与常规服务器、工作站和智能手机类似的安全问题,不同之处在于,后述类型的设备使用的防火墙、安全更新和反恶意软件系统一般不适用于通常较小的、能力较弱的启用IoT的对象。照此,一种解决方案是为启用IoT的对象提供数据安全处理,如现在更详细描述的。
数据安全处理2330、2380用作相应的通信处理2320、2820之上的层。例如,通信处理2320、2820负责诸如调制和解调、天线/增益控制和连接维护(例如,TCP级别的重传)的功能。就其本身而言,数据安全处理2330、2830负责以下三个功能:
功能1:确定和分发编码和解码映射;
功能2:使用编码和解码映射进行量子化和去量子化;以及
功能3:远程调整编码和解码映射。
现在将更详细地描述这三个功能。
数据安全处理的功能1:确定和分发编码和解码映射
为了允许在电器2300和应用设备2220之间在熵空间中进行通信,这些设备中的每一个都需要知道它将用于量子化其数据的编码映射,并且反过来使用解码映射。电器2300执行的数据安全处理2330和应用设备2220执行的数据安全处理2830负责确定编码和解码映射并协调它们的分发。在本实施例中,应用设备2220的数据安全处理2830负责确定维度2N×2N的置换矩阵P,并将其分发给电器2300的数据安全处理2330。照此,与电器2300的处理器2312相比,应用设备2220的处理器2812可以处理更大的计算负荷。
现在参考图27描述确定和分发置换矩阵P的一种示例方式,该图进一步图示了IoT环境2200中启用IoT的客户端之一,在这种情况下是网络元件2270,其具有“种子分发器”的角色。种子分发器2270可以被配置为使用行业已知的随机处理来生成种子。
在步骤2700处,应用设备2220的数据安全处理2830获得初始种子ISEED。例如,初始种子ISEED可以已经被存储在应用设备2220的存储器2814中。
在步骤2710处,应用设备2220的数据安全处理2830基于初始种子ISEED生成编码映射。为此,数据安全处理2830可以执行EntroGen(*)进程。回想一下,EntroGen(*)进程基于自变量的值生成编码映射。因此,例如,调用EntroGen(ISEED)产生初始置换矩阵P1。
在步骤2720处,种子分发器2270生成随机种子QSEED。从数学意义上讲,这可以是真正的随机数,但这不是必需的。它可以只是外部方难以猜测的任何特定尺寸的位串。
在步骤2730处,种子分发器2270经由代理2280将随机种子QSEED发送到应用设备2220。即,种子分发器2270将随机种子QSEED放入PUBLISH消息2735的有效载荷中,针对该消息选择主题为“SEED(种子)”(作为示例)。同时,假设应用设备2220订阅了主题“SEED”。PUBLISH消息2735到达代理2280,代理2280识别出应用设备2220订阅了主题“SEED”,并相应地将PUBLISH消息2735路由到应用设备2220。由代理2280路由的PUBLISH消息2735的版本被赋予附图标记2735*,以便与代理2280接收的PUBLISH消息2735区别开来,因为代理2280将进行处理。
参考图30,示出了由种子分发器2270经由代理2280朝着应用设备2220发送的PUBLISH消息2735。PUBLISH消息2735具有与先前关于消息2500所描述的结构化元素对应的结构化元素,即,固定报头字段3010、报头字段3020(包含主题名称“SEED”)以及有效载荷字段3030。在本实施例中,主题“SEED”发信号通知有效载荷字段3030内的随机种子QSEED的传输。有效载荷字段3030还可以包括种子ID(正在发布的种子的标识符)、基于散列的消息认证码(HMAC,其是可选的)和时间戳(例如,可以根据相对分组次序或根据经过的时间来测量)。
现在返回到图27,在步骤2740处,PUBLISH消息2735最终到达应用设备2220,在那里PUBLISH消息2735的有效载荷字段3030的内容由通信处理2820提取。简而言之,这就是应用设备2220的数据安全处理2830如何获得随机种子QSEED。
在步骤2750处,数据安全处理2830通过将初始置换矩阵P1应用于接收到的随机种子QSEED而生成密钥QK。然后,数据安全处理2830再次调用EntroGen(*)处理,但是以密钥QK作为自变量。这导致置换矩阵P。要注意的是,通过在调用EntroGen(*)之前将初始置换矩阵P1应用于接收到的随机种子QSEED,即使外人知道EntroGen(*)进程和随机种子QSEED,他们也仍然无法生成置换矩阵P。
在步骤2760处,应用设备2220执行将置换矩阵P分发给它想要与之安全通信的启用IoT的设备的处理。在本实施例中,这包括电器2300。应用设备2220通过诸如本地私有WiFi、NFC或蓝牙之类的安全专用网络与电器2300建立链路2770。在电器2300安全地接收到置换矩阵P之后,启用IoT的设备(应用设备2220和电器2300)都“处于”相同的熵状态,并且应用设备2220从现在起可以通过公共互联网安全地管理电器2300而没有安全问题。
每当应用设备2220希望与和它通信的电器2300或其它启用IoT的设备执行编码映射的重置或重新同步时,就可以执行步骤2760。多种因素可以促使重新同步,诸如一定时间量的流逝或感知到的安全漏洞。要注意的是,种子分发器2270可以定期发布随机种子(例如,作为主题“SEED”下的PUBLISH消息),并且应用设备2220在订阅主题“SEED”的情况下可以接收这些种子(经由代理2280),并根据需要将它们用于重新同步。
数据安全处理的功能2:使用编码和解码映射进行量子化和去量子化
参考图26,示出了由电器2300经由代理2280朝着应用设备2220传输的PUBLISH消息2600。消息2600具有与先前相对于消息2500所描述的结构化元素对应的结构化元素,即,固定报头字段2610、报头字段2620(包含主题名称)以及有效载荷字段2630。在本实施例中,主题“QEP”(代表“量子熵处理”)用信号通知在有效载荷字段2630中量子化的位串的传输。量子化的位串与携带传感器数据或由对数据进行处理的处理2350提供的任何其它种类的信息、并且经过量子化的位串对应。
信息空间中的对应位可以包括附加信息,诸如种子ID(例如,从其生成了编码映射的当前版本的种子的标识符)、基于散列的消息验证码和时间戳(例如,可以根据相对分组次序或经过的时间来测量)。在一个实施例中,所有所述信息可以在被放入PUBLISH消息2600的有效载荷字段2630中之前被级联和量子化。在另一个实施例中,仅将所述信息中的一些(例如,传感器数据、种子ID)量子化,然后在放入PUBLISH消息2600的有效载荷字段2630中时将其与其它(非量子化的)信息(例如,HMAC和时间戳)级联。
通过电器2300的数据安全处理2330应用存储在存储器2314中的编码映射来实现量子化。为了示例性目的,并且如以上结合功能1所描述的,编码映射由维度2N×2N的置换矩阵P表示,而解码映射由矩阵PT表示。假设解码映射也是应用设备2220已知的(参见功能1),进一步假设应用设备2220订阅了主题“QEP”,并负责执行对应的去量子化处理以检索传感器数据或其它信息。
更特别地,电器2300的数据安全处理2330包括将从对数据进行处理的处理2350接收的输入位串2650分解(拆解)成映射到对应N位输出片段的N位片段的步骤。具体而言,对于输入位串中的每个给定的N位片段,由这个N位片段表示的值(例如,十进制值)在P的操作下由数据安全处理2330映射到新值(例如,十进制值),然后用于表示这个新值(例如,十进制值)的二进制数位变成对于该给定N位片段的对应N位输出片段。然后,电器2300的数据安全处理2320唤起(例如,调用)通信处理2320。
具体而言,通信处理2320通过用主题名称“QEP”填充报头字段2620并且通过用上面提到的N位输出片段(表示为2660)填充有效载荷字段2630,来创建PUBLISH消息2600。然后,电器2300将PUBLISH消息2600发送到互联网上并到达代理2280。代理2280接收由电器2300发送的PUBLISH消息,识别报头字段2620中的主题“QEP”,识别应用设备2220订阅了主题“QEP”,并将该PUBLISH消息2600朝着应用设备2220路由。向被路由的PUBLISH消息赋予附图标记2600*,以将其与代理2280接收的PUBLISH消息2600区别开来,因为代理2280将进行处理。但是,两个消息2600、2600*的内容是完全相同的。要注意的是,对于敏感数据的通信在熵空间中发生,以使得量子化的数据到达应用设备2220,不要求对MQTT协议进行任何改变。
在应用设备2220处,应用设备2220的通信处理2820确定接收到的PUBLISH消息2600*的主题是“QEP”,提取有效载荷字段2630*的内容(即,片段2660)并唤起(例如,调用)数据安全处理2830。由于主题是“QEP”,因此数据安全处理2380知道接收到的数据是被量子化的,并且前进到对接收到的PUBLISH消息2600*的有效载荷字段2630*中的N位片段2660进行去量子化的步骤。具体而言,对于每个给定的N位片段,由N位片段表示的值在置换矩阵PT的操作下由数据安全处理2830映射到新值,然后用于表示这个新值的二进制数位形成对应的N位输出片段。N位输出片段可以与较早的此类片段组合,然后由数据安全处理2830组装成具有合适尺寸的字符(例如,字节)的输出位串2670,其可以由对数据进行处理的处理2850进一步处理以导出有用的信息并导致采取动作。应当注意的是,由于编码和解码映射是彼此的转置,因此位串2650、2670是完全相同的。
数据安全处理的功能3:远程调整编码和解码映射
虽然上述步骤2760提供了在彼此物理接近的应用设备2220与电器2300之间重新同步编码映射的方式,但在一些情况下,当应用设备2220不在电器2300附近时,可以期望重置或重新同步编码映射。现在另外参考图29描述这种远程重新同步。创建了另一个主题以用于重新同步,名称为“ENTROSYNC”。假设启用IoT的设备(包括应用设备2220和电器2300)意识到主题“ENTROSYNC”的存在并订阅了这个主题。
在步骤2910处,应用设备2220的通信处理2820(经由代理2280)从种子分发者2270接收新的随机种子NEW_QSEED。如前所述,这可以是种子分发者2270在主题“SEED”下定期传输PUBLISH消息的结果。可替代地,可以设计特殊的请求-响应序列以导致按需释放种子。
在步骤2920处,应用设备2220的数据安全处理2830通过将当前置换矩阵P应用于新的随机种子NEW_QSEED来生成新的密钥QK1。然后,应用设备2220使用新密钥QK1作为自变量来调用EntroGen(*)进程,以便生成新的置换矩阵P_NEW,从而准备一旦还将与电器2300同步,就与电器2300进行交换。
在步骤2930处,应用设备2220在主题“ENTROSYNC”下发送PUBLISH消息2935,并且在有效载荷中包括用于生成新密钥QK1和新置换矩阵P_NEW的随机种子NEW_QSEED的值。PUBLISH消息2935到达代理2280,代理2280将其路由到电器2300。被路由的PUBLISH消息被赋予附图标记2935*,以与PUBLISH消息2935区别开来,因为代理2280将进行处理。
在步骤2940处,电器2300的通信处理2320接收PUBLISH消息2935,识别主题“ENTROSYNC”,然后从有效载荷中提取新的随机种子NEW_QSEED并将其发送到数据安全处理2330。
在步骤2950处,电器2300的数据安全处理2330通过将当前置换矩阵P应用于接收到的新随机种子NEW_QSEED来生成相同的新密钥QK1。然后,电器2300将新密钥QK1作为自变量来调用EntroGen(*)进程,以便生成相同的新置换矩阵P_NEW,从而准备与应用设备2220进行交换。
在这时候,应用设备2220和电器2300都知道了相同的新置换矩阵P_NEW。当然,如果转置P_NEWT还未知,那么可以容易地从P_NEW导出它。因此,电器2300的数据安全处理2330可以使用由置换矩阵P_NEW表示的编码映射,而应用设备2220的数据安全处理2830可以使用由P_NEWT表示的解码映射。类似地,应用设备2220的数据安全处理2830可以使用由置换矩阵P_NEWT表示的编码映射,而电器2300的数据安全处理2330可以使用由P_NEW表示的解码映射。
MQTT的替代协议
现在转向图31,示出了替代消息格式,该格式适用于AMQP协议的情况。特别地,示出了用于种子递送的AMQP消息3110和用于递送量子化的信息的AMQP消息3120。特别地,AMQP消息的一般消息格式包括报头字段3130、递送注释字段3140、消息注释字段3150、性质字段3160、应用性质字段3170、应用数据字段3180和脚注字段3190。
性质字段3160和应用性质字段3170可以被用于传达本文档前面所述的一些信息。例如,用于种子递送的AQMP消息3010的性质字段3160可以包括类型标志(其识别消息的类型),而应用性质字段3170可以包括种子本身(例如,QSEED)、HMAC和时间戳。而且,用于递送量子化的信息的AQMP消息3120的性质字段3160可以包括类型标志(其识别消息的类型)、种子标识符、HMAC和时间戳,而应用数据字段3170可以包含量子化的数据本身。
具体应用用例:安全的区块链数据存储
应当认识到的是,用户可以使用区块链安全地存储敏感数据(诸如用于密码交换的初始秘密、机密政府或公司数据、监控视频、任何其它敏感数据)以供其自己私人使用。例如,考虑区块链网络中的用户,该用户具有带有私钥和公钥的钱包。用户可以将敏感数据存储在本地设备(例如,智能手机、台式机)上,并且作为备份,存储在区块链上。这可以通过使用公钥加密敏感数据并将其记录为区块链上的交易来完成。没有私钥,其他用户无法解密敏感数据。只有该用户才能使用私钥解密来自区块链的敏感数据。以这种方式,只有钱包需要由用户安全地备份,而数据不需要,数据安全地保留在云中。这可以用于基于云的安全备份存储。照此,如果用户正在使用新设备(例如,前一个智能手机丢失或被盗之后的新智能手机),那么用户获得钱包的备份副本(包括私钥)。然后,从区块链下载加密的敏感数据并使用私钥解密,以获取解密形式的敏感数据。
现在另外参考图20来更详细地描述,图20示出了在启用区块链的环境中的用户设备2010。用户设备2010可以是智能手机或计算机,其被配置为能够执行如本文所述的量子化,并且为此,包括用于确定要使用的正确的编码和解码映射的控制模块2015。用户设备2010希望使用区块链来上传文件,以便例如存储该文件以供将来访问。可以将文件切成一个或多个文件块。服务器2020也存在于这个启用区块链的环境中并且被配置为不时地广播种子。此外,服务器2020维护它已广播的种子及其时间范围的历史记录。当从服务器2010接收到种子SEED1、SEED2等时,用户设备2010的控制模块2015可以借助于一个或多个置换矩阵P1、P2等来生成一系列的密钥QK1、QK2等,如前面已经描述的。即:
·P1(SEED1)→QK1
·EntroGen(QK1)→P2
·P2(SEED2)→QK2
·EntroGen(QK2)→P3
·等等。
当用户准备好上传文件时,首先使用当前密钥QKi对文件的元数据进行加密(通过使用AES);结果表示为AES(元数据)。然后,将加密的元数据作为带有用户ID、时间戳和签名的交易写在区块链上。此外,还添加了由密钥和消息密码产生的散列消息认证码(HMAC)。HMAC只能由已配对的对等方进行核实,这在面对量子计算机时提供鲁棒性。换句话说,在用于执行区块链上的交易的用户私钥被破解(例如,通过量子计算机)或被盗的情况下,用户仍然可以通过核实HMAC连同每个交易记录来识别真实和伪造的交易。而且,与文件数据相关的校验和值可以被产生并添加为交易的一部分。一旦文件被下载,就可以对此进行使用以用于测试数据完整性。
然后,使用相同的技术和相同的密钥QKi对每个文件块FID进行加密(除非同时发生了改变)。整个加密的文件块例如使用SHA256进行散列。然后将这个散列连同用户ID、序列号、HMAC、时间戳和用户签名一起上传到区块链。
现在考虑用户想要将文件下载到比如说第二用户设备2050上。第二用户设备2050可以是另一个智能手机或计算机,其类似于用户设备2010,被配置为能够执行如本文所述的量子化,并且为此,包括控制模块2055,控制模块2055用于确定要使用的正确的编码和解码映射。第二用户设备2050首先从区块链下载加密的元数据。文件元数据的完整性将通过HMAC核实。AES可以使用由正确种子SEEDi生成的正确密钥QKi对元数据进行解密。可以基于存储在文件中的时间戳从服务器2020检索正确的“i”值。解密的元数据将告诉第二用户设备2050哪些文件块(FID)要下载(以及从哪些存储节点)以及它们的顺序。然后,第二用户设备2050将下载所有加密的文件块,并使用相同的机制对其进行解密。每个文件块的完整性将通过HMAC核实。最后,设备将级联文件块以制定原始文件。可以通过校验和值来核实文件。
具体应用用例:抗量子签名
现在参考图35,示出了根据非限制性实施例的用于传输“被见证的消息”的示例系统。在一些实施例中,被见证的消息可以包括区块链交易。具体而言,该系统包括两个对等方Alice和Bob,以及见证实体,称为“William”。William表示Alice和Bob可以通过网络(诸如互联网)990访问的计算设备。这可以是在由William提供的在线服务的背景下,例如,它为每笔被见证的交易收取费用。假设Alice和William已经安全地建立了公共熵历史表(如上所述),包括熵记录。回想一下,熵记录包括多个条目,其可以包括与该记录相关联的对等方的ID、时间指示器、熵状态和散列。
进一步假设在Alice和William之间识别出公共的熵记录。可以通过例如在时间指示器上达成一致来识别公共熵记录。公共熵记录识别熵状态,出于本示例的目的,熵状态将被称为时间“t”处的共享熵状态(表示为Et),并且具有对应的散列Ht。
在特定的非限制性实施例中,现在参考图36中的图描述Alice从原始消息M生成被见证的消息WM所涉及的步骤。假设Alice维护公钥-私钥对。Bob和William可以将Alice的公钥PU用作Alice的标识符。
·Alice发起令牌生成协议TokenGen(*),以根据熵状态Et生成令牌T。作为非限制性示例,TokenGen可以涉及两个步骤:
1.使用伪随机数生成器(诸如RC4 PRGA)基于熵状态Et生成伪随机数R;
2.使用散列函数(诸如MD5或SHA-2)从随机数R生成令牌T。
·Alice生成签名SIG。这是通过首先创建消息M和令牌T的组合的摘要D来完成的。在简单的示例中,摘要D可以作为应用于消息M和令牌T的级联的散列函数来生成。然后,摘要D用Alice的私钥加密,以创建签名SIG。
·Alice用消息M和签名SIG创建被见证的消息WM。这可以通过级联消息M和签名SIG来完成。
·同时,Alice通知William生成了令牌,并向William提供Alice的ID、签名SIG(回想一下,它是从消息M和令牌T生成的),以及与(当前)熵状态Et(从熵历史表获得)对应的散列Ht。
·基于Alice的ID,William获得Alice的公钥PU(例如,可以将其存储在数据库中,该数据库可以在线发布)。基于Alice的公钥PU,William检索对应的散列,并核实检索到的散列与从Alice接收的散列(即,Ht)匹配。如果不是这样,那么这将意味着Alice没有使用与William相同的熵历史表,这可以表明安全漏洞。
·假设从熵历史表检索到的散列与从Alice获得的散列之间存在匹配,那么William检索到对应的熵状态(其应当为当前的熵状态Et),并发起相同的令牌生成协议TokenGen(*)以从相同的熵状态Et生成与Alice相同的令牌T,即,T=TokenGen(Et)。
·与Alice的公钥PU相关联地,William使用令牌T和签名SIG更新“令牌分类账”3675。令牌分类账3675可以被实现为存储在数据库中并且物理上驻留在存储器中的数据结构,诸如表、链接的列表等。令牌分类账3675还可以记录其它细节,诸如消息ID或会话ID。
·William然后通知Alice令牌分类账已更新。
在这时候,Alice将被见证的消息WM发送给接收者Bob。回想一下,被见证的消息WM包括第一部分(消息M)和第二部分(签名SIG)-这两个部分可以以不同方式级联或组合,以形成被见证的消息WM。
一般而言,Bob通过执行以下操作来验证从Alice接收的被见证的消息WM:
-从William(见证实体)接收令牌(T);这可以响应于至少将信息的第二部分提供给William来完成;
-通过消息的第一部分和令牌的联接处理(诸如对消息的第一部分和令牌的组合进行散列)来获得第一数据元素(D);
-通过使用与Alice相关联的密钥对消息的第二部分进行联接处理(例如,使用Alice的公钥对消息的第二部分进行解密,由此Alice的私钥将被用于加密消息的第二部分,并且,更具体而言,由Alice对消息的第一部分和令牌的联接处理的结果进行加密,从而创建消息的第二部分)来获得第二数据元素;以及
-通过比较第一数据元素与第二数据元素来验证被见证的消息;要注意的是,如果验证不成功,那么Bob可以发出某种警告(例如,信号)。
要注意的是,仅当从William接收到的令牌与Alice在创建第二部分时使用的原始令牌匹配时,第一和第二数据元素才匹配。
William创建的令牌和Alice在创建第二部分时使用的原始令牌都是从相同的熵数据(E)创建的。由William基于从Alice接收的代码(诸如通过对熵数据执行单向函数而导出的散列H)咨询分类账来获得这个熵数据。
在特定的非限制性实施例中,现在参考图37中的图描述Bob验证/核实被见证的消息WM的完整性所涉及的步骤。
·Bob从被见证的消息WM中提取签名SIG。
·Bob将签名SIG连同Alice的公钥PU(或任何其它将允许William获得Alice的公钥PU的Alice标识符)一起提供给William。
·William通过基于Alice的公钥PU和从Bob接收的签名SIG中的至少一个咨询令牌分类账3675来获得令牌T。
·William将令牌T发送给Bob。
·Bob使用令牌T来核实被见证的消息WM的完整性。特别是:
οBob从Alice接收到的被见证的消息WM中提取消息M,将其与从William接收到的令牌T组合,并创建预期的摘要D。
ο同时,Bob使用Alice的公钥PU对签名SIG进行解密,从而获得解密的摘要D'。
οBob然后将预期的摘要D与解密的摘要D'进行比较。如果存在匹配,那么这将确认其当前形式的消息M确实是如Bob所见证的那样由Alice发送的。如果不匹配,那么这可能意味着消息已被篡改,或者它实际上不是由Alice发送的。
即使恶意方也得到对令牌T的访问,上述处理也防止获得对Alice的私钥的访问的恶意方生成有效的交易。这是因为恶意方不能访问熵历史表,因此恶意方不知道当前的熵状态Et或其对应的散列Ht。因此,恶意方不能成功地指示William生成正确的令牌T以用于接收处理。
换句话说,Alice和William必须生成相同的令牌,因为Bob仅依靠William来获得令牌。如果令牌不同,那么Bob将无法核实消息。假设Alice和William共享特权的/安全的关系。具体而言,William只会在Alice的指导下生成令牌。照此,只要可以在Alice和William之间建立安全信道,即使对于量子计算机,这种方法也可以比常规的方法更难破解。
要注意的是,在上述场景中,William(见证实体)被配置为从Alice获得代码(诸如散列)和签名,咨询第一数据库(熵历史表)以获得与代码相关联的熵数据,从熵数据生成令牌,将令牌与签名(以及可能还有Alice的标识符,诸如公钥)之间的关联存储在第二数据库(令牌分类账3675)中,并且之后,响应于接收到识别至少签名的请求而传输包括令牌的消息。但是,仅当从Alice获得的代码和与Alice标识符相关联的代码之间存在匹配时才查询第一数据库。熵数据可以表示具有2N个输入端口和2N个输出端口的一对一开关的配置。
具体的应用用例:抗量子区块链交易
现在参考图38,示出了根据非限制性实施例的用于发布“被见证的区块链交易”的示例系统。具体而言,该系统包括两个对等方Alice和Bob,以及见证人William。William表示Alice和Bob可以通过诸如互联网之类的网络访问的计算设备。假设Alice和William建立并维护公共的熵历史表。在非限制性示例中,Alice和William对熵历史表中的公共熵记录达成一致。公共熵记录可以通过例如对时间指示器达成一致来识别。出于本示例的目的,公共熵记录与共享的熵状态Et相关联,该共享的熵状态Et根据熵历史表具有对应的散列Ht。进一步假设Alice维护公钥-私钥对,并且Bob和William可以将Alice的公钥PU用作Alice的标识符。
现在参考图39中的图描述Alice从原始交易有效载荷/消息B生成被见证的区块链交易WB所涉及的步骤。
Alice发起令牌生成协议TokenGen(*),以根据当前熵状态Et生成令牌T,即T=TokenGen(Et)。
Alice生成签名SIG。这是通过用Alice的私钥加密交易有效载荷/消息B和令牌T的组合(例如,级联)来完成的。
Alice用交易ID、交易有效载荷/消息B和签名SIG创建被见证的区块链交易WB。
同时,Alice通知William已生成令牌,并向William提供Alice的ID、签名SIG(它是从消息M和令牌T生成的),以及与当前熵状态Et(从熵历史表获得的)对应的散列Ht。
基于Alice的ID,William获得Alice的公钥PU。基于Alice的公钥PU,William检索对应的散列,并核实检索到的散列与从Alice接收的散列(即,Ht)匹配。如果不是这样,那么这将意味着Alice没有使用与William相同的熵历史表,这可以表明安全漏洞。
假设从熵历史表中检索到的散列与从Alice获得的散列之间存在匹配,那么William检索对应的熵状态Et并发起相同的令牌生成协议TokenGen(*),以从相同的熵状态Et生成与Alice相同的令牌T,即,T=TokenGen(Et)。
与Alice的公钥PU相关联地,William用令牌T和签名SIG更新“令牌分类账”3975。令牌分类账3975可以被实现为数据结构,诸如表、链接列表等,并且可以被存储在数据库中并且物理上驻留在计算机存储器中。令牌分类账3975还可以记录其它细节,诸如交易ID或会话ID。
William通知Alice令牌分类账已更新。
在这时候,Alice将被见证的区块链交易WB发布给接收者Bob。回想一下,被见证的区块链交易WB包括交易ID、交易有效载荷/消息B和签名SIG。Bob核实被见证的区块链交易WB的完整性所涉及的步骤与参考图37中的图已经描述的步骤相似。
安全性增强
已经示出了通过应用如本文所述的编码映射产生的N位输出位片段存在于如此巨大的空间中,从实际的角度来看,即使对于相对较小的N值,也不再需要加密来保证安全性。不过,可以进一步增强通过使用本文所述的编码映射所提供的安全性。例如,可以串联使用多于一个置换矩阵,或者避免使用常见的编码长度(诸如8位(对于ASCII)或16位(对于Unicode)),以减少输出位流中统计上显著的指纹的出现,其可能帮助对输入位流进行反向工程。而且,可以在输入位流之前添加位,以更改原始位流的输入位所放入的“帧”。
其它安全性特征有助于减少输出位流中统计上显著的指纹的出现。现在更详细地描述示例。
第一安全性增强:多级量子化
参考图40,示出了具有两个系统尺寸N1和N2的多级系统。在发送方侧,输入位流(例如,以8位或16位字符提供)首先被第一拆解器4010拆解为尺寸为N1的分段。然后由第一量子化器4020使用尺寸为N1的第一置换矩阵P1对这些片段进行量子化。结果所得的N1位片段由重新组装器4030重新组装,重新组装器4030产生尺寸为N2的片段。重新组装器4030可以包括:打包器,其创建8位或16位字符;还有拆解器,其将8位或16位字符分解成N2位的片段。然后由第二量子化器4040使用尺寸为N2的第二置换矩阵P2对这些N2位片段进行量子化。然后,由打包器4050将结果所得的N2位片段打包为8位或16位字符,然后发送给接收者。接收者侧基本上进行相同的操作,但是以相反的次序,首先是N2位去量子化(使用置换矩阵P2T),然后是N1位去量子化(使用置换矩阵P1T)。
因此,已经示出了如何使用存储在非暂态存储介质中的2N1×2N1一对一映射将输入消息的N1位输入片段转换成对应的N1位输出片段;然后,将N1位输出片段重新组装为N2位输入片段,然后使用2N2×2N2一对一映射将其转换成对应的N2位输出片段。2N1×2N1一对一映射和2N2×2N2一对一映射存储在非暂态存储介质中。N1和N2可以是大于1的任意整数,并且N1与N2不同。
第二安全性增强:位位置混洗
参考图41,示出了具有位混洗器和量子化器的系统。具体而言,在发送方处,首先由第一拆解器4110将输入位流(例如,以8位或16位字符提供)拆解成尺寸为N1的片段。然后,这些片段被尺寸为N1的位混洗器4120进行位混洗。位混洗器4120将输入位位置映射到输出位位置。照此,与特定的N1位输入片段对应的结果所得的N1位片段将具有与该特定的N1位输入片段相同数量的一和相同数量的零,仅在不同的位置处。当N1不等于8或16时,这将大大减少输入位流中的任何字节级统计指纹,因为输入中相同位模式的连续实例将不会在输出中产生相同的位模式。然后由拆解器4130对N1位的分段进行拆解,这产生尺寸为N2的片段。然后由量子化器4140使用尺寸为N2的置换矩阵P对这些N2位片段进行量子化。然后,由打包器4150将结果所得的N2位片段打包为8位或16位字符,然后将其发送给接收者。接收者侧基本上进行相同的操作,但是以相反的次序,从N2位去量子化(使用置换矩阵P2T)开始,然后是N1位去混洗。
第三安全性增强:块量子化
参考图42,示出了具有四个量子化器4200、4202、4204、4206的块的块量子化系统。在发送方侧,首先由拆解器4210将输入位流(例如,以8位或16位字符提供)分解成尺寸为N的四个分段的批次。每个批次中的第一个这种片段被发送到第一量子化器4200,以使用尺寸为N的第一置换矩阵P1进行量子化。每个批次中的第二片段被发送到第二量子化器4202,以使用尺寸为N的第二置换矩阵P2进行量子化。每个批次中的第三片段被发送到第三量子化器4204,以使用尺寸为N的第三置换矩阵P3进行量子化。最后,每个批次中的第四片段被发送到第四量子化器4206,以使用尺寸为N的第四置换矩阵P4进行量子化。结果所得的四个N位片段的批次由打包器4020重新组装,该打包器将四个N位集合的序列变换成8位或16位字符,以传输到接收者。接收者侧基本上进行相同的操作,但是以相反的次序。应当理解的是,块中的量子化器的数量不限于四个,并且可以是更大或更小的数量。
第四安全性增强:动态扩展
对于其中消息包含结构(例如,英语单词、语言)的任何通信,出于至少两个与安全性相关的原因,可以在量子化之前尝试移除这种结构:
1.已知某些消息(例如,SMS或IM)以某些文本串(诸如“Hi”、“Hey”或“Hello”)开头。绝大多数消息的这种可预测性增加了可以对置换矩阵进行反向工程的机会(这是“已知的明文攻击”);
2.某些消息没有利用置换开关的所有2N个唯一输入端口。对于8位系统(N=8),并且在根据高度偏斜的概率分布使用26个字母(包括大写字母、加号和一些标点符号是52个)的英语文本的情况下,确实如此。照此,在对消息进行编码时2N个可能的位布置的使用不均匀的情况下,破解2N×2N置换矩阵的难度降低为破解小得多的置换矩阵的难度。因而,可以使用输入数据的动态扩展。
参考图32和43,示出了量子化系统,其包括拆解器4310、动态扩展器4320(也称为“加扰器”)和量子化器4330。动态扩展器4320以2L个这样的片段的批次来处理L位输入片段。动态扩展器4320跟踪2L个这样的输入片段的每个批次内的每个L位输入片段4340的位置(即,0至2L-1)。动态扩展器4320还维护2L个互斥的模板4350以用于位切换,每个位置一个(即,0至2L-1)。2L个互斥的模板4350可以是例如可能具有N位的零和一的2L-1个可能组合。互斥的模板4350可以存储在动态扩展器4320的存储器中。然后,动态扩展器4320将第0个L位输入片段与第0个模板组合,以产生第0个L位“中间”片段。接下来,动态扩展器4320将第一个L位输入片段与第一个模板组合,以产生第一个L位中间片段,依此类推。通过“组合”,这可以包括各种可逆函数,诸如异或(XOR)。
结果,动态扩展器4320将产生2L个L位中间片段4360的有序序列,其经由拆解器4310被依次馈送到量子化器4330。拆解器4310将2L个L位中间片段4360的序列转换成N位片段4340的序列以准备进行量子化。
量子化器4330使用编码映射(例如,以置换矩阵P为特征)进行量子化处理。在一些实施例中,量子化器4330的系统尺寸N可以与动态扩展器4320的系统尺寸L相同。但是,一般而言,动态扩展器4320和量子化器4330可以以不同的系统尺寸来操作。在接收端,由去量子化器进行去量子化处理,然后由动态解扩器执行动态解扩操作。取决于由动态扩展器4320执行的组合的性质,动态解扩器可以执行与动态扩展器4320完全相同的操作(例如,XOR)或不同的逆操作。
在一些实施例中,由动态扩展器4320使用的模板4350可以是固定的。在其它实施例中,由动态扩展器4320使用的模板4350可以是动态的,这意味着可以随时间调整模板4350。在示例中,给定的模板可以与“随机生成的字符串(salt)”进行异或,并且该随机生成的字符串还必须在动态解扩器处反向应用。
将会看到的是,动态扩展器4320的使用使得完全相同的输入串的集合映射为量子化器4330的输入处的不同位片段,从而导致不同的输出片段被传输到接收者,因此使得拦截消息的人更难以推断由量子化器4330正在执行的编码映射。照此,扩展原始消息相当于将原始消息中相同值的输入片段的不同实例映射为中间原始消息中的不同值的输出片段。
在替代实施例中,一种量子化系统可以包括具有拆解器、量子化器和打包器的量子熵处理器。还提供了动态扩展器,其在这个实施例中可以是流密码器(例如,诸如RC4)。用适当的熵状态Et初始化动态扩展器和量子化器,适当的熵状态Et允许量子化器生成适当的置换矩阵P并用作动态扩展器的种子。可以通过咨询熵历史表来获得熵状态Et。
结论
本文提供了各种操作实施例,包括其中所描述的一个或多个操作可以与存储在一个或多个计算机可读介质上的计算机可读指令对应的实施例,如果指令由计算设备执行,那么将使计算设备执行所描述的操作。描述一些或全部操作的次序不应当被解释为暗示这些操作必须与次序相关。受益于本描述的本领域技术人员将认识到替代的排序。另外,将认识到的是,并非所有操作都必须存在于本文提供的每个实施例中。
还可以通过以下附加条款描述各个方面和实施例:
1、一种通信系统,包括:
-第一装置,包括耦合到第一存储器的第一处理实体;以及
-第二装置,包括耦合到第二存储器的第二处理实体;
-其中第一装置和第二装置通过通信信道进行通信;
-其中第一存储器存储第一计算机可读指令、以及2N个可能的输入索引和2N个可能的输出索引之间的第一映射,N是大于一的整数;
-其中第二存储器存储第二计算机可读指令、以及2N个可能的输入索引和2N个可能的输出索引之间的第二映射,第二映射能够从第一映射导出;
-其中第一处理实体被配置为:
-获得第一位流;
-将第一位流细分为多个N位第一输入片段;
-对于N位第一输入片段中的每一个N位第一输入片段,将第一输入索引确定为由N位第一输入片段中的特定N位第一输入片段的N位表示的值,基于第一输入索引和第一映射来确定第一输出索引,以及设置对应的N位第一输出片段的位以便表示第一输出索引的值;以及
-导致使用每一个对应的N位第一输出片段形成的第二位流通过所述通信信道被传输;
-其中第二处理实体被配置为:
-接收第二位流;
-将第二位流细分为多个N位第二输入片段;
-对于N位第二输入片段中的每一个N位第二输入片段,将第二输入索引确定为由N位第二输入片段中的特定N位第二输入片段的N位表示的值,基于第二输入索引和第二映射来确定第二输出索引,以及设置对应的N位第二输出片段的位以便表示第二输出索引的值,从而恢复N位输入片段中的对应的N位输入片段;以及
-输出使用每一个对应的N位第二输出片段形成的第三位流。
2、如条款1所述的通信系统,其中第一处理实体进一步被配置为将第二映射发送到第二装置以存储在第二存储器中。
3、如条款2所述的通信系统,其中第一处理实体进一步被配置为从第一映射导出第二映射。
4、如条款3所述的通信系统,其中当第一映射被表示为第一矩阵而第二映射被表示为第二矩阵时,第一矩阵和第二矩阵是彼此的转置。
5、如条款1所述的通信系统,其中第一处理实体进一步被配置为将传输的映射发送到第二装置,传输的映射是第一映射或第二映射。
6、如条款4所述的通信系统,其中第一处理实体进一步被配置为向第二装置发送标志,该标志指示传输的映射是第一映射还是第一映射的转置。
7、如条款5所述的通信系统,其中第二处理实体进一步被配置为处理标志,并且当标志指示传输的映射是第一映射的转置时,将传输的映射存储在第二存储器中。
8、如条款5所述的通信系统,其中第二处理实体进一步被配置为处理标志,并且当标志指示传输的映射是第一映射时,将传输的映射的转置存储在第二存储器中。
9、如条款5所述的通信系统,其中第一处理实体进一步被配置为在将指示传输的映射的数据发送到第二装置之前对该数据进行加密。
10、如条款9所述的通信系统,其中为了在将指示传输的映射的数据发送到第二装置之前对该数据进行加密,第一处理实体被配置为使用私钥/公钥对中的私钥对指示传输的映射的数据进行加密,该私钥是第一装置唯一已知的,公钥被使得能够由第二装置使用。
11、如条款5所述的通信系统,其中第一处理实体和第二处理实体被配置为与彼此执行握手协议,以将传输的映射从第一装置安全地传输到第二装置。
12、如条款1所述的通信系统,其中第一映射通过置换矩阵存储在第一存储器中,其中基于第一输入索引和第一映射来确定第一输出索引包括:创建长度为2N的输入向量,该输入向量除了在与第一输入索引对应的单个位置中为“1”以外全为零;将该置换矩阵与输入向量相乘以获得长度为2N的输出向量,该输出向量除了在单个位置中为“1”以外全为零,其中第一输出索引被设置为等于“1”出现在输出向量中的位置。
13、如条款1所述的通信系统,其中第一映射和第二映射均是一对一映射。
14、如条款1所述的通信系统,其中对于多个连续的N位第一输入片段,第一处理实体被配置为:
-为第一N位输入片段中的每一个确定第一输入索引;
-创建一系列尺寸为2N的数组,每个数组与N位第一输入片段中的一个对应,并且除了在与第一输入索引对应的单个位置中为“1”以外全为零;
-将每个数组应用于实现映射的2N输入、2N输出开关架构的输入,由此在开关架构的输出处获得一系列输出数组,每个数组除了在单个位置中为“1”以外全为零;
-将用于N位输出片段中的每一个N位输出片段的输出索引设置为与在输出数组中的对应输出数组中出现“1”的位置对应。
15、如条款1所述的通信系统,其中N至少等于14。
16、如条款1所述的通信系统,第一处理实体进一步被配置为在所述细分之前用加密密钥对第一位流进行加密,第二处理实体进一步被配置为利用与加密密钥对应的解密密钥对第三位流进行解密,从而恢复第一位流。
17、如条款1所述的通信系统,第一处理实体进一步被配置为在所述导致之前利用加密密钥对第二位流进行加密,第二处理实体进一步被配置为在所述细分之前利用与加密密钥对应的解密密钥对接收到的位流进行解密。
18、如条款1所述的通信系统,其中第一装置和第二装置是移动通信设备。
19、一种数据保护方法,包括:
-使用电将2N个可能的输入索引和2N个可能的输出索引之间的映射存储在计算机存储器中;
-使用电获得输入位流;
-使用电将输入位流细分为存储在计算机存储器中的多个N位输入片段,N是大于1的整数;
-使用电产生与N位输入片段中的相应N位输入片段对应的多个N位输出片段,并将N位输出片段存储在计算机存储器中,其中N位输出片段中的特定N位输出片段是通过以下操作从N位输入片段中的特定N位输入片段产生的:
-将输入索引确定为由N位输入片段中的该特定N位输入片段的N位表示的值;
-基于输入索引和映射来确定输出索引;
-设置N位输出片段中的该特定N位输出片段的位,以便表示输出索引的值;
-使用电来输出使用N位输出片段形成的输出位流;
-使用电将输出位流转换成输出信号;以及
-使用电将输出信号释放到物理介质上。
20、一种在多个通信设备之间实现安全网络的方法,包括:
-确定2N个可能的输入索引和2N个可能的输出索引之间的映射,其中N>1;
-将映射安全地嵌入每个通信设备的存储器中;
-将每个通信设备中的一个或多个处理器配置为在向其它通信设备传输数据时执行数据编码方法;以及
-将每个通信设备中的一个或多个处理器配置为在处理从其它通信设备接收到的数据时执行数据解码方法;
-数据编码方法和数据解码方法包括:
-获得输入位流;
-将输入位流细分为多个N位输入片段;
-产生与N位输入片段中的相应N位输入片段对应的多个N位输出片段,其中通过以下操作从N位输入片段中的特定N位输入片段产生N位输出片段中的特定N位输出片段:
-将输入索引确定为由N位输入片段中的该特定N位输入片段的N位表示的值;
-基于输入索引和映射来确定输出索引;以及
-设置N位输出片段中的该特定N位输出片段的位,以便表示输出索引的值;以及
-输出使用N位输出片段形成的输出位流。
最后,虽然已经关于一种或多种实施方式示出并描述了本公开,但是基于对本说明书和附图的阅读和理解,本领域的其他技术人员将想到等同的变更和修改。本公开包括所有此类修改和变更,并且仅由所附权利要求的范围限制。特别是关于由上述部件(例如,元件、资源等)执行的各种功能,除非另有说明,否则用于描述此类部件的术语旨在对应于执行所描述的部件的指定功能的任何部件(例如,在功能上是等同的),即使在结构上不等同于在本公开的本文所示的示例性实施方式中执行功能的所公开的结构。此外,虽然可能已经仅针对若干实施方式中的一种公开了本公开的特定特征,但是如对任何给定或特定应用可能期望和有利的,这样的特征可以与其它实施方式的一个或多个其它特征组合。
Claims (38)
1.一种通信系统,包括:
第一装置,包括耦合到第一存储器的第一处理实体;以及
第二装置,包括耦合到第二存储器的第二处理实体;
其中第一装置和第二装置通过通信信道进行通信;
其中第一存储器存储第一计算机可读指令、以及2N个可能的输入索引和2N个可能的输出索引之间的第一映射,N是大于一的整数;
其中第二存储器存储第二计算机可读指令、以及2N个可能的输入索引和2N个可能的输出索引之间的第二映射,第二映射能够从第一映射导出;
其中第一处理实体被配置为:
获得第一位流;
将第一位流细分为多个N位第一输入片段;
对于N位第一输入片段中的每一个N位第一输入片段,将第一输入索引确定为由N位第一输入片段中的特定N位第一输入片段的N位表示的值,基于第一输入索引和第一映射来确定第一输出索引,以及设置对应的N位第一输出片段的位以便表示第一输出索引的值;以及
导致使用每一个对应的N位第一输出片段形成的第二位流通过所述通信信道被传输;
其中第二处理实体被配置为:
接收第二位流;
将第二位流细分为多个N位第二输入片段;
对于N位第二输入片段中的每一个N位第二输入片段,将第二输入索引确定为由N位第二输入片段中的特定N位第二输入片段的N位表示的值,基于第二输入索引和第二映射来确定第二输出索引,以及设置对应的N位第二输出片段的位以便表示第二输出索引的值,从而恢复N位输入片段中的对应的N位输入片段;以及
输出使用每一个对应的N位第二输出片段形成的第三位流。
2.如权利要求1所述的通信系统,其中第一处理实体进一步被配置为将第二映射发送到第二装置以存储在第二存储器中。
3.如权利要求2所述的通信系统,其中第一处理实体进一步被配置为从第一映射导出第二映射。
4.如权利要求3所述的通信系统,其中当第一映射被表示为第一矩阵而第二映射被表示为第二矩阵时,第一矩阵和第二矩阵是彼此的转置。
5.如权利要求1所述的通信系统,其中第一处理实体进一步被配置为将传输的映射发送到第二装置,传输的映射是第一映射或第二映射。
6.如权利要求5所述的通信系统,其中第一处理实体进一步被配置为向第二装置发送标志,该标志指示传输的映射是第一映射还是第一映射的转置。
7.如权利要求6所述的通信系统,其中第二处理实体进一步被配置为处理标志,并且当标志指示传输的映射是第一映射的转置时,将传输的映射存储在第二存储器中。
8.如权利要求6所述的通信系统,其中第二处理实体进一步被配置为处理标志,并且当标志指示传输的映射是第一映射时,将传输的映射的转置存储在第二存储器中。
9.如权利要求5所述的通信系统,其中第一处理实体进一步被配置为在将指示传输的映射的数据发送到第二装置之前对该数据进行加密。
10.如权利要求9所述的通信系统,其中为了在将指示传输的映射的数据发送到第二装置之前对该数据进行加密,第一处理实体被配置为使用私钥/公钥对中的私钥对指示传输的映射的数据进行加密,该私钥是第一装置唯一已知的,公钥被使得能够由第二装置使用。
11.如权利要求5所述的通信系统,其中第一处理实体和第二处理实体被配置为与彼此执行握手协议,以将传输的映射从第一装置安全地传输到第二装置。
12.如权利要求1所述的通信系统,其中第一映射通过置换矩阵存储在第一存储器中,其中基于第一输入索引和第一映射来确定第一输出索引包括:创建长度为2N的输入向量,该输入向量除了在与第一输入索引对应的单个位置中为“1”以外全为零;将该置换矩阵与输入向量相乘以获得长度为2N的输出向量,该输出向量除了在单个位置中为“1”以外全为零,其中第一输出索引被设置为等于“1”出现在输出向量中的位置。
13.如权利要求1所述的通信系统,其中第一映射和第二映射均是一对一映射。
14.如权利要求1所述的通信系统,其中对于多个连续的N位第一输入片段,第一处理实体被配置为:
为第一N位输入片段中的每一个确定第一输入索引;
创建一系列尺寸为2N的数组,每个数组与N位第一输入片段中的一个对应,并且除了在与第一输入索引对应的单个位置中为“1”以外全为零;
将每个数组应用于实现映射的2N输入、2N输出开关架构的输入,由此在开关架构的输出处获得一系列输出数组,每个数组除了在单个位置中为“1”以外全为零;
将用于N位输出片段中的每一个N位输出片段的输出索引设置为与在输出数组中的对应输出数组中出现“1”的位置对应。
15.如权利要求1所述的通信系统,其中N至少等于14。
16.如权利要求1所述的通信系统,第一处理实体进一步被配置为在所述细分之前用加密密钥对第一位流进行加密,第二处理实体进一步被配置为利用与加密密钥对应的解密密钥对第三位流进行解密,从而恢复第一位流。
17.如权利要求1所述的通信系统,第一处理实体进一步被配置为在所述导致之前利用加密密钥对第二位流进行加密,第二处理实体进一步被配置为在所述细分之前利用与加密密钥对应的解密密钥对接收到的位流进行解密。
18.如权利要求1所述的通信系统,其中第一装置和第二装置是移动通信设备。
19.如权利要求1所述的通信系统,其中第一映射通过置换矩阵存储在第一存储器中,其中基于第一输入索引和第一映射来确定第一输出索引包括:创建长度为2N的输入向量,该输入向量除了在与第一输入索引对应的单个位置中为“1”以外全为零;以及基于该置换矩阵中的1值的位置来执行位置切换操作,以获得长度为2N的输出向量,该输出向量除了在单个位置中为“1”以外全为零,其中第一输出索引被设置为等于“1”出现在输出向量中的位置。
20.如权利要求1所述的通信系统,其中N是6或至少等于10。
21.如权利要求1所述的通信系统,其中N的值动态地改变。
22.一种在多个通信设备之间实现安全网络的方法,包括:
确定2N个可能的输入索引和2N个可能的输出索引之间的映射,其中N>1;
将映射安全地嵌入每个通信设备的存储器中;
将每个通信设备中的一个或多个处理器配置为在向其它通信设备传输数据时执行数据编码方法;以及
将每个通信设备中的一个或多个处理器配置为在处理从其它通信设备接收到的数据时执行数据解码方法;
数据编码方法和数据解码方法包括:
获得输入位流;
将输入位流细分为多个N位输入片段;
产生与N位输入片段中的相应N位输入片段对应的多个N位输出片段,其中通过以下操作从N位输入片段中的特定N位输入片段产生N位输出片段中的特定N位输出片段:
将输入索引确定为由N位输入片段中的该特定N位输入片段的N位表示的值;
基于输入索引和映射来确定输出索引;以及
设置N位输出片段中的该特定N位输出片段的位,以便表示输出索引的值;以及
输出使用N位输出片段形成的输出位流。
23.一种数据保护方法,包括:
将置换映射存储在计算机存储器中,所述置换映射将在单个位置中为1并在2N-1个其他位置中的每一个中为0的每一个可能的2N位输入数组、映射为在对应的单个位置中为1并在2N-1个其他位置中的每一个中为0的相应2N位输出数组,N是大于一的整数;
获得输入位流;
将输入位流细分为存储在计算机存储器中的多个N位输入片段;
由一个或多个处理器产生与N位输入片段中的相应N位输入片段对应的多个N位输出片段,N位输出片段被存储在计算机存储器中,
其中N位输出片段中的特定N位输出片段是由所述一个或多个处理器通过以下操作从N位输入片段中的特定N位输入片段产生的:
从N位输入片段中的该特定N位输入片段的N位确定2N位输入数组;
基于2N位输入数组和所述置换映射来确定2N位输出数组;以及
设置N位输出片段中的该特定N位输出片段的位,以便表示2N位输出数组的值;以及
输出使用N位输出片段形成的输出位流。
24.如权利要求23所述的方法,其中从N位输入片段中的该特定N位输入片段的N位确定2N位输入数组包括:获得与N位输入片段中的该特定N位输入片段对应的十进制值M,并且将2N位输入数组中的表示十进制值M的列中的元素设置为1。
25.如权利要求23所述的方法,其中从2N位输入数组和所述置换映射来确定2N位输出数组包括:执行2N位输入数组和与所述置换映射对应的2N×2N矩阵之间的乘法。
26.如权利要求25所述的方法,其中输出位流包括输入位流中编码的数据的解码版本,所述方法进一步包括:使用所述矩阵的转置将数据编码在输入位流中。
27.如权利要求23所述的方法,其中输入位流包括编码数据,其中输出位流包括输入位流中编码的数据的解码版本,以及其中所述置换映射是用于将数据编码在输入位流中的置换映射的转置。
28.如权利要求23所述的方法,其中输出位流包括输入位流中的数据的编码版本,所述方法进一步包括:将所述置换映射发送到远程装置以用于输出位流中的数据的解码。
29.如权利要求23所述的方法,其中输出位流包括输入位流中的数据的编码版本,所述方法进一步包括:将所述置换映射或所述置换映射的转置发送到远程装置以用于输出位流中的数据的解码。
30.如权利要求29所述的方法,进一步包括:将标志发送到所述远程装置,所述标志指示发送到所述远程装置的映射是所述置换映射还是所述置换映射的转置。
31.如权利要求23所述的方法,其中从2N位输入数组和所述置换映射来确定2N位输出数组包括:通过将2N位输入数组与所述置换映射的矩阵表示进行组合,来获得除了在单个位置中为1以外全为0的2N位输出数组。
32.如权利要求23所述的方法,进一步包括:
确定多个连续的N位输入片段中的每一个N位输入片段的相应等价输入十进制值;
创建一系列尺寸为2N的数组,每个数组与N位第一输入片段中的一个对应,并且除了在与相应输入十进制值对应的单个位置中为“1”以外全为零;
将每个2N位数组应用于实现所述置换映射的2N输入、2N输出开关架构的输入,由此在开关架构的输出处获得一系列2N位输出数组,每个数组除了在单个位置中为“1”以外全为零;
将N位输出片段中的每一个N位输出片段设置为具有与在输出数组中的对应输出数组中出现“1”的位置对应的相应等价十进制值。
33.如权利要求23所述的方法,其中N是6或至少等于10。
34.如权利要求23所述的方法,进一步包括:在操作期间改变N的值。
35.一种存储指令的非暂态计算机可读存储介质,所述指令在由至少一个处理器执行时,使所述至少一个处理器执行包括以下操作的方法:
获得输入位流;
将输入位流细分为存储在计算机存储器中的多个N位输入片段,N是大于一的整数;
由一个或多个处理器产生与N位输入片段中的相应N位输入片段对应的多个N位输出片段,N位输出片段被存储在计算机存储器中,
其中N位输出片段中的特定N位输出片段是由所述一个或多个处理器通过以下操作从N位输入片段中的特定N位输入片段产生的:
从N位输入片段中的该特定N位输入片段的N位确定2N位输入数组;
基于2N位输入数组和存储的置换映射来确定2N位输出数组,所述置换映射将在单个位置中为1并在2N-1个其他位置中的每一个中为0的每一个可能的2N位输入数组、映射为在对应的单个位置中为1并在2N-1个其他位置中的每一个中为0的相应2N位输出数组;以及
设置N位输出片段中的该特定N位输出片段的位,以便表示2N位输出数组的值;以及
输出使用N位输出片段形成的输出位流。
36.如权利要求35所述的非暂态计算机可读存储介质,其中N是6或至少等于10。
37.如权利要求35所述的非暂态计算机可读存储介质,其中从N位输入片段中的该特定N位输入片段的N位确定2N位输入数组包括:获得与N位输入片段中的该特定N位输入片段对应的十进制值M,并且将2N位输入数组中的表示十进制值M的列中的元素设置为1。
38.如权利要求35所述的非暂态计算机可读存储介质,其中从2N位输入数组和所述置换映射来确定2N位输出数组包括:执行2N位输入数组和与所述置换映射对应的2N×2N矩阵之间的乘法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/796,577 US10476664B2 (en) | 2017-10-27 | 2017-10-27 | Methods and systems for data protection |
US15/796,577 | 2017-10-27 | ||
US201862662819P | 2018-04-26 | 2018-04-26 | |
US62/662,819 | 2018-04-26 | ||
PCT/CA2018/051339 WO2019079890A1 (en) | 2017-10-27 | 2018-10-23 | METHODS AND SYSTEMS FOR SECURE DATA COMMUNICATION |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111201749A CN111201749A (zh) | 2020-05-26 |
CN111201749B true CN111201749B (zh) | 2021-09-28 |
Family
ID=66246150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880057218.7A Active CN111201749B (zh) | 2017-10-27 | 2018-10-23 | 用于安全数据通信的方法和系统 |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP3701664A4 (zh) |
CN (1) | CN111201749B (zh) |
AU (1) | AU2018355917B2 (zh) |
CA (1) | CA3073549C (zh) |
WO (2) | WO2019079890A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11323247B2 (en) | 2017-10-27 | 2022-05-03 | Quantropi Inc. | Methods and systems for secure data communication |
US11924360B2 (en) | 2018-10-08 | 2024-03-05 | Green Market Square Limited | Blockchain timestamp agreement |
US10608829B1 (en) * | 2018-10-08 | 2020-03-31 | International Business Machines Corporation | Blockchain timestamp agreement |
EP3959840A4 (en) * | 2019-04-23 | 2023-01-11 | Quantropi Inc. | IMPROVED RELIABILITY FOR DIGITAL SYSTEMS |
US11228431B2 (en) | 2019-09-20 | 2022-01-18 | General Electric Company | Communication systems and methods for authenticating data packets within network flow |
CN112632568B (zh) * | 2019-10-08 | 2022-11-29 | 上海唯链信息科技有限公司 | 温度数据的存储和采集方法、系统、电子设备和存储介质 |
CN113271202B (zh) * | 2020-02-14 | 2022-05-31 | 中移(苏州)软件技术有限公司 | 一种数据加密方法及装置 |
US11329797B2 (en) | 2020-02-25 | 2022-05-10 | Quantropi Inc. | Method and system for secure phase-encoded digital communication over optical channels |
WO2022079466A1 (en) * | 2020-10-13 | 2022-04-21 | Chan Kam Fu | Data authentication for data compression |
US11515035B1 (en) | 2020-10-16 | 2022-11-29 | Express Scripts Strategic Development, Inc. | Automated device efficacy determination systems for health monitoring devices |
US11929163B1 (en) | 2020-10-16 | 2024-03-12 | Express Scripts Strategic Development, Inc. | Automated device efficacy determination systems for health monitoring devices |
US11924339B2 (en) | 2021-04-15 | 2024-03-05 | Real Random IP, LLC | System and method for secure end-to-end electronic communication using a privately shared table of entropy |
US11967973B2 (en) | 2021-05-06 | 2024-04-23 | Samsung Display Co., Ltd. | Low overhead transition encoding codes |
CN112910933B (zh) * | 2021-05-07 | 2021-07-13 | 鹏城实验室 | 认证方法、认证设备以及验证设备 |
CN114254400B (zh) * | 2021-12-27 | 2024-05-03 | 中国人民解放军战略支援部队信息工程大学 | 基于动态影子栈的栈缓冲区溢出攻击防御方法及系统 |
US20230393762A1 (en) * | 2022-06-02 | 2023-12-07 | Micron Technology, Inc. | Verified key replacement in secure memory devices |
DE102022004632B3 (de) | 2022-12-12 | 2024-03-21 | Mercedes-Benz Group AG | Verfahren zur Verschlüsselung eines Klartextes |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103000181A (zh) * | 2013-01-10 | 2013-03-27 | 成都零光量子科技有限公司 | 基于公众通信网语音通道进行保密通信的系统及其实现方法 |
CN103282958A (zh) * | 2010-10-15 | 2013-09-04 | 华为技术有限公司 | 信号分析器、信号分析方法、信号合成器、信号合成方法、加窗工具、变换器和反向变换器 |
CN104335218A (zh) * | 2012-03-30 | 2015-02-04 | 爱迪德加拿大公司 | 使用基函数编码来保护可访问的系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2001288309A1 (en) * | 2000-08-18 | 2002-03-04 | Distributed Trust Management Inc. | Distributed information system and protocol for affixing electronic signatures and authenticating documents |
US7747019B2 (en) * | 2005-09-28 | 2010-06-29 | Nortel Networks Limited | Methods and systems for communicating over a quantum channel |
US7761596B2 (en) * | 2006-06-30 | 2010-07-20 | Telefonaktiebolaget L M Ericsson (Publ) | Router and method for server load balancing |
CA2638134A1 (en) * | 2008-07-21 | 2010-01-21 | Randy Kuang | Multi-dimensional cryptography |
CN101610510B (zh) * | 2009-06-10 | 2012-06-27 | 南京邮电大学 | 层簇式无线自组织网络中的节点合法性多重认证方法 |
US8169887B2 (en) * | 2009-12-29 | 2012-05-01 | Industrial Technology Research Institute | Apparatuses and methods for wireless communications using a permutation sequence |
US9455962B2 (en) * | 2013-09-22 | 2016-09-27 | Winbond Electronics Corporation | Protecting memory interface |
-
2018
- 2018-10-23 EP EP18870501.6A patent/EP3701664A4/en active Pending
- 2018-10-23 AU AU2018355917A patent/AU2018355917B2/en active Active
- 2018-10-23 WO PCT/CA2018/051339 patent/WO2019079890A1/en unknown
- 2018-10-23 CA CA3073549A patent/CA3073549C/en active Active
- 2018-10-23 CN CN201880057218.7A patent/CN111201749B/zh active Active
-
2019
- 2019-01-25 WO PCT/CA2019/050093 patent/WO2020082160A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103282958A (zh) * | 2010-10-15 | 2013-09-04 | 华为技术有限公司 | 信号分析器、信号分析方法、信号合成器、信号合成方法、加窗工具、变换器和反向变换器 |
CN104335218A (zh) * | 2012-03-30 | 2015-02-04 | 爱迪德加拿大公司 | 使用基函数编码来保护可访问的系统 |
CN103000181A (zh) * | 2013-01-10 | 2013-03-27 | 成都零光量子科技有限公司 | 基于公众通信网语音通道进行保密通信的系统及其实现方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2020082160A1 (en) | 2020-04-30 |
EP3701664A4 (en) | 2021-07-28 |
CA3073549A1 (en) | 2019-05-02 |
WO2019079890A1 (en) | 2019-05-02 |
CA3073549C (en) | 2021-06-08 |
CN111201749A (zh) | 2020-05-26 |
EP3701664A1 (en) | 2020-09-02 |
AU2018355917A1 (en) | 2020-02-13 |
AU2018355917B2 (en) | 2020-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111201749B (zh) | 用于安全数据通信的方法和系统 | |
US11323247B2 (en) | Methods and systems for secure data communication | |
US10979221B2 (en) | Generation of keys of variable length from cryptographic tables | |
CN105760764B (zh) | 一种嵌入式存储设备文件的加解密方法、装置及终端 | |
RU2638639C1 (ru) | Кодер, декодер и способ кодирования и шифрования входных данных | |
CN109495251B (zh) | 基于密钥卡的抗量子计算智能家庭云存储方法和系统 | |
US10476664B2 (en) | Methods and systems for data protection | |
SE538304C2 (sv) | Improved installation of a terminal in a secure system | |
EP3205048A1 (en) | Generating a symmetric encryption key | |
CN114244508B (zh) | 数据加密方法、装置、设备及存储介质 | |
WO2016056990A1 (en) | Method and system for establishing a secure communication channel | |
CN109474616B (zh) | 多平台数据共享方法和装置及计算机可读存储介质 | |
KR20230175185A (ko) | 국가 패스워드 알고리즘의 안전에 기반한 파일 공유 방법과 시스템 | |
JP2013239989A (ja) | 情報処理装置、データ生成方法、情報処理方法、および情報処理システム | |
CN117318941B (zh) | 基于车内网的预置密钥分发方法、系统、终端及存储介质 | |
GB2488753A (en) | Encrypted communication | |
Priyadharshini et al. | Efficient Key Management System Based Lightweight Devices in IoT. | |
US20210144002A1 (en) | Secondary Channel Authentication of Public Keys | |
CN111490874B (zh) | 一种配网安全防护方法、系统、装置及存储介质 | |
US20130283363A1 (en) | Secure data transfer over an arbitrary public or private transport | |
CN111884988A (zh) | 数据的安全传输方法 | |
CN114143098B (zh) | 数据存储方法和数据存储装置 | |
JP5932709B2 (ja) | 送信側装置および受信側装置 | |
CA3210990C (en) | End to end encryption with roaming capabilities | |
CN114666065B (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 | ||
CB03 | Change of inventor or designer information |
Inventor after: Kuang yurang Inventor before: Kuang yurang Inventor before: Kuang Ningke Inventor before: He Mingxuan Inventor before: Robert strux |
|
CB03 | Change of inventor or designer information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |