加密装置、解密装置、加密方法、解密方法、加密程序和解密程序与流程

文档序号:20502239发布日期:2020-04-21 22:50阅读:210来源:国知局
加密装置、解密装置、加密方法、解密方法、加密程序和解密程序与流程

本发明涉及使用块加密的认证加密算法。



背景技术:

认证加密算法是实现隐匿功能和篡改检测功能的加密算法。当使用认证加密算法时,能够在两者之间隐匿消息后进行通信,并且,接收者能够确认所发送的消息是否被篡改。

认证加密算法具有加密函数enc和解密函数dec这2个算法。

加密函数enc是如下函数:将秘密密钥k、初始参数n、公开数据a和消息m作为输入,输出密文c和篡改检测用的认证码t。另外,初始参数n按照每次加密而使用不同的值。

解密函数dec是如下函数:将秘密密钥k、初始参数n、公开数据a、密文c和篡改检测用的认证码t作为输入,在密文c等未被篡改的情况下输出消息m,在密文c等被篡改的情况下不输出消息m。

设发送者alice和接收者bob使用认证加密算法进行通信。该情况下,发送者alice根据秘密密钥k、初始参数n、公开数据a和消息m,使用加密函数enc计算密文c和篡改检测用的认证码t。然后,发送者alice向接收者bob发送初始参数n、公开数据a、密文c和篡改检测用的认证码t。接收者bob将秘密密钥k、初始参数n、公开数据a、密文c和篡改检测用的认证码t设为解密函数dec的输入。解密函数dec在初始参数n、公开数据a、密文c和篡改检测用的认证码t均未被篡改的情况下输出消息m。

另外,秘密密钥k事前由alice和bob共享。此外,公开数据a是可以公开的值。也可以没有公开数据a。

作为认证加密算法的结构方法,存在非专利文献1记载的使用aes(advancedencryptionstandard)等块加密的方法。

块加密由加密函数e和解密函数d构成。加密函数e是如下函数:将密钥k和n比特的消息m作为输入,输出n比特的密文c。将其写作c=ek(m)。解密函数d是如下函数:将密钥k和n比特的密文c作为输入,输出n比特的消息m。将其写作m=dk(c)。

块加密的消息m和密文c的大小n被称作块大小。在固定密钥k时,块加密的加密函数e和解密函数d成为n比特的置换函数。块大小n是由块加密定义的参数,在aes的情况下n=128。

认证加密的加密函数enc使用块加密的加密函数e构成。此外,认证加密的解密函数dec使用块加密的加密函数e或解密函数d构成。

在认证加密的解密函数dec使用块加密的解密函数d构成的情况下,在认证加密中使用块加密的加密函数e和解密函数d双方。在认证加密中使用块加密的加密函数e和解密函数d双方的情况下,需要安装加密函数e和解密函数d双方。例如,在利用软件安装的情况下,需要加密函数e和解密函数d双方的程序,在利用硬件安装的情况下,需要加密函数e和解密函数d双方的电路等。

另一方面,在认证加密的解密函数dec使用块加密的加密函数e的情况下,在认证加密中仅使用块加密的加密函数e。在认证加密中仅使用块加密的加密函数e的情况下,不需要安装解密函数d。因此,软件或硬件的大小较小。将软件的大小和硬件的大小称作安装大小。

作为能够仅利用块加密的e来安装的认证加密算法,存在非专利文献2记载的aes-gcm。aes-gcm使用计数器模式实现认证加密的加密函数enc和解密函数dec,以实现隐匿功能。此外,aes-gcm使用伽罗瓦体gf(2n)上的乘法,以实现篡改检测功能。在作为隐匿功能的算法的计数器模式中,除了块加密的加密函数e以外,还使用异或xor运算。

由此,在aes-gcm中,除了加密函数e以外,还需要安装伽罗瓦体gf(2n)上的乘法和异或。

在非专利文献3中记载有仅由加密函数e和异或xor构成的认证加密算法jambu。jambu不需要伽罗瓦体gf(2n)上的乘法,因此,与aes-gcm相比,安装大小较小。

在认证加密算法jambu的加密函数enc或解密函数dec中,一边使用块加密的e对3n/2比特的内部变量进行更新,一边进行加密。

现有技术文献

非专利文献

