CN112019322A - 密码流生成方法及其装置 - Google Patents

密码流生成方法及其装置 Download PDF

Info

Publication number
CN112019322A
CN112019322A CN201910463006.5A CN201910463006A CN112019322A CN 112019322 A CN112019322 A CN 112019322A CN 201910463006 A CN201910463006 A CN 201910463006A CN 112019322 A CN112019322 A CN 112019322A
Authority
CN
China
Prior art keywords
register unit
pointer
register
array
moving direction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910463006.5A
Other languages
English (en)
Other versions
CN112019322B (zh
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201910463006.5A priority Critical patent/CN112019322B/zh
Publication of CN112019322A publication Critical patent/CN112019322A/zh
Application granted granted Critical
Publication of CN112019322B publication Critical patent/CN112019322B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/06Cryptographic 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/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

本申请实施例提供一种密码流生成方法及其装置,其中方法包括:确定时刻t下M个寄存器单元存储的M个数值,以及时刻t下指针所指的第一寄存器单元;一个寄存器单元存储一个数值,M为正整数;从M个数值中获取N个连续的数值,N为正整数,M>N;根据N个连续的数值并行计算得到更新参数,根据更新参数计算得到N*个更新数值,N*为正整数,N*≤N;根据第一寄存器单元、指针的移动方向以及N*个数值,对M个寄存器单元中的N*个寄存器单元的数值进行更新;根据更新后的M个寄存器单元存储的M个数值生成并输出N*个密码流。采用本申请实施例,可有效缩短ZUC‑256算法的耗时。

Description

密码流生成方法及其装置
技术领域
本申请实施例涉及通信技术中的加密技术领域,具体涉及一种密码流生成方法及其装置。
背景技术
祖冲之(ZUC)算法是中国科学院自主研发设计的流密码算法,也是长期演进(longterm evolution,LTE)标准空中接口(简称空口)所确定的三大安全算法之一,可用于加解密和/或完整性保护。在第五代(5th-generation,5G)移动通信标准中,继续采用ZUC算法作为空口安全算法。
ZUC算法的工作流程包括初始化阶段和密钥流生成阶段,每个阶段包括线性反馈移位寄存器(linear feedback shift register,LFSR)、比特重组(bit reorganization,BR)和有限状态机(finite state machine,FSM)函数。其中,LFSR由16个31比特的寄存器单元构成,根据初始密钥和初始向量进行位拼接得到这16个寄存器单元的初始数值,在更新LFSR时,这16个寄存器单元的数值进行移位。BR用于从LFSR中抽取一些存储内容,拼接成4个32比特的字,用于FSM函数的输入以及密钥流的输出处理。FSM函数是一个非线性函数,包括2个32比特的字,这两个字作为FSM函数的记忆单元。
中国科学院于2018年公开了ZUC-256算法以及ZUC-256算法的参考代码,以满足5G的应用环境需求。ZUC-256算法采用256比特的初始密钥和184比特的初始向量进行位拼接得到16个寄存器单元的初始数值,在初始化阶段进行32+1轮操作,在密钥流生成阶段,每次输出一个32比特的密钥流。
虽然目前的ZUC-256算法可以满足5G应用环境需求,但是存在耗时较长的弊端。因此,如何缩短ZUC-256算法的耗时是亟待解决的技术问题。
发明内容
本申请实施例提供一种密码流生成方法及其装置,可有效缩短ZUC-256算法的耗时。
本申请实施例第一方面提供一种密码流生成方法,包括:
确定时刻t下M个寄存器单元存储的M个数值,以及时刻t下指针所指的第一寄存器单元;一个寄存器单元存储一个数值,M为正整数;
从M个数值中获取N个连续的数值,N为正整数,M>N;
根据N个连续的数值并行计算得到更新参数,根据更新参数计算得到N*个更新数值,N*为正整数,N*≤N;
根据第一寄存器单元、指针的移动方向以及N*个数值,对M个寄存器单元中的N*个寄存器单元的数值进行更新;
根据更新后的M个寄存器单元存储的M个数值生成并输出N*个密码流。
本申请实施例第一方面,采用指针、并行计算得到更新参数,以及输出N*个密码流,可有效缩短ZUC-256算法的耗时。
其中,上述时刻t下的M个寄存器单元存储的M个数值为{st+M-1,...,st+1,st},N个连续的数值为{st+N-1,...,st+1,st}。由于本申请实施例对ZUC-256算法进行改进,因此M=16,N=8,N*=N/2=4。
其中,N*个更新数值包括st+M,st+M+1,st+M+2和st+M+3。st+M为时刻t+1生成的更新数值,st+M+1为时刻t+2生成的更新数值,st+M+2为时刻t+3生成的更新数值,st+M+3为时刻t+4生成的更新数值。
在一种可能的实现方式中,上述更新参数包括第一更新参数、第二更新参数、第三更新参数和第四更新参数;根据N个连续的数值并行计算得到更新参数时,具体包括:
根据N个连续的数值中st+i和st+i+4,t≤i≤t+3,并行计算得到第一更新参数、第二更新参数、第三更新参数以及第四更新参数;
其中,第一更新参数对应于i=t,第二更新参数对应于i=t+1,第三更新参数对应于i=t+2,第四更新参数对应于i=t+3。
可以理解的是,四个更新参数是同时计算得到的,这样可缩短生成更新数值的时间。
在一种可能的实现方式中,根据更新参数计算得到N*个更新数值,具体包括:根据第一更新参数计算得到st+M;根据第二更新参数计算得到st+M+1;根据第三更新参数计算得到st+M+2;根据第四更新参数计算得到st+M+3
在一种可能的实现方式中,采用64位寄存器,根据第一更新参数计算得到st+M。同理,通过该64位寄存器计算得到其他更新参数。采用64位寄存器计算得到更新参数,可避免得到更新参数时的溢出保护时延。
在一种可能的实现方式中,根据第一寄存器单元、指针的移动方向以及N*个数值,对M个寄存器单元中的N*个寄存器单元的数值进行更新,具体包括:在时刻t+1,根据指针的移动方向将指针从第一寄存器单元移动至第二寄存器单元,并将第二寄存器单元存储的数值更新为st+M,第二寄存器单元的位置与第一寄存器单元的位置在指针的移动方向上相邻;在时刻t+2,根据指针的移动方向将指针从第二寄存器单元移动至第三寄存器单元,并将第三寄存器单元存储的数值更新为st+M+1,第三寄存器单元的位置与第二寄存器单元的位置在指针的移动方向上相邻;在时刻t+3,根据指针的移动方向将指针从第三寄存器单元移动至第四寄存器单元,并将第四寄存器单元存储的数值更新为st+M+2,第四寄存器单元的位置与第三寄存器单元的位置在指针的移动方向上相邻;在时刻t+4,根据指针的移动方向将指针从第四寄存器单元移动至第五寄存器单元,并将第五寄存器单元存储的数值更新为st+M+3,第五寄存器单元的位置与第四寄存器单元的位置在指针的移动方向上相邻。该种方式下,先移动指针,再对指针所指的寄存器单元的数值进行更新。
在一种可能的实现方式中,根据第一寄存器单元的位置、指针的移动方向以及N*个数值,对M个寄存器单元中的N*个寄存器单元的数值进行更新,具体包括:在时刻t+1,将第一寄存器单元存储的数值更新为st+M,并根据指针的移动方向将指针从第一寄存器单元移动至第二寄存器单元,第二寄存器单元的位置与第一寄存器单元的位置在指针的移动方向上相邻;在时刻t+2,将第二寄存器单元存储的数值更新为st+M+1,并根据指针的移动方向将指针从第二寄存器单元移动至第三寄存器单元,第三寄存器单元的位置与第二寄存器单元的位置在指针的移动方向上相邻;在时刻t+3,将第三寄存器单元存储的数值更新为st+M+2,并根据指针的移动方向将指针从第三寄存器单元移动至第四寄存器单元,第四寄存器单元的位置与第三寄存器单元的位置在指针的移动方向上相邻;在时刻t+4,将第四寄存器单元存储的数值更新为st+M+3,并根据指针的移动方向将指针从第四寄存器单元移动至第五寄存器单元,第五寄存器单元的位置与第四寄存器单元的位置在指针的移动方向上相邻。该种方式下,先对指针所指的寄存器单元的数值进行更新,再移动指针。
上述两种方式,采用指针,可避免ZUC-256算法中进行16个数值的搬移,避免拷贝开销。
在一种可能的实现方式中,根据更新后的M个寄存器单元存储的M个数值生成并输出N*个密码流,具体包括:根据更新后的M个寄存器单元存储的M个数值,生成四组比特重组字;根据四组比特重组字以及S数组生成四组记忆单元;根据四组记忆单元以及四组比特重组字生成并输出四个密码流。一次输出四个密码流,可加快密码流的输出速度,以便快速开启与明文加密。
在一种可能的实现方式中,S数组为在数组S0和数组S1的基础上进行移位后得到的,具体的S数组包括数组S1-0、数组S0-8、数组S1-16和数组S0-24,数组S1-0表示在数组S1的基础上移0位,数组S0-8表示在数组S0的基础上移8位,数组S1-16表示在数组S1的基础上移16位,数组S0-24表示在数组S0的基础上移24位。对数组提前移位,可避免数组访问指令开销。
本申请实施例第二方面提供一种密码流生成装置,该装置包括线性反馈移位寄存器和密码流生成器;
线性反馈移位寄存器,用于确定时刻t下M个寄存器单元存储的M个数值,以及时刻t下指针所指的第一寄存器单元;一个寄存器单元存储一个数值,M为正整数;从M个数值中获取N个连续的数值,N为正整数,M>N;根据N个连续的数值并行计算得到更新参数,根据更新参数计算得到N*个更新数值,N*为正整数,N*≤N;根据第一寄存器单元、指针的移动方向以及N*个数值,对M个寄存器单元中的N*个寄存器单元的数值进行更新;
密码流生成器,用于根据更新后的M个寄存器单元存储的M个数值生成并输出N*个密码流。
采用第二方面提供的密码流生成装置,可以有效缩短ZUC-256算法的耗时。
其中,时刻t下的M个寄存器单元存储的M个数值为{st+M-1,...,st+1,st},N个连续的数值为{st+N-1,...,st+1,st}。M=16,N=8,N*=N/2=4。N*个更新数值包括st+M,st+M+1,st+M+2和st+M+3
在一种可能的实现方式中,更新参数包括第一更新参数、第二更新参数、第三更新参数和第四更新参数;线性反馈移位寄存器,具体用于根据N个连续的数值中st+i和st+i+4,t≤i≤t+3,并行计算得到第一更新参数、第二更新参数、第三更新参数以及第四更新参数;
其中,第一更新参数对应于i=t,第二更新参数对应于i=t+1,第三更新参数对应于i=t+2,第四更新参数对应于i=t+3。
在一种可能的实现方式中,线性反馈移位寄存器,具体用于根据第一更新参数计算得到st+M;根据第二更新参数计算得到st+M+1;根据第三更新参数计算得到st+M+2;根据第四更新参数计算得到st+M+3
在一种可能的实现方式中,线性反馈移位寄存器,具体用于采用64位寄存器,根据第一更新参数计算得到st+M
在一种可能的实现方式中,线性反馈移位寄存器,具体用于在时刻t+1,根据指针的移动方向将指针从第一寄存器单元移动至第二寄存器单元,并将第二寄存器单元存储的数值更新为st+M,第二寄存器单元的位置与第一寄存器单元的位置在指针的移动方向上相邻;在时刻t+2,根据指针的移动方向将指针从第二寄存器单元移动至第三寄存器单元,并将第三寄存器单元存储的数值更新为st+M+1,第三寄存器单元的位置与第二寄存器单元的位置在指针的移动方向上相邻;在时刻t+3,根据指针的移动方向将指针从第三寄存器单元移动至第四寄存器单元,并将第四寄存器单元存储的数值更新为st+M+2,第四寄存器单元的位置与第三寄存器单元的位置在指针的移动方向上相邻;在时刻t+4,根据指针的移动方向将指针从第四寄存器单元移动至第五寄存器单元,并将第五寄存器单元存储的数值更新为st+M+3,第五寄存器单元的位置与第四寄存器单元的位置在指针的移动方向上相邻。
在一种可能的实现方式中,线性反馈移位寄存器,具体用于在时刻t+1,将第一寄存器单元存储的数值更新为st+M,并根据指针的移动方向将指针从第一寄存器单元移动至第二寄存器单元,第二寄存器单元的位置与第一寄存器单元的位置在指针的移动方向上相邻;在时刻t+2,将第二寄存器单元存储的数值更新为st+M+1,并根据指针的移动方向将指针从第二寄存器单元移动至第三寄存器单元,第三寄存器单元的位置与第二寄存器单元的位置在指针的移动方向上相邻;在时刻t+3,将第三寄存器单元存储的数值更新为st+M+2,并根据指针的移动方向将指针从第三寄存器单元移动至第四寄存器单元,第四寄存器单元的位置与第三寄存器单元的位置在指针的移动方向上相邻;在时刻t+4,将第四寄存器单元存储的数值更新为st+M+3,并根据指针的移动方向将指针从第四寄存器单元移动至第五寄存器单元,第五寄存器单元的位置与第四寄存器单元的位置在指针的移动方向上相邻。
在一种可能的实现方式中,密码流生成器包括比特重组、有限状态机和输出接口;
比特重组,用于根据更新后的M个寄存器单元存储的M个数值,生成四组比特重组字;
有限状态机,用于根据四组比特重组字以及S盒生成四组记忆单元;根据四组记忆单元以及四组比特重组字生成四个密码流;
输出接口,用于输出四个密码流。
在一种可能的实现方式中,S数组为在数组S0和数组S1的基础上进行移位后得到的,具体的S数组包括数组S1-0、数组S0-8、数组S1-16和数组S0-24,数组S1-0表示在数组S1的基础上移0位,数组S0-8表示在数组S0的基础上移8位,数组S1-16表示在数组S1的基础上移16位,数组S0-24表示在数组S0的基础上移24位。
本申请实施例第三方面提供一种密码流生成装置,该密码流生成装置具有实现第一方面提供方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一种可能的实现方式中,该密码流生成装置包括处理模块和接口模块,处理模块,用于确定时刻t下M个寄存器单元存储的M个数值,以及时刻t下指针所指的第一寄存器单元;一个寄存器单元存储一个数值,M为正整数;从M个数值中获取N个连续的数值,N为正整数,M>N;根据N个连续的数值并行计算得到更新参数,根据更新参数计算得到N*个更新数值,N*为正整数,N*≤N;根据第一寄存器单元、指针的移动方向以及N*个数值,对M个寄存器单元中的N*个寄存器单元的数值进行更新;根据更新后的M个寄存器单元存储的M个数值生成N*个密码流;接口模块,用于输出N*个密码流。
在一种可能的实现方式中,该密码流生成装置包括处理器和存储器,其中,存储器中存储计算机程序,计算机程序包括程序指令,处理器被配置用于调用程序代码,执行以下操作:确定时刻t下M个寄存器单元存储的M个数值,以及时刻t下指针所指的第一寄存器单元;一个寄存器单元存储一个数值,M为正整数;从M个数值中获取N个连续的数值,N为正整数,M>N;根据N个连续的数值并行计算得到更新参数,根据更新参数计算得到N*个更新数值,N*为正整数,N*≤N;根据第一寄存器单元、指针的移动方向以及N*个数值,对M个寄存器单元中的N*个寄存器单元的数值进行更新;根据更新后的M个寄存器单元存储的M个数值生成并输出N*个密码流。
基于同一发明构思,由于该密码流生成装置解决问题的原理以及有益效果可以参见第一方面所述的方法以及所带来的有益效果,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
本申请实施例第四方面提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,该计算机程序被处理器执行时实现上述第一方面所述的方法。
本申请实施例第五方面提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1为应用本申请实施例的网络架构示意图;
图2为使用ZUC算法进行加密保护、解密保护的过程示意图;
图3为目前ZUC-256算法的密钥流初始化阶段的示意图;
图4为目前ZUC-256算法的密钥流生成阶段的示意图;
图5为目前LFSR进行状态更新的示例图;
图6为本申请实施例提供的密码流生成装置的结构示意图;
图7为本申请实施例提供的密码流生成方法的流程示意图;
图8为t=0时各个寄存器单元存储数值情况以及指针指向情况的示例图;
图9a为对寄存器单元进行更新的一种示例图;
图9b为对寄存器单元进行更新的另一种示例图;
图10为生成四组重组比特字的示例图;
图11为生成四个密码流的示例图;
图12为本申请实施例提供的密码流生成装置的逻辑结构示意图;
图13为本申请实施例提供的密码流生成装置的实体结构简化示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请的描述中,除非另有说明,“/”表示前后关联的对象是一种“或”的关系,例如,A/B可以表示A或B;本申请中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。并且,在本申请的描述中,除非另有说明,“多个”是指两个或多于两个。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
请参见图1,为应用本申请实施例的网络架构示意图,该网络架构包括用户终端101和接入网设备102,用户终端101与接入网设备102之间通过无线链路进行通信。图1以一个用户终端和一个接入网设备为例,实际应用中多个用户终端可接入同一个接入网设备,同一用户终端也可接入两个或两个以上的接入网设备,图1所示的设备的形态和数量并不构成对本申请实施例的限定。
其中,用户终端101可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备、计算设备、智能家电(例如智能电表)或连接到无线调制解调器的其它处理设备;还可以包括用户设备(user equipment,UE)、用户单元(subscriber unit)、蜂窝电话(cellular phone)、智能电话(smart phone)、无线数据卡、个人数字助理(personaldigital assistant,PDA)电脑、平板型电脑、无线调制解调器(modem)、手持设备(handheld)、膝上型电脑(laptop computer)、无绳电话(cordless phone)或者无线本地环路(wireless local loop,WLL)台、机器类型通信(machine type communication,MTC)终端,移动台(mobile station,MS),终端设备(terminal device)或者中继用户设备等。其中,中继用户设备例如可以是5G家庭网关(residential gateway,RG)。
接入网设备102可以是长期演进(long term evolution,LTE)系统中的演进型基站节点(evolved Node Basestation,eNB或eNodeB),升级后的eNB,即下一代演进型基站节点(next generation eNodeB,ng-eNB),第五代移动通信(5th-generation,5G)系统中的下一代基站节点(next generation Node Basestation,gNB)等接入网设备,还可以是未来通信系统中的接入网设备。应用在申请实施例中,接入网设备102以5G系统中的接入网设备为例。
用户终端101与接入网设备102之间通过无线链路进行通信时,用户面和控制面都需要进行加密保护,以防止被攻击者窃听。用户终端101与接入网设备102之间的空中接口协议栈可分为用户面协议栈和控制面协议栈。用户面协议栈从上至下包括分组数据汇聚协议(packet data convergence protocol,PDCP)层、无线链路控制(radio link control,RLC)层、媒体访问控制(media access control,MAC)层和物理(physical,PHY)层。用户终端101和接入网设备102在PDCP层使用ZUC算法对数据进行加密保护。控制面协议栈从上至下包括无线资源控制(radio resource control,RRC)层、PDCP层、RLC层、MAC层和PHY层。用户终端101和接入网设备102在PDCP层使用ZUC算法对信令进行加密保护。
使用ZUC算法进行加密保护、解密保护的过程可参见图2所示,图2中使用ZUC算法对明文进行加密保护、解密保护。明文可以是数据或信令。对于加密过程,将32比特的计数器变量(counter)、5比特的承载值变量(bearer)、1比特的方向变量(direction)、要生成的密钥流的长度(length)以及初始密钥(key)作为ZUC算法的输入,经ZUC算法运算,输出对应的密钥流,将明文与密钥流进行异或得到密文。对于解密过程,同样将计数变量、信标变量、方向变量、长度以及初始密钥作为ZUC算法的输入,经ZUC算法运算,输出对应的密钥流,将密文与密钥流进行异或,从而还原得到明文。经过图2所示的过程,实现对用户终端101与接入网设备102之间的数据、信令的加密保护,以确保传输的安全性。
应用在本申请实施例中,使用优化的ZUC-256算法对数据、信令进行加密保护。优化的ZUC-256算法,即本申请实施例在现有的ZUC-256算法的基础上进行改进得到的。
请参见图3和图4,分别为目前ZUC-256算法的密钥流初始化阶段的示意图和密钥流生成阶段的示意图。这两个阶段均包括LFSR、BR和FSM,这两个阶段在FSM输出存在差别。
其中,LFSR包括16个31比特的寄存器单元,5个抽头系数和mod(231-1)运算,假设这16个寄存器单元的初始数值为(s15,s14,...,s1,s0)。mod(231-1)表示整数的模(231-1)加法,为(x+y)mod(231-1),1≤x≤231-1,1≤y≤231-1。1+28,220,221,217,215为抽头系数,抽头系数与各自对应的寄存器单元的数值结合,用于在状态更新时产生新的状态。
BR包括4个32比特的字(X3,X2,X1,X0),这四个字通过从LFSR中抽取一些存储内容,拼接而成。其中X3=s2L||s0H,X2=s7L||s5H,X1=s11L||s9H,X0=s15H||s14L,siH表示寄存器单元si的高16位,sjL表示寄存器单元sj的低16位。
在FSM函数中,
Figure BDA0002078615950000071
W1=R1田X1
Figure BDA0002078615950000072
R1=S(L1(W1L||W2H)),R2=S(L2(W2L||W1H)),其中L1和L2是两个线性变换函数,S是一个32*32的S盒,等效为4个8*8的S盒,即S=(S0,S1,S2,S3),S0=S2,S1=S3,实现时需要S0和S1即可,S0和S1是256*8的查找表,查找表中的每个值都是8位,且查找表中的每个值都是确定的,硬件实现时需要两个256*8bit的只读存储器(read only memory,ROM)存储S0和S1即可。初始化阶段,W作为FSM函数的输出,将其输入LFSR中的mode(231-1)运算。生成阶段,将
Figure BDA0002078615950000073
作为一个32比特的密钥流输出。
上述公式中,“田”表示整数的模232的加法,即对于0≤x<232与0≤y<232,x田y表示mod232的整数加法运算。“||”表示比特串的连接操作。
Figure BDA0002078615950000074
表示比特级的异或操作。
在LFSR初始化之前,将初始密钥、初始向量及常数装载到LFSR的16个寄存器单元,使得这16个寄存器单元获得初始数值(s15,s14,...,s1,s0),其中初始向量包括计数变量、信标变量和方向变量。之后,进行LFSR初始化阶段,设置记忆单元为R1=R2=0,以及FSM函数的输出为零。经过BR,可以获得X3,X2,X1,X0的初始数值,进而得到FSM函数的输出,用于该输出进行第一次LFSR寄存器初始化的操作,更新X3,X2,X1,X0,R1,R2以及FSM函数的输出,进入下一次LFSR寄存器初始化,如此循环执行,重复LFSR寄存器初始化操作共32次。在初始化阶段,FSM函数的输出不是有效密钥,不作输出密钥使用。
图3和图4中,“<<<16”表示向左循环移位16位。
初始化阶段结束之后,进入密钥流生成阶段。在密钥流生成阶段,LFSR没有输入,寄存器单元进行状态更新时,si+1需拷贝和移动将si替换,并根据抽头系数对应的寄存器单元的数值产生新的状态,例如用新的状态s16替换s15,每更新一次状态需要进行一次16个寄存器单元搬移。可参见图5所示的目前LFSR进行状态更新的示例图,图5中假设时刻t=0的16个寄存器单元的数值为(s15,s14,...,s1,s0),时刻t+1,产生了新的状态s16,此时16个寄存器单元的数值为(s16,s15,...,s2,s1)。随着时间推移,LFSR每轮产生新的状态如下。
t:s16=[215*s15+217*s13+221*s10+220*s4+(1+28)*s0]mod(231-1)
t+1:s17=[215*s16+217*s14+221*s11+220*s5+(1+28)*s1]mod(231-1)
t+2:s18=[215*s17+217*s15+221*s12+220*s6+(1+28)*s2]mod(231-1)
t+3:s19=[215*s18+217*s16+221*s13+220*s7+(1+28)*s3]mod(231-1)
在上述实现中,首先,每进行一次状态更新,需要对16个寄存器单元进行一次数值搬移,初始化阶段和密钥流生成阶段都会涉及多次状态更新,使得时延较大,进而导致目前的ZUC-256算法输出密钥流的效率低。其次,每次产生新的状态时,需要依次访问抽头系数对应的寄存器单元的数值,那么需要来回反复寄存器单元的数值,使得目前的ZUC-256算法引入额外的时延。再次,一次状态产生一个密钥流,待所有密钥流都生成之后,将所有密钥流与明文进行加密,得到密文,使得目前的ZUC-256算法引入额外的时延。再次,目前的ZUC-256算法为了保证LFSR状态不超过31位,LFSR每次状态更新时需要进行31位计算的溢出保护,比较耗时。
在FSM函数中,在计算R1和R2时,利用一定规则生成S0和S1的索引,根据索引访问S0和S1,以便根据公式计算得到R1和R2。每次生成S0和S1的索引,需要先移位,增加了时间开销。
因此,目前的ZUC-256算法存在耗时较长的弊端。鉴于此,本申请实施例提供一种密钥流生成方法及其装置,可以有效缩短ZUC-256算法的耗时。本申请实施例提供的密钥流生成方法及其装置,针对目前ZUC-256算法中的LFSR以及FSM函数进行改进,使得改进后的ZUC-256算法相比目前的ZUC-256算法,生成密钥流的耗时更短。对LFSR的改进,包括对初始化阶段中LFSR的改进以及对生成阶段中LFSR的改进,同样,对FSM函数的改进,包括对初始化阶段中FSM函数的改进以及对生成阶段中FSM函数的改进。
本申请实施例提供的密钥流生成方法可由用户终端101执行,也可由接入网设备102执行,密钥流生成装置可以是用户终端101,或部署在用户终端101中;也可以是接入网设备102,或部署在接入网设备102中。
请参见图6,为本申请实施例提供的密码流生成装置的结构示意图。该密码流生成装置60包括线性反馈移位寄存器601和密码流生成器602,密码流生成器602包括比特重组6021、有限状态机6022和输出接口6023。
其中,线性反馈移位寄存器601对应于图3和图4中的LFSR,不过图6中的LFSR不包括图3和图4中的抽头系数,该抽头系数通过其他方式呈现。比特重组6021对应于图3和图4中的BR。有限状态机6022对应于图3和图4中的FSM,不过图6中FSM所包括的S盒不同于图3和图4中的S盒。
可以理解的是,本申请实施例在现有ZUC-256算法的基础上,对现有的LFSR以及FSM进行改进,使得在LFSR和FSM模块上的时间开销缩短,使得改进后的ZUC-256算法相比现有ZUC-256算法可大大缩短耗时,以提高明文加密效率。
下面将结合图6所示的密码流生成装置,对本申请实施例提供的密钥流生成方法进行详细的介绍。
请参见图7,为本申请实施例提供的密钥流生成方法的流程示意图,该流程可以包括但不限于如下步骤:
步骤701,确定时刻t下M个寄存器单元存储的M个数值,以及时刻t下指针所指的第一寄存器单元。
具体的,LFSR确定时刻t下M个寄存器单元存储的M个数值,以及时刻t下指针所指的第一寄存器单元。
其中,一个寄存器单元存储一个数值,M为正整数,M的取值可以为16或32等。应用在本申请实施例中,M的取值为16,即对应于现有ZUC-256算法的16个寄存器单元。随着对ZUC-256算法的改进,M的取值可能为32或64等。
假设t=0,即初始时刻,此时LFSR的16个寄存器单元装载了初始数值(s15,s14,...,s1,s0),那么LFSR可确定时刻t=0时,16个寄存器单元存储的数值为(s15,s14,...,s1,s0)。
应用在本申请实施例中,在对LFSR的寄存器单元进行状态更新时,无需对16个存储器单元所存储的数值都进行搬移,引入指针(index),也可以称为索引或更新索引等。
在一种可能的实现方式中,t=0时指针不出现,待生成新的状态时将指针指向第一个寄存器单元,该第一个寄存器单元可以从左至右的方向为参考,也可以从右至左的方向为参考。本申请实施例中,16个寄存器单元的排序以从左至右的方向为参考。在另一种可能的实现方式中,t=0时指针指向第一个寄存器单元。可参见图8,为t=0时各个寄存器单元存储数值情况以及指针指向情况的示例图。其中,新的状态指的是新的寄存器单元的数值,可以理解为更新数值。
引入指针后,更新数值存储的位置与指针所指的寄存器单元相关,例如更新数值为s16,此时指针如图8所示,那么第一个寄存器单元用s16替换s0,即替换后第一个寄存器单元存储的是s16而不是s0。之后,每生成更新数值,指针便向左移动指向下一个寄存器单元,该下一个寄存器单元存储的数值由原数值替换为更新数值,如此可缩短耗时。可参见下表1,为采用指针后与采用指针前的性能对比表。
Figure BDA0002078615950000091
表1
该表1所得数据的测试环境为
Figure BDA0002078615950000092
6138T Processor,@2.00GHz;GCC:4.8.3;CentOS release 6.9。
步骤702,从M个数值中获取N个连续的数值。;
具体的,LFSR从M个数值中获取N个连续的数值,N为正整数,M>N。应用在本申请实施例中,M=16,N=8。这8个连续的数值可以为第一个数值至第8个数值。
举例来说,在t=0时,LFSR从16个数值中获取8个连续的数值,这8个连续的数值为(s7,s6,...,s1,s0)。
步骤703,根据N个连续的数值并行计算得到更新参数,根据更新参数计算得到N*个更新数值,N*为正整数,N*≤N。
具体的,LFSR根据N个连续的数值并行计算得到更新参数,然后根据更新参数计算得到N*个更新数值。应用在本申请实施例中,N*=N/2=4。由于本申请实施例是对现有ZUC-256算法进行改进,因此参数以及计算公式等沿用现有ZUC-256算法,不过本申请实施例也可以应用在其他方面,应用于其他方面时参数以及计算公式可能不同,N*的数值也可能不同。
应用在本申请实施例中,更新参数包括第一更新参数、第二更新参数、第三更新参数以及第四更新参数。
LFSR根据N个连续的数值中st+i和st+i+4,t≤i≤t+3,并行计算得到第一更新参数、第二更新参数、第三更新参数以及第四更新参数。第一更新参数对应于i=t,第二更新参数对应于i=t+1,第三更新参数对应于i=t+2,第四更新参数对应于i=t+3。
举例来说,在t=0时,根据8个连续的数值(s7,s6,...,s1,s0)并行计算得到第一更新参数、第二更新参数、第三更新参数以及第四更新参数。
第一更新参数:rax0=220*s4+(1+28)*s0
第二更新参数:rax1=220*s5+(1+28)*s1
第三更新参数:rax2=220*s6+(1+28)*s2
第四更新参数:rax3=220*s7+(1+28)*s3
需要说明的是,计算上述四个更新参数是并行的,即同时进行的,这样可以节省时间开销。
在得到四个更新参数之后,LFSR根据这四个更新参数计算得到四个更新数值。
举例来说,LFSR根据上述四个更新参数(即rax0,rax1,rax2,rax3)计算得到四个更新数值,这四个更新数值为(s19,s18,s17,s16),具体计算公式如下:
s16=[215*s15+217*s13+221*s10+rax0]mod(231-1)
s17=[215*s16+217*s14+221*s11+rax1]mod(231-1)
s18=[215*s17+217*s15+221*s12+rax2]mod(231-1)
s19=[215*s18+217*s16+221*s13+rax3]mod(231-1)
其中,s16为t+1时刻的更新数值,s17为t+2时刻的更新数值,s18为t+3时刻的更新数值,s19为t+4时刻的更新数值。
采用并行计算得到更新参数,可节省耗时,对比表可参见表2。
包长(字节) 512 1024
优化前耗时(纳秒) 1617 2906
优化后耗时(纳秒) 1518 2687
耗时降低比例 6% 7%
表2
该表2所得数据的测试环境为
Figure BDA0002078615950000101
6138T Processor,@2.00GHz;GCC:4.8.3;CentOS release 6.9。
目前ZUC-256算法中LFSR生成的新状态每次都需进行31位的溢出保护,存在溢出保护耗时。本申请实施例采用64位的寄存器计算生成新状态,避免溢出保护的计算开销,从而进一步节省ZUC-256算法的耗时。因为抽头系数的最大权重为21次方,新状态最长不会超过53位,因此使用64位的寄存器可以满足,并且不会带来溢出保护的计算开销。可参见表3的对比表。的计算公式
包长(字节) 512 1024
优化前耗时(纳秒) 2344 4138
优化后耗时(纳秒) 1874 3301
耗时降低比例 20% 20%
表3
可以理解的是,采用64位寄存器,根据s16~s19的计算公式计算得到s16~s19,可以避免溢出保护的计算开销,从而进一步节省ZUC-256算法的耗时。
步骤704,根据第一寄存器单元、指针的移动方向以及N*个数值,对M个寄存器单元中的N*个寄存器单元的数值进行更新。
具体的,LFSR根据第一寄存器单元、指针的移动方向以及N*个数值,对M个寄存器单元中的N*个寄存器单元的数值进行更新。
在一种可能的实现方式中,在时刻t+1,根据指针的移动方向将指针从第一寄存器单元移动至第二寄存器单元,将第二寄存器单元存储的数值更新为st+M,第二寄存器单元的位置与第一寄存器单元的位置在指针的移动方向上相邻。在时刻t+2,根据指针的移动方向将指针从第二寄存器单元移动至第三寄存器单元,并将第三寄存器单元存储的数值更新为st+M+1,第三寄存器单元的位置与第二寄存器单元的位置在指针的移动方向上相邻。在时刻t+3,根据指针的移动方向将指针从第三寄存器单元移动至第四寄存器单元,并将第四寄存器单元存储的数值更新为st+M+2,第四寄存器单元的位置与第三寄存器单元的位置在指针的移动方向上相邻。在时刻t+4,根据指针的移动方向将指针从第四寄存器单元移动至第五寄存器单元,并将第五寄存器单元存储的数值更新为st+M+3,第五寄存器单元的位置与第四寄存器单元的位置在指针的移动方向上相邻。
该种方式下,先移动指针,再对指针指向的寄存器单元进行更新。举例来说,可参见图9a,为对寄存器单元进行更新的一种示例图。该示例中,t=0时,指针所指的第一寄存器单元不存在,即未指向16个寄存器单元中的任意一个寄存器单元,或指针所指的第一寄存器单元不为16个寄存器单元中的任意一个,而是一个特殊的寄存器单元。在生成一个更新参数s16时,指针指向第二寄存器单元,即第一个寄存器单元,第一个寄存器单元用s16替换s0。然后,在生成s17时,先将指针移动至第三寄存器单元,即第二个寄存器单元,在第二寄存器单元上用s17替换s1。以此类推。
在另一种可能的实现方式中,在时刻t+1,将第一寄存器单元存储的数值更新为st+M。在时刻t+2,根据指针的移动方向将指针从第一寄存器单元移动至第二寄存器单元,并将第二寄存器单元存储的数值更新为st+M+1,第二寄存器单元的位置与第一寄存器单元的位置在指针的移动方向上相邻。在时刻t+3,根据指针的移动方向将指针从第二寄存器单元移动至第三寄存器单元,并将第三寄存器单元存储的数值更新为st+M+2,第三寄存器单元的位置与第二寄存器单元的位置在指针的移动方向上相邻。在时刻t+4,根据指针的移动方向将指针从第三寄存器单元移动至第四寄存器单元,并将第四寄存器单元存储的数值更新为st+M+3,第四寄存器单元的位置与第三寄存器单元的位置在指针的移动方向上相邻。该方式下,第一寄存器单元为待更新的。
该种方式下,先对指针指向的寄存器单元进行更新,再移动指针。举例来说,可参见图9b,为对寄存器单元进行更新的另一种示例图。该示例中,t=0时,指针所指的第一寄存器单元为第一个寄存器单元,为待更新的寄存器单元。在t+1时,第一个寄存器单元用s16替换s0,然后指针指向第二寄存器单元,即第二个寄存器单元。下一次生成更新参数s17时,第二寄存器单元,即第二个寄存器单元用s17替换s1,再将指针移动至第三寄存器单元,即第三个寄存器单元。以此类推。
上述两种方式并不构成对本申请实施例的限定,例如,可以同时移动指针并对寄存器单元进行更新。
步骤705,根据更新后的M个寄存器单元存储的M个数值生成并输出N*个密码流。
密码流生成器根据更新后的M个寄存器单元存储的M个数值生成并输出N*个密码流,应用在本申请实施例中,生成并输出四个密码流。具体的,BR根据更新后的M个寄存器单元存储的M个数值,生成四组比特重组字;FSM根据四组比特重组字以及S盒生成四组记忆单元,根据四组记忆单元以及四组比特重组字生成四个密码流;输出接口输出四个密码流。
BR根据X0=s15H||s14L,(s14,s15,...,s18,s19)生成四组比特字(X0,t,X0,t+1,X0,t+2,X0,t+3),可参见图10所示的生成四组重组比特字的示例图。
时刻t:X0,t=s15H||s14L
时刻t+1:X0,t+1=s16H||s15L
时刻t+2:X0,t+2=s17H||s16L
时刻t+3:X0,t+3=s18H||s17L
同理,BR根据X1=s11L||s9H可得到(X1,t,X1,t+1,X1,t+2,X1,t+3),根据X2=s7L||s5H可得到(X2,t,X2,t+1,X2,t+2,X2,t+3),根据X3=s2L||s0H可得到(X3,t,X3,t+1,X3,t+2,X3,t+3)。
FSM根据R1=S(L1(W1L||W2H)),R2=S(L2(W2L||W1H))可得到(R1,t,R1,t+1,R1,t+2,R1,t+3)和(R2,t,R2,t+1,R2,t+2,R2,t+3)。其中,S盒也可以称为S数组。本申请实施例中,S数组为在数组S0和数组S1的基础上进行移位后得到的。数组S0和数组S1是256*8的查找表,查找表中的每个值都是8位,且查找表中的每个值都是确定的。
具体的,S数组包括四个数组,这四个数组为(S1-0,S0-8,S1-16,S0-24)。这四个数组中每个数组包括256个元素,每个元素的长度为8位。数组S1-0表示在数组S1的基础上移0位,数组S0-8表示在数组S0的基础上移8位,数组S1-16表示在数组S1的基础上移16位,数组S0-24表示在数组S0的基础上移24位。本申请实施例不限定左移位还是右移位,但是若是左移位,则均左移位;若右移位,则均右移位。采用本申请实施例提供的S盒可避免现有移位指令开销,对比可参见表4。
包长(字节) 512 1024
优化前耗时(纳秒) 1433 2534
优化后耗时(纳秒) 1377 2401
耗时降低比例 4% 5%
表4
该表4所得数据的测试环境为
Figure BDA0002078615950000121
6138T Processor,@2.00GHz;GCC:4.8.3;CentOS release 6.9。
FSM根据(R1,t,R1,t+1,R1,t+2,R1,t+3)和(R2,t,R2,t+1,R2,t+2,R2,t+3),
Figure BDA0002078615950000122
以及
Figure BDA0002078615950000123
计算得到四个,即四个密码流(Zt,Zt+1,Zt+2,Zt+3),可参见图11所示的生成四个密码流的示例图。然后,输出接口输出四个密码流。
在图7所示的实施例中,对目前ZUC-256算法的LFSR和FSM进行改进,可以大大缩短耗时,有利于提高明文加密效率。
请参见图12,是本申请实施例提供的密码流生成装置的逻辑结构示意图,该密码流生成装置80包括接口模块801和处理模块802。该密码流生成装置80可以是用户终端,也可以是接入网设备。
处理模块802,用于确定时刻t下M个寄存器单元存储的M个数值,以及时刻t下指针所指的第一寄存器单元;一个寄存器单元存储一个数值,M为正整数;从M个数值中获取N个连续的数值,N为正整数,M>N;根据N个连续的数值并行计算得到更新参数,根据更新参数计算得到N*个更新数值,N*为正整数,N*≤N;根据第一寄存器单元、指针的移动方向以及N*个数值,对M个寄存器单元中的N*个寄存器单元的数值进行更新;根据更新后的M个寄存器单元存储的M个数值生成N*个密码流;
接口模块801,用于输出N*个密码流。
需要说明的是,密码流生成装置80中各个模块的功能和操作,可以进一步参考方法实施例中的相关描述。
请参见图13,是本申请实施例提供的密码流生成装置的实体结构简化示意图,该密码流生成装置90可以是是用户终端,也可以是接入网设备。
该密码流生成装置90包括一个或者多个通信接口901、处理器902,可选的,还可以包括存储器903。通信接口901、处理器902和存储器903可以通过总线904相互连接,也可以通过其它方式相连接。图12所示的处理模块802所实现的相关功能可以通过一个或多个处理器902来实现。图12所示的接口单元801所实现的相关功能可以通过通信接口901来实现。通信接口901也可以为输入/输出接口。
存储器903包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmableread only memory,EPROM)、或便携式只读存储器(compact disc read-only memory,CD-ROM),该存储器903用于相关指令和/或数据。处理器902可以调用存储器903中的指令,以使得密码流生成装置实现前述各个实施例中对应的方法。
通信接口901用于发送数据和/或信令,以及接收数据和/或信令。应用在本申请实施例中,用于输出N*个密码流。
处理器902可以包括是一个或多个处理器,例如包括一个或多个中央处理器(central processing unit,CPU),在处理器902是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。应用在本申请实施例中,处理器902控制通信接口901执行收发动作。
存储器903用于存储密码流生成装置90的程序代码和数据。
关于处理器902和通信接口901所执行的步骤,具体可参见方法所示实施例的描述,在此不再赘述。
可以理解的是,图13仅仅示出了密码流生成装置的简化设计。在实际应用中,密码流生成装置还可以分别包含必要的其他元件,包含但不限于任意数量的收发器、处理器、控制器、存储器、通信单元等,而所有可以实现本申请的设备都在本申请的保护范围之内。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。因此,本申请又一实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
本申请又一实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
本领域普通技术人员可以意识到,结合本申请中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriberline,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。

