密码学基本概念

1 加密和密钥

1.1对称加密和非对称加密

加密包括对称加密与非对称加密,对称加密算法如AES、SM4等;非对称加密算法如RSA、SM2等
在加密过程中需要使用一个或多个密钥,未加密的数据称为明文,使用密钥对明文进行加密得到加密后的数据,称为密文。无论对称加密还是非对称加密,都是可逆的,即可以使用密钥对密文进行解密得到明文。

密钥的英文是key,加密是encrypt,解密是decrypt,明文是plaintext,密文是ciphertext。

1.2秘钥

对称加密使用相同的一个密钥来加密和解密,而非对称加密使用公钥密码系统提供的密钥对:公私钥。

公私钥不可互相交换,对于非对称加密来说,公钥用于加密,私钥用于解密

公钥密码系统是public-key cryptosystem,比如RSA或ECC,它们首先是一套公钥密码系统,能够用来生成公私钥。公钥是public key,私钥是private key

对称加密的密钥往往采用随机数发生器和密钥派生算法(HKDF),而非对称加密则使用公钥密码系统创建一对公私钥。对于从密码派生密钥的场景,HKDF不够安全,建议使用更安全的密钥派生函数,例如PBKDF2、Bcrypt、Scrypt或Argon2等等

1.3签名

大多数签名算法,如RSA、ECDSA、EdDSA、SM2等,都使用对应的公钥密码系统生成的一对公私钥进行签名和验签: 信息由私钥签名,由公钥验签。

数字签名是digital signing,签名算法是signature algorithms,签名动作是sign,签名结果是signature,验签动作是verify。

注意签名算法不是非对称加密算法,算法本身是不一样的。RSA、SM2既提供了非对称加密算法,也提供了签名算法;而ECDSA、EdDSA则只是签名算法。ECDSA、EdDSA、SM2对应的公钥密码系统都属于ECC,即Elliptic Curve Cryptography,椭圆曲线密码学

1.4加密与签名

加密和签名是两回事,加密的目的是防止信息泄露,签名的目的是防止篡改和伪造

MD5、SHA-1、SHA-256、HMAC-SHA256等属于哈希算法,计算数字摘要,不可逆,有碰撞

DES、AES、RSA等属于加密算法,对数据进行加解密,可逆

数据加密:用公钥加密,只能用自己的私钥解密,因为私钥只有你自己有,所以别人不可能能够解密,看到你的内容,保证了数据的保密性。

数据签名:用私钥加密,只能用公钥解密,任何人都可以用公钥解密。因为私钥只有你自己有,所以保证了该数据肯定是从你这发送出去的,不可能是别人发的。

数字签名只采用了非对称密钥加密算法,它能保证发送信息的完整性、身份认证和不可否认性,而数字加密采用了对称密钥加密算法和非对称密钥加密算法相结合的方法,它能保证发送信息保密性。

就拿A给B发送经过签名加密信息来说:

1、A对信息签名的作用是确认这个信息是A发出的,不是别人发出的;

2、加密是对内容进行机密性保护,主要是保证信息内容不会被其他人获取,只有B可以获取。

也就是保证整个过程的端到端的唯一确定性,这个信息是A发出的(不是别人),且是发给B的,只有B才被获得具体内容(别人就算截获信息也不能获得具体内容)。

那么这里一共有两组四个密钥:A的公钥(PUB_A),A的私钥(PRI_A);B的公钥(PUB_B),B的私钥(PRI_B)。

公钥一般用来加密,私钥用来签名。

加密算法

数据加密就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段“密文”,该密文只能在输入相应的密钥之后才能显示出原本的数据,通过这样的途径来达到保护数据不被非法窃取、阅读的目的。

对称加密

采用同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。这种加密方式的特点是加密解密速度快

常见的对称加密算法有AES、DES

非对称加密

非对称加密需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

签名算法

签名算法是指用于计算数字签名的算法。数字签名,就是只有信息的发送者才能产生别人无法伪造的一段数字串,这段数字串同时也是对信息发送者的一个有效证明。计算数字签名通常是个单向的过程(类似于摘要算法的不可逆性)。目前应用最为广泛的三种签名算法是:RSA签名、Rabin签名、DSS签名。

HTTPS原理探究

HTTPS 是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL层,因此HTTPS 的安全基础是 SSL。

HTTPS协议=HTTP协议+SSL协议

常见签名算法

常见的数字签名算法主要有RSA、DSA、ECDSA三种

RSA数字签名算法主要包括MD和SHA两种算法,例如我们熟知的MD5和SHA-256即是这两种算法中的一类,具体如下表格分布

算法输出Hash长度中继Hash长度数据区块长度最大输入长度循环次数碰撞攻击性能示例(MiB/s)

在这里插入图片描述
在这里插入图片描述
1.1. MD2、MD4、MD5算法

最常见的是我们熟知的MD5加密算法,MD5全称Message-Digest Algorithm 5(信息-摘要算法 5),目前比较普遍的Hash算法,是散列算法的基础原理,MD5的前身有MD2、MD3和MD4。MD5算法法是输入任意长度字符,输出固定长度128位的算法。经过程序流程,生成四个32位数据,最后联合起来成为一个128位Hash值,主要方式是通过求余、取余、调整长度、与链接变量进行循环运算进而得出结果。

1.2. SHA-1算法

就在2017年2月23日Google宣布实现了对SHA-1算法的碰撞破解,所以SHA-1算法已经正式被宣布为不安全的算法,主流厂商对自身产品及安全要求都提升至了SHA-2算法。

1.3. SHA-2算法

SHA-224、SHA-256、SHA-384和SHA-512并称为SHA-2,发布于2001年,目前比较广泛应用的SSL数字证书和代码签名证书签名算法均采用SHA-256算法,相较于SHA-1算法而言,至今SHA-2算法还未被破解,从某种意义上SHA-2延用了SHA-1算法,所以至少发文时间起是安全的。目前顶级CA和Google、苹果等公司都采用基于SHA-256算法作为SSL证书和代码签名证书的主流签名算法。

1.4. SHA-3算法

SHA-3算法正式发布于2015年,SHA-3并不是要取代SHA-2,因为SHA-2目前并没有出现明显的弱点。由于对MD5、SHA-0和SHA-1出现成功的破解,NIST感觉需要一个与之前算法不同的,可替换的加密Hash算法,也就是现在的 SHA-3

  1. DSA数字签名算法

DSA全称Digital Signature Algorithm,DSA只是一种算法,和RSA不同之处在于它不能用作加密和解密,也不能进行密钥交换,只用于签名,所以它比RSA要快很多,其安全性与RSA相比差不多。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却做不到。

在这里插入图片描述

作者:如月公子
链接:https://www.jianshu.com/p/755d8324b325
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

参考

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值