公钥加密算法

2024-11-13

公钥加密算法(共6篇)

公钥加密算法 篇1

0 引言

云计算是用户从云服务端获得所需服务以及资源的一种当下新兴的计算模式。这种模式主要是针对一些计算能力或者存储空间有限的用户可以将高复杂性计算或存储密集的任务外包给资源充沛、计算能力更为强大的云服务器完成。在传统模式下,用户完成一些高计算量的任务,往往费时费力。若用户选择将自身一些高计算量的任务外包给云服务器来完成,则可以大大减少自身的负担[1]。

公钥加密算法与对称加密算法相比安全性更高。但是,由于公钥加密算法计算复杂度较大,使得公钥密码体制这一可以很好解决密钥分发等问题,更加适用于组播通信、无线传感网络等环境的技术迟迟没有得到研究者的重视[2]。在文献[3]中,对基于混沌神经网络的安全组播通信密钥分发、密钥交换、节点加入和退出设计较为全面,但是混沌吸引子的计算却非常复杂,仅仅适用于节点运算能力较强的通信网。本文提出混沌神经网络公钥加密算法混沌吸引子外包云计算,能够减少系统开销和耗时,为混沌神经网络公钥加密算法在组播通信、无线传感网等环境的应用提供可能。

1 混沌神经网络公钥加密算法

1.1 密钥协商

混沌神经网络公钥加密算法的密钥协商是根据Diffie-Hellman公钥密码体制原理进行[4],具体过程如图1所示。

1.2 混沌神经网络

文中采用过饱和状态下的离散型Hopfield神经网络模型,假设每个神经元状态只为0或1,则其下一个状态Si(t(10)1)将取决于当前神经元状态Si(t),Hopfield神经网络模型如式(1)和(2)所示。

其中,Tij表示神经元联接突触矩阵,θi 表示神经元i的阈值,δ(x)表示符号函数。在文献[5]中,Hopfield已证明系统的能量函数是随着系统状态的递进而单调下降,最终会归结到达一种稳点状态,即混沌吸引子,n阶联接突触矩阵T求得的混沌吸引子总数为2n个[6],且其吸引子域所包含的消息间具有混沌特性。

1.3 算法整体结构

由Hopfield神经网络的混沌模型,文献[7]提出了如图2所示的混沌神经网络公钥加密算法整体架构。在一个输入状态在Hopfield神经网络的混沌模型中计算,输出一个稳定的吸引子后,通过数据选择器对比2n个混沌吸引子列表后选择对应线性反馈移位寄存器移位输出随机序列与明文异或输出密文,再将线性反馈移位寄存器的值输入Hopfield神经网络的混沌模型,计算下一个吸引子。

在文献[3]所述组播通信以及无线传感网中,每次发生密钥更新、节点加入或退出时候,所有涉及的用户或节点都将计算完全的2n个混沌吸引子计算。在组播通信、无线传感网等环境中,为了保证通信网的安全,确立了频繁的密钥更新机制[8,9],节点的加入或退出时改变联接突触矩阵T等安全机制,但是用户本身的计算能力有限,资本支出过大。在这样的情况下,本文提出云外包计算方式,将算法中计算混沌吸引子的部分交由云服务器计算,不但大大减少单个用户的开销,并且避免了节点吸引子的重复运算。

2 外包云计算方式

图3为文本提出的混沌神经网络公钥加密算法外包云计算的流程图,其中:组播通信网/无线通信网等网络的GC(Group Concroller)作为网络与云服务器的外包接口,GC作为组播通信网/无线通信网等网络的组管理者,首先与云服务器建立保密通信线路,过程如上述混沌神经网络公钥加密算法所介绍,建立起保密通信网后,GC将其网络中所用的2n个混沌吸引子外包至云服务器。

在云服务器中计算混沌吸引子的方法如下:

(1)云服务器在收到后,将输入混沌神经网络模型,式(3):

其中,Tij表示神经元联接突触矩阵,θi表示神经元i的阈值,δ(x)表示符号函数,随机输入一行N列的数Sj(t)作为初始值,将前一个状态的输出作为下一个状态的输入,进行迭代计算,直到不再发生改变,收敛到一个稳定点,即混沌吸引子。

(2)随机输入一行n列的数Sj(t)作为新的初始值,计算下一个混沌吸引子。

(3)重复步骤(2),直到计算出所有的2n个不同的吸引子为止。

云服务器将计算的混沌吸引子加密后传输给GC,GC组播至所有节点。

3 系统性能测试

假设将PC作为通信网一个节点,测试平台为CPU为Intel(R)Core(TM)2 Quad CPU Q9400 2.66Ghz,内存2GB,32位操作系统。系统中,采用8阶T作为联接突触矩阵,在本机计算2n个混沌吸引子后加密“十八大报告”,测试结果如图4所示,加密时间为160421ms;利用外包云计算,直接用服务器算出的2n个混沌吸引子在本机加密“十八大报告”,测试结果如图5所示,加密时间为114153ms,加密明文和密文分别如图6左右所示。

4 结束语

