这几个概念才接触密码学时候理解不是很到位,现在将其理清楚,写下自己的理解。
公私秘钥对可以通过一种算法得到
公钥:公开的,都可以拿到的秘钥。用来加密也用来解密,公钥加密的信息只能用对应私钥来解。
私钥:只有一个持有者,其他人都拿不到。用来加密也用来解密,私钥加密的信息只有对应的公钥能解。因为私钥具有唯一性,可以用来鉴别身份。需要注意的是私钥的唯一性是针对自己的公钥来说的。
非对称加密:过程使用两把不同的钥匙加解密,私钥加密只能用公钥解,公钥加密用私钥解,一般流程为:A生成公私密钥对,把公钥给B,B用公钥加密信息发送给A,A用私钥解密。
数字信封:使用了双层加密。数字信封包含两部分:密文和私钥加密后的对称密钥,使用过程是首先用公钥解开私钥加密的对称密钥,再用对称密钥解密文,结合了对称加密快和非对称加密安全的优点
摘要:对任意一组输入数据通过算法进行计算,得到一个固定长度的输出摘要,常见RSA公司的MD5算法和SHA-1算法。
签名:包含两部分:对所签信息做摘要运算得到一个结果值,在运用非对称加密中的私钥对这个值进行加密(比如app签名就是对app自身文件做多次摘要,然后私钥加密,https流程签名就是对一些企业证书信息做摘要然后私钥加密)。
证书:公钥相关信息,其他信息如证书有效期,名称,最后贴附私钥签名的信息,格式普遍采用的是X.509V3国际标准(app中证书指纹,他是签名工具相关信息的hash值不包括贴附私钥签名只会随签名keystore变化而变化,app变化时候不会改变,用来配合包名做身份鉴别,常用于app升级和安装场景)。
keystore:证书库文件,保存证书信息和公钥及私钥(用设置密码保护私钥),访问私钥要密码。
CA:第三方可信机构。为什么https过程中非对称加密传输过程中需要用到第三方可信机构(CA),大家得客户端都以保存在本地的CA发出来的公钥解密,就可以确定CA的身份因为CA是唯一的私钥拥有者,CA做的事就是给合法的服务端证书签名,所以客户端鉴定CA的身份后,自然也认为解得CA签名的服务器证书是合法的。
注意:https中涉及两对公私密钥,CA的私钥用来签名,其签名信息用来防篡改,CA公私钥配合确定CA的是身份。服务器的公私密钥用来加解密信息,也用来确定的服务器身份,其交互的信息用来协商对称密钥。