社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  区块链

区块链与密码学:加密算法解读

Unitimes • 8 年前 • 329 次点击  

unitimes.media

全球视角,独到见解


“现代加密算法的典型组件包括:加解密算法、加密密钥、解密密钥。其中,加解密算法自身是固定不变的,一般是公开可见的;密钥则往往每次不同,并且需要保护起来,一般来说,对同一种算法,密钥长度越长,则加密强度越大。”



加密过程中,通过加密算法和加密密钥,对明文进行加密,获得密文。解密过程中,通过解密算法和解密密钥,对密文进行解密,获得明文。



根据加解密的密钥是否相同,算法可以分为对称加密(symmetric cryptography,又称公共密钥加密,common-key cryptography)和非对称加密(asymmetric cryptography,又称公钥加密,public-key cryptography)。两种模式适用于不同的需求,恰好形成互补,很多时候也可以组合使用,形成混合加密机制。


并非所有加密算法的强度都可以从数学上进行证明。公认的高强度加密算法是在经过长时间各方面实践论证后,被大家所认可,不代表其不存在漏洞。


但任何时候,自行发明加密算法都是一种不太明智的行为。


对称加密


顾名思义,加解密的密钥是相同的。


优点是加解密效率高(速度快,空间占用小),加密强度高。


缺点是参与多方都需要持有密钥,一旦有人泄露则安全性被破坏;另外如何在不安全通道下分发密钥也是个问题。


对称密码从实现原理上可以分为两种:分组密码和序列密码。前者将明文切分为定长数据块作为加密单位,应用最为广泛。后者则只对一个字节进行加密,且密码不断变化,只用在一些特定领域,如数字媒介的加密等。


代表算法包括DES、3DES、AES、IDEA等。


非对称加密


非对称加密是现代密码学历史上最为伟大的发明,可以很好的解决对称加密需要的提前分发密钥问题。


顾名思义,加密密钥和解密密钥是不同的,分别称为公钥和私钥。


公钥一般是公开的,人人可获取的,私钥一般是个人自己持有,不能被他人获取。


优点是公私钥分开,不安全通道也可使用。


缺点是加解密速度慢,一般比对称加解密算法慢两到三个数量级;同时加密强度相比对称加密要差。


非对称加密算法的安全性往往需要基于数学问题来保障,目前主要有基于大数质因子分解、离散对数、椭圆曲线等几种思路。


代表算法包括:RSA、ElGamal、椭圆曲线(EllipticCurveCrytosystems,ECC)系列算法。


一般适用于签名场景或密钥协商,不适于大量数据的加解密。


RSA 算法等已被认为不够安全,一般推荐采用椭圆曲线系列算法。


混合加密


即先用计算复杂度高的非对称加密协商一个临时的对称加密密钥(会话密钥,一般相对内容来说要短的多),然后双方再通过对称加密对传递的大量数据进行加解密处理。


典型的场景是现在大家常用的HTTPS机制。HTTPS实际上是利用了Transport Layer Security/Secure Socket Layer(TLS/SSL)来实现可靠的传输。TLS为SSL的升级版本,目前广泛应用的为TLS1.0,对应到SSL3.1版本。


建立安全连接的具体步骤如下:


客户端浏览器发送信息到服务器,包括随机数R1,支持的加密算法类型、协议版本、压缩算法等。注意该过程为明文。


服务端返回信息,包括随机数R2、选定加密算法类型、协议版本,以及服务器证书。注意该过程为明文。


浏览器检查带有该网站公钥的证书。该证书需要由第三方CA来签发,浏览器和操作系统会预置权威CA的根证书。如果证书被篡改作假(中间人攻击),很容易通过CA的证书验证出来。


如果证书没问题,则用证书中公钥加密随机数R3,发送给服务器。此时,只有客户端和服务器都拥有R1、R2和R3信息,基于R1、R2和R3,生成对称的会话密钥(如AES算法)。后续通信都通过对称加密进行保护。


作者:~旗木卡卡东~


文章来源:博客园


原文链接:

http://www.cnblogs.com/bruceshao/p/8535324.html


著权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


国际金融科技新媒体和社区平台

UNITIMES

网址 : unitimes.media

新浪微博:@Unitimes



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/5Yj9vvUG00
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/10844