非专利文献1:fips197,advancedencryptionstandard(aes).

非专利文献2:nistspecialpublication800-38d,recommendationforblockciphermodesofoperation:galois/countermode(gcm)andgmac.

非专利文献3:submittedtothecaesarcompetition,thejambulightweightauthenticationencryptionmode(v2.1).



技术实现要素:

发明要解决的课题

除了安装大小以外,执行认证加密算法时使用的内部变量的大小也很重要。当成为嵌入设备这样的低价设备时,ram大小和rom大小较小。这样,在安装环境受到限制的情况下,期望安装大小和内部变量大小尽可能较小。内部变量是由块加密e更新的值。例如,jambu的内部变量大小为3n/2比特。此外,aes-gcm的内部变量大小需要为2n比特以上。

本发明的目的在于,实现能够减小安装大小和内部变量大小的认证加密算法。

用于解决课题的手段

本发明的加密装置具有:分割部,其按照每b比特对消息m进行分割,生成b比特的数据m[1],...,数据m[m];函数计算部,其将n=b+c比特的数据s0设定为变量s,针对i=1,...,m的各整数i,按照升序,利用将所述变量s作为输入来计算块加密e而得到的数据对所述变量s进行更新,利用将更新后的所述变量s和对数据m[i]附加c比特的比特串而成的数据x[i]作为输入来计算异或而得到的数据对所述变量s进行更新,从更新后的所述变量s中提取b比特,生成数据c[i];密文生成部,其连结与i=1,...,m的各整数i有关的所述数据c[i],生成所述消息m的密文c;以及认证码生成部,其从由所述函数计算部最后更新的所述变量s中提取1以上的整数t比特作为认证码t。

发明效果

在本发明中,能够由块加密的加密函数e和异或xor构成认证加密算法。此外,作为内部变量的变量s的大小为n比特。因此,能够使安装大小与认证加密算法jambu相同,并且使内部变量的大小小于认证加密算法jambu。

附图说明

图1是实施方式1的加密装置10的结构图。

图2是实施方式1的解密装置20的结构图。

图3是示出实施方式1的加密装置10的动作的流程图。

图4是实施方式1的加密装置10的动作的说明图。

图5是示出实施方式1的解密装置20的动作的流程图。

图6是实施方式1的解密装置20的动作的说明图。

图7是变形例1的加密装置10的结构图。

图8是变形例1的解密装置20的结构图。

图9是实施方式2的加密装置10的结构图。

图10是实施方式2的解密装置20的结构图。

图11是示出实施方式2的加密装置10和解密装置20的动作的流程图。

图12是实施方式2的加密装置10和解密装置20的动作的说明图。

具体实施方式

实施方式1

在实施方式1中,对使用块大小n的块加密的加密函数e构成的认证加密算法进行说明。

***变量和记法的说明***

对以下的说明中的变量和记法进行说明。

整数b、整数c、整数b”和整数c”满足c=n-b、c”=n-b”的关系。此外,整数t满足t≦n的关系。

设整数x的y比特表现为str[y](x)。例如,str[4](2)=0010。设n比特的比特串z的高位w比特为msb[w](z),低位w比特为lsb[w](z)。设比特串w的比特长度为len(w)。

const[1]、const[2]和const[3]是非零的整数,是全部不同的值。

***结构的说明***

参照图1对实施方式1的加密装置10的结构进行说明。

加密装置10具有处理器11、内存12、存储器13和通信接口14这样的硬件。处理器11经由信号线而与其他硬件连接,对这些其他硬件进行控制。

作为功能结构要素,加密装置10具有受理部111、分割部112、变量设定部113、函数计算部114、认证码生成部115、密文生成部116和输出部117。加密装置10的各功能结构要素的功能通过软件实现。

在存储器13中存储有实现加密装置10的各功能结构要素的功能的程序。该程序由处理器11读入到内存12,由处理器11执行。由此,实现加密装置10的各功能结构要素的功能。

参照图2对实施方式1的解密装置20的结构进行说明。

解密装置20具有处理器21、内存22、存储器23和通信接口24这样的硬件。处理器21经由信号线而与其他硬件连接,对这些其他硬件进行控制。

