在现代社会中,我们很多信息都需要通过互联网来传输,这些信息中难免会包含一些私密或者机密的内容,如果直接通过明文传输是非常不安全的,这就需要使用密钥并使用一定的算法对这些明文信息进行加密形成密文后再进行传输,最后接收方对密文进行解密,以获取里面的明文内容,这就涉及到密码学了。

我们先了解几个概念,虽然很简单,但是对于从未接触过加密的人来说还是有必要提一下的。
明文: 明文指的是未被加密过的原始数据。
密文: 明文被某种加密算法加密之后,会变成密文,从而确保原始数据的安全。密文也可以被解密,得到原始的明文。
密钥: 密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥,分别应用在对称加密和非对称加密上。

事实上,密码学出现的非常早,只是早期的密码学基本都是使用替换法移位法进行加密。在之前只用纸和笔进行运算的时代,这些方式或许还是有效的,但在计算机出现之后,这些方法就显得不堪一击了,于是现代密码学应运而生。

现代密码体制有两种: 对称密码体制( 又称为单钥密码体制) 和非对称密码体制( 又称为双钥密码体制或公钥密码体制) 。

对称密码体制:使用相同的密钥对消息进行加密或解密,系统的保密性主要由密钥的安全性决定,而与算法是否保密无关。

对称密码体制设计和实现基本思想是: 用何种方法产生满足保密要求的密钥以及通过何种方法将密钥安全又可靠地分配给通信双方。对称密码体制可以通过分组密码或流密码来实现,它既可以用于数据加密,又可以用于消息认证。

非对称密码体制:使用公钥加密消息,使用私钥来解密,或使用私钥加密消息,使用公钥进行解密。使用非对称密码体制可增强通信的安全性。

在密码学体系中,对称加密、非对称加密、单向散列函数、消息认证码、数字签名和伪随机数生成器被统称为密码学家的工具箱。其中,对称加密和非对称加密主要是用来保证机密性;单向散列函数用来保证消息的完整性;消息认证码的功能主要是认证;数字签名保证消息的不可抵赖性。

对称加密

对称加密又称单密钥加密,整个加密过程中只使用一个密钥。所谓对称其实就是使用一把密钥加密,并使用同一把密钥进行解密。对称加密由于加解和解密使用的是同一个密钥算法,故而在加解密的过程中速度比较快,适合于数据量比较大的加解密。

对称加密的优点:算法公开、计算量小、由于使用统一密钥算法所以加密解密速度比较快,适合于数据量比较大的加解密。

对称加密的缺点:密钥的管理与分配存在风险,一旦泄露,密文内容就会被外人破解;另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一密钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。

常用的对称加密算法:DES、3DES、AES、TDEA、Blowfish、RC2、RC4 和 RC5 等

对称算法适用场景:鉴于其具有更快的运算速度,对称加密在现代计算机系统中被广泛用于保护信息。例如,美国政府使用高级加密标准(AES)来加密和分类和感信息。AES取代了之前的数据加密标准(DES)。

非对称加密

非对称加密:在加密过程中,使用密钥对(分别是私钥和公钥。公钥可以对外发布,人人可见。而私钥则自己保管,不外泄)中的一个密钥进行加密,另一个密钥进行解密。比如用公钥加密,那么用私钥解密;用私钥加密,就用公钥来解密。由于加密和解密使用了两个不同的密钥,这就是非对称加密“非对称”的原因。

非对称加密优点:安全性高,解决了对称加密中密钥管理和分发可能存在不安全的问题。

非对称加密缺点:加密和解密花费时间长、速度慢,并且由于它们的密钥长度非常长,因此需要更多的计算资源,只适合对少量数据进行加密。

常用的非对称加密算法:RSA、Elgamal、Rabin、D-H、ECC(椭圆曲线加密算法)等

非对称加密适用场景:非对称加密通常用于大量用户需要同时加密和解密消息或数据的系统中,尤其是在运算速度和计算资源充足的情况下。该系统的一个常用案例就是加密电子邮件,其中公钥可以用于加密消息,私钥可以用于解密。

问题:为什么私钥可以解密被公钥加密的数据?
答:欧拉函数 欧拉定理 互为质数。具体的咱也不懂。

需要注意的是,在许多应用中,对称和非对称加密会一起使用。这种混合系统的典型案例是安全套接字层(SSL)和传输层安全(TLS)加密协议,该协议被用于在因特网内提供安全通信。SSL协议现在被认为是不安全的,应该停止使用。相比之下,TLS协议目前被认为是安全的,并且已被主流的Web浏览器所广泛使用。

数字证书

数字证书有点类似于我们的居民身份证,只是数字证书是基于互联网通信的,用于标记通信双方身份的一种方式。数字证书是由权威机构Certificate Authority发行的,又称之为证书授权,简称为:CA。人们在网上可以根据它来识别对方身份信息。

数字证书绑定了公钥及其持有者的真实身份,它类似于现实生活中的居民身份证,所不同的是数字证书不再是纸质的证照,而是一段含有证书持有者身份信息并经过认证中心审核签发的电子数据,广泛用在电子商务和移动互联网中。

数字签名

除了非对称加密,数字签名也是非对称密码学常见用法。

数字签名是指将摘要信息使用接收者的公钥进行加密,与密文一起发送给接收者。接收者使用自己的私钥对摘要信息进行解密,然后使用Hash函数对收到的密文产生一个摘要信息,然后将摘要信息与发送着传输过来解密后的摘要信息对比是否一致。如果一致,则表明数据信息没有被篡改。

也就是说,数字签名能够验证收到的信息的完整性,避免中途信息被劫持篡改或丢失。对方可以根据数字签名来判断获取到的数据信息是最原始的数据。

需要注意,并非所有的数字签名系统都使用加密技术,即使它们用到了公钥和私钥。实际上,可以仅对消息进行数字签名而不进行加密。 RSA是用于对加密消息进行签名的示例算法,但比特币使用的数字签名算法(名为ECDSA)根本没有用到加密功能。

密钥长度

对称和非对称加密之间的另一个功能差异与密钥的长度有关,密钥的长度以比特为单位,并且与每个加密算法提供的安全级别直接相关。

在对称加密中,密钥是随机选择的,其长度通常设置为128或256位,具体长度取决于所需的安全级别。然而,在非对称加密中,公钥和私钥之间在数学上相关联,这意味着两者之间存在算术联系。攻击者可能利用该模式破解密文,因此非对称密钥需要更长的密钥长度,才能提供相同级别的安全性。密钥长度的差异是如此明显,以至于128位的对称密钥和2,048位非对称密钥才能提供大致相同的安全级别。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