zoukankan      html  css  js  c++  java
  • 同态加密简要概述

    简要概述代数学在计算机科学中的一个应用——同态加密

    利用同态加密保护数据私密性的想法最早在1978年由Ron Rivest, Leonard Adleman, Michael Dertouzos等人提出,它的主要思想是通过具有同态性质的加密函数对数据进行加密,从而可以在不对数据进行解密的条件下对已加密的数据进行任何在可以在明文上进行的运算,也就是说,可以对加密后的信息进行一系列复杂的运算和分析而不影响其保密性。下面首先给出一些定义。

    定义

    Definition 0:同态映射

    (<G,*>)(<H,circ>)是两个代数系统,(f:G ightarrow H)是一个映射,如果对于(forall a,bin G),都有(f(a*b)=f(a)circ f(b)),则称(f)是由(G)(H)的一个同态映射

    Definition 1:同态加密

    (Enc(K,x))表示使用加密算法(Enc)和密钥(K)(x)进行加密,(F)代表一种(n)元运算。如果对于该加密算法(E)(n)元运算(F),有:

    [Enc(K,F(x_1,x_2,cdots,x_n))=F(Enc(K,x_1),Enc(K,x_2),cdots,Enc(K,x_n)) ]

    则称:加密算法(Enc)(n)元运算(F)是同态的

    如果上述等式只对(n)元运算(F(x_1,x_2,cdots,x_n)=sum_{i=1}^nx_i)成立,则称该加密方案为一个加法同态加密方案

    如果上述等式只对(n)元运算(F(x_1,x_2,cdots,x_n)=prod_{i=1}^nx_i)成立,则称该加密方案为一个乘法同态加密方案

    对于上述只对一种运算具有同态性质的加密方案,我们将其称为部分同态加密。如果定义中的等式对于加法和乘法的混合运算也成立,那么该加密方案就可称为一个全同态加密方案

    研究现状

    一种现用的部分同态加密算法——RSA

    RSA加密算法是在1977年由 Ronald L. Rivest, Adi Shamir, Leonard Adleman提出的一种公钥加密系统。RSA加密系统中一个参与者创建公钥和密钥的方法如下:

    1.随机选取两个大素数(p)(q),使得(p e q).(实际运用中的(p)(q)通常都具有至少(1024)个二进制位)

    2.计算(n=pq).

    3.选择一个与(phi(n))互素的小奇数(e).((phi(n))是欧拉函数,表示小于或等于n的正整数中与n互素的数的数目)

    4.计算模(phi(n))意义下(e)的乘法逆元(d)的值.((d)一定存在且具有唯一性[1]

    5.构造二元组(P=(e,n))并将其公开,(P)是参与者的RSA公钥.

    6.构造二元组(S=(d,n))并保密,(S)是参与者的RSA密钥.

    (P_A)(S_A)分别是Alice的公钥和密钥,Bob要向Alice发送一条加密消息,就要先取得Alice的公钥(P_A=(e,n)),通过如下方式将明文(M)转换为密文(C):

    [C=P_A(M)=M^e { m mod} n ]

    而Alice取得密文后利用密钥(S_A=(d,n))对密文进行解密:

    [S_A(C)=C^d { m mod} n ]

    注意到Bob的加密操作满足对乘法的同态性质:

    [P_A(M_1M_2)=(M_1M_2)^e { m mod} n=(M_1)^e(M_2)^e { m mod} n=P_A(M_1)P_A(M_2) ]

    Alice的解密操作也满足对乘法的同态性质:

    [S_A(C_1C_2)=(C_1C_2)^d { m mod} n=(C_1)^d(C_2)^d { m mod} n=S_A(C_1)S_A(C_2) ]

    而对于加法,若要满足以下等式:

    [P_A(M_1+M_2)=(M_1+M_2)^e { m mod} n=P_A(M_1)+P_A(M_2) ]

    当且仅当

    [sum_{n=1}^{e-1}left(egin{array}{c} e\n end{array} ight)M_1^{e-n}M_2^nequiv 0 ({ m mod} n) ]

    而此等式并不保证对任意的明文(M_1)(M_2)都能成立,因此RSA不具有加法同态性。故RSA加密算法是一种具有乘法同态性的部分同态加密算法

    全同态加密[2][3]

    目前人们还在寻求构造全同态加密算法过程中。已经构造的同时对加法和乘法保持同态的算法有BGN加密算法,电路全同态算法等,但是它们都各自具有自己的局限性。

    BGN(Boneh-Goh-Nissim)算法是利用代数系统环的特性进行构造的,可以进行任意次数的同态加法运算,但是只能做一次乘法同态运算,应用范围有限。

    电路全同态由Gentry C.提出,它的加密和解密运算是用电路来表示的,但是将计算机程序转换成等价的布尔电路是一个复杂的问题,而且转换后的电路非常复杂。

    同态加密的应用

    云服务和云计算

    在现有的云服务体制下,用户需要把机密信息以明文形式存储在云服务商处,服务商就有可能复制机密信息,导致用户信息的泄露。理论上同态加密存储就是一种可行的解决方案,即,不对数据进行解密就可以对其进行任意的运算。

    加密搜索

    上文提到的电路全同态加密就可以实现加密搜索过程,它使得用户可以获得有效的搜索答案,并且不让搜索引擎知道搜索的真正内容。但现阶段如果利用上述电路全同态加密进行搜索,估计的搜索时间将增加(10^{12})倍,显然这样的搜索用时并不是可接受的程度。

    利用到的课本知识

    代数系统的同态与同构

    参考文献


    1. Thomas H.Cormen, Charles E.Leiserson, Ronald L.Rivest, Clifford Stein:《算法导论》P948-949 ↩︎

    2. 李顺东,窦家维,王道顺:同态加密算法及其在云安全中的应用,《计算机研究与发展》2015年第6期1378-1388 ↩︎

    3. 刘明洁,王安:全同态加密研究动态及其应用概述,《计算机研究与发展》2014年第12期2593-2603 ↩︎

  • 相关阅读:
    路由系统
    flask_sqlalchemy的使用
    input()输入语句
    注释
    Python 2017.1.5
    关于object网页播放器参数的设置,推荐博客系列
    LRU缓存,大神写的,值得借鉴
    object,网页播放器的相关属性设置
    js的apply和call方法
    count()函数在count()中参数的讨论
  • 原文地址:https://www.cnblogs.com/allegro-vivace/p/13164537.html
Copyright © 2011-2022 走看看