作为功能结构要素,解密装置20具有受理部211、分割部212、变量设定部213、函数计算部214、认证码生成部215、消息生成部216和输出部217。解密装置20的各功能结构要素的功能通过软件实现。

在存储器23中存储有实现解密装置20的各功能结构要素的功能的程序。该程序由处理器21读入到内存22,由处理器21执行。由此,实现解密装置20的各功能结构要素的功能。

处理器11、21是进行处理的ic(integratedcircuit:集成电路)。作为具体例,处理器11、21是cpu(centralprocessingunit:中央处理单元)、dsp(digitalsignalprocessor:数字信号处理器)、gpu(graphicsprocessingunit:图形处理单元)。

内存12、22是暂时存储数据的存储装置。作为具体例,内存12、22是sram(staticrandomaccessmemory:静态随机存取存储器)、dram(dynamicrandomaccessmemoryy:动态随机存取存储器)。

存储器13、23是保管数据的存储装置。作为具体例,存储器13、23是hdd(harddiskdrive:硬盘驱动器)。此外,存储器13、23也可以是sd(securedigital:安全数字)存储卡、cf(compactflash、注册商标)、nand闪存、软盘、光盘、高密度盘、蓝光(注册商标)盘、dvd(digitalversatiledisk:数字多功能盘)这样的移动存储介质。

通信接口14、24是用于与外部装置进行通信的接口。作为具体例,通信接口14、24是ethernet(注册商标)、usb(universalserialbus:通用串行总线)、hdmi(注册商标、high-definitionmultimediainterface:高清晰度多媒体接口)的端口。

***动作的说明***

参照图3~图6对实施方式1的加密装置10和解密装置20的动作进行说明。

实施方式1的加密装置10的动作相当于实施方式1的加密方法。此外,实施方式1的加密装置10的动作相当于实施方式1的加密程序的处理。

实施方式1的解密装置20的动作相当于实施方式1的解密方法。此外,实施方式1的解密装置20的动作相当于实施方式1的解密程序的处理。

参照图3和图4对实施方式1的加密装置10的动作进行说明。

(步骤s11:受理处理)

受理部111受理作为加密对象的消息m的输入。

具体而言,受理部111经由通信接口14接收由利用者对输入装置进行操作而输入的消息m。

(步骤s12:分割处理)

分割部112判定在步骤s11中受理的消息m的长度len(m)是否是b比特的倍数。在长度len(m)不是b比特的倍数的情况下,在消息m之后附加1,进而在后面附加0的比特串,生成数据m*,以使长度len(m)成为b比特的倍数。另一方面,在长度len(m)是b比特的倍数的情况下,将消息m作为数据m*进行处理。

分割部112从开头起按照每b比特对数据m*进行分割,生成数据m[1],...,数据m[m]。“m”是1以上的整数。

(步骤s13:变量设定处理)

变量设定部113将n比特的数据s0和对b”比特的初始参数n连结c”比特的常数const[1]而成的数据y作为输入来计算所述异或,将计算该异或而得到的数据设定为加密装置10的内部的变量s。即,变量设定部113计算s=s0xor(n||const[1])。

在实施方式1中,数据s0是固定数据iv。加密装置10的内部的变量s是加密装置10的内存12中存储的变量。

(步骤s14:函数计算处理)

函数计算部114针对i=1,...,m的各整数i,按照升序执行以下的处理a~处理c。

(处理a)

函数计算部114将变量s和密钥k作为输入来计算块加密的加密函数e,将计算该块加密的加密函数e而得到的数据设定为变量s,由此对变量s进行更新。这里,密钥k事前在加密装置10与解密装置20之间共享。

即,函数计算部114计算s=ek(s)。

(处理b)

函数计算部114将在处理a中更新后的变量s和对数据m[i]附加c比特的比特串而成的数据x[i]作为输入来计算异或,将计算该异或而得到的数据设定为变量s,由此对变量s进行更新。这里,函数计算部114使用在数据m[i]的后面附加c比特0而成的数据x[i]。

即,函数计算部114计算s=sxor(m[i]||0c)。

(处理c)

函数计算部114从在处理b中更新后的变量s中提取b比特,生成数据c[i]。这里,函数计算部114提取变量s的高位b比特,生成数据c[i]。

即,函数计算部114计算c[i]=msb[b](s)。