在算法中,如果改变一次n阶的联接突触矩阵T,则需要计算次才能求得完全的2n个混沌吸引子,对于整个系统而言,假设有N个通信节点,则要进行次重复运算。通过测试表明,假设将一台PC作为通信网的一个节点,采用外包云计算的方式计算2n个混沌吸引子并加密,加密速度就远快于在本机计算2n个混沌吸引子再进行加密。在实际通信网中,通信节点众多,每个节点都在计算相同的混沌吸引子,外包云计算切实能够避免通信网节点的重复运算,大大减少通信网的开销和耗时,节约资本支出,且随着联接突触矩阵阶的增加,甚至达到128阶或更高,外包效果更加明显。

参考文献

[1]刘午阳,廖晓峰.方阵幂安全外包云计算[J].计算机应用,2015.

[2]李蕾.基于超图的异构传感网密钥管理协议研究[D].哈尔滨工程大学硕士学位论文,2012.

[3]何峥.基于混沌神经网络的安全组播通信[D].华侨大学硕士学位论文,2012.

[4]Diffie W,Hellman M.New directions in cryptography[J].IEEE Transactions on Information Theory,1976.

[5]HOPFIELD J J.Neurons,dynamics and computation[J].Physics Today,1994.

[6]Chi-kwong Chan,LM.Cheng.The Convergence Properties of a Clipped Hopfield Network and its Application in the Design of Keystream Generator[J].IEEE Transactions on Neural Networks,2001.

[7]Guogang Li,Donghui Guo,Ruiming Huang.A Fast Stream Cipher Algorithm from One-way Function of Neural Network[J].International Journal of Advancements in Computing Technology,2012.

[8]胡雯,许勇,童文,刘淑影.基于LKH的分层式多播密钥更新机制的优化方案[J].计算机安全,2013.

[9]范书平,江凌生,姚念民等.一种改进LKH的组播密钥管理方案[J].计算机工程与应用,2010.

公钥加密算法 篇2

摘要:介绍了NESSIE标准中的分组密码算法――Camellia算法的加、解密过程,并对其在各种软、硬件平台上的性能进行了比较,结果表明Camellia算法在各种平台上均有着较高的效率。Camellia算法与其它技术相结合将在信息安全领域产生更广泛的应用。

关键词:NESSIE 分组密码 Camellia 算法 加密

继2000年10月美国推出二十一世纪高级数据加密标准AES后,2003年2月欧洲最新一代的安全标准NESSIE(New European Schemes for Signatures、Integrity and Encryption)出台。NESSIE是欧洲IST(Information Society Technologies)委员会计划的一个项目。Camellia算法以其在各种软件和硬件平台上的高效率这一显著特点成为NESSIE标准中两个128比特分组密码算法之一(另一个为美国的AES算法)。

Camellia算法由NTT和Mitsubishi Electric Corporation联合开发。作为欧洲新一代的加密标准,它具有较强的安全性,能够抵抗差分和线性密码分析等已知的攻击。与AES算法相比,Camellia算法在各种软硬件平台上表现出与之相当的`加密速度。除了在各种软件和硬件平台上的高效性这一显著特点,它的另外一个特点是针对小规模硬件平台的设计。整个算法的硬件执行过程包括加密、解密和密钥扩展三部分,只需占用8.12K 0.18μm COMS工艺ASIC的库门逻辑。这在现有128比特分组密码中是最小的。

1 Camellia算法的组成

Camellia算法支持128比特的分组长度,128、192和256比特的密钥与AES的接口相同。本文以128比特密钥为例对Camellia算法进行详细介绍。

Camellia算法128比特密钥的加、解密过程共有18轮,采用Feistel结构,加、解密过程完全相同,只是子密钥注入顺序相反。而且密钥扩展过程和加、解密过程使用相同的部件。这使得Camellia算法不论是在软件平台还是硬件平台只需更小的规模和更小的存储即可。

(1)Camellia算法所采用的符号列表及其含义

B 8比特向量 W 32比特向量

L 64比特向量 Q 128比特向量

x?n? 比特向量

xL 向量x的左半部分 xR 向量x的右半部分

》< 比特循环左移 || 两个操作数的连接

? 比特的异或操作 x 比特位取补操作

∪ 比特位的或操作 ∩ 比特位的与操作

(2)Camellia算法所采用

公钥加密技术与应用 篇3

数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理, 使其成为不可读的一段代码, 通常称为“密文”, 使其只能在输入相应的密钥之后才能显示明文, 通过这种途径来达到保护数据不被非法窃取、阅读的目的。该过程的逆过程为解密, 即将该编码信息转化为其原来数据的过程。

二、公摇加密的方法

计算机加密技术主要分为两大类:“对称式”和“非对称式”。对称式加密就是加密和解密使用同一个密钥, 通常称之为“Session Key”这种加密技术目前被广泛采用, 如美国政府所采用的DES加密标准就是一种典型的“对称式”加密法。

非对称式加密算法就是加密和解密所使用的不是同一个密钥, 通常有两个密钥, 称为“公钥”和“私钥”, 两个必需配对使用, 缺一不可以打开加密文件。“公钥”以对外公布, “私钥”由持有人一个人秘密保存。因为对称式的加密方法假如是在网络上传输加密文件就很难把密钥告诉对方, 不管用什么方法都有可能被别窃听到。而非对称式的加密方法有两个密钥, 且其中的“公钥”是可以公开的, 也就不怕别人知道, 收件人解密时只要用自己的私钥即可

以, 这样就很好地避免了密钥的传输安全性问题。公钥加密的过程参见图1:

三、密钥的使用和管理

假如用户重复使用同样密钥, 那么密钥同其它密码一样存在安全性的问题。即使用户私钥不对外公开也很难保证私钥长期的保密性。另外使用一个特定密钥加密的信息越多, 提供给窃听者的材料也就越多, 从某种意义上来讲也就越不安全了。因此, 一般强调仅将一个对话密钥用于一条信息的传输中, 或者建立定时更换密钥的机制以减小密钥泄漏的可能性[1]。

在多密钥管理体系中, 假设用户甲想和用户乙进行秘密通信, 用户甲首先和KDC进行通信, 用只有用户甲和KDC协商的唯一密钥对数据加密, 用户甲告诉KDC他想和用户乙进行通信, KDC为双方用户之间的随机选择一个对话密钥, 并生成标签, 标签由KDC和用户乙之间的密钥加密, 并在用户甲启动和乙对话时, 用户甲把标签交给乙。标签的作用是让甲确信和他交谈的是乙, 而不是其他人。由于标签只有用户乙和KD协商的密钥进行加密, 所以即使冒充乙的用户得到甲发出的标签也不可能进行解密, 从而保证计算机数据的安全性。

四、加密技术的应用

1、公钥加密技术在软件商务系统的应用

电子商务 (E-business) 要求顾客可以从事各种商务活动。在过去, 用户为了防止信用卡的号码被窃取到, 一般是通过电话订货, 然后使用用户的信用卡进行付款。现在人们开始用RSA (一种公开/私有密钥) 的加密技术, 提高信用卡交易的安全性, 从而使电子商务走向实用成为可能。

2、公钥加密技术在防盗版领域的应用

公钥加密算法是不依靠硬件来实现, 可以对软件的知识产权进行保护。目前RSA非对称密钥算法普遍用来生成软件密钥, 加密光盘, 制作加密狗等用途, 也可以算作软加密类中。

3、公钥加密技术在软件VPN系统的应用

通过VPN软件安全传输数据已广泛用于各个领域之中。利用VPN, 当发送方发送数据时, 数据首先被用户湍连接到路由器通过硬件对数据进行非对称密钥加密, 当达到目的路由器时, 该路由器再通过双方协商的密钥对数据解密, 从而保证数据传输的安全性。

五、结束语

上述对加密技术的讨论, 让我们了解并掌握一些方法, 为自己创造一个相对更安全的环境来使用互联网。而现代科技飞速发展, 加密技术不断推陈出新, 必定会有更多更完善的加密技术为我们服务。

参考文献

[1]杨海东、安宗旭:《加强全民动员, 确保信息安全》, 《安徽电子信息职业技术学院学报》, 2005年第2期。

[2]贾义、赵楠:《信息安全和RSA》, 《教育理论与实践》, 2009年第36期。

[3]李兴明、何宏、王成友:《对我国信息安全的几点思考》, 《重庆工业高等专科学校学报》, 2004年第5期。

[4]张立宪、叶玉丹:《信息安全与防御》, 《安徽电子信息职业技术学院学报》, 2005年第1期。

公钥加密算法 篇4

在云计算环境中,用户将数据上传并存储在云服务器中,由云服务器完成用户指定的数据处理任务。然而在此过程中,用户的隐私可能被恶意的云服务器非法窃取。采用加密技术能够解决隐私保护的问题,但传统加密方法的特性决定了云服务器难以对密文数据进行有效的处理,对密文数据进行关键词检索就是其中一个典型例子。

Boneh等人[1]提出的“关键词可搜索的公钥加密技术”(public key encryption with keyword search,PEKS)是解决上述问题的方法之一,借助该体制,服务器能够在不解密的情况下,根据用户提供的关键词陷门,对服务器中存储的密文进行基于关键词的检索。不仅如此,Boneh还指出,PEKS体制可以在基于身份加密体制(identity based encryption,IBE)[2]的基础上进行构造。在Boneh工作的基础上,人们先后提出多种同类体制,包括支持复杂关键词结构的PEKS体制[3,4,5],匿名以及阈值PEKS体制[6,7],不经意关键词查询体制等等[8,9]。尽管能够实现密文检索功能,但此类体制的应用模式中,用户需要预先对关键词进行加密并上传服务器,在某些应用如全文检索中,这将为用户增加相当大的额外计算开销。

2009年,Gentry[10]提出第一种真正的全同态加密体制,随后出现了多种同类体制,计算效率等性能逐渐趋于实用。借助全同态加密,用户可以将数据加密后上传至云端,且不影响云服务器对密文的运算和处理,解决了数据安全与用户隐私的矛盾。Gentry指出,借助全同态加密,可以将密文检索转化为密文同态意义下的明文检索,从而解决密文检索问题,然而,由于密文关键词的匹配结果不能由服务器进行解密(否则服务器可以通过自行构造关键词,并与用户数据进行匹配的方法,实现对特定用户数据的猜测),因此会导致检索过程需要用户的配合,即以交互协议的形式实现,由此带来额外的计算和通信开销。

针对上述两类方法各自存在的缺点,本文提出一种基于全同态加密的密文检索方案,将全同态加密引入PEKS体制设计中,分别借助LWE问题和前像可采样陷门单向函数实现密文同态运算以及私钥提取的功能,进而构造出具备全同态加密属性的PEKS体制,将关键词加密的计算开销转移到云服务器,使得用户的计算和通信开销最小化。

2 基础知识

2.1 符号说明

在本文中,向量均被默认为以列向量的形式出现,使用粗体小写字母表示,如e;向量的第i个分量表示为e[i],向量e=(e[1],……e[n])的长度定义为其欧几里得长度,向量集合S={e1,……es}的长度则用其中最长向量的长度定义,记为||S||。文中的矩阵使用粗体大写字母表示,如Am×n。向量和矩阵的上标T表示其转置,如AT。

2.2 PEKS体制及其安全性定义

PEKS的定义如下:

定义1(PEKS体制)

PEKS体制的算法可描述为PEKS=(Key Gen,Encrypt,Trapdoor,Test):

(1)(pk,sk)=Key Gen(λ):输入安全参数λ,输出公钥pk和私钥sk;

(2)CW=Encrypt(pk,W):输入公钥pk和关键词W,输出关键词密文CW;

(3)TW=Trapdoor(sk,W);输入私钥sk和关键词W,输出陷门TW;

(4)b=Test(pk,CW,TW*):输入公钥pk、陷门TW*和关键词密文CW,根据W与W*的匹配结果,输出判定值b∈{0,1}。

PEKS体制需要满足一致性和安全性要求。PEKS体制的一致性需要满足:(1)对任意关键词W,Pr[Test(pk,PEKS(pk,W),Trapdoor(sk,W))=1]=1;(2)对任意关键词W1,W2且,Pr[Test(pk,PEKS(pk,W1),Trapdoor(sk,W2))]=1]=0。PEKS体制的安全性通过游戏(Game)的形式定义。

定义2(PEKS体制安全性)

体制的安全性采用游戏的方式刻画,定义一个攻击游戏,参与者是PEKS体制挑战者C和具备多项式时间攻击者A,游戏分为以下阶段:

初始化阶段:C执行算法Key Gen,并将生成的公钥pk交给A。

询问阶段1:A适应性的选择若干个关键词Wi交给C,挑战者执行陌门算法,将相应的陷门TWi反馈给A。

挑战阶段:A根据上个阶段积累的知识,选择两个关键词W0和W1作为挑战交给C,要求W0和W1在询问阶段未出现过。C从二者中随机选择Wb,b∈{0,1},执行Encrypt算法,计算其密文CWb。

询问阶段2:A可以继续适应性的询问关键词对应的陷门,但不能询问W0和W1的陷门。

猜测阶段:A输出be′∈{0,1},be′=b若则认为A赢得游戏。

攻击者A在游戏中的优势定义为,若对于任意多项式时间攻击者,该优势均可忽略,则认为PEKS体制具备选择关键词攻击下的不可区分性安全性(indistinguishability under chosen keyworddattack,IND-CKA)。

2.3 LWE问题与前像可采样陷门单向函数

容错学习问题(Learning with errors,LWE)[11]是“带噪声学习问题”(learning parity with noise,LPN)的一般形式,由于其具有相对较高的计算效率(主要计算形式为向量内积运算)和可靠的安全性归约,因此迅速成为构造格上密码体制的有力工具。

在定义LWE问题之前,首先给出Regev定义的两个概率分布:(1)DΛ,r,e是格Λ上以格点c为中心,标准差为的离散正态分布,当c=0时,简写为DΛ,r;特别的,对于整数q≥2,将Zq上的离散正态分布称为“错误分布”,记做χ。(2)对于取定的正整数n和Zqn上的向量S,定义一个Zqn×Zq上的概率分布As,χ,其变量具备(a,aT·s+χ)的形式,其中a是Zqn上均匀分布的变量,而x则随机取自错误分布χ,加法和向量乘法运算均在模q意义下进行。

定义3(LWE问题):给定素数q,正整数n和Zq上的错误分布,LWE问题实例包含一个特定的谕示O,该谕示或是由密钥s∈Zqn确定的伪随机噪声采样器OS,或是一个真随机采样器OR:

OS:其输出形如(ui,vi)=(ui,uiTS+xi)∈Zqn×Zq,其中,噪声值

OR:输出均匀随机分布的(ui,vi)=∈Zqn×Zq。

LWE问题要求攻击者在有限次访问谕示O之后,对谕示输出的随机性进行判定。将攻击者的优势定义为攻击者的优势,若在密钥S随机选择的情况下,该优势不可忽略,则称攻击者成功解决LWE问题。

Gentry等人[12]提出一种前像可采样的陷门单向函数,函数实现从离散正态分布到近似均匀分布的映射,并在拥有陷门的情况下,将近似均匀分布还原为最初的离散正态分布,输出满足原分布的变量。在定义函数之前,首先给出一个命题:

命题1[12]:

对于素数q=q(n)和m≥5nlogq,存在一个多项式时间算法Sample D[*],输入为参数1n,输出一个矩阵A∈Zqn×m和满秩的向量集合S⊂Λ⊥(A,q)={e∈Zqm:A·e=0 mod q},其中Λ⊥(A,q)可以看做Zqm上的格,矩阵A的概率分布与Zqn×m上的均匀分布不可区分,S的长度||S||≤m2.5。

在命题1的基础上定义函数fA:

定义4(前像可采样陷门单向函数):

对于命题1中的矩阵A,函数fA:Zqm→Zqn,定义为fA(e)=A·emod q满足性质(1)当输入向量e取自分布时,函数输出向量的概率分布与Zqn上的均匀分布不可区分;(2)在陷门S的作用下,逆函数fA-1(u):Zqn→Zqm的输出向量ee′服从分布且满足A·ee′=umodq。

3 体制构造

体制的构造思想是利用基于身份全同态加密体制的特性,将关键词作为身份加密体制中的身份信息,生成特定随机消息的密文;用户进行查询时,提供目标关键词的对应的身份私钥,服务器利用私钥对关键词解密,能够得到正确解密结果的意味命中。本文借助前像可采样陷门单向函数实现身份私钥的提取,进行构造出一个具备全同态特性的PEKS体制(以下称为FPEKS体制),其具体算法描述如下:

(1)密钥生成算法FPEKS-Setup(1n):按照命题2中的算法生成矩阵A∈Zqn×m及其陷门S∈⊂Λ⊥(A,q),分别作为FPEKS体制的公钥pk和私钥sk。

(2)关键词加密算法PEKS-Enc(pk,W,M):对于关键词W,算法的处理过程分为两步,用户执行第一步,第二步由云服务器完成:

第一步:用户计算关键词W的哈希值u=H(W)∈Zqn,发送给云服务器;

第二步:云服务器随机选择校验消息M={m1,……mλ}∈{0,1}λ,对于其中每个mi∈{0,1},随机选择向量,计算Pi=AT·Si+2·Xi∈Zqm。并利用收到的向量u,计算

最终得到关键字密文Cw={c1,……cλ,M}。

(3)陷门生成算法FPEKS-Trapdoo(W):对于待查询关键词W*对应的向量u*=H(W*),在随机喻示模型下,该向量的概率分布与Zqn上的均匀随机分布统计不可区分,因此可利用定义2中的函数fA-1对u*进行前像采样,得到向量TW=e*←fA-1(u*),且根据定义2可知,e*的概率分布满足

(4)验证算法FPEKS-Test(pk,TW,C):对于输入的公钥pk,陷门TW=e*和密文C={c1,……,cλ,M},对每个Ci分别计算mi*=((vi-<e*,pi>)modq)mod2。

如果{mi*,……,mλ*}=M,输出1;否则,输出0。

4 体制分析

FPEKS体制的一致性由前像可采样陷门单向函数的单向性和哈希函数的抗碰性保证:根据定义2可知,函数的输出向量e服从分布且满足A·e=umodq,当且仅当u*=u时,有A·e=u*modq,进而有mi*=mi=((vi-<e*,pi>)modq)mod2,即{mi*,……,mλ*}=M。

在随机谕示模型下,FPEKS体制的安全性归约到LWE体制的难解性,具体描述如下:

定理1:若存在PEKS体制的多项式时间攻击者,在攻击游戏中的优势ε不可忽略,则可构造多项式时间算法,以ε/2的优势解决LWE问题。

证明:假设存在FPEKS体制的多项式时间攻击者A,利用A的能力,构造LWE问题求解算法F如下:

对于给定素数q,正整数n和Zq上的错误分布,F访问谕示O,得到一组LWE问题实例(ui,vi)∈Zqn×Zq,i=0,……m,按照定义*,F需要对谕示反馈的随机性做出判断。F执行如下的FPEKS攻击游戏,并在游戏中以挑战者的身份调用攻击者A:

初始化阶段:F将(ui,vi)∈Zqn×Zq,i=0,……m组合成Zq上的n×m矩阵A,每个ui作为A的列向量。将矩阵A作为公钥pk交给A。

哈希函数谕示:F按照如下方式为A构造哈希函数谕示:对于输入的关键词W,F随机选择并计算u=A·e,根据定义2[f函数的定义],u的分布于均匀随机分布不可区分。在输出的同时,F记录三元组(W,u,e)。

询问阶段1:对于A提交的每个关键词Wi,F在随机谕示访问记录中查询(Wi,ui,ei),若找到,则将ei作为陷门TWi反馈给A,否则判定为非法访问,拒绝输出(即假设默认合法的陷门询问之前,询问者已经访问过哈希函数谕示)。

挑战阶段:A选择两个关键词W0和W1作为挑战交给F,F随机选择Wb,并调用Encrypt算法生成关键词密文,在得到的密文中,分别用LWE实例中的{v1,……,vm}和v0代替密文中的p和v。

询问阶段2:A继续询问关键词对应的陷门,F的反馈方式与阶段1相同。

猜测阶段:A输出be′∈{0,1},若be′=b则F猜测LWE实例中的谕示O=Os,否则猜测O=OR。

由挑战阶段的密文构造方式可知,当O=OS时,攻击者A得到的是正常的关键词密文,由于A是FPEKS体制的攻击者,因此A的猜测具有不可忽略的优势ε,而当O=OR时,A得到的是随机向量,其猜测的优势为0。故此,算法F根据A的猜测对谕示O的随机性进行猜测,能够以ε/2的优势解决LWE问题。

5 结语

关键词可搜索公钥加密技术是实现密文检索的有效手段之一,而全同态加密技术是解决云计算用户数据隐私保护问题的有效手段,本文将全同态加密的思想引入关键词可搜索公钥加密体制的设计中,提出一种具备密文同态运算能力的PEKS体制设计方案,具备较低的客户端计算复杂度,更加适合于云计算应用模式。

摘要:针对现有体制中用户生成关键词密文时的计算开销问题,引入全同态加密的思想,提出一种基于LWE问题,具备密文同态运算属性的关键词可搜索公钥加密方案,实现了计算开销由用户端向服务器端的转移。在随机谕示模型下,将体制的安全性归约到LWE问题难解性,并给出证明。

关键词:可搜索公钥加密,全同态加密,LWE问题,前像可采样陷门单向函数

参考文献

[1]Dan B,Crescenzo G D,Ostrovsky R,et al.Public Key Encryption with Keyword Search[M]//Advances in Cryptology-EUROCRYPT 2004.Springer Berlin Heidelberg:2004:506-522.

[2]Shamir A.Identity-Based Cryptosystems and Signature Schemes[M]//Advances in Cryptology.Springer Berlin Heidelberg:1984:47-53.

[3]Cao N,Wang C,Li M,et al.Privacy-Preserving Multi-Keyword Ranked Search over Encrypted Cloud Data[J].Parallel&Distributed Systems IEEE Transactions on.2014,25(01):222-233.

[4]Li J,Wang Q,Wang C,et al.Fuzzy keyword search over encrypted data in cloud computing[J].Infocom,2010,2009(09):1-5.

[5]Kamara S,Papamanthou C.Parallel and Dynamic Searchable SymmetricEncryption[M]//Financial Cryptography and Data Security.Springer Berlin Heidelberg:2013:258-274.

[6]Dong Jin Park,Kihyun Kim,Pil Joong Lee.Public key encryption with conjunctive field keyword search[C]//International Conference on Information Security Applications.SpringerVerlag:2004:73-86.

[7]Yong H H,Lee P J.Public Key Encryption with Conjunctive Keyword Search and Its Extension to a Multi-user System[C]//InternationalConference on Pairing-Based Cryptography.Springer-Verlag:2007:2-22.

[8]Regev,Oded.New lattice based cryptographic constructions[J].Journal of the Acm,2002,51(06):407-416.

公钥加密算法 篇5

1 私钥加密

1.1 概述

私钥加密,也称为对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码(称为对称密码)。因此,通信双方都必须获得这把钥匙,并保持钥匙的秘密。

DES (Data Encryption Standard) 和TripleDES是私钥加密的两种实现。DES和TripleDES基本算法一致,只是TripleDES算法提供的key位数更多,加密可靠性更高。DES使用的密钥key为8字节,初始向量IV也是8字节。TripleDES使用24字节的key,初始向量IV也是8字节。两种算法都是以8字节为一个块进行加密,一个数据块一个数据块的加密,一个8字节的明文加密后的密文也是8字节。如果明文长度不为8字节的整数倍,添加值为0的字节凑满8字节整数倍。所以加密后的密文长度一定为8字节的整数倍。

私钥加密算法的优点是保密强度高,加、解密速度快,适合加密大量数据。攻击者如果对加密后的数据进行破译,惟一的办法就是对每个可能的密钥执行穷举搜索。而采用这种加密技术,即使使用最快的计算机执行这种搜索,耗费的时间也相当长。如果使用较大的密钥,破译将会更加困难。在实际应用中,加密数据采用的密钥一般都有时效性,比如几天更换一次密钥和IV,如果攻击者采用穷举法试图破译加密后的数据,等到好不容易试出了密钥,加密者早已采用新的密钥对网络中传输的数据进行加密了,因此利用穷举搜索的方法破译加密后的数据实际上是没有意义的。

DES算法加密与解密算法过程如图1所示。

1.2 在.NET编程中的应用

在.NET Framework中,公共语言运行时CLR (Common Language Runtime)使用面向流的设计实现私钥加密,该设计的核心是Cryp-toStream,实现CryptoStream的任何被加密的对象都可以和实现Stream的任何对象链接起来。实现对称加密算法的类主要有:

DESCryptoServiceProvider———DES加密算法(可用密钥长度为64位)

TripleDESCryptoServiceProvider———TripleDES加密算法(可用密钥长度为128—192位)

为了使用流进行加密解密处理,.NET Framework还提供了CryptoStream类,该类用于定义将数据流链接到加密转换的流。实现CryptoStream的任何加密对象均可以和实现Stream的任何对象链接起来,因此一个对象的流式处理输出可以馈送到另一个对象的输入,而不需要分别存储中间结果,即不需要存储第一个对象的输出。

C#编程过程中使用的主要代码:

2 公钥加密

2.1 私钥加密存在的问题

私钥加密的缺点是双方使用相同的密钥和IV进行加密、解密。由于接收方必须知道密钥和IV才能解密数据,因此发送方需要先将密钥和IV传递给接收方。这就有一个问题,如果攻击者截获了密钥和IV,也就等于知道了如何解密数据!

2.2 公钥加密

公钥加密也叫不对称加密,这种技术使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。不对称加密产生的主要原因有两个,一是对称加密的密钥分配问题,另一个是由于对数字签名的需求。

不对称加密使用一个需要保密的私钥和一个可以对任何人公开的公钥,即使用公钥/私钥对来加密和解密数据。公钥和私钥都在数学上相关联,用公钥加密的数据只能用私钥解密,反之,用私钥加密的数据只能用公钥解密。两个密钥对于通信会话都是惟一的。公钥加密算法也称为不对称算法,原因是需要用一个密钥加密数据而需要用另一个密钥来解密数据。

私钥加密算法使用长度可变的缓冲区,而公钥加密算法使用固定大小的缓冲区,无法像私钥算法那样将数据链接起来成为流,因此无法使用与对称操作相同的流模型。这是编写程序时必须注意的问题。

为什么不对称加密更不容易被攻击呢?关键在于对私钥的管理上。在对称加密中,发送方必须先将解密密钥传递给接收方,接收方才能解密。如果避免通过不安全的网络传递私钥,不就解决这个问题了吗?

不对称加密的关键就在于此。使用不对称加密算法加密数据后,私钥不是发送方传递给接收方的,而是接收方先生成一个公钥私钥对,在接收被加密的数据前,先将该公钥传递给发送方;从公钥推导出私钥是不可能的,所以不怕通过网络传递时被攻击者截获公钥。发送方得到此公钥后,使用此公钥加密数据,再将加密后的数据通过网络传递给接收方;接收方收到加密后的数据后,再用私钥进行解密。由于没有传递私钥,从而保证了数据安全性。

虽然公钥加密解决了用对称加密传递消息必须传递密钥的问题,但是由于公钥加密无法使用流进行处理,因此与对称加密相比效率较低,不适用于加密大量数据的场合。在实际应用中,一般将两种加密方法配合使用。其基本思想是:用公钥加密算法加密私钥加密算法的密钥,用私钥加密算法加密实际数据。

具体设计思路可以简单描述为:A和B相互传递加密的数据前,B首先生成一个公钥加密算法使用的公钥/私钥对,假定公钥为publicKey,私钥为privateKey,然后B将公钥publicKey通过网络传递给A;A接收到此公钥后,根据此公钥初始化公钥加密对象,并用此对象加密使用私钥加密算法的密钥key,并将加密后的密钥key通过网络传递给B;这样,A和B都有了一个共同使用的私钥加密的密钥,然后双方用此密钥加密数据,并将加密后的数据传递给对方,对方收到加密后的数据后,再用密钥key解密数据。

通过这种方式,在不安全的网络上传递加密后的数据时,虽然攻击者可以截获公钥,但是由于用公钥加密的数据只能用私钥解密,而私钥并没有通过网络传递,因此攻击者无法通过公钥publicKey破译加密后的密钥key,因此也无法破译加密的消息。

在实际应用中,一般使用TCP协议通过网络传输数据。对于比较重要的数据,必须进行加密解密处理。一般实现方案为:

1) 传输双方均各自生成一个公钥/私钥对。

2) 通过TCP协议交换公钥。

3) 双方各自生成一个对称加密用的私钥,并使用对方的公钥加密新创建的私钥。

4) 双方将加密后的对称加密用的私钥发送给对方,以便对方利用此私钥解密。

5) 双方使用对称加密进行会话。

公钥加密数据网络传输过程为:

在通过网络传输数据之前,发送方先读取一个数据块,进行加密,并将加密后的数据保存在内存流中,然后计算加密后的数据长度,最后将数据长度和内存流中的数据转换成字节序列,通过网络流发送给接收方;接收方接收数据时,首先从网络流中获取要读取的加密后的数据量的大小值,然后根据获取的要读取的字节数,从网络流中读取数据,并解密这些数据到内存流中,再把内存流中的数据转换成字节序列,从而形成原始数据。对于较大的不能一次传输的数据,循环执行这个过程,直到数据全部传输完毕。

2.3 公钥加密在.NET编程中的应用

.NET Framework提供以下实现不对称加密算法的类:

DSACryptoServiceProvider

RSACryptoServiceProvider

以RSACryptoServiceProvider类为例在C#编程过程中的应用代码为:

参考文献

[1]何明星, 范平志.新一代私钥加密标准AES进展与评述[J].计算机应用研究, 2001 (10) .

[2]秦志光.密码算法的现状和发展研究[J].计算机应用, 2004 (2) .

[3]微软公司.面向.NET的Web应用程序设计[M].北京:高等教育电子音像出版社, 2009.

[4]罗平, 孙永东, 刘唯义.两种快速高效公钥算法[J].大庆石油学院学报, 2002, (4) .

公钥加密算法 篇6

密码学一直应用在社会的各个领域, 如军事、情报等。今天, 随着人们对于安全越来越重视, 密码学更是得到了前所未有的发展。众多类型的工作岗位, 如银行、证券、政府等都要求员工有相当程度的信息安全知识, 高等院校因此纷纷开设了密码学相关课程[1,2]。

在高职院校密码学课程的教学过程中, 常用的教学方法包括:讲授法、演示教学法、项目任务教学法、案例教学法等。教师可以根据实际情况采用多种方法进行教学, 但普遍存在的情况是教师在进行课程设计时无从下手。

2、基于RSA算法的公钥密码教学方法依据

公钥密码是现代密码学的重要分支, 自从1976年由Whitefield Diffie和Martin Hellman提出可以用陷门单向函数理解公钥密码的构造以来即得到很大发展。但是公钥密码技术大都基于复杂的数学难题, 如陷门单向函数等。其中包含的算法也涉及到大数分解、离散对数等数学问题, 相关的数学理论公式繁多, 比较难以理解, 对于数学基础一般的学生更是挑战。

将上述数学理论加入到常见公钥密码算法之后反而有较快速的理解方式。由于RSA算法的广泛应用以及该算法与后续数字签名课程的联系, 我们采用RSA算法进行公钥密码教学方法的设计。

3、基于RSA算法的公钥密码教学方法示例

RSA公钥密码算法的命名取自三个创始人:Rivest、Shamir和Adelman于1977年开发的第一个公钥密码算法。它是一种公认十分安全的算法, 也是目前网络上进行保密通信和数字签名的最有效的安全算法[3]。

3.1、RSA密钥生成算法

(1) 生成两个大素数p和q, 为了获得最大程度的安全性, p和q的长度最好一样;

(2) 计算p和q的乘积:n=p*q;

(3) 计算n的欧拉函数Ф (n) = (p-1) (q-1) ;

(4) 选取一个随机数a满足1<a<Ф (n) , 并且gcd (a, Ф (n) ) =1;

(5) 计算a的乘法逆元b=e-1modФ (n) ;

(6) 公钥PK= (a, n) , 私钥SK= (b, p, q) 。

3.2、RSA加密和解密算法

设m为要传送的明文, c为加密后的密文, RSA的加解密过程:

(1) 加密:利用公开密钥 (a, n) 加密, c=E (m) =memod (n) ;

(2) 解密:利用私有密钥 (b, p, q) 解密, m=D (c) =cbmod (n) , 其中E和D互为逆运算。

RSA算法的安全性主要依赖于大整数分解的困难性。从一个公开密钥和密文中恢复出明文的难度等价于分解两个大素数之积。因子分解越困难, 密码就越难以破译, 加密强度就越高。所以, RSA需采用足够大的整数密钥。现有的整数分解方法如Pollard法、二次筛选法、随机平方法等分解1024位以上的大整数仍然比较困难, 因此采用1024位以上密钥时可以认为是安全的。

3.3、RSA加解密举例:

a) 选取p=11, q=13。则n=p*q=143。Ф (n) = (p-1) * (q-1) =10*12=120;

b) 选取a=17 (大于p和q的质数) , 计算其逆, b=17142 mod 143=113。

c) 那么公钥PK为 (143, 17) , 私钥SK为 (143, 113) 。

3.4、教学实践

除去基本原理的讲述, 设计一个简单的实践项目也十分必要。由于学习密码学的学生往往已经具备了一定的编程能力, 因此可以设计一个文本文件加密系统的项目, 要求学生编写一段代码, 对已有的文本文件进行加密, 实现RSA算法的基本功能, 既能够让学生进一步了解算法的原理, 又没有很高的编程要求, 还能够锻炼学生的动手能力, 编写出来的程序也具有一定的实际应用范围。

3.5、考核

公钥密码教学的最终考核由平时成绩和实践项目的完成情况两部分组成, 在实践项目上欢迎学生用多种方法完成加密系统的设计并鼓励创新。考核部分能够做到因材施教, 全面评价各类学生。

4、教学方法总结

采用基于RSA算法的教学方法目的在于提高学生对于涉及复杂数学问题的公钥密码技术的兴趣和理解能力。近几年在密码学课程中采用该教学方法后, 学生反映良好, 在评教活动中亦获得了较高的分数, 在国家级、省级各类信息安全相关比赛中成绩排名有所提高。因此, 可以认为本文研究的教学方法在实践中能够收到良好的效果。

摘要:根据多年的密码学教学经验, 提出一种基于RSA算法的公钥密码教学方法。该方法从公钥密码的运行原理出发, 对RSA算法进行了深入剖析, 并给出相关安全性验证。该方法可以让学生快速进入学习公钥密码的大门。

关键词:RSA算法,公钥密码,教学方法

参考文献

[1]胡小明, 杨寅春, 吴秀梅等.信息安全专业密码学课程教学改革[J], 计算机教育, 2014 (1) :49-52.

[2]李素娟.《密码学》课程教学方法和设计的探索[J], 无锡职业技术学院学报, 2010, 9 (1) :77-79.

上一篇:语文写作下一篇:“90后”学员