本文主要是了解加解密的基础知识,首先我们了解什么是加解密及分类,然后我们谈到加解密的系统组成,接着我们看对称加密算法及当今一些加密算法介绍,最后我们了解非对称加密及现今的一些非对称加密算法。
什么加解密及分类:
数据加密就是原来为明文的文件或者数据通过某种算法进行处理以后,使其变成不可读的一段代码,通常这种称为“密文“,使其需要输入相应密钥以后才能显示出来原本可读的内容。
加解密算法是密码学的核心技术,从设计理念上可以分为两大基本类型:对称加密、非对称加密。
加解密系统基本组成:
加解密系统典型组件一般包括:加解密算法、加密密钥、解密密钥。其中加解密算法自身是固定不变的,并且一般都是公开的;密钥则是最关键的信息,需要安全地保存起来,甚至通过特殊硬件进行保护。一般来说,对同一种算法,密钥需要按照特定算法每次加密前随机生成,长度越长,则加密强度越大。
加密过程中,通过加密算法和加密密钥,对明文进行加密,获得密文。
解密过程中,通过解密算法和解密密钥,对密文进行解密,获得明文。
根据加解密过程中所使用的密钥是否相同,算法可以分为对称加密和非对称加密。两种模式适用于不同的需求,恰好形成互补。某些时候可以组合使用,形成混合加密机制。
并非搜友加密算法都是可以从数学上得到证明。公认的高强度的加密算法和实现往往经过长时间各方面充分实践论证后,才被大家所认可,但也不代表其绝对不存在漏洞。因此,有人说自行设计和发明加密算法且不公开不就可以了吗?这也很容被攻破,无法在安全上得到保障。密码学实现的安全是通过算法所依赖的数学问题来提供,并非通过对算法的实现过程进行保护。
对称加密算法:
对称加密算法,就是加解密过程的密钥是相同的。该算法优点是加解密效率高且加密强度都很高。缺点是参与方都需要提前知道密钥,一旦有人泄露或者安全性被破环;密钥在安全环境分发也是一个问题。
对称加密从实现原理上可以分为两种:分组密码和序列密码。
分组密码:将明文切分为定常数据块作为基本加密单位,应用最为广泛。
序列密码:每次只对一个字节或字符进行加密处理,且密码不断变化,只用在一些特定领域,如数字媒介的加密等。
分组对称加密代表算法包括DES、3DES、AES、IDEA等:
DES(Data EncryptionStandard):经典的分组加密算法,1977年由美国联邦信息处理标准(FIPS)采用FIPS-46-3,将64位明文加密为64位密文,其密钥长度为64位(包含8位校应码)。优点(速度较快,适用于加密大量数据的场合),现在已经很容易被暴力破解;
3DES(Triple DES):是基于DES的算法,对一块数据用三个不同的密钥进行三次加密(加密-解密-加密),强度更高,但是现在也被认为不够安全。
AES(Advanced EncryptionStandard):高级加密标准,对称算法,是下一代的加密算法标准,速度快,安全级别高,在21世纪AES 标准的一个实现是Rijndael 算法;目前尚未有有效破解手段。
IDEA(International DataEncryption Algorithm):1991年密码学家JamesMassey与来学嘉联合提出。使用128位密钥提供非常强的安全性;
序列密码,又称为流密码。序列密码具有实现简单、便于硬件实施、加解密处理速度快、没有或只有有限的错误传播等特点,因此在实际应用中,特别是专用或机密机构中保持着优势,典型的应用领域包括无线通信、外交通信。1949年Shannon证明了只有一次一密的密码体制是绝对安全的,这给序列密码技术的研究以强大的支持,序列密码方案的发展是模仿一次一密系统的尝试,或者说“一次一密”的密码方案是序列密码的雏形。如果序列密码所使用的是真正随机方式的、与消息流长度相同的密钥流,则此时的序列密码就是一次一密的密码体制。代表算法包括RC4等。
非对称加密算法:
非对称加密是现代密码学历史上一项伟大的发明,可以很好的解决对称加密提前分发密钥的问题,形成了与对称加密的互补。
对称加密算法在加密和解密时使用的是同一个秘钥;而非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
私钥一般需要通过随机算法生成,公钥可以根据私钥生成。公钥一般是公开的,他人可以获取的;私钥一般是个人持有,他人不能获取。是否很熟悉呢?这就是区块链使用的核心加密算法。
非对称加密算法的有点是公私钥分开,不安全通道也可以使用。缺点是处理速度往往比较慢,一般比对称加解密算法慢2~3个数量级;加密强度也往往不如对称加密算法。
非对称加密算法的安全性往往需要基于数学问题来保障,目前主要有基于大数质因子分解、离散对数、椭圆曲线等经典数学难题进行保护。代表算法包括RSA、ElGamal、椭圆曲线(ECC)、SM2等系列算法。
RSA:RSA是1977年由罗纳德·李维斯特(RonRivest)、阿迪·萨莫尔(AdiShamir)和伦纳德·阿德曼(LeonardAdleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。三人于2002年因此获得图灵奖。
Diffie-Hellman密钥交换:基于离散对数无法快速求解,可以在不安全的通道上,双方协商一个公共密钥。
ElGamal:由Taher ElGamal设计,利用了模运算下求离散对数困难的特性。被应用在PGP等安全密钥。
椭圆曲线(ECC):现代备受关注的算法系列,基于对椭圆曲线上特定点进行特殊称发逆运算难以计算的特性。最早1985年由NealKoblitz和VictorMiller分别独立提出。ECC系列算法一般被认为具备较高的安全性,但加解密计算过程往往比较费时;这个我们好像也比较熟悉,BTC中使用的算法正是它。
SM2(ShangMi2):国家商用密码算法,由国家密码管理局于2010年12月17日发布,同样基于椭圆曲线算法,加密强度优于RSA系列算法。
非对称加密算法一般适用于签名场景或密码协商,但不适用于大量数据加解密。目前普遍认为RSA类算法可能在不远将来被破解,一般推荐采用安全度更高的椭圆曲线系列算法。
以上就是我们谈到的内容,来自相关书籍及网络,总结及记录加深自己的认识与思考及给大家更好的查看信息,如有误敬请谅解。