Claims (24)

1.一种密码流生成方法,其特征在于,包括:
确定时刻t下M个寄存器单元存储的M个数值,以及所述时刻t下指针所指的第一寄存器单元;一个寄存器单元存储一个数值,M为正整数;
从所述M个数值中获取N个连续的数值,N为正整数,M>N;
根据所述N个连续的数值并行计算得到更新参数,根据所述更新参数计算得到N*个更新数值,N*为正整数,N*≤N;
根据所述第一寄存器单元、所述指针的移动方向以及所述N*个数值,对所述M个寄存器单元中的N*个寄存器单元的数值进行更新;
根据更新后的所述M个寄存器单元存储的M个数值生成并输出N*个密码流。
2.根据权利要求1所述的方法,其特征在于,所述时刻t下的M个寄存器单元存储的M个数值为{st+M-1,...,st+1,st},所述N个连续的数值为{st+N-1,...,st+1,st}。
3.根据权利要求2所述的方法,其特征在于,M=16,N=8,N*=N/2=4。
4.根据权利要求3所述的方法,其特征在于,所述N*个更新数值包括st+M,st+M+1,st+M+2和st+M+3
5.根据权利要求4所述的方法,其特征在于,所述更新参数包括第一更新参数、第二更新参数、第三更新参数和第四更新参数;
所述根据所述N个连续的数值并行计算得到更新参数,包括:
根据所述N个连续的数值中st+i和st+i+4,t≤i≤t+3,并行计算得到所述第一更新参数、所述第二更新参数、所述第三更新参数以及所述第四更新参数;
其中,所述第一更新参数对应于i=t,所述第二更新参数对应于i=t+1,所述第三更新参数对应于i=t+2,所述第四更新参数对应于i=t+3。
6.根据权利要求5所述的方法,其特征在于,所述根据所述更新参数计算得到N*个更新数值,包括:
根据所述第一更新参数计算得到所述st+M
根据所述第二更新参数计算得到所述st+M+1
根据所述第三更新参数计算得到所述st+M+2
根据所述第四更新参数计算得到所述st+M+3
7.根据权利要求6所述的方法,其特征在于,所述根据所述第一更新参数计算得到所述st+M,包括:
采用64位寄存器,根据所述第一更新参数计算得到所述st+M
8.根据权利要求4所述的方法,其特征在于,所述根据所述第一寄存器单元、所述指针的移动方向以及所述N*个数值,对所述M个寄存器单元中的N*个寄存器单元的数值进行更新,包括:
在时刻t+1,根据所述指针的移动方向将所述指针从所述第一寄存器单元移动至第二寄存器单元,并将所述第二寄存器单元存储的数值更新为所述st+M,所述第二寄存器单元的位置与所述第一寄存器单元的位置在所述指针的移动方向上相邻;
在时刻t+2,根据所述指针的移动方向将所述指针从所述第二寄存器单元移动至第三寄存器单元,并将所述第三寄存器单元存储的数值更新为所述st+M+1,所述第三寄存器单元的位置与所述第二寄存器单元的位置在所述指针的移动方向上相邻;
在时刻t+3,根据所述指针的移动方向将所述指针从所述第三寄存器单元移动至第四寄存器单元,并将所述第四寄存器单元存储的数值更新为所述st+M+2,所述第四寄存器单元的位置与所述第三寄存器单元的位置在所述指针的移动方向上相邻;
在时刻t+4,根据所述指针的移动方向将所述指针从所述第四寄存器单元移动至第五寄存器单元,并将所述第五寄存器单元存储的数值更新为所述st+M+3,所述第五寄存器单元的位置与所述第四寄存器单元的位置在所述指针的移动方向上相邻。
9.根据权利要求4所述的方法,其特征在于,所述根据所述第一寄存器单元的位置、所述指针的移动方向以及所述N*个数值,对所述M个寄存器单元中的N*个寄存器单元的数值进行更新,包括:
在时刻t+1,将所述第一寄存器单元存储的数值更新为所述st+M,并根据所述指针的移动方向将所述指针从所述第一寄存器单元移动至第二寄存器单元,所述第二寄存器单元的位置与所述第一寄存器单元的位置在所述指针的移动方向上相邻;
在时刻t+2,将所述第二寄存器单元存储的数值更新为所述st+M+1,并根据所述指针的移动方向将所述指针从所述第二寄存器单元移动至第三寄存器单元,所述第三寄存器单元的位置与所述第二寄存器单元的位置在所述指针的移动方向上相邻;
在时刻t+3,将所述第三寄存器单元存储的数值更新为所述st+M+2,并根据所述指针的移动方向将所述指针从所述第三寄存器单元移动至第四寄存器单元,所述第四寄存器单元的位置与所述第三寄存器单元的位置在所述指针的移动方向上相邻;
在时刻t+4,将所述第四寄存器单元存储的数值更新为所述st+M+3,并根据所述指针的移动方向将所述指针从所述第四寄存器单元移动至第五寄存器单元,所述第五寄存器单元的位置与所述第四寄存器单元的位置在所述指针的移动方向上相邻。
10.根据权利要求4所述的方法,其特征在于,根据更新后的所述M个寄存器单元存储的M个数值生成并输出N*个密码流,包括:
根据更新后的所述M个寄存器单元存储的M个数值,生成四组比特重组字;
根据所述四组比特重组字以及S数组生成四组记忆单元;
根据所述四组记忆单元以及所述四组比特重组字生成并输出四个密码流。
11.根据权利要求10所述的方法,其特征在于,所述S数组为在数组S0和数组S1的基础上进行移位后得到的。
12.根据权利要求11所述的方法,其特征在于,所述S数组包括数组S1-0、数组S0-8、数组S1-16和数组S0-24,所述数组S1-0表示在所述数组S1的基础上移0位,所述数组S0-8表示在所述数组S0的基础上移8位,所述数组S1-16表示在所述数组S1的基础上移16位,所述数组S0-24表示在所述数组S0的基础上移24位。
13.一种密码流生成装置,其特征在于,所述装置包括线性反馈移位寄存器和密码流生成器;
所述线性反馈移位寄存器,用于确定时刻t下M个寄存器单元存储的M个数值,以及所述时刻t下指针所指的第一寄存器单元;一个寄存器单元存储一个数值,M为正整数;从所述M个数值中获取N个连续的数值,N为正整数,M>N;根据所述N个连续的数值并行计算得到更新参数,根据所述更新参数计算得到N*个更新数值,N*为正整数,N*≤N;根据所述第一寄存器单元、所述指针的移动方向以及所述N*个数值,对所述M个寄存器单元中的N*个寄存器单元的数值进行更新;
所述密码流生成器,用于根据更新后的所述M个寄存器单元存储的M个数值生成并输出N*个密码流。
14.根据权利要求13所述的装置,其特征在于,所述时刻t下的M个寄存器单元存储的M个数值为{st+M-1,...,st+1,st},所述N个连续的数值为{st+N-1,...,st+1,st}。
15.根据权利要求14所述的装置,其特征在于,M=16,N=8,N*=N/2=4。
16.根据权利要求15所述的装置,其特征在于,所述N*个更新数值包括st+M,st+M+1,st+M+2和st+M+3
17.根据权利要求16所述的装置,其特征在于,所述更新参数包括第一更新参数、第二更新参数、第三更新参数和第四更新参数;
所述线性反馈移位寄存器,具体用于根据所述N个连续的数值中st+i和st+i+4,t≤i≤t+3,并行计算得到所述第一更新参数、所述第二更新参数、所述第三更新参数以及所述第四更新参数;
其中,所述第一更新参数对应于i=t,所述第二更新参数对应于i=t+1,所述第三更新参数对应于i=t+2,所述第四更新参数对应于i=t+3。
18.根据权利要求17所述的装置,其特征在于,所述线性反馈移位寄存器,具体用于根据所述第一更新参数计算得到所述st+M;根据所述第二更新参数计算得到所述st+M+1;根据所述第三更新参数计算得到所述st+M+2;根据所述第四更新参数计算得到所述st+M+3
19.根据权利要求18所述的装置,其特征在于,所述线性反馈移位寄存器,具体用于采用64位寄存器,根据所述第一更新参数计算得到所述st+M
20.根据权利要求16所述的方法,其特征在于,所述线性反馈移位寄存器,具体用于在时刻t+1,根据所述指针的移动方向将所述指针从所述第一寄存器单元移动至第二寄存器单元,并将所述第二寄存器单元存储的数值更新为所述st+M,所述第二寄存器单元的位置与所述第一寄存器单元的位置在所述指针的移动方向上相邻;在时刻t+2,根据所述指针的移动方向将所述指针从所述第二寄存器单元移动至第三寄存器单元,并将所述第三寄存器单元存储的数值更新为所述st+M+1,所述第三寄存器单元的位置与所述第二寄存器单元的位置在所述指针的移动方向上相邻;在时刻t+3,根据所述指针的移动方向将所述指针从所述第三寄存器单元移动至第四寄存器单元,并将所述第四寄存器单元存储的数值更新为所述st+M+2,所述第四寄存器单元的位置与所述第三寄存器单元的位置在所述指针的移动方向上相邻;在时刻t+4,根据所述指针的移动方向将所述指针从所述第四寄存器单元移动至第五寄存器单元,并将所述第五寄存器单元存储的数值更新为所述st+M+3,所述第五寄存器单元的位置与所述第四寄存器单元的位置在所述指针的移动方向上相邻。
21.根据权利要求16所述的方法,其特征在于,所述线性反馈移位寄存器,具体用于在时刻t+1,将所述第一寄存器单元存储的数值更新为所述st+M,并根据所述指针的移动方向将所述指针从所述第一寄存器单元移动至第二寄存器单元,所述第二寄存器单元的位置与所述第一寄存器单元的位置在所述指针的移动方向上相邻;在时刻t+2,将所述第二寄存器单元存储的数值更新为所述st+M+1,并根据所述指针的移动方向将所述指针从所述第二寄存器单元移动至第三寄存器单元,所述第三寄存器单元的位置与所述第二寄存器单元的位置在所述指针的移动方向上相邻;在时刻t+3,将所述第三寄存器单元存储的数值更新为所述st+M+2,并根据所述指针的移动方向将所述指针从所述第三寄存器单元移动至第四寄存器单元,所述第四寄存器单元的位置与所述第三寄存器单元的位置在所述指针的移动方向上相邻;在时刻t+4,将所述第四寄存器单元存储的数值更新为所述st+M+3,并根据所述指针的移动方向将所述指针从所述第四寄存器单元移动至第五寄存器单元,所述第五寄存器单元的位置与所述第四寄存器单元的位置在所述指针的移动方向上相邻。
22.根据权利要求16所述的装置,其特征在于,所述密码流生成器包括比特重组、有限状态机和输出接口;
所述比特重组,用于根据更新后的所述M个寄存器单元存储的M个数值,生成四组比特重组字;
所述有限状态机,用于根据所述四组比特重组字以及S盒生成四组记忆单元;根据所述四组记忆单元以及所述四组比特重组字生成四个密码流;
所述输出接口,用于输出所述四个密码流。
23.根据权利要求22所述的装置,其特征在于,所述S数组为在数组S0和数组S1的基础上进行移位后得到的。
24.根据权利要求23所述的装置,其特征在于,所述S数组包括数组S1-0、数组S0-8、数组S1-16和数组S0-24,所述数组S1-0表示在所述数组S1的基础上移0位,所述数组S0-8表示在所述数组S0的基础上移8位,所述数组S1-16表示在所述数组S1的基础上移16位,所述数组S0-24表示在所述数组S0的基础上移24位。
CN201910463006.5A 2019-05-30 2019-05-30 密码流生成方法及其装置 Active CN112019322B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910463006.5A CN112019322B (zh) 2019-05-30 2019-05-30 密码流生成方法及其装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910463006.5A CN112019322B (zh) 2019-05-30 2019-05-30 密码流生成方法及其装置

