CN109670320B - 加密设备和解密设备、以及其操作方法 - Google Patents
加密设备和解密设备、以及其操作方法 Download PDFInfo
- Publication number
- CN109670320B CN109670320B CN201811197240.XA CN201811197240A CN109670320B CN 109670320 B CN109670320 B CN 109670320B CN 201811197240 A CN201811197240 A CN 201811197240A CN 109670320 B CN109670320 B CN 109670320B
- Authority
- CN
- China
- Prior art keywords
- data
- bits
- round
- bit
- decryption
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
用于解密通过使用块级加密算法加密的N*X位(其中N和X是正整数)的输入数据的装置的操作方法,包括:接收输入数据并将输入数据解码成其数量不同于N*X位的数量的N*Y位(其中Y是正整数)的数据;对N*Y位的数据执行块级加密算法的第一解密操作处理;将对其执行第一解密操作处理的N*Y位的数据编码成N*X位的中间轮数据;以及基于N*X位的中间轮数据执行预设数量的多个中间***作。
Description
相关申请的交叉引用
本申请要求于2017年10月13日和2018年6月4日分别在韩国知识产权局提交的韩国专利申请第10-2017-0133471号和第10-2018-0064477号的权益,其公开内容通过引用整体并入本文。
技术领域
本发明构思涉及加密/解密设备以及其操作方法,更具体地,涉及用于根据块执行加密/解密算法的加密/解密设备,以及该加密/解密设备的操作方法。
背景技术
随着通信技术和信息处理技术的进步,攻击者的能力得到提高,对安全密码加密***的需求增加了。在当假设密码加密算法在其上操作的终端和使用该终端的用户是可信任的时,即使当密码加密算法被公开时,如果加密密钥没有被暴露,获得密文的攻击者也不能解密密文的前提下,已经开发了一种密码加密算法。然而,在实际环境中,参与通信的用户可能直接成为攻击者并且可能将加密密钥泄露给第三方。并且,安装在终端中的恶意软件可能成为攻击者,并且可以通过使用密文、解密的明文或保留在存储器中的密文以及加密密钥本身的中间计算来提取加密密钥。
作为该问题的解决方案,白盒密码加密已成为用于保护软件和内容以及防止非法泄露的核心技术。在白盒密码加密中,由于加密密钥被隐藏在软件中的算法中,所以执行密码加密算法的过程中的中间操作值和加密密钥不会被直接暴露。也就是说,在白盒密码加密中,由于加密算法被改变为查找表并且加密密钥被隐藏到查找表中,因此即使攻击者监视加密密钥过程,攻击者也不能导出实际的加密密钥。
发明内容
本发明构思涉及加密设备、解密设备及其操作方法,并且提供了根据加密算法在操作处理之前和之后执行编码操作和解码操作的加密设备和解密设备的操作方法。
根据本发明构思的一个方面,提供了用于解密基于块级加密算法加密的N*X位(其中N和X是正整数)的输入数据的装置,该装置包括:加密/解密控制器,包括被配置为存储输入数据的状态缓冲器;以及数据功能模块,被配置为基于输入数据顺序地执行:执行第一解密操作处理的最终***作、执行第二解密操作处理的多个中间***作以及执行第三解密操作处理的初始***作,其中,数据功能模块还被配置为将输入数据解码成其数量不同于N*X位数量的N*Y位的数据,基于N*Y位(其中Y是正整数)的数据执行第一解密操作处理,并且将对其执行第一解密操作处理的N*Y位的数据编码成N*X位的中间轮数据。
根据本发明构思的另一方面,提供了加密/解密设备的操作方法,该操作方法包括:加密/解密设备的接口接收基于块级加密算法加密的N*X位(其中N和X是正整数)的输入数据;将N*X位的输入数据解码成其数量不同于N*X位数量的N*Y位(其中Y是正整数)的数据;对N*Y位的数据执行块级加密算法的第一解密操作处理;将对其执行第一解密操作处理的N*Y位的数据编码成N*X位的中间轮数据;以及对N*X位的中间轮数据执行块级加密算法的多个中间解密***作。
根据本发明构思的又一方面,提供了用于解密通过使用块级加密算法加密的N*X位(其中N和X是正整数)的输入数据的装置的操作方法,该操作方法包括:接收输入数据并将输入数据解码成其数量不同于N*X位数量的N*Y位(其中Y是正整数)的数据;对N*Y位的数据进行块级加密算法的第一解密操作处理;将对其执行第一解密操作处理的N*Y位的数据编码成N*X位的中间轮数据;以及基于N*X位的中间轮数据执行预设数量的多个中间***作。
根据本发明构思的再一方面,提供了装置,该装置包括:被配置为接收基于块级加密算法加密的N*X位(其中N和X是正整数)的输入数据的接口;和加密/解密设备。加密/解密设备包括:被配置为存储输入数据的状态缓冲器,以及数据功能模块。数据功能模块被配置为基于输入数据顺序地执行:对输入数据执行第一解密操作处理的最终***作、对从最终***作输出的最终轮数据执行第二解密操作处理的多个中间***作、以及对从多个中间***作输出的中间轮数据执行第三解密操作处理的初始***作。数据功能模块还被配置为将输入数据解码成其数量不同于N*X位数量的N*Y位(其中Y是正整数)的最终轮数据,对N*Y位的最终轮数据执行第一解密操作处理,并将对其执行第一解密操作处理的N*Y位的最终轮数据编码成N*X位的中间轮数据。输入数据从块级加密算法输出,该算法顺序地执行初始***作的逆、中间***作的多个逆和最终***作的逆。
附图说明
从以下结合附图的详细描述中,将更清楚地理解本发明构思的实施例。
图1是用于描述对块级输入数据进行操作的解密算法的实施例的图。
图2是装置的实施例的框图。
图3是加密/解密设备的实施例的详细框图。
图4是用于描述加密/解密设备的操作方法的实施例的图。
图5A、图5B、图5C和图5D是用于描述最终***作的实施例的详细图。
图6A和图6B是用于描述中间***作的实施例的详细图。
图7A和图7B是用于描述用于一个或多个中间***作的编码操作和解码操作的实施例的图;
图8是用于描述初始***作的实施例的详细流程图。
图9A是示出在最终***作的实施例中生成的表的概念图。
图9B是用于描述在图9A的编码操作中执行的XOR运算的概念图。
图10是示出在中间***作的实施例中生成的表的概念图。
图11是示出在初始***作的实施例中生成的表的概念图。
图12A、图12B和图12C是用于描述加密/解密设备的操作方法的实施例的图。
图13是存储器卡的实施例的框图。
具体实施方式
现在将参考附图更全面地描述本发明构思,附图中示出了实施例。
图1是用于描述对块级输入数据进行操作的解密算法的实施例的图。
参照图1,根据解密算法的解密操作可以以最终***作S10、一个或多个中间***作S20以及最终地最初***作S30的顺序来执行。可以以与块级加密算法的顺序相反的顺序对基于块级加密算法加密的输入数据执行解密算法。并且,解密算法的一些操作处理可以与块级加密算法的对应操作处理相反。也就是说,块级加密算法可以以初始***作(与S30相反)、然后(多个)中间***作(与S20相反)以及最终地最终***作(与S10相反)的顺序执行。
在图1的解密操作中,首先可以通过使用子密钥Subkey_10对数据E_DT执行最终***作S10,该数据E_DT是被加载到状态缓冲器STB的块级数据。对其执行最终***作S10的数据E_DT可以是128位数据。然而,这仅是为了便于解释的示例,并且实施例不限于此。当数据E_DT是128位数据,即16字节数据时,数据E_DT可以作为4×4矩阵输入。4×4矩阵的每个分量可以对应于16字节数据的一个字节。接下来,可以顺序地执行使用子密钥Subkey_i的(多个)中间***作S20和使用子密钥Subkey_0的初始***作S30。这里,中间***作S20包括九轮,其从第九轮到第一轮顺序地执行。尽管为了便于解释,在本示例中,中间***作S20和初始***作S30中的轮的总数是10,但是这仅是示例并且实施例不限于此。
在最终***作S10、(多个)中间***作S20、和初始***作S30中,要***作的数据E_DT的每个字节可以分别与子密钥Subkey_10、Subkey_i和Subkey_0组合。最终***作S10、中间***作S20、和初始***作S30中的子密钥Subkey_10、Subkey_i和Subkey_0中的每一个的大小可以与数据E_DT的大小相同。可以通过基于例如密钥调度算法处理加密密钥来生成子密钥Subkey_10、Subkey_i和Subkey_0。通过***作S10至S30中的每一个解密的数据可以是128位数据。
图2是装置1的实施例的框图。
参照图2,装置1可以包括加密/解密设备10、处理器20、接口(interface,I/F)30和存储器40。装置1可以例如经由IF 30向/从外部装置发送/接收数据DT。例如,装置1可以向/从智能卡、存储器卡、或其他设备发送/接收数据DT。虽然装置1的示例可以包括智能手机、个人数字助理(personal digital assistant,PDA)、平板手机、台式个人计算机(personalcomputer,PC)、膝上型PC、平板PC、服务器、传感器、可穿戴设备(例如,智能眼镜或头戴式设备(head-mounted device,HMD))、电子服装、电子手镯、电子项链、智能镜和智能手表,但装置1不限于此,并且只要装置1具有数据加密功能,装置1可以具有任何名称或形式。
处理器20可以通过I/F 30向/从装置1的外部发送/接收数据DT。处理器20可以执行任务并且可以将任务的结果存储在存储器40中。处理器20可以包括来自中央处理单元(central processing unit,CPU)、应用处理器(application processor,AP)和通信处理器(communication processor,CP)当中的至少一个。并且,处理器20可以包括多个核。
存储器40可以存储操作处理器20所需的各种数据。存储器40可以被实施为例如动态随机存取存储器(dynamic random-access memory,DRAM)、移动DRAM、静态RAM(staticRAM,SRAM)、相变RAM(phase-change RAM,PRAM)、铁电RAM(ferroelectric RAM,FRAM)、电阻式RAM(resistive RAM,RRAM或ReRAM)、和/或磁性RAM(magnetic RAM,MRAM)。
加密/解密设备10可以加密和/或解密从装置1的外部接收的数据DT。加密/解密设备10可以通过基于加密算法执行加密操作和/或解密操作来维护数据DT的安全性。加密算法可以是例如通过使用加密密钥生成加密数据的算法。加密算法可以包括各种算法中的任何一种,诸如消息摘要算法(message-digest algorithm,MD5)、安全散列算法(securehash algorithm,SHA)、Rivest-Shamir-Adleman(RSA)、高级加密标准(advancedencryption standard,AES)或数据加密标准(data encryption standard,DES)。
尽管在本实施例中,加密/解密设备10被包括在装置1中,但是这仅仅是示例,并且实施例不限于此。例如,可以基于处理器20和存储器40来实施执行加密/解密设备10的操作方法的加密/解密模块。加密/解密模块可以包括用于执行加密或解密操作的程序、例程、指令集或进程。术语“模块”可以指例如包括从硬件、软件和固件当中的一个或多个的单元。“模块”可以与诸如单元、逻辑、逻辑块、组件或电路的术语互换地使用。“模块”可以是集成组件的部分或最小单元。“模块”可以是用于执行一个或多个功能的部分或最小单元。
图3是加密/解密设备的实施例的详细框图。例如,图3是加密/解密设备10的详细框图。
参照图3,加密/解密设备10可以包括加密/解密控制器110、密钥调度器120和数据功能模块130。加密/解密控制器110可以控制加密/解密设备10的总体操作。例如,加密/解密控制器110可以控制密钥调度器120处理加密密钥和/或输出处理后的加密密钥。并且,加密/解密控制器110可以控制数据功能模块130基于加密密钥对输入数据DT执行加密/解密操作。
加密/解密控制器110可以包括状态缓冲器STB。状态缓冲器STB可以存储作为输入数据的数据DT和/或通过每***作导出的数据。
例如,在解密操作期间,存储在状态缓冲器STB中的数据DT可以被应用于数据功能模块130,并且可以基于数据DT执行最终***作。可以根据基于数据DT的最终***作导出中间轮数据,并且可以将中间轮数据更新到状态缓冲器STB。并且,可以将中间轮数据再次应用于数据功能模块130,并且可以基于中间轮数据执行多个中间***作。可以根据基于中间轮数据的多个中间***作导出中间轮数据,并且可以将中间轮数据更新到状态缓冲器STB。并且,可以将中间轮数据再次应用于数据功能模块130,并且可以基于中间轮数据执行初始***作。可以根据基于中间轮数据的初始***作导出解密数据,并且可以将解密数据更新到状态缓冲器STB。
尽管未在图3中示出,但是加密/解密控制器110可以包括存储用于加密或解密算法操作的加密密钥的多个寄存器。换句话说,加密/解密控制器110可以包括基于执行哪一***作来存储加密密钥的寄存器。例如,加密/解密控制器110可以将预处理的加密密钥存储在寄存器中,并且可以将预处理的加密密钥传送到密钥调度器120。并且,加密/解密控制器110可以接收由密钥调度器120处理的加密密钥(例如,子密钥),并且可以将加密密钥更新到寄存器。
密钥调度器120可以根据每***作来处理所需的加密密钥。在实施例中,密钥调度器120可以接收存储在寄存器中的加密密钥,并且可以根据每***作基于预设规则处理加密密钥。在处理加密密钥之后,密钥调度器120可以将处理后的加密密钥传送到数据功能模块130。并且,密钥调度器120可以将处理后的加密密钥传送到加密/解密控制器110,使得将处理后的加密密钥更新到提供预处理的加密密钥的寄存器。处理后的加密密钥可以被称为例如子密钥。
数据功能模块130可以基于处理后的加密密钥对数据DT执行加密/解密操作。数据功能模块130可以通过例如基于加密密钥重新排列数据DT的位的置换(permutation)来执行加密/解密操作。可替换地,数据功能模块130可以通过基于加密密钥用映射的数据代替数据DT的替代来执行加密操作。数据功能模块130可以将在加密操作之后获得的映射的数据更新到状态缓冲器STB。
在解密操作期间,数据功能模块130可以对加密的输入数据执行最终***作、多个中间***作、和初始***作。最终***作、多个中间***作、和初始***作中的每一个可以根据解密算法执行操作处理。例如,操作处理可以包括从轮密钥加操作(AddRoundKey,ARK)、逆行移位操作(Inverse ShiftRows,ISR)、逆字节替换操作(Inverse SubBytes,ISB)和逆列混合(Inverse Mixcolumns,IMC)当中的至少一个操作。可替换地,在加密操作期间,操作处理可以包括从轮密钥加操作、行移位操作、字节替换操作和列混合操作当中的至少一个操作。
在实施例中,在最终***作期间,数据功能模块130可以将接收到的N*X位(其中N和X都是正整数的数据)转换成其数量不同于N*X位的数量的N*Y位(其中Y是正整数)的数据,并且可以对N*Y位的数据执行操作处理。并且,在实施例中,数据功能模块130可以将在中间***作期间接收的N*X位的数据转换成N*Y位的数据,并且可以对N*Y位的数据执行操作处理。并且,在实施例中,数据功能模块130可以将在初始***作期间接收的N*X位的数据转换成N*Y位的数据,并且可以对N*Y位的数据执行操作处理。
图4是用于描述加密/解密设备的实施例的操作方法的图。尽管为了便于解释,将集中于解密操作来描述加密/解密设备的操作,但是本文描述的技术概念可以适当地应用于加密操作。
参照图4,可以对作为被加载到状态缓冲器STB的块级数据的数据E_DTa顺序地执行最终***作S110、中间***作S120、和初始***作S130。在实施例中,数据E_DTa可以是N*X位(N和X是正整数)的数据。例如,当数据E_DTa是160位数据时,N可以是16并且X可以是10。并且,在这种情况下,数据E_DTa可以作为4×5矩阵被输入。当数据E_DTa是160位数据时,4×5矩阵的每个分量可以对应于20个字节当中的一个16位字节。
在最终***作S110中,可以执行解码操作S112、操作处理S114和编码操作S116。例如,当在最终***作S110中执行解码操作S112时,可以在执行解码操作S112之前在加密/解密设备外部执行取消解码操作S112的操作。尽管在图4中的最终***作S110中执行解码操作S112,但是这仅是示例,并且实施例不限于此。换句话说,在最终***作S110期间,加密/解密设备可以直接对来自状态缓冲器STB的N*Y位的数据执行操作处理S114。
在实施例中,可以通过解码操作S112将N*X位的数据E_DTa转换成其数量不同于N*X位数量的N*Y位的数据。N、X和Y可以是正整数,具体地,X可以是大于Y的正整数。在实施例中,X和Y可以具有等式1的关系:
(1)X=Y+a,(0<a≤Y)。
例如,解码操作S112可以通过将对数据E_DTa应用N个X位非线性函数和可以被表示为Y×X矩阵的N个线性函数,将N*X位的数据转换为N*Y位的数据,这将在下面详细描述。
在操作处理S114中,可以对N*Y位的数据执行根据解密算法的操作。例如,操作处理S114可以包括从轮密钥加操作、逆行移位操作、逆字节替换操作和逆列混合操作当中的至少一个操作。当在操作处理S114中执行轮密钥加操作时,可以基于子密钥Subkey_10执行轮密钥加操作。在这种情况下,由于操作处理S114是对N*Y位的数据执行的,所以子密钥Subkey_10也可以是N*Y位的密钥数据。例如,在轮密钥加操作中,可以在N*Y位的数据和N*Y位的密钥数据之间逐字节地执行XOR运算。
在实施例中,通过操作处理S114输出的N*Y位的数据可以通过编码操作S116被转换成N*X位的中间轮数据。中间轮数据可以指例如从最终***作S110输出并且输入到中间***作S120的数据。在实施例中,编码操作S116可以通过将N个X位非线性函数应用于通过操作处理S114输出的N*Y位的数据,将N*Y位的数据转换成N*X位的中间轮数据,这将在下面详细描述。
在中间***作S120中,可以重复地执行多***作。尽管在所示示例中,为了便于解释,中间***作S120被重复地执行9次,但是实施例不限于此。中间***作S120可以从初始化变量i到9的初始化操作S121开始。
初始化操作S121之后,N*X位的中间轮数据可以通过解码操作S122被转化成N*Y位的中间轮数据。中间轮数据可以指例如对其执行每个中间***作S120的操作处理S124的数据。
在实施例中,解码操作S122可以通过将N个X位非线性函数和可以被表示为Y×X矩阵的N个线性函数应用于N*X位的中间轮数据来将N*X位的中间轮数据转换成N*Y位的中间轮数据。中间***作S120中的第一中间***作(即轮9)的解码操作S122可以包括将N*X位的数据划分成N条X位数据,并且将非线性函数应用于N条X位数据中的每一个。在实施例中,非线性函数可以是在编码操作S116中使用的非线性函数的反函数。
在操作处理S124中,可以对N*Y位的中间轮数据执行根据解密算法的操作。例如,操作处理S124可以包括从轮密钥加操作、逆行移位操作、逆字节替换操作和逆列混合操作当中的至少一个操作。当在操作处理S124中执行轮密钥加操作时,可以基于子密钥Subkey_i执行轮密钥加操作。在这种情况下,由于操作处理S214是对N*Y位的轮数据执行的,所以子密钥Subkey_i也可以是N*Y位的密钥数据。可以通过N*Y位的数据和N*Y位的密钥数据之间的逐字节的XOR运算执行轮密钥加操作。
通过操作处理S124输出的N*Y位的中间轮数据可以通过编码操作S126被转换成N*X位的中间轮数据。编码操作S126可以通过将N条X位非线性函数应用于通过操作处理S124输出的N*Y位的轮数据,将N*Y位的中间轮数据转换成N*X位的中间轮数据。例如,编码操作S126可以包括通过应用(N*X)×(N*Y)矩阵操作将N*Y位的中间轮数据转换成N*X位的中间轮数据,将N*X位的数据划分成N条X位数据,以及将非线性函数应用于N条X位数据中的每一个。
在实施例中,在第i个中间***作中的编码操作期间应用的非线性函数可以与在第(i-1)个中间***作中的解码操作期间应用的非线性函数相反。然而,可以排除其中i=1的情况。例如,非线性函数可以在第9中间***作中的编码操作期间被应用于N*Y位的中间轮数据,并且与非线性函数相反的非线性函数可以在第9中间***作之后执行的第8中间***作中的解码操作期间被应用于N*X位的中间轮数据。因此,可以消除(cancel out)第i个中间***作中的编码操作和第(i-1)个中间***作中的解码操作。
在编码操作S126之后,可以在操作S128中确定变量i是否为1。当变量i不是1时,在操作S129中可以将i的值减小1并且可以再次执行解码操作S122。否则,当变量i为1时,中间***作S120可以结束并且初始***作S130可以开始。
在初始***作S130中,可以执行解码操作S132、操作处理S134和编码操作S136。例如,当在初始***作S130中执行编码操作S136时,可以在执行编码操作S130之前在加密/解密设备外部执行取消编码操作S136的操作。尽管在本实施例中在初始***作S130中执行编码操作S136,但是这仅是示例,并且实施例不限于此。换句话说,在初始***作S130期间,加密/解密设备可以直接输出N*Y位的数据。
在实施例中,在解码操作S132中,通过在从中间***作当中的最后中间***作(即具有为1的变量i的中间***作)的编码操作S126中获得的N*X位的中间轮数据可以被转换成N*Y位的初始轮数据。初始轮数据可以指基于其执行初始***作S130的操作处理S134的数据。
在实施例中,解码操作S132可以通过将N条X位非线性函数和可以被表示为Y×X矩阵的N个线性函数应用于N*X位的轮数据来将N*X位的轮数据转换成N*Y位的初始轮数据。例如,解码操作S132可以包括将N*X位的轮数据划分成N条X位数据,并且将非线性函数应用于N条X位数据中的每一个。在实施例中,在解码操作S132中使用的非线性函数可以与在中间***作当中的最后中间***作(即具有为1的变量i的中间***作)中的编码操作S126中使用的非线性函数相反。
在操作处理S134中,可以对N*Y位的初始轮数据执行根据解密算法的操作。例如,操作处理S134可以包括从轮密钥加操作、逆行移位操作、和逆字节替换操作当中的至少一个操作。当在操作处理S134中执行轮密钥加操作时,可以基于子密钥Subkey_0执行轮密钥加操作。在这种情况下,由于操作处理S134是对N*Y位的初始轮数据执行的,所以子密钥Subkey_0也可以是N*Y位的密钥数据。例如,在轮密钥加操作中,可以在N*Y位的数据和N*Y位的密钥数据之间逐字节地执行XOR运算。
根据实施例,当N*Y位的数据被加密/解密时,N*X位的数据可以被外部地移动,并且可以对N*X位的数据执行实际操作处理。换句话说,由于被输入和输出的解密数据(或加密数据)的位数可能与每***作期间的数据的位数不同,因此每***作的中间结果值的代数性质可以在解密数据(或加密数据)中改变。因此,第三方不可能知道每轮的内部操作,从而进一步改善了加密/解密设备的安全性。
图5A至图5D是用于描述最终***作的实施例的详细图。图5A是最终***作的详细流程图。图5B是用于描述输入数据的形成的概念图。并且,图5C是用于描述解密算法的解码操作和操作处理的概念图。图5D是用于描述编码操作的概念图。尽管在图5A至图5D中N是16,Y是8,并且X是8+a(a是大于0并且等于或小于8的正整数),但这仅是示例,并且实施例不限于此。
参照图5A,在初始***作中,可以顺序执行解码操作S212、轮密钥加操作S214、逆行移位操作S215和编码操作S216。逆行移位操作S215可以执行例如根据行以行为单位将加载到状态缓冲器STB的矩阵的每个分量移位预定次数的置换操作。
作为输入数据的数据E_DTa可以是(8+a)*16位的数据,并且可以通过解码操作S212被转换成128位的数据。因此,可以基于128位的数据和128位的子密钥Subkey_10来执行轮密钥加操作S214和逆行移位操作S215。并且,通过编码操作S216,可以将对其完成了逆行移位操作S215的128位的数据转换成(8+a)*16位的数据。通过编码操作S216输出的(8+a)*16位的数据可以被称为中间轮数据,并且可以被输入到中间***作。
参照图5B,通过对原始数据OE_DTa执行位数校正操作,可以将数据E_DTa转换成(8+a)*16位的数据。原始数据OE_DTa可以是例如被输入以执行解密算法的初始类型的加密数据。
在实施例中,可以通过将原始数据OE_DTa划分成16个8位的单元并且将从每个单元中包括的位当中的a位与另一单元的8位组合来执行位数校正操作。例如,数据E_DTa的(8+a)位可以通过将原始数据OE_DTa的第一单元的8位和原始数据OE_DTa的第二单元的a位组合来形成。尽管在本实施例中使用了两个相邻单元中的8位和a位,但这仅仅是示例,并且实施例不限于此。位数校正操作可以称为“输入位多用方法”。输入位多用方法可以表示为对应于例如[(8+a)*16]×128矩阵的线性函数。
在实施例中,可以在加密/解密设备外部执行位数校正操作,并且加密/解密设备可以通过接收对其执行位数校正操作的数据E_DTa来操作。然而,实施例不限于此,并且可以在加密/解密设备内部执行位数校正操作。
参照图5C,在解码操作S212中,作为输入数据的数据E_DTa可以被划分成16个(8+a)位的单元,并且可以将(8+a)位非线性函数和可以被表示为8×(8+a)矩阵的线性函数应用于每个单元。因此,(8+a)位的每个单元可以被转换成8位的单元。
在轮密钥加操作S214中,可以在子密钥Subkey_10的字节k0至k15中的每一个与被解码成128位的数据E_DTa的每个字节之间执行XOR运算。接下来,可以对XOR运算的输出值执行逆行移位操作S215。
参照图5D,在编码操作S216中,128×128矩阵-线性函数可以被应用于128位的数据,并且因此128位的数据可以被划分成16个8位的单元。在本说明书中,术语“矩阵-线性函数”可以指可以被表示为矩阵的线性函数。例如,128×128矩阵-线性函数可以指可以被表示为128×128矩阵的线性函数。
通过使用“输入位多用方法”,可以将16个单元分别转换成16个(8+a)位的单元。(8+a)位非线性函数可以被应用于16个(8+a)位的单元中的每一个。因此,可以根据最终***作输出16*(8+a)位的数据。
图6A和图6B是用于描述中间***作的实施例的详细图。图6A是中间***作的详细流程图。图6B是用于描述解密算法的操作处理的概念图。
参照图6A,在中间***作中,可以执行解码操作S222、逆字节替换操作S223、轮密钥加操作S224、逆列混合操作S225、逆行移位操作S226和编码操作S227。例如,在逆字节替换操作S223中,可以执行根据查找表用另一字节代替数据的每个字节的非线性操作。逆列混合操作S225可以是例如基于线性变换组合加载到状态缓冲器STB的矩阵的每列的4个字节的操作。在这种情况下,可以通过使用四项多项式来执行每列。
输入到中间***作的中间轮数据可以是(8+a)*16位的中间轮数据,并且可以通过解码操作S222被转换成128位的中间轮数据。因此,可以基于128位的中间轮数据和128位的子密钥Subkey_i来执行逆字节替换操作S223、轮密钥加操作S224、逆列混合操作S225和逆行移位操作S226。并且,可以通过编码操作S227将对其完成了逆行移位操作S227的128位的中间轮数据转换成(8+a)*16位的中间轮数据。
参照图6B,通过解码操作S222获得的128位的中间轮数据可以被划分成16个8位的单元,并且可以对每个单元执行逆字节替换操作S223和轮密钥加操作S224。也就是说,对中间轮数据的每个字节执行逆字节替换操作S223,然后可以在每个字节与子密钥Subkey_i的字节k0至k15中的每一个之间执行XOR运算。
接下来,可以通过使用在其上执行轮密钥加操作S224作为一个单元输入的4个字节来执行逆列混合操作S225。接下来,可以通过使用在其上执行逆列混合操作S225作为输入的四个4字节单元来执行逆行移位操作S226。
图7A和图7B是用于描述用于一个或多个中间***作的编码操作和解码操作的实施例的图。详细地,图7A是用于描述编码操作和解码操作之间的关系的概念图。图7B示出了对应于解码功能中使用的线性函数的矩阵。
参照图7A,128位的中间轮数据可以通过第i个中间***作的编码操作被转换成(8+a)*16位的中间轮数据,并且可以对(8+a)*16位的中间轮数据执行第i-1个中间***作(即紧接着第i个中间***作执行的中间***作)的解码操作。在实施例中,在编码操作中,可以将128×128矩阵-线性函数应用于128位的中间轮数据,并且可以应用[(8+a)*16]×128位扩散矩阵操作来使用输入位多用方法。因此,可以对划分的16个(8+a)位的单元各自分别执行非线性函数NL_0-1至NL_15-1。非线性函数NL_0-1至NL_15-1中的每一个可以是(8+a)位非线性函数,并且输入和输出(8+a)位的数据。
可以对通过编码操作输出的(8+a)*16位的中间轮数据执行解码操作。在解码操作中,(8+a)*16位的数据可以被划分成16个(8+a)位的单元,并且每个单元可以被输入到非线性函数NL_0-1至NL_15-1中的每一个。也就是说,非线性函数NL_0至NL_15中的每一个是(8+a)位非线性函数,并且接收和输出(8+a)位的数据。在实施例中,在第i个中间***作的编码操作中使用的非线性函数NL_0-1至NL_15-1中的每一个以及在第(i-1)个中间***作的解码操作中使用的非线性函数NL_0至NL_15中的每一个可以彼此相反。线性函数L0至L15中的每一个可以被应用于从非线性函数NL_0至NL_15中的每一个输出的每个(8+a)位的单元。
参照图7B,示出了对应于被应用到解码操作的线性函数L0至L15的矩阵L。矩阵L可以包括每个线性函数,并且可以被表示为128×((8+a)*16)矩阵。并且,线性函数L0至L15中的每一个可以被表示为8×(8+a)矩阵。在这种情况下,作为矩阵L的第m行和第n列分量的[lm,n]和作为矩阵Li的第s行和第t列分量的(Li)s,t之间的关系可以被定义为如等式2中所示。
因此,可以消除第i个中间***作的编码操作和第(i-1)个中间***作的解码操作。也就是说,由于位数基于编码和解码操作而改变,同时保持用于在每个***作中导出中间结果值的操作处理,所以可以阻止第三方对中间结果值的访问。
参考图7A和图7B描述的第i个中间***作的编码操作和第(i-1)个中间***作的解码操作之间的关系也可以被应用于从中间***作当中的最终***作的编码操作和初始***作(例如,具有为9的变量i的中间***作)的解码操作之间的关系。并且,该关系还可以被应用于从中间***作当中的最终***作(例如,具有为1的变量i的中间***作)的编码操作和初始***作的解码操作之间的关系。
图8是用于描述初始***作的实施例的详细流程图。
参照图8,在初始***作中,可以执行解码操作S232、逆字节替换操作S234、轮密钥加操作S235和编码操作S236。(例如,从以上关于图6A-图6B和图7A-图7B描述的中间***作)输入到初始***作的中间轮数据可以是(8+a)*16位的数据,并且可以通过解码操作S232被转换成128位的初始轮数据。因此,可以基于128位的初始轮数据和128位的子密钥Subkey_0来执行逆字节替换操作S234和轮密钥加操作S235。并且,通过编码操作S236,可以将对其完成轮密钥加操作S235的128位的初始轮数据转换为(8+a)*16位的初始轮数据。
图9A是示出被生成以对应于最终***作的实施例的表的概念图。图9B是用于描述在图9A的编码操作中执行的XOR运算的概念图。该表可以指例如对应于最终***作的查找表,并且查找表可以被用于预先计算和存储最终***作的中间操作数据。在本实施例中,示出了第j个表的概念图,并且j可以是例如0和15之间的整数。也就是说,可以通过使用例如16个查找表和XOR表来执行最终***作。
参照图9A,根据最终***作生成的查找表可以包括解码操作S112a、解密算法的操作处理S114a、和编码操作S116a。解码操作S112a可以通过将(8+a)位非线性函数201和8×(8+a)矩阵-线性函数202应用于(8+a)位的数据来输出8位的数据。
可以对8位的数据执行最终***作的操作处理S114a。例如,在操作处理S114a中,例如,可以执行轮密钥加操作203和逆行移位操作204。在实施例中,在逆行移位操作204中,128×8矩阵-线性函数可以被应用于8位的数据,8位的数据可以被转换成128位的数据,并且可以输出128位的数据。
在编码操作S116a中,128×128矩阵-线性函数205可以被应用于被转换成128×128矩阵的数据。因此,通过对128位的输出数据的位数校正操作206,可以将128位的数据转换成(8+a)*16位的数据。例如,可以通过使用“输入位多用方法”来执行位数校正操作206。(8+a)位非线性函数可以被应用于(8+a)*16位的数据。(8+a)*16位的数据可以被划分成十六个(8+a)位的组,并且可以通过16个查找表被扩展到(8+a)*16位,然后可以通过XOR-Table操作变成(8+a)*16位的数据,这可以与最终***作的结果相同。
进一步参照图9B,((8+a)位非线性函数207_0和207_1各自可以被应用于(8+a)位的数据,并且可以对结果值执行XOR运算。(8+a)位非线性函数209可以被应用于XOR运算的结果值并且可以输出(8+a)位的数据。例如,十六个(8+a)*16位的组可以通过15次XOR-Table操作被转换成一个(8+a)*16位的组。
图10是示出在中间***作的实施例中生成的表的概念图。该表可以指对应于中间***作的查找表。查找表可以被用来预先计算和存储中间***作的中间操作数据。可以通过使用例如16个查找表和XOR-Table来执行中间***作。
参照图10,中间***作可以被重复地执行多次。因此,可以在每个中间***作中导出查找表。尽管在本实施例中执行了9次中间***作,但是实施例不限于此。
根据中间***作生成的查找表可以包括解码操作、解密算法的操作处理、和编码操作。在中间***作中的操作处理中,可以执行逆字节替换操作、轮密钥加操作、逆列混合和逆行移位操作。在实施例中,在逆列混合和逆行移位操作中的一些的期间,通过逆字节替换操作和轮密钥加操作获得的8位的数据可以被转换成128位,可以通过编码操作被扩展以及转换成(8+a)*16位,并且可以被输出。中间***作的输入数据可以被划分成十六个(8+a)位的组,并且每个组可以通过查找表被扩展到(8+a)*16位,并且十六个(8+a)*16位的组可以通过15次XOR-Table操作被转换成一个(8+a)*16位的组,这可以与中间***作的结果相同。
图11是示出在初始***作的实施例中生成的表的概念图。该表可以指例如对应于初始***作的查找表。
参照图11,根据初始***作生成的查找表可以包括解码操作、解密算法的操作处理、和编码操作。在初始***作的操作处理中,可以执行逆字节替换操作和轮密钥加操作。
图12A至图12C是用于描述加密/解密设备的操作方法的实施例的图。详细地,图12A是用于描述最终***作的流程图。图12B是用于描述中间***作的流程图。图12C是用于描述初始***作的流程图。在图12A至图12C中,与图5A、图6A和图8中的元素相同的元素将不再重复地描述。
参照图12A,在最终***作中,可以执行解码操作S312、轮密钥加操作S313、逆行移位操作S314、逆字节替换操作S315、和编码操作S316。并且,参照图12B,在中间***作中,可以执行解码操作S322、轮密钥加操作S323、逆列混合操作S324、逆行移位操作S325、逆字节替换操作S326、和编码操作S327。并且,参照图12C,在初始***作中,可以执行解码操作S332,轮密钥加操作S335、和编码操作S336。
图13是存储器卡1000的实施例的框图。
参照图13,存储器卡1000可以包括主机接口1010、存储器控制器1020和闪速存储器接口1030。并且,存储器控制器1020还可以包括根据实施例的加密/解密设备1022。
主机接口1010可以通过卡协议与主机900接口,以便在主机900和存储器卡1000之间执行各种数据交换。存储器卡1000可以被应用于多媒体卡(multimedia card,MMC)、安全数字(security digital,SD)卡、miniSD卡、记忆棒、智能媒体卡和transflash卡。
存储器控制器1020可以通过闪速存储器接口1030向/从闪速存储器140发送/接收数据。闪速存储器140可以是非易失性存储器,诸如NAND闪速存储器。存储器控制器1020可以通过闪速存储器接口1030控制闪速存储器1040的各种操作。
存储器卡1000可以包括根据实施例的加密/解密设备1022,并且可以仅公开对其执行加密操作的查找表的输入/输出值,并且可以不知道查找表的内部操作。因此,由于第三方发现难以理解查找表并导出轮密钥,因此可以改善存储器卡1000的安全性。
上述方法的各种操作可以由能够执行操作的任何合适的装置执行,诸如各种(多个)硬件和/或软件组件、电路和/或(多个)模块。
该软件可以包括用于实施逻辑功能的可执行指令的有序列表,并且可以被体现在任何“处理器可读介质”中用于由指令执行***、装置或设备(诸如单个或多个核处理器或包含处理器的***)使用或与其结合使用。
结合本文中所公开的实施例而描述的方法或算法和功能的框或步骤可以直接被体现在硬件中、由处理器执行的软件模块中或两者的组合中。如果在软件中实施,则功能可以被作为一个或多个指令或代码存储在有形的、非瞬态的计算机可读介质上或者在有形的、非瞬态的计算机可读介质上传输。软件模块可以驻留在随机存取存储器(RandomAccess Memory,RAM)、闪速存储器、只读存储器(Read Only Memory,ROM)、电可编程ROM(Electrically Programmable ROM,EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移动磁盘、CD ROM或者本领域已知的任何其他形式的存储介质。
虽然已经通过使用特定术语、参考其实施例来具体地示出和描述了本发明构思,但是实施例和术语仅用于解释本发明构思,而不应该被解释为限制由权利要求限定的本发明构思的范围。实施例应仅被认为是描述性的,而不是为了限制的目的。因此,本发明构思的范围不是由本发明构思的详细描述限定,而是由所附权利要求限定,并且该范围内的所有差异将被解释为包括在本发明构思中。
Claims (24)
1.一种用于解密基于块级加密算法加密的N*X位的输入数据的装置,其中N和X是正整数,所述装置包括:
加密/解密控制器,包括状态缓冲器,所述状态缓冲器被配置为存储输入数据;和
数据功能模块,被配置为基于输入数据顺序地执行:执行第一解密操作处理的最终***作、执行第二解密操作处理的多个中间***作、以及执行第三解密操作处理的初始***作,
其中,所述数据功能模块还被配置为将输入数据解码成其数量不同于N*X位的数量的N*Y位的数据,其中Y是正整数,基于N*Y位的数据执行第一解密操作处理,并且将对其执行第一解密操作处理的N*Y位的数据编码成N*X位的中间轮数据。
2.如权利要求1所述的装置,其中,所述数据功能模块还被配置为将N*X位的中间轮数据解码成N*Y位的中间轮数据,基于N*Y位的中间轮数据执行第二解密操作处理,并且将对其执行第二解密操作处理的N*Y位的中间轮数据编码成N*X位的中间轮数据。
3.如权利要求2所述的装置,其中,所述数据功能模块还被配置为将N*X位的中间轮数据编码成N*Y位的初始轮数据,基于N*Y位的初始轮数据执行第三解密操作处理,并且将对其执行第三解密操作处理的N*Y位的初始轮数据编码成N*X位的解密数据。
4.一种加密/解密设备的操作方法,所述操作方法包括:
所述加密/解密设备的接口,接收基于块级加密算法加密的N*X位的输入数据,其中N和X是正整数;
将N*X位的输入数据解码成其数量不同于N*X位的数量的N*Y位的数据,其中Y是正整数;
对N*Y位的数据执行块级加密算法的第一解密操作处理;
将对其执行第一解密操作处理的N*Y位的数据编码成N*X位的中间轮数据;以及
对N*X位的中间轮数据执行块级加密算法的多个中间解密***作。
5.如权利要求4所述的操作方法,其中,所述执行第一解密操作处理包括对N*Y位的数据执行轮密钥加操作和逆行移位操作。
6.如权利要求4所述的操作方法,其中,所述执行多个中间解密***作包括执行多个中间***作,
其中,所述多个中间***作中的每一个包括:
将N*X位的中间轮数据解码成N*Y位的中间轮数据;
对N*Y位的中间轮数据执行块级加密算法的第二解密操作处理;以及
将对其执行第二解密操作处理的N*Y位的中间轮数据编码成N*X位的中间轮数据。
7.如权利要求6所述的操作方法,其中,所述执行第二解密操作处理包括对N*Y位的中间轮数据执行逆字节替换操作、轮密钥加操作、逆列混合操作、和逆行移位操作。
8.如权利要求6所述的操作方法,其中,所述将N*Y位的中间轮数据编码成N*X位的中间轮数据包括将N*Y位的数据划分成N条Y位数据,并且将非线性函数应用于N条Y位数据中的每一个。
9.如权利要求8所述的操作方法,其中,在从多个中间***作当中的第一中间***作中将N*X位的中间轮数据解码成N*Y位的中间轮数据包括将N*X位的数据划分成N条X位数据,并且将非线性函数的反函数应用于N条X位数据中的每一个。
10.如权利要求6所述的操作方法,其中,所述在多个中间***作中的每一个中将N*Y位的中间轮数据编码成N*X位的中间轮数据包括将N*Y位的数据划分成N条Y位数据,并且将非线性函数应用于N条Y位数据中的每一个,并且
在除了从多个中间***作当中的初始中间***作之外的中间***作中的每一个中将N*X位的中间轮数据解码成N*Y位的中间轮数据包括将N*X位的数据划分成N条X位数据,并将先前轮中使用的非线性函数的反函数应用于N条X位数据中的每一个。
11.如权利要求6所述的操作方法,还包括:
将在从多个中间***作当中的最后中间***作中编码的N*X位的中间轮数据解码成N*Y位的初始轮数据;
对N*Y位的初始轮数据执行块级加密算法的第三解密操作处理;以及
将对其执行第三解密操作处理的N*Y位的初始轮数据编码成N*X位的解密数据。
12.如权利要求11所述的操作方法,其中,所述执行第三解密操作处理包括对N*Y位的初始轮数据执行逆字节替换操作和轮密钥加操作。
13.如权利要求11所述的操作方法,其中,所述在最后中间***作中将N*Y位的中间轮数据编码成N*X位的中间轮数据包括将N*Y位的中间轮数据划分成N条Y位数据,并且将非线性函数应用于N条Y位数据中的每一个,
其中,所述解码成初始轮数据包括将N*X位的中间轮数据划分成N条X位数据,并且将非线性函数的反函数应用于N条X位数据中的每一个。
14.如权利要求4所述的操作方法,其中,
X=Y+a,(0<a≤Y)。
15.如权利要求4所述的操作方法,其中,所述块级加密算法是高级加密标准AES算法。
16.一种用于解密通过使用块级加密算法加密的N*X位的输入数据的装置的操作方法,其中N和X是正整数,所述操作方法包括:
所述装置的接口,接收输入数据并将输入数据解码成其数量不同于N*X位的数量的N*Y位的数据,其中Y是正整数;
对N*Y位的数据执行块级加密算法的第一解密操作处理;
将对其执行第一解密操作处理的N*Y位的数据编码成N*X位的中间轮数据;和
基于N*X位的中间轮数据执行预设数量的多个中间***作。
17.如权利要求16所述的操作方法,其中,所述执行多个中间***作包括:
将N*X位的中间轮数据解码成N*Y位的中间轮数据;
对N*Y位的中间轮数据执行第二解密操作处理;以及
将对其执行第二解密操作处理的N*Y位的中间轮数据编码成N*X位的中间轮数据。
18.如权利要求17所述的操作方法,其中,所述将对其执行第一解密操作处理的N*Y位的中间轮数据编码成N*X位的中间轮数据包括将N*Y位的数据划分成N条Y位数据,并且将线性函数和非线性函数顺序地应用于N条Y位数据中的每一个。
19.如权利要求18所述的操作方法,其中,所述将N*X位的中间轮数据解码成N*Y位的中间轮数据包括将N*X位的数据划分成N条X位数据,并将非线性函数的反函数应用于N条X位数据中的每一个。
20.如权利要求17所述的操作方法,其中,所述执行多个中间***作包括在从多个中间***作当中的最后中间***作中将N*Y位的中间轮数据编码成N*X位的中间轮数据,
其中,所述操作方法还包括:
将N*X位的中间轮数据解码成N*Y位的初始轮数据;
对N*Y位的初始轮数据执行第三解密操作处理;以及
将对其执行第三解密操作处理的N*Y位的初始轮数据编码成N*X位的解密数据。
21.如权利要求20所述的操作方法,其中,所述在最后中间***作中将N*Y位的中间轮数据编码成N*X位的中间轮数据包括将线性函数和非线性函数应用于N*Y位的中间轮数据,
其中,所述解码成N*Y位的初始轮数据包括将N*X位的中间轮数据划分成N条X位数据,并且将非线性函数的反函数应用于N条X位数据中的每一个。
22.一种装置,包括:
接口,被配置为接收基于块级加密算法加密的N*X位的输入数据,其中N和X是正整数;以及
加密/解密设备,包括:
状态缓冲器,被配置为存储输入数据,以及
数据功能模块,被配置为基于输入数据顺序地执行:
对输入数据执行第一解密操作处理的最终***作,
对从最终***作输出的最终轮数据执行第二解密操作处理的多个中间***作,以及
对从多个中间***作输出的中间轮数据执行第三解密操作处理的初始***作,
其中,所述数据功能模块还被配置为将输入数据解码成其数量不同于N*X位的数量的N*Y位的最终轮数据,其中Y是正整数,对N*Y位的最终轮数据执行第一解密操作处理,并且将对其执行第一解密操作处理的N*Y位的最终轮数据编码成N*X位的中间轮数据,并且
其中所述输入数据从所述块级加密算法输出,所述块级加密算法顺序地执行初始***作的逆、中间***作的多个逆、以及最终***作的逆。
23.如权利要求22所述的装置,其中,所述数据功能模块还被配置为将N*X位的中间轮数据解码成N*Y位的中间轮数据,基于N*Y位的中间轮数据执行第二解密操作处理,并且将对其执行第二解密操作处理的N*Y位的中间轮数据编码成N*X位的中间轮数据。
24.如权利要求23所述的装置,其中,所述数据功能模块还被配置为将N*X位的中间轮数据编码成N*Y位的初始轮数据,基于N*Y位的初始轮数据执行第三解密操作处理,并且将对其执行第三解密操作处理的N*Y位的初始轮数据编码成N*X位的解密数据。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20170133471 | 2017-10-13 | ||
KR10-2017-0133471 | 2017-10-13 | ||
KR1020180064477A KR102602696B1 (ko) | 2017-10-13 | 2018-06-04 | 암호화 장치 및 복호화 장치, 이들의 동작방법 |
KR10-2018-0064477 | 2018-06-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109670320A CN109670320A (zh) | 2019-04-23 |
CN109670320B true CN109670320B (zh) | 2023-04-25 |
Family
ID=66141678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811197240.XA Active CN109670320B (zh) | 2017-10-13 | 2018-10-15 | 加密设备和解密设备、以及其操作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109670320B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110855667B (zh) * | 2019-11-14 | 2023-04-07 | 宁夏吉虎科技有限公司 | 一种区块链加密方法、装置及*** |
CN112035866B (zh) * | 2020-11-04 | 2021-07-23 | 湖北芯擎科技有限公司 | 一种数据加密方法、装置、设备和计算机可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201178468Y (zh) * | 2007-08-31 | 2009-01-07 | 深圳市同洲电子股份有限公司 | 一种aes算法加密装置及数字电视前端双向认证*** |
CN102035641A (zh) * | 2009-09-24 | 2011-04-27 | 中兴通讯股份有限公司 | 一种实现aes加解密的装置和方法 |
CN102461058A (zh) * | 2009-03-10 | 2012-05-16 | 爱迪德有限责任公司 | 具有输入相关编码的白盒密码*** |
CN103516512A (zh) * | 2013-10-21 | 2014-01-15 | 深圳市芯通信息科技有限公司 | 基于aes算法的加解密方法及加解密器 |
CN104769881A (zh) * | 2013-03-27 | 2015-07-08 | 爱迪德技术有限公司 | 具有错误校正的aes实现方式 |
CN105007154A (zh) * | 2015-07-23 | 2015-10-28 | 深圳市同创国芯电子有限公司 | 一种基于aes算法的加密解密装置 |
CN105049400A (zh) * | 2014-03-19 | 2015-11-11 | 恩智浦有限公司 | 在白盒实现方案中拆分s盒以防止攻击 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100594265B1 (ko) * | 2004-03-16 | 2006-06-30 | 삼성전자주식회사 | 매스킹 방법이 적용된 데이터 암호처리장치, aes암호시스템 및 aes 암호방법. |
US8509427B2 (en) * | 2005-08-01 | 2013-08-13 | Eric Myron Smith | Hybrid mode cryptographic method and system with message authentication |
US9209967B2 (en) * | 2007-03-12 | 2015-12-08 | Exelis, Inc. | Precalculated encryption key |
US8966285B2 (en) * | 2011-01-10 | 2015-02-24 | Apple Inc. | Securing implementation of a cryptographic process having fixed or dynamic keys |
KR102446866B1 (ko) * | 2014-08-28 | 2022-09-23 | 삼성전자주식회사 | 부채널 공격을 방지하는 암복호화기 및 이의 구동 방법 그리고 이를 포함하는 제어 장치 |
US9692592B2 (en) * | 2015-06-05 | 2017-06-27 | Apple Inc. | Using state reordering to protect against white box attacks |
US10700849B2 (en) * | 2015-07-30 | 2020-06-30 | Nxp B.V. | Balanced encoding of intermediate values within a white-box implementation |
-
2018
- 2018-10-15 CN CN201811197240.XA patent/CN109670320B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201178468Y (zh) * | 2007-08-31 | 2009-01-07 | 深圳市同洲电子股份有限公司 | 一种aes算法加密装置及数字电视前端双向认证*** |
CN102461058A (zh) * | 2009-03-10 | 2012-05-16 | 爱迪德有限责任公司 | 具有输入相关编码的白盒密码*** |
CN102035641A (zh) * | 2009-09-24 | 2011-04-27 | 中兴通讯股份有限公司 | 一种实现aes加解密的装置和方法 |
CN104769881A (zh) * | 2013-03-27 | 2015-07-08 | 爱迪德技术有限公司 | 具有错误校正的aes实现方式 |
CN103516512A (zh) * | 2013-10-21 | 2014-01-15 | 深圳市芯通信息科技有限公司 | 基于aes算法的加解密方法及加解密器 |
CN105049400A (zh) * | 2014-03-19 | 2015-11-11 | 恩智浦有限公司 | 在白盒实现方案中拆分s盒以防止攻击 |
CN105007154A (zh) * | 2015-07-23 | 2015-10-28 | 深圳市同创国芯电子有限公司 | 一种基于aes算法的加密解密装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109670320A (zh) | 2019-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10158478B2 (en) | Flexible architecture and instruction for advanced encryption standard (AES) | |
US8879725B2 (en) | Combining instructions including an instruction that performs a sequence of transformations to isolate one transformation | |
CN109670320B (zh) | 加密设备和解密设备、以及其操作方法 | |
JP2004157535A (ja) | データ暗号化方法 | |
US11101824B2 (en) | Encryption device and decryption device, and operation method thereof | |
Dixit et al. | Comparative Implementation of Cryptographic Algorithms on ARM Platform |
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 |