(步骤s15:认证码生成处理)

认证码生成部115在消息m的长度是b比特的倍数的情况下,将在步骤s14中计算出的变量s和常数const[2]作为输入来计算异或,将计算该异或而得到的数据设定为变量s,由此对变量s进行更新。这里,认证码生成部115将变量s和在表现c比特的常数const[2]的比特串的前面附加b比特0而成的数据作为输入来计算异或。即,认证码生成部115计算s=sxor(0b||str[c](const[2]))。

另一方面,认证码生成部115在消息m的长度不是b比特的倍数的情况下,将在步骤s14中计算出的变量s和常数const[3]作为输入来计算异或,将计算该异或而得到的数据设定为变量s,由此对变量s进行更新。这里,认证码生成部115将变量s和在表现c比特的常数const[3]的比特串的前面附加b比特0而成的数据作为输入来计算异或。即,认证码生成部115计算s=sxor(0b||str[c](const[3]))。

认证码生成部115将更新后的变量s作为输入来计算加密函数e,将计算该加密函数e而得到的数据设定为变量s,由此对变量s进行更新。即,认证码生成部115计算s=ek(s)。

然后,认证码生成部115从更新后的变量s中提取t比特作为认证码t。这里,认证码生成部115从变量s中提取高位t比特,生成认证码t。即,认证码生成部115计算t=msb[t](s)。

(步骤s16:密文生成处理)

密文生成部116连结在步骤s14中计算出的与i=1,...,m的各整数i有关的数据c[i]。密文生成部116从连结后的数据中仅提取高位的消息m的长度len(m)比特,生成对消息m进行加密而成的密文c。

即,密文生成部116计算c=msb[len(m)](c[1]||...||c[m-1]||c[m])。

(步骤s17:输出处理)

输出部117输出在步骤s15中计算出的认证码t和在步骤s16中生成的密文c。

具体而言,输出部117经由通信接口14向解密装置20发送认证码t和密文c。

参照图5和图6对实施方式1的解密装置20的动作进行说明。

(步骤s21:受理处理)

受理部211受理认证码t和密文c的输入。

具体而言,受理部111经由通信接口24接收加密装置10发送的认证码t和密文c。

(步骤s22:分割处理)

分割部212从开头起按照每b比特对在步骤s21中受理的密文c进行分割,生成数据c[1],...,数据c[m]。

在密文c的长度len(c)不是b比特的倍数的情况下,数据c[m]的长度len(c[m])比b比特短,在长度len(c)是b比特的倍数的情况下,长度len(c[m])成为b比特。

(步骤s23:变量设定处理)

变量设定部213将n比特的数据s0和对b”比特的初始参数n连结c”比特的常数const[1]而成的数据y作为输入来计算异或,将计算该异或而得到的数据设定为解密装置20的内部的变量s。即,变量设定部213计算s=s0xor(n||const[1])。

在实施方式1中,数据s0是固定值iv。这里设定的数据s0是与在图3的步骤s13中设定的数据s0相同的数据。解密装置20的内部的变量s是解密装置20的内存22中存储的变量。

(步骤s24:函数计算处理)

函数计算部214针对i=1,...,m-1的各整数i,按照升序执行以下的处理a’~处理c’。然后,函数计算部214执行处理d’~处理e’。

(处理a’)

函数计算部214将变量s和密钥k作为输入来计算块加密的加密函数e,将计算该块加密的加密函数e而得到的数据设定为变量s,由此对变量s进行更新。这里,密钥k事前在加密装置10与解密装置20之间共享。

即,函数计算部214计算s=ek(s)。

(处理b’)

函数计算部214将从在处理a’中更新后的变量s中提取出的b比特和数据c[i]作为输入来计算异或,计算数据m[i]。这里,函数计算部214提取在处理a’中更新后的变量s的高位b比特,将提取出的数据和数据c[i]作为输入来计算异或。

即,函数计算部214计算m[i]=c[i]xormsb[b](s)。

(处理c’)

函数计算部214将在处理a’中更新后的变量s和对数据m[i]附加c比特的比特串而成的数据x[i]作为输入来计算异或,将计算该异或而得到的数据设定为变量s,由此对变量s进行更新。这里,函数计算部214使用在数据m[i]的后面附加c比特0而成的数据x[i]。

即,函数计算部214计算s=sxor(m[i]||0c)。

(处理d’)

函数计算部214将从在处理a’中更新后的变量s的开头提取出的长度len(c[m])比特和数据c[m]作为输入来计算异或,计算数据m[m]。

即,函数计算部214计算m[m]=c[m]xormsb[len(c[m])](s)。

(处理e’)

函数计算部214在处理d’中生成的数据m[m]的长度len(m[m])比b比特短的情况下,在数据m[m]的后面附加1,进而在后面附加0的比特串,生成数据m*[m],以使长度len(m[m])成为b比特。另一方面,在长度len(m[m])为b比特的情况下,将数据m[m]作为数据m*[m]进行处理。

然后,函数计算部214将在处理c’中更新后的变量s和对数据m*[m]附加c比特的比特串而成的数据x[m]作为输入来计算异或,将计算该异或而得到的数据设定为变量s,由此对变量s进行更新。这里,函数计算部214使用在数据m*[m]的后面附加c比特0而成的数据x[m]。

即,函数计算部214计算s=sxor(m*[m]||0c)。

(步骤s25:认证码生成处理)

认证码生成部215在密文c的长度是b比特的倍数的情况下,将在步骤s24中计算出的变量s和常数const[2]作为输入来计算异或,将计算该异或而得到的数据设定为变量s,由此对变量s进行更新。这里,认证码生成部215将变量s和在表现c比特的常数const[2]的比特串的前面附加b比特0而成的数据作为输入来计算异或。即,认证码生成部215计算s=sxor(0b||str[c](const[2]))。

另一方面,认证码生成部215在密文c的长度不是b比特的倍数的情况下,将在步骤s24中计算出的变量s和常数const[3]作为输入来计算异或,将计算该异或而得到的数据设定为变量s,由此对变量s进行更新。这里,认证码生成部215将变量s和在表现c比特的常数const[3]的比特串的前面附加b比特0而成的数据作为输入来计算异或。即,认证码生成部215计算s=sxor(0b||str[c](const[3]))。

认证码生成部215将更新后的变量s作为输入来计算加密函数e,将计算该加密函数e而得到的数据设定为变量s,由此对变量s进行更新。即,认证码生成部215计算s=ek(s)。

然后,认证码生成部215从更新后的变量s中提取t比特作为认证码t’。这里,认证码生成部215从变量s中提取高位t比特,生成认证码t’。即,认证码生成部215计算t=msb[t](s)。

(步骤s26:消息生成处理)

消息生成部216连结在步骤s24中计算出的与i=1,...,m的各整数i有关的数据m[i]。密文生成部116从连结后的数据中仅提取高位的密文c的长度len(c)比特,生成对密文c进行解密而成的消息m。

即,密文生成部116计算m=msb[len(c)](m[1]||...||m[m-1]||m[m])。

(步骤s27:输出处理)

当在步骤s21中受理的认证码t和在步骤s26中计算出的认证码t’一致的情况下,输出部217输出在步骤s26中生成的消息m。具体而言,输出部217经由通信接口24向显示装置等发送消息m。

另一方面,当在步骤s21中受理的认证码t和在步骤s26中计算出的认证码t’不一致的情况下,输出部217输出表示认证码t和认证码t’不一致的消息。

***实施方式1的效果***

如上所述,实施方式1的加密装置10和解密装置20不使用块加密的解密函数,就能够由块加密的加密函数e和异或xor构成认证加密算法。此外,作为内部变量的变量s的大小为n比特。因此,能够使安装大小与认证加密算法jambu相同,并且使内部变量的大小小于认证加密算法jambu。

***其他结构***

<变形例1>

在实施方式1中,加密装置10和解密装置20的各功能结构要素的功能通过软件实现。但是,作为变形例1,加密装置10和解密装置20的各功能结构要素的功能也可以通过硬件实现。关于该变形例1,对与实施方式1不同之处进行说明。

参照图7对变形例1的加密装置10的结构进行说明。

在各功能结构要素的功能通过硬件实现的情况下,加密装置10具有电子电路15以代替处理器11、内存12和存储器13。电子电路15是实现加密装置10的各部的功能以及内存12和存储器13的功能的专用电子电路。

参照图8对变形例1的解密装置20的结构进行说明。

在各功能结构要素的功能通过硬件实现的情况下,解密装置20具有电子电路25以代替处理器21、内存22和存储器23。电子电路25是实现解密装置20的各部的功能以及内存22和存储器23的功能的专用电子电路。

假设电子电路15、25为单一电路、复合电路、程序化的处理器、并行程序化的处理器、逻辑ic、ga(gatearray:门阵列)、asic(applicationspecificintegratedcircuit:面向特定用途的集成电路)、fpga(field-programmablegatearray:现场可编程门阵列)。

可以利用1个电子电路15实现加密装置10的各部的功能,也可以使多个电子电路15分散实现加密装置10的各部的功能。同样,可以利用1个电子电路25实现解密装置20的各部的功能,也可以使多个电子电路25分散实现解密装置20的各部的功能。

<变形例2>

作为变形例2,也可以一部分功能通过硬件实现,其他功能通过软件实现。即,也可以是,加密装置10的各功能结构要素中的一部分功能通过硬件实现,其他功能通过软件实现。同样,关于解密装置20,也可以是,各功能结构要素中的一部分功能通过硬件实现,其他功能通过软件实现。

将处理器11、21、内存12、22、存储器13、23和电子电路15、25称作处理电路。即,加密装置10和解密装置20的各部的功能通过处理电路实现。

实施方式2

在实施方式2中,具有公开数据a这点与实施方式1不同。在实施方式2中,对该不同之处进行说明,省略相同之处的说明。

***变量和记法的说明***

整数b’和整数c’满足c’=n-b’的关系。

const[4]和const[5]是不同的值。此外,const[4]和const[5]是与const[1]不同的值。

***结构的说明***

参照图9对实施方式2的加密装置10的结构进行说明。

关于加密装置10,作为功能结构要素,具有事前计算部118这点与图1所示的加密装置10不同。与其他功能结构要素同样,事前计算部118通过软件或硬件实现。

参照图10对实施方式2的解密装置20的结构进行说明。

关于解密装置20,作为功能结构要素,具有事前计算部218这点与图2所示的解密装置20不同。与其他功能结构要素同样,事前计算部218通过软件或硬件实现。

***动作的说明***

参照图11~图12对实施方式2的加密装置10和解密装置20的动作进行说明。

实施方式2的加密装置10的动作相当于实施方式2的加密方法。此外,实施方式2的加密装置10的动作相当于实施方式2的加密程序的处理。

实施方式2的解密装置20的动作相当于实施方式2的解密方法。此外,实施方式2的解密装置20的动作相当于实施方式2的解密程序的处理。

参照图11和图12对实施方式2的加密装置10和解密装置20的动作进行说明。

加密装置10在执行了图11所示的处理后,执行图3所示的处理。具体而言,加密装置10将在图11的处理e”中计算出的变量s设为图3的步骤s13中的数据s0,执行图3所示的处理。

同样,解密装置20在执行了图11所示的处理后,执行图5所示的处理。具体而言,解密装置20将在图11的处理e”中计算出的变量s设为图5的步骤s23中的数据s0,执行图5所示的处理。

在以下的说明中,对加密装置10执行图11所示的处理的情况进行说明。在解密装置20执行图11所示的处理的情况下,将受理部111、分割部112、事前计算部118和通信接口14改写成受理部211、分割部212、事前计算部218和通信接口24即可。

(步骤s31:受理处理)

受理部111受理公开数据a的输入。

具体而言,受理部111经由通信接口14接收由利用者对输入装置进行操作而输入的公开数据a。受理部111也可以从外部的服务器等取得公开数据a。

(步骤s32:分割处理)

分割部112判定在步骤s31中受理的公开数据a的长度len(a)是否是b’比特的倍数。在长度len(a)不是b’比特的倍数的情况下,在公开数据a的后面附加1,进而在后面附加0的比特串,生成数据a*,以使长度len(a)成为b’比特的倍数。另一方面,在长度len(a)是b’比特的倍数的情况下,将公开数据a作为数据a*进行处理。

分割部112按照每b’比特对在步骤s31中受理的公开数据a进行分割,生成b’比特的数据a[1],...,数据a[a]。“a”是1以上的整数。

(步骤s33:变量设定处理)

变量设定部113将n比特的固定数据iv设定为加密装置10的内部的变量s。固定数据iv是低位c’比特与const[1]、const[2]、const[3]、const[4]和const[5]不同的数据。

(步骤s34:事前计算处理)

事前计算部118针对i=1,...,a-1的各整数i,按照升序执行以下的处理a”~处理b”。然后,执行处理c”~处理e”。

(处理a”)

事前计算部118将变量s和对数据a[i]附加c’比特的比特串而成的数据x*[i]作为输入来计算异或,将计算该异或而得到的数据设定为变量s,由此对变量s进行更新。这里,事前计算部118使用在数据a[i]的后面附加c’比特0而成的数据x*[i]。

即,事前计算部118计算s=sxor(a[i]||0c’)。

(处理b”)

事前计算部118将在处理a”中更新后的变量s和密钥k作为输入来计算加密函数e,将计算该加密函数e而得到的数据设定为变量s,由此对变量s进行更新。

即,事前计算部118计算s=ek(s)。

(处理c”)

事前计算部118将变量s和对数据a[a]附加c’比特的比特串而成的数据x*[a]作为输入来计算异或,将计算该异或而得到的数据设定为变量s,由此对变量s进行更新。这里,事前计算部118使用在数据a[a]的后面附加c’比特0而成的数据x*[a]。

即,事前计算部118计算s=sxor(a[a]||0c’)。

(处理d”)

事前计算部118在公开数据a的长度是b’比特的倍数的情况下,将在处理b”中计算出的变量s和常数const[4]作为输入来计算异或,将计算该异或而得到的数据设定为变量s,由此对变量s进行更新。这里,事前计算部118将变量s和在表现c’比特的常数const[4]的比特串的前面附加b’比特0而成的数据作为输入来计算异或。即,事前计算部118计算s=sxor(0b’||str[c’](const[4]))。

另一方面,事前计算部118在公开数据a的长度不是b’比特的倍数的情况下,将在处理b”中计算出的变量s和常数const[5]作为输入来计算异或,将计算该异或而得到的数据设定为变量s,由此对变量s进行更新。这里,事前计算部118将变量s和在表现c’比特的常数const[5]的比特串的前面附加b’比特0而成的数据作为输入来计算异或。即,事前计算部118计算s=sxor(0b’||str[c’](const[5]))。

(处理e”)

事前计算部118将在处理d”中更新后的变量s作为输入来计算加密函数e,将计算该加密函数e而得到的数据设定为变量s,由此对变量s进行更新。即,事前计算部118计算s=ek(s)。

***实施方式2的效果***

如上所述,实施方式2的加密装置10和解密装置20在具有公开数据a的情况下,也不使用块加密的解密函数,就能够由块加密的加密函数e和异或xor构成认证加密算法。此外,作为内部变量的变量s的大小为n比特。因此,能够使安装大小与认证加密算法jambu相同,并且使内部变量的大小小于认证加密算法jambu。

对固定数据iv、const[1]、const[2]、const[3]、const[4]和const[5]的例子进行说明。例如,固定数据iv=0n、const[1]=3、const[2]=1、const[3]=2、const[4]=1、const[5]=2。该情况下,整数c’≧3且整数c”≧3即可。

整数c的值考虑安全性来决定。在实施方式1、2中说明的认证加密算法在加密函数enc中调出的块加密的加密函数e的次数超过2n/2次、或解密函数dec中验证失败时调出的块加密的加密函数e的次数超过2c之前,能够确保安全性。在调出的块加密的加密函数e的次数超过这些次数的情况下,为了确保安全性,需要更换密钥k。

例如,在将解密函数dec中验证失败时调出的块加密的加密函数e的次数限制为216的情况下,整数c的最小值成为16。

标号说明

10:加密装置;11:处理器;12:内存;13:存储器;14:通信接口;15:电子电路;111:受理部;112:分割部;113:变量设定部;114:函数计算部;115:认证码生成部;116:密文生成部;117:输出部;118:事前计算部;20:解密装置;21:处理器;22:内存;23:存储器;24:通信接口;25:电子电路;211:受理部;212:分割部;213:变量设定部;214:函数计算部;215:认证码生成部;216:消息生成部;217:输出部;218:事前计算部。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1