Publications (2)

Publication Number Publication Date
CN112019322A true CN112019322A (zh) 2020-12-01
CN112019322B CN112019322B (zh) 2022-03-25

Family

ID=73501279

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910463006.5A Active CN112019322B (zh) 2019-05-30 2019-05-30 密码流生成方法及其装置

Country Status (1)

Country Link
CN (1) CN112019322B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114039719A (zh) * 2021-11-05 2022-02-11 南京大学 一种应用于5g系统的snow-v算法加速器及其加速方法
CN114553424A (zh) * 2022-02-21 2022-05-27 南京航空航天大学 Zuc-256流密码轻量级硬件系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101271170B1 (ko) * 2012-05-31 2013-06-04 삼성에스디에스 주식회사 비밀키 생성을 위한 고속연산 수행 방법 및 장치
CN104793996A (zh) * 2015-04-29 2015-07-22 中芯睿智(北京)微电子科技有限公司 一种并行计算设备的任务调度方法及任务调度装置
US20160261403A1 (en) * 2015-03-06 2016-09-08 Qualcomm Incorporated Side channel analysis resistant architecture
CN108174207A (zh) * 2017-12-29 2018-06-15 重庆邮电大学 基于zuc算法的h.264熵编码视频加密方法
CN108377180A (zh) * 2018-03-29 2018-08-07 哈尔滨理工大学 一种基于stm32的无线保密通信系统
CN109348478A (zh) * 2012-12-28 2019-02-15 英特尔公司 用于加速无线安全算法的装置、方法和系统
CN109600217A (zh) * 2019-01-18 2019-04-09 江苏实达迪美数据处理有限公司 在并行操作模式中优化sm4加密和解密的方法及处理器

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101271170B1 (ko) * 2012-05-31 2013-06-04 삼성에스디에스 주식회사 비밀키 생성을 위한 고속연산 수행 방법 및 장치
CN109348478A (zh) * 2012-12-28 2019-02-15 英特尔公司 用于加速无线安全算法的装置、方法和系统
US20160261403A1 (en) * 2015-03-06 2016-09-08 Qualcomm Incorporated Side channel analysis resistant architecture
CN104793996A (zh) * 2015-04-29 2015-07-22 中芯睿智(北京)微电子科技有限公司 一种并行计算设备的任务调度方法及任务调度装置
CN108174207A (zh) * 2017-12-29 2018-06-15 重庆邮电大学 基于zuc算法的h.264熵编码视频加密方法
CN108377180A (zh) * 2018-03-29 2018-08-07 哈尔滨理工大学 一种基于stm32的无线保密通信系统
CN109600217A (zh) * 2019-01-18 2019-04-09 江苏实达迪美数据处理有限公司 在并行操作模式中优化sm4加密和解密的方法及处理器

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CCSA: "LIAISON STATEMENT ON ZUC-256 algorithm", 《3GPP TSG SA WG3 (SECURITY) MEETING #88 S3-171912》 *
DESIGN TEAM: "ZUC-256流密码算法", 《密码学报》 *
张建伟: "Instlink客户端加密媒体信道的设计与实现", 《中国优秀硕士学位论文全文数据库》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114039719A (zh) * 2021-11-05 2022-02-11 南京大学 一种应用于5g系统的snow-v算法加速器及其加速方法
CN114553424A (zh) * 2022-02-21 2022-05-27 南京航空航天大学 Zuc-256流密码轻量级硬件系统
CN114553424B (zh) * 2022-02-21 2024-03-15 南京航空航天大学 Zuc-256流密码轻量级硬件系统

Also Published As

Publication number Publication date
CN112019322B (zh) 2022-03-25

Similar Documents

Publication Publication Date Title
CA2830779C (en) Efficient implementation of hash algorithm on a processor
US8091139B2 (en) System and method for masking arbitrary Boolean functions
CN112019322B (zh) 密码流生成方法及其装置
CN109617671B (zh) 加解密、扩展方法及装置、加解密系统、终端
CN111199047B (zh) 数据加密方法、解密方法、装置、设备及存储介质
US10536264B2 (en) Efficient cryptographically secure control flow integrity protection
US10623189B2 (en) Online/offline signature system and method based on multivariate cryptography
Sklavos et al. Mobile Communications World: Security Implementations Aspects-A State of the Art.
US8122075B2 (en) Pseudorandom number generator and encryption device using the same
CN103873181A (zh) 一种lte系统中伪随机序列并行生成方法
CN104995866A (zh) 使用利用无进位乘法计算的通用哈希函数的消息认证
CN112262544A (zh) 生成和处理密码学参数的设备、系统、以及方法
CN111614457B (zh) 基于p置换改进的轻量级分组加解密方法、装置及存储介质
US10797859B2 (en) Low area optimization for NB-IoT applications
WO2013101136A1 (en) Dual composite field advanced encryption standard memory encryption engine
US8683291B2 (en) High throughput frame check sequence module architecture
CN113810169A (zh) 同态加密装置及其密文算术方法
CN105577362B (zh) 一种应用于aes算法的字节替换方法及系统
US10298671B2 (en) Randomization function and its application in load balancing
Rao et al. Energy consumption research of AES encryption algorithm in ZigBee
JP2020162026A (ja) 無線通信システム及び暗号鍵送受信方法
KR100294781B1 (ko) 무선통신망에서의인증응답생성방법
CN115934031B (zh) 一种计算引擎、数据处理方法、设备及存储介质
CN117873431A (zh) 基于国密sm4算法的随机数生成方法及装置
US20240106628A1 (en) Efficient side channel protection for lightweight authenticated encryption

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant