密码学——对称加密&加密模式

        加密机制,分为对称加密跟非对称加密,前者也叫做私钥加密,后者也叫做公钥加密。这篇文章单独来谈谈对称加密,可能有些地方说的不好或者不对,还望朋友们指正,共同探讨共同学习。

        对称加密中,根据对明文的处理方式,又可以分为流加密(Stream Cipher)跟块加密(Block Cipher)

        流加密,简单来说就是根据密钥产生一串跟明文长度一样的数据流,然后xor一下,速度快。可能有的人觉得流加密不够安全,也不尽然,只不过在使用流加密的时候需要格外的小心,一点小小的疏漏就可能导致很严重的安全问题。

        块机密,就是针对一个固定大小的数据块进行加密,常见的有des, 3des, aes,blowfish等等。

        这里就不依依详细介绍了,拿前3个用的比较多的说说,大家有兴趣可以自己去研究研究。关于他们具体的算法思想实现原理,也不在本文的讨论范围之内,这些东西网上一查有很多,而且讲的都很详细,这里只说说一些需要注意的东西或者不太好查的东西


DES:

       

        des一个块的大小是64bits,密钥是56bits,块的大小及密钥的长度都不能满足现在的安全需求了,抛开块大小及密钥长度不谈,des也有几个与生俱来的weakness。

  • weak keys:des每一个回合的key(这里叫做round key)都是由加密key(这里叫做cipher key)里的一些bit位组合成的,如果cipher key全是0的话,所有的round key都一样,加密跟解密的过程也都一样了,除了全是0这样的weak key还存在其他的weak key
  • complementation property(取反属性/补属性):E(^K, ^P) == ^E(K,P)

        会不会有点太吹毛求疵了,第一个缺点可以避免,第二个即使避免不了,但是似乎也没什么太大的影响,但是这不是一个理想的块加密该有的属性,在密码学安全里容不得一点小小的瑕疵,所谓道高一尺魔高一丈,你永远想不到黑客们会采用什么样的攻击手段,这不是一个安全漏洞但也是一个安全隐患,所以实际的开发中尽量不要用des。


3DES:


        为了挽救des,毕竟他也是曾将的王者,出现了3des,也就是三重des,块的长度没变依旧是64bits,密钥扩展到56*2bits,56*3bits,虽然密钥长度变长了,加强了一定的安全性,但是块的大小没变,而且依旧存在des那几个与生俱来的weakness。这里补充一下块的大小对安全性的影响,类似md5,sha-1等哈希算法,位数过少的话导致的一个问题就是碰撞,对于哈希算法来说,产生碰撞了基本可以说这个算法已经走到尽头了,对于块加密来说,两个不同的明文块对应的密文块相同,这也是一个不小的安全隐患。如果块的大小有n bits,从密码学的角度讲,他可提供的安全性只有n/2 bits(这里涉及到生日攻击,有兴趣的朋友可以去研究研究)。


AES:


        aes一个块的大小是128bits,64位的安全性在目前来说足够了,密钥长度有128bits,192bits,256bits,一般情况下,在加密算法是安全的情况下,密钥越长可提供的安全性越高。但是aes有点除外,已经有研究显示存在针对aes-192跟aes-256的攻击了,但是这些攻击对aes-128似乎不起作用,当然只是理论上的,现实中还是可以放心大胆的用滴
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值