运行在计数器模式下运行以安全传输数据的密钥流生成器的方法、具有用于安全传输数据的计数器模式运行的密钥流生成器和用于产生密钥流的计算机程序产品与流程

文档序号:26743897发布日期:2021-09-23 01:07阅读:133来源:国知局
运行在计数器模式下运行以安全传输数据的密钥流生成器的方法、具有用于安全传输数据的计数器模式运行的密钥流生成器和用于产生密钥流的计算机程序产品与流程

1.本发明涉及根据权利要求1的前序部分的用于运行在计数器模式下运行以安全传输数据的密钥流生成器的方法、根据权利要求15的前序部分的具有用于安全传输数据的计数器模式运行的密钥流生成器以及根据权利要求18的前序部分的用于产生密钥流的计算机程序产品。


背景技术:

2.从ep 3 422 657 a1已知用于划分和同步密码功能性的系统和方法,所述密码功能性例如是加密、密码完整性保护,其中在模块化构建的设备内进行为此所需要的协议适配以对网络业务进行密码处理。所述划分的目的是将信息交换限制在绝对必要的最低限度。任何组件都不应访问完成特定于组件的任务所需的数据。由此减少了对各个组件所需的信任,例如通过不可信的、特别是受到操纵的组件。这种模块化可以用于在基本控制设备和安全模块之间分配任务。
3.在该文献中对密码处理本身进一步细分。根据该细分,第一密码处理单元应在安全模块上提供密钥流,而第二密码处理单元应将有用数据与所述密钥流合并。第一密码处理单元的参数化,例如密钥和初始化向量的选择,是借助于标签而以标签控制的方式进行的。
4.在此有意义的还有,同样在基本控制设备上细分控制器功能性。第一控制器接管有用数据的分类,而第二控制器执行密码处理和后处理。在这个变型中,第一密码处理单元仅看见标签而不能访问有用数据。这提供了可信度方面的优点,并且降低了基本控制设备与安全模块之间接口的带宽,因为有用数据不必传递给安全模块。
5.在生成密钥流时,使用基于对称块密码(blockchiffre)并在所谓的计数器模式下运行的密钥流生成器。在此,使用块密码对连续的计数器(counter)进行加密。结果是取决于所使用的块密码密钥的伪随机密钥流。然后将该密钥流与有用数据链接,从而创建密码。为了可以安全地使用生成的密钥流,重要的是每个计数器值恰好只使用一次,以便产生用于对有用数据进行加密的密钥流。
6.在计数器模式下,计数器的初始值通常被预给定为初始化向量。在ep 3 422 657 a1中描述的用于划分和同步密码功能性的系统和方法中,可能的攻击是多次传递相同的初始化向量或选择初始化向量,使得在运行期间导致计数器被使用两次。
7.在与从ep 3 422 657 a1已知的系统不同的系统中预计不会有这种攻击,因为在这些不同的系统中,与从ep 3 422 657 a1已知的将加密逻辑细分为多个(两个)信任区的系统不同,完整的加密逻辑发生在唯一的、非细分的信任区中。


技术实现要素:

8.本发明所基于的任务是说明一种用于运行在计数器模式下运行的密钥流生成器以安全传输数据的方法、具有用于安全传输数据的计数器模式运行的密钥流生成器以及用于产生密钥流的计算机程序产品,其中保护所述密钥流生成器免于重复或不正确地产生已生成的密钥流,并且保护数据传输免于重复使用密钥流,即所谓的重用。
9.该任务是基于在权利要求1的前序部分中定义的方法通过特征部分中说明的方法特征来解决的。
10.此外,该任务是基于权利要求15的前序部分中定义的服务器通过特征部分中说明的服务器特征来解决的。
11.此外,该任务是基于权利要求18的前序部分中定义的用于产生密钥流的计算机程序产品通过特征部分中引用的根据权利要求1至14之一所述的方法特征来解决的。
12.根据在权利要求1、15和18中分别说明的技术教导,本发明所基于的思想在于:为了安全传输数据,在计数器模式下并且在实现选项方面选择性地在两种运行类型之一中运行密钥流生成器,所述两种运行类型中一种运行类型是“加密”,一种运行类型是“解密”,其中在“加密”运行类型下,将基于第一控制数据集产生的密钥流用于将数据、特别是有用数据加密为密码,即加密的数据或有用数据的产物,并且在“解密”运行类型下,将基于第二控制数据集产生的密钥流用于解密所述密码,其中仅当通过使用块密码密钥对在计数器模式下运行的密钥流生成器的计数器值进行加密而产生的所述密钥流无错误时才输出所述密钥流。
13.在本发明/本技术的意义上,“加密”运行类型中的术语“加密”应理解为数据或有用数据的加密和/或认证,其中因此在“加密”运行类型中产生密钥流以用于对数据或有用数据进行加密和/或认证。
14.在本发明/本技术的意义上,“解密”运行类型中的术语“解密”应理解为数据或有用数据的解密、认证和/或验证,其中因此在“加密”运行类型中产生密钥流以用于对数据或有用数据进行解密、认证和/或验证。
15.密钥流是如下形成的,即通过利用块密码密钥对位于有限的计数器值范围内(例如在大于2
32
的数量级中)的计数器值进行加密来形成所述密钥流,所述计数器值以与控制数据集相关的密钥流生成器调用的形式连续地确定,并且最初由包含在所述控制数据集中的初始化向量(iv=i1)给出。
16.在所述密钥流生成器中保持计数器的所有已经使用的计数器读数通常效率不高,因为计数器的值范围典型地在大于或等于2
32
的数量级中,这一事实是朝着本发明所基于的思想方向考虑的出发点。
17.在本发明的用于安全数据通信和无错误地生成密钥流的场景中,在密钥流生成器的“加密”运行类型中以日志方式记录计数器值的顺序使用,并且通过以日志方式记录来识别是否错误地使用了具有相同计数器值的块密码密钥。在此,错误地使用可能意味着具有相同计数器值的块密码密钥已被多次或顺序地多次使用,即先后多次使用。根据权利要求15在密钥流生成器的密钥流形成模块的日志存储模块中进行所述以日志方式记录,并且由于所述以日志方式记录而识别出是否错误地使用了具有相同计数器值的块密码密钥根据权利要求15发生在密钥流生成器中的密钥流形成模块的检查识别模块中。
18.如果在所述检查识别模块中的该识别由于以日志方式记录的计数器值表明发生了错误的使用,则接着由所述密钥流生成器输出错误消息或不输出密钥流。
19.相反,如果发生了无错误的使用,则所述密钥流生成器输出用于对数据加密的密钥流。
20.此外,在无错误使用的情况下针对“解密”运行类型下的有效性检查生成校验码,该校验码对于“加密”运行类型而言与秘密绑定。所述秘密在根据权利要求15的密钥流生成器中在密钥流形成模块的秘密模块中产生,或者从外部引入到所述密钥流生成器中并且然后存储在所述秘密模块中。为了产生所述校验码(在“加密”运行类型下)并验证该校验码(在“解密”运行类型下)需要所述秘密。从而例如可以通过推导函数从块密码密钥中产生所述秘密。然而在最简单的情况下,所述秘密被选择为与所述块密码密钥相同。
21.由于所述秘密对于一些实施方式(例如对称的“消息认证代码<mac>”)而言在两个秘密模块(用于“加密”运行类型/用于“解密”运行类型)中必须相同,因此优选地从外部引入所述秘密。
22.在所述密钥流生成器的“解密”运行类型下,在用于安全数据通信和无错误地生成密钥流的场景中,基于生成的作为第二控制数据集的校验码在基于所述秘密执行的校验码的有效性检查过程中识别出块密码密钥和计数器值的错误使用、特别是多次或顺序多次使用,并由此识别出是否错误地使用了具有相同计数器值的块密码密钥。在此,错误使用又可能意味着具有相同计数器值的块密码密钥已被多次顺序多次使用,即先后多次使用。在此根据权利要求15,有效性检查也在所述密钥流生成器中的密钥流形成模块的检查识别模块中发生。在该有效性检查的过程中识别代表第二控制数据集的所生成的校验码是否有效。
23.如果检查识别模块中的校验码有效性检查导致否定结果,这意味着代表第二控制数据集的校验码不正确,则接着由所述密钥流生成器输出另外的错误消息或不输出密钥流。
24.然而,如果比较识别模块中校验码有效性检查的结果是肯定的,这意味着代表第二控制数据集的校验码是正确的,则接着由所述密钥流生成器输出用于解密密码的密钥流。
25.在此,优选地检查校验码的有效性,使得在“解密”运行类型中,基于所述秘密产生另外的校验码,并将该另外的校验码与在“加密”运行类型中生成的校验码进行比较以确定一致性(参见权利要求2和16)。
26.所述校验码用于保护基于初始化向量的计数器值,并且为了对所述初始化向量进行认证,所述校验码优选地是非对称签名或对称的“消息认证码<mac>”(参见权利要求3、4和17)。
27.为了提高安全性,特别是防止重放攻击,除了所述初始化向量之外还可以将另外的辅助数据(例如生成计数器和/或随机数、来自块密码密钥的数字指纹)引入到校验码或“消息认证码<mac>”或非对称签名中。
[0028]“加密”运行类型中的初始化向量在此根据权利要求11和17不仅可以从外部预给定,而且还可以由所述密钥流生成器自动选择或预给定。
[0029]
在“解密”运行类型下,初始化向量与校验码或“消息认证码<mac>”或非对称签名一起可用。
[0030]
在“加密”运行类型下(参见权利要求5、6和16),设定所述密钥流生成器中的计数器严格单调增加。也就是说:如果在首次调用密钥流生成器时将iv=i1的初始化向量作为第一控制数据集传递,并需要“n”个计数器值来进行密钥流生成,则在下次调用时必须选择或输入(传递)iv=i3且i3≥i2=i1+n的初始化向量。为了检查,只需在密钥流生成器中存储下一个可使用的计数器读数i2=i1+n。然后将传递的iv=i3的初始化向量分别与存储的计数器读数进行比较,并根据该比较输出密钥流或错误消息。在块密码密钥更新后,将值i复位为0。于是,如果必须将(非顺序地)多次使用块密码密钥排除在描述的过程之外,则这是必要的。
[0031]
在“解密”运行类型下,不能假设所述密钥流生成器的计数器在正常运行期间总是单调增加。从而例如在经由网络交换加密的数据时可能导致不同的网络数据包不会按其原始顺序传递。尽管如此,应当确保所述密钥流生成器在“解密”运行类型下不接受由攻击者任意选择的初始化向量。为此,处于“加密”运行类型的密钥流生成器传递所使用的初始化向量的状态作为第二控制数据集,该状态用所述校验码或“消息认证码<mac>”或非对称签名保护。仅当所述校验码或“消息认证码<mac>”或非对称签名正确时,“解密”运行类型下的密钥流生成器才接受初始化向量(参见权利要求1和15)。
[0032]
如果确定初始化向量的使用错误,例如两次或多次使用,则密钥流生成器以合适的方式对该错误作出反应。优选可以想到以下错误反应:

错误状态的显示/设置,例如以错误比特作为输出(参见权利要求7和16)。

防止密钥流的输出,特别是优选在“解密”运行类型中(参见权利要求8和16)。

无效密钥流的输出,特别是优选在“加密”运行类型下(参见权利要求9和16)。为了产生无效密钥流,可以选择随机选择的块密码密钥或借助于任意函数从块密码密钥中导出的块密码密钥(参见权利要求10和16)。
[0033]
可以有利地如下选择运行类型(参见权利要求12、13和17):

动态、明确的选择:可以从外部动态配置密钥流生成器,从而例如通过配置pin或配置命令(参见权利要求12和17)。

静态选择:将密钥流生成器的硬件设定为两种运行类型之一。这可以直接在生产中完成或事后完成,例如通过设置备份(参见权利要求12和17)。

自动选择:这由所述第一控制数据集完成,即输入的数据集不包含附加信息或“消息认证码<mac>”信息,由此选择了“加密”运行类型(参见权利要求13和17)。

自动选择:这由所述第二控制数据集完成,即输入的数据集包含附加信息或“消息认证码<mac>”信息,由此选择了“解密”运行类型(参见权利要求13和17)。
[0034]
所述密钥流生成器也可以被设计为在针对上下文首次选择后不再更改运行类型,所述上下文例如是现有的或特定的块密码密钥在密钥流生成器的整个使用寿命期间的可用性/使用(参见权利要求14和17)。
[0035]
密钥流产生还可以优选地在计算机程序产品中进行,所述计算机程序产品具有非易失性可读存储器以及连接到所述存储器的处理器,在所述存储器中存储了执行密钥流产生的程序模块的处理器可读控制程序指令,并且所述处理器执行所述程序模块的控制程序指令以产生密钥流,其中所述计算机程序产品为此执行上面解释和呈现的技术措施,但特别是根据权利要求1至14之一的方法。
附图说明
[0036]
本发明的其他优点从以下基于图1对本发明的实施例的描述中得出。
[0037]
图1示出了具有“加密”运行类型中的密钥流生成器和“解密”运行类型中的密钥流生成器的密钥流生成器布置。
具体实施方式
[0038]
图1示出了密钥流生成器布置,其为了安全传输数据而具有在“加密”运行类型下以计数器模式运行的密钥流生成器ssg和在“解密”运行类型下以计数器模式运行的密钥流生成器ssg。对于这种安全的数据传输,例如以有用数据ndt的形式存在的待传输数据dt首先为了使用产生的密钥流sst
vs
进行加密而被加密成密码chf,然后为了使用产生的密钥流sst
es
解密而对密码chf中的数据dt、ndt解密。
[0039]
就密钥流生成器基础结构而言,两个密钥流生成器ssg构造相同。从而在所示出的密钥流生成器布置的每个以计数器模式运行的密钥流生成器ssg都包含数据集接口模块dssm、块密码模块bcm和密钥流形成模块ssbm,它们相互连接并且选择性地为了产生用于数据加密的密钥流sst
vs
或用于数据解密的密钥流sst
es
而分别形成公共的功能单元。基于第一控制数据集sds1在“加密”运行类型下的密钥流生成器ssg中产生密钥流sst
vs
,该第一控制数据集sds1经由数据集接口模块dssm输送到密钥流形成模块ssbm。相反,基于第二控制数据集sds2在“解密”运行类型下的密钥流生成器ssg中产生密钥流sst
es
,该第二控制数据集也经由数据集接口模块dssm输送给密钥流形成模块ssbm(参见下面对“解密”运行类型下的密钥流生成器ssg的解释)。
[0040]
此外,还将块密码密钥bcs从块密码模块bcm输送到密钥流形成模块ssbm。基于所输送的控制数据集sds1、sds2和块密码密钥bcs,在上述设计的功能单元中形成密钥流sst
vs
、sst
es
。这种密钥流形成是通过利用块密码密钥bcs对位于有限的计数器值范围内的计数器值进行加密来进行的,所述计数器值以与控制数据集相关的密钥流生成器ssg调用i1、i3、...的形式连续地确定,并且最初由包含在控制数据集sds1、sds2中的初始化向量iv(iv=i1)给出。
[0041]
上述形成的功能单元相对于密钥流形成模块ssbm继续扩展到日志存储模块psm、秘密模块ghm和检查识别模块pem,它们在由密钥流形成模块ssbm形成功能单元的过程中都包含在密钥流形成模块ssbm中,并在功能上相互作用。其中包含所提到的模块的密钥流形成模块ssbm由这些模块的功能上的相互作用和优选构造为用于产生密钥流的计算机程序产品的类型构造,所述计算机程序产品具有非易失性可读存储器以及与所述存储器连接的处理器,在该存储器中存储执行密钥流产生的程序模块的处理器可读的控制程序指令,所述处理器执行用于产生密钥流的程序模块的控制程序指令。
[0042]
在所示的密钥流生成器布置中,在处于“加密”运行类型下的密钥流生成器ssg中,在首次调用i1以计数器模式运行的密钥流生成器ssg时给出初始化向量iv,iv=i1作为第一控制数据集sds1,在首次调用时密钥流生成器ssg处于第一运行计数周期i1中。“给出”在此可以意味着初始化向量iv要么由“加密”运行类型下的密钥流生成器ssg自动预给定,要么如图1中所示从外部输送给密钥流生成器ssg。
[0043]
在随后的密钥流生成之一中,其中密钥流生成器ssg处于第二运行计数周期i2,需
要来自计数器值范围中的“n”个计数器值,直到计数器读数i2=i1+n为止。将计数器读数i2=i1+n存储在日志存储模块psm中以用于以日志方式记录。
[0044]
在随后第二次调用i3以计数器模式运行的密钥流生成器ssg时,在第二次调用时密钥流生成器ssg处于第二运行计数周期i3中,现在再次存在两个选项。密钥流生成器ssg选择另外的初始化向量iv且i3≥i2=i1+n作为另外的第一控制数据集sds1,或者作为该选择的替代,从外部输入另外的初始化向量iv且iv=i3作为另外的第一控制数据集sds1,并且将在第二次调用i3中输入的另外的初始化向量iv与存储的计数器读数进行比较,以确定是否满足初始化向量计数器读数条件i3≥i2=i1+n。该比较发生在密钥流生成器ssg中的密钥流形成模块ssbm的检查识别模块pem中。
[0045]
两个选项在以下方面是固有的,即以日志方式记录计数器值的顺序使用,并且通过以日志记录识别具有相同计数器值的块密码密钥bcs是否已被错误地使用,例如多次或顺序多次使用。这种在密钥流生成器ssg的“加密”运行类型中的错误使用的识别是通过密钥流形成模块ssbm中日志存储模块psm和检查识别模块pem的对应的功能上的相互作用以及对应构造来进行的,其中这样的识别以及由此得到的密钥流形成的结果发生在检查识别模块pem中。
[0046]
从而在错误使用的情况下,要么不输出密钥流sst
vs
,要么输出错误消息fm。相反,如果存在无错误使用,则输出密钥流sst
vs
用于对数据dt、ndt加密。在密钥流形成方面的相同结果也适用于前一段中定义的在另外的初始化向量iv和存储的计数器读数之间确定是否满足初始化向量计数器读数条件i3≥i2=i1+n的比较。即,如果满足所述条件,则输出用于数据加密的密钥流sst
vs
,或者,如果不满足所述条件,则输出错误消息fm。
[0047]
利用错误消息fm,以有利的方式显示在“加密”运行类型中的密钥流生成器ssg的错误状态。替代地或附加地,也可以设置错误状态,例如以在输出端处或作为输出的错误比特的形式。
[0048]
此外也可以在“加密”运行类型下使用错误消息fm输出无效密钥流sst
vs
'。该无效密钥流sst
vs
'优选地根据随机选择的块密码密钥bcs或根据借助于任何函数从块密码密钥bcs导出的经过修改的块密码密钥bcs'来产生。
[0049]
在无错误使用的情况下,除了输出用于加密数据dt、ndt的密钥流sst
vs
之外还会生成校验码prc
gh
,所述校验码针对“加密”运行类型与生成器特定的秘密gh(例如在密钥流生成器中产生)绑定。所述秘密要么在密钥流生成器ssg中的密钥流形成模块ssbm的秘密模块ghm中产生,要么从外部引入到密钥流生成器中并且然后存储在秘密模块中。由于所述秘密对于一些实施例而言(例如在对称的“消息认证码<mac>”的情况下)在两个秘密模块(用于“加密”运行类型/用于“解密”运行类型)中必须相同,因此所述秘密优选地从外部引入并且然后存储在秘密模块ghm中。
[0050]
在“加密”运行类型下需要所述秘密来产生校验码。然后下面在“解密”运行类型中描述如何使用秘密gh来验证生成的校验码prc
gh
。例如,可以通过推导函数从块密码密钥bcs中产生所述秘密。然而在最简单的情况下,所述秘密被选择为与所述块密码密钥bcs相同。
[0051]
例如,校验码prc
gh
可以用于保护基于初始化向量的计数器值。此外,所述校验码被构造为认证所述初始化向量,所述初始化向量优选以非对称签名的形式或作为对称的“消息认证码<mac>”。
[0052]
为了提高安全性,特别是防止重放攻击,除了初始化向量之外还可以将另外的辅助数据(例如生成计数器和/或随机数、块密码密钥的数字指纹)引入到校验码或“消息认证码<mac>”中或者引入非对称签名。
[0053]
然后,仅当在“加密”运行类型下导致密钥流sst
vs
的输出时,使用所述密钥流将数据dt、ndt加密为密码chf,才会生成校验码prc
gh
,所述校验码在“解密”运行类型下对于生成用于解码密码chf中的数据dt、ndt的密钥流sst
es
是决定性的。
[0054]
为了解密密码chf中的数据dt、ndt,在图1中所示的密钥流生成器布置的密钥流生成器ssg中基于第二控制数据集sds2产生密钥流sst
es
,所述密钥流生成器布置处于“解密”运行类型。根据图1所示,第二控制数据集sds2从“加密”运行类型下的密钥流生成器ssg传递到“解密”运行类型下的密钥流生成器ssg。然而,替代地,该第二控制数据集sds2也可以自动给出或存在。第二控制数据集sds2通过由“加密”运行类型下的密钥流生成器ssg生成的校验码prc
gh
代表。在此,校验码prc
gh
还包括在“加密”运行类型下在关于第一控制数据集sds1进行的密钥流生成器ssg的调用i1、i3、...时给出的初始化向量iv,其中iv=i1,iv=i3,...。密钥流sst
es
的密钥流形成对于各个运行计数周期i1、i3、...再次通过使用块密码密钥bcs对分别在校验码prc
gh
中用初始化向量iv,iv=i1,iv=i3,...给出的计数器值进行加密来进行。
[0055]
现在为了也能够在“解密”运行类型下的密钥流生成器ssg中识别块密码密钥bcs和计数器值的错误使用,例如多次或顺序多次使用,在基于秘密gh的过程中对生成的校验码prc
gh
进行有效性检查,所述生成的校验码代表第二控制数据集sds2,所述秘密再次在密钥流生成器ssg中的密钥流形成模块ssbm的秘密模块ghm中产生并存储在那里。在该有效性检查中确定所生成的代表第二控制数据集sds2的校验码prc
gh
是否有效。
[0056]
这种对校验码prc
gh
是否有效的检查在密钥流生成器ssg的“解密”运行类型下,通过密钥流形成模块ssbm中秘密模块ghm和检查识别模块pem对应的功能上的相互作用和对应构造来进行,其中这样的有效性检查以及由此得到的密钥流形成的结果在检查识别模块pem中发生。
[0057]
从而如果校验码有效性检查的结果是否定的,即校验码prc
gh
不正确,则要么不输出密钥流sst
es
要么输出另外的错误消息fm'。相反,如果校验码有效性检查的结果是肯定的,其含义是校验码prc
gh
是正确的,则输出用于对密码chf解密的密钥流sst
es

[0058]
通过另外的错误消息fm',以有利的方式再次显示“解密”运行类型下的密钥流生成器ssg的错误状态。替代地或附加地,也可以设置错误状态,例如以在输出端处或作为输出的错误比特的形式。利用另外的错误消息fm',在“解密”运行类型下可以有利地防止输出用于对密码chf解密的密钥流sst
es

[0059]
密钥流形成模块ssbm中的秘密模块ghm和检查识别模块pem的功能上的相互作用和对应的构造使得能够进行优选的校验码有效性检查,使得在“解密”运行类型下基于秘密gh产生另外的校验码prc
gh
'并且将另外的校验码prc
gh
'与在“加密”运行类型下生成的校验码prc
gh
进行比较。在此,缺乏一致性意味着否定的有效性检查,而确定了一致性则意味着肯定的有效性检查。
[0060]
图1中所示的具有两个密钥流生成器ssg的密钥流生成器布置在运行类型选择方面、即选择“加密”运行类型还是选择“解密”运行类型方面优选被设计为,使得运行类型的
选择动态明确地得到配置,例如借助于配置pin或配置命令,或者静态地通过以硬件方式设定密钥流生成器来得到配置。
[0061]
然而,附加地或替代地,还可以自动地通过第一控制数据集sds1在配置的意义上确定“加密”运行类型的选择,并且自动地通过第二控制数据集在配置的意义上确定“解密”运行类型的选择。
[0062]
此外,在这两种情况下都有利的是,密钥流生成器ssg的“加密”运行类型的选择和“解密”运行类型的选择一旦完成就是不可逆的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1