加密算法吧 关注:48贴子:81
  • 9回复贴,共1

加密算法的发展路线

只看楼主收藏回复

加密算法的技术发展路线


1楼2019-03-27 16:02回复
    加密算法乍一听貌似和大部分***常生活十分遥远,但实际却密切相关。从网络层到主机文件层,无论那层加密应用或协议背后都是由各种加密算法所支撑。即便你不用任何加密产品,凡是使用https的网站都已经使用了加密协议TLS/SSL。你也被动享受了加密算法带来的隐私保护,及通讯安全。今天我们抛开浅层的应用来扒一扒各种有趣的加密算法。
    在扒加密算法前先稍微科普一下,加密算法主要作用是把明文变成密文。加密算法加密后,明文会变成密文,防止信息泄露。虽然看起来和乱码很像,但密文不是乱码。大部分乱码是由于编码不一致导致。编码不属于加密算法,编码无法把明文变成密文,只是改变了一种显示格式而已。所以base64只是一种编码而已,它不是加密算法,不具备加密能力,不能保障您的明文安全。所以,以后要听哪家说我们使用了base64进行加密,赶紧屏蔽。


    2楼2019-03-27 16:03
    回复
      加密算法的加密需要符合以下三点诉求:
      1.机密性:保证数据即使被盗取,小偷也不知道是啥。
      2.完整性: 保证数据在传输过程中即使被劫持修改,接收方能够发现信息已被截取,而选择换掉。
      3.可用性:保证加密算法的开销、复杂度都在可用范围。
      结合上述诉求,加密算法的发展主要经历了古典密码和现代密码两个重要时期。


      3楼2019-03-27 16:03
      回复
        对称加密算法
        对称加密算法是使用最广泛的加密算法之一。常用的对称性加密算法有DES算法、AES算法、3DES算法、TDEA算法、Blowfish算法、RC5算法、IDEA算法等。对称加密的特点是,加密和解密两方使用同一密钥进行加、解密。加密算法本身泄露不会对安全性造成影响,密钥才是安全性的关键。按照原理不同,对称加密可以大体分成流加密和分组加密两种类型。


        4楼2019-03-27 16:03
        回复
          流加密
          流加密是将明文按字符逐位地,对应地进行加密的一类对称密码算法。流加密中最有名的算法是RC4和GSM。流加密算法相对简单,明文和密钥按位对其做约定的运算,即可获得密文。
          由于流加密原理简单,其算法结构存在弱点,如果密钥流又多次重复使用,只要泄露局部明文,攻击者很容易算出密钥。另外,由于是按位进行加密,攻击者即使对数据进行篡改,也不会破坏原有数据结构,接收者很难发现其中变化。流加密虽然是一种快捷高效的加密方法,但其安全性较低,不建议用户使用流加密对关键信息进行加密。


          5楼2019-03-27 16:03
          回复
            分组加密
            分组加密内部实现则复杂的多,每一个加密块都会经历至少16轮运算,其代表算法有DES和AES。目前推荐使用AES,DES已经不在安全。
            DES
            DES是较早时期的对称加密标准,在当时得到了广泛的应用。随着计算机性能地不断提高,暴力破解DES变得越来越容易。所以DES已经不再安全,近十几年逐渐地被3DES和AES代替。
            DES核心主要分成初始置换、轮函数、逆置换三步。
            初始置换:把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分长32位,其置换规则为将输入的第58位换到第1位,第50位换到第2位……依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位
            轮函数:DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位(每组的第8位作为奇偶校验位),产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。
            逆置换:DES 使用 16 轮循环,使用异或、置换、代换、移位操作四种基本运算。最后经过16次迭代运算后,得到L16、R16,将此作为输入进行逆置换,逆置换正好是初始置换的逆运算,由此即得到密文输出,解密过程则是整套加密过程的逆运算。
            AES
            AES的诞生是为了替代原先的DES,它已经被多方分析论证,在全世界范围广泛使用,是目前最为安全的对称加密算法之一。近十年,AES已然成为对称密钥加密中最流行的算法之一。不同于它的前任标准DES,AES使用的是代换-置换网络,而非Feistel架构。
            大多数AES计算是在一个特别的有限域内完成的,加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为“状态(state)”,其初值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个Byte)。加密时,各轮AES加密循环(除最后一轮外)均包含4个步骤:
            AddRoundKey——矩阵中的每一个字节都与该次轮密钥(round key)做XOR运算;每个子密钥由密钥生成方案产生。
            SubBytes——通过一个非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。
            ShiftRows——将矩阵中的每个横列进行循环式移位。
            MixColumns ——为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每列的四个字节。最后一个加密循环中省略MixColumns步骤,以另一个ddRoundKey取代。


            6楼2019-03-27 16:04
            回复
              模式
              无论是AES还是DES他们内部都支持不同的加密模式,每一种模式的安全性和效率都大不相同。这里,只简单介绍两种最常见的模式ECB和CBC
              ECB模式加密效率高,但安全性低,每次都是Key对单独块进行加密,容易被对方破解。但由于每个模块之间毫无关联,所以可以并发运算,极大地提高了加密效率。通常,ECB的加密效率比CBC高5-6倍。
              CBC加密效率虽然没有ECB高,但安全性则高得多。
              每块加密引入一个IV,每块的IV都不同,需要上一块进行迭代,最终完成整个加密过程。由于每块的IV和密文块有关,所以无法采用并发的模式,必须串行整个过程。
              如果不是出于极高的性能要求,建议还是采用CBC模式进行加密,该模式更为安全、可靠。


              7楼2019-03-27 16:05
              回复
                非对称加密算法
                非对称加密算法和对称加密算法的最大区别在于,加密的密钥和解密的密钥不再是一个。这就像两个人互对暗号一样。这种加密方式主要为了应对“多个加密者,一个解密者”的模式,对称密钥只能解决解密用户为一对一的关系。
                于是在这种多对一的关系中就出现了一个公钥体系。一个公钥对应一个私钥。公钥是公开的,任何数据发送者都用公钥对数据进行加密,但公钥加密的内容只有私钥才能解开。其中著名的算法包括DSA算法、RSA算法、Elgamal算法、背包算法、Rabin算法、D-H算法、ECC算法。背后的数学原理从大数分解到复杂的椭圆曲线上的离散对数问题,非常复杂。这里,笔者就不做展开。
                虽然背后的数学支撑不同,但模式类似,均采用公私钥密钥对的方式,公钥解密私钥加密的信息,私钥解密公钥加密的信息。非对称加密算法的执行效率成为这种算法实际应用的最大阻碍。大部分应用主要把非对称加密算法用在身份验证中,并不会在通讯中使用。


                8楼2019-03-27 16:05
                回复
                  大家有用赢家加密芯片的吗?给推荐一些,要高速的。谢谢!


                  IP属地:山东10楼2019-04-26 07:26
                  回复
                    请问楼主了解全同态加密吗?


                    IP属地:江苏来自Android客户端11楼2019-11-04 20:50
                    回复