加密

加密

https://zhuanlan.zhihu.com/p/44660264

对称加密

可能受到中间人攻击

    ### 问题

    1. 共同的密钥的协商。直接的面对面协商可能是不现实的,而任何其他方法都有可能泄露;

    2. 密钥的管理。最好对于每个用户的每次通信都使用不同的密钥;

    3. 对称加密算法不能提供身份验证,而在电子商务中,用户必须要确认自己隐私数据的接收方是真正的网站;即需要有证明使用密钥者是密钥的合法拥有者的能力。

    ### 优势

    相对于非对称加密开销小

    故一般使用非对称加密建立链接,再交换对称加密密钥

非对称加密

    ### DH算法

    起源于DH算法,在数学上,DH算法的有效性依赖于计算离散对数的难度。

    为了防御中间人攻击,就需要一个能够验证通信双方身份的机制来防止这种攻击。

    

    ### RSA算法

    Alice可以使用大质数为基础生成一对密钥,分别是公钥和私钥,一般使用公钥来加密(encryption),私钥来解密(decryption), 所以一般用e表示公钥,d表示私钥。

    Alice的公钥和Bob加密之后的密文都是对攻击者Eve可见的。

    假如有人找到一种快速因数分解的算法,那么RSA的可靠性就会极度下降。但找到这样的算法的可能性是非常小的。

        #### RSA的应用:数字签名

        最普遍的应用,网站身份认证。

        当我们以HTTPS的方式连上一个网站时,网站会首先给我们发送一个证书。这个证书里包含有它的域名公钥 等信息。同时这个证书是由专门的第三方公信机构CA使用自己的私钥签了名 的。浏览器在拿到这个证书之后,首先用第三方公信机构CA的公钥对这个证书解密 ,然后查看和比对 证书里的域名 和浏览器地址栏的域名 ,完全匹配才认为是正确的网站

            - 正确的域名进行签名(加密),放在证书中,供连接建立时查验

        如果域名被污染,虽然攻击者网站可以拷贝一份正常网站的证书,但是因为证书中包括了正常网站的公钥,如果它不能获得正常网站的私钥,那么它就没有办法对加密信息进行解密。从而不能正常建立连接。

        那攻击者有没有可能伪造一份证书呢?只要攻击者拿不到第三方CA的私钥,就没有办法完成签名。那攻击者有没有可能伪造CA呢?

        #### 缺点

        为了抵抗攻击,不得不增加公钥的长度。而随着长度的增加,计算量和复杂度也不断增加。

        随着数字大小的增加,分解的效率会提高,乘法和分解的难度差距会减小。

    ### 基于椭圆曲线加密ECC

    理想的trapdoor函数中,正向计算(简单的计算)和反向计算(复杂计算)的难度应该随着数字的增加同步地增加。

    它有一些很好的特性可以适合用来加密,是一个阿贝尔群,能定义一些运算。

        #### 加密过程

        使用椭圆曲线进行加密通信的过程:1、Alice选定一条椭圆曲线EC(x,y),并取椭圆曲线上一点,作为基点G。2、Alice选择一个私有密钥k,并生成公开密钥K=kG。3、Alice将EC(x,y)和点K,G传给Bob。4、Bob接到信息后 ,将待传输的明文通过一定的方法编码到EC(x,y)上的一点M,并生成随机整数r(r<n)。5、Bob计算点C1=M+rK;C2=rG。6、Bob将C1、C2传给Alice。7、Alice接到信息后,计算C1-kC2:C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M;然后对点M进行解码就可以得到明文。

    加密者可以加速计算,时间复杂度为Log2(K),攻击者需要K

    应用:ECDSA

非对称加密在区块链中的应用

公钥publicKey加密,私钥secretKey签名

在区块链中,pk的哈希就是身份,在生成一对公私钥后,拥有sk的人可以控制pk

好处

  • 分布式的身份管理。没有必要使用身份管理中心来管理这些身份。人们可以生成任意多个公钥进行交易。在区块链中,称为地址address(实际上是公钥的哈希)。

  • 匿名。不过虽然地址不能直接和和现实中的人关联起来,但是通过一连串的交易还是有可能泄露身份。

posted @ 2021-12-13 22:20  紫羊  阅读(17)  评论(0)    收藏  举报