openssl
算法基础
1.1 对称算法 : 密钥相同,加密解密使用同一密钥
1.2 摘要算法:无论用户输入的数据什么长度,输出的都是固定长度的密文;即信息摘要,可用于判断数据的完整性;目前常用的有 MD5(16字节), SHA1(20字节)
1.3 公钥算法:使用同一个公钥和算法加密(公开),使用各自的密钥解密; 主要有 RSA、DSA;
1.4 RSA算法:原理:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即是公钥(通常1024位);通常用于数字签名和保密通信;
1.5 DSA算法:原理:DSA是基于整数有限域离散对数难题的;不能用作加密,只用作数字签名;
1.6 openssl简介: c语言开发,是一个功能丰富的开源安全工具箱;openssl 官网
1.7 MD5校验:mac下,可以直接使用终端md5命令,查看生成文件,字符串的md5
1.8 哈希表: 指存储位置与关键字之间建立的确定关系,不同的关键字可能得到同一哈希表。
1.9 伪随机数:软件生成的随机数,一般称之为伪随机数,安全性高的应用使用硬件方式生成随机数(随机数发生器)。
1.10 ASN1 :描述了一种对数据进行表示、编码、传输和解码的数据格式。它提供了一整套正规的格式用于描述对象的结构,而不管语言上如何执行及这些数据的具体指代,也不用去管到底是什么样的应用程序。
1.11 EVP:openssl evp 提供了丰富的密码学中的和种函数,包括对称算法,摘要算法,签名/验签等;
1.12 PEM : openssl 使用 pem格式来存放各种信息,是默认的信息存放方式;
1.13 Engine:由硬件内部的密码计算方法控件openssl内的各密码计算;从而替换openssl提供的一些密码计算方法;
1.14 X509数字证书:数字证书是将用户(或其他实体)身份与公钥绑定的信息载体。一个合法的数字证书 不仅要符合 X509 格式规范,还必须有 CA 的签名。用户不仅有自己的数字证书,还必 须有对应的私钥。即是 .cer 文件;
1.15 OCSP:在线证书状态协议,用于实时表明 证书状态。
1.16 CRL : 证书撤销列表,是一种包含摊销的证书列表的签名数据结构。好比黑名单。
1.17 PKCS7 : 是各种消息存放的格式标准。这些消息包括:数据、签名数据、数字信封、签名数字信封、摘要数据和加密数据。
1.18 PKCS12: 用于存放用户证书、crl、用户私钥等的个人信息文件;里面的数据是加密的;
@2014-10-27
数字签名流程
- 假定用户 userA,要给用户 userB,发送信息 sms ;
- userA 先生成自己的
公钥 (PKa )和 密钥 (SKa )
, 常用的算法有 RSA,DSA; - userA 对信息 sms 做
信息摘要处理
得到 md5_SMS , 常用的摘要算法md5,sha1; - userA 用 自己的
密钥 SKa 加密信息摘要
md5_SMS 得到 enc_md5_SMS,即数字签名; - userA 把 enc_md5_SMS 数字签名 、自己的公钥PKa 以及 原数据 sms 一起发送给 userB;
- userB 用同样的摘要算法对 sms 处理得到 userB_md5_SMS;
- userB 用 userA的公钥 PKa 解密 数字签名enc_md5_SMS 得到 userB_dec_md5_SMS;
- userB 去比较 userB_dec_md5_SMS 和 userB_md5_SMS 是不是相同的,如果相同那么确认数字签名是userA发的,并且数据安全没有被篡改。
数字签名的特性:一是不可冒充,别人假冒不了(因为没有私钥);二是可以保证数据的完整性(因为内容改变信息摘要也改变);
@2014-10-28
数字信封
数字信封:是将对称密钥
通过 非对称加密技术
加密,然后将结果分发出去。
- 假定用户 userA 要给用户 userB,发送信息 sms;
- userB 先生成自己的 公钥和私钥,即是 PKb, SKb;
- userB 把自己的 公钥 Pkb 分发给 userA, 此公钥可公开;
- userA 随机生成一个 对称加密密码 PWD ,然后用 PWD加密信息 sms得到 userA_enc_sms;
- userA 用 userB的 PKb 去加密 对称加密密码 PWD 得到 userA_enc_PWD;然后userA 把 userA_enc_PWD 分发给用户 userB(这就是数字信封);
- userB收到 userA_enc_PWD 之后,用自己的私钥去解密,就是打开信封,即 用 SKb 解密 userA_enc_PWD 得到 PWD; 即得到对称加密密码;
- userB再用 PWD 去 解密数据 userA_enc_sms ,得到 sms; 完成了信息传递;
数字信封克服了私钥加密中分发私钥和公开密钥加密数据时间长的问题;因为对称加密速度快,非对称加密更安全;
@2014-10-29
数字证书
数字证书:是互联网通信中的身份标识(主要是用户身份信息和公钥),相当于生活中的身份证;一般由CA中心颁发,既CA认证中心,或第三方权威机构;如身份证中的*局。
数字证书上通常包括:颁发给某人的签名,证书所有人的公钥,CA中心的签名算法,证书的唯一编号,版本,有效期等。
- 用户userA 生成自己的 公钥和私钥 ,既 PKa,SKa;
- 用户userA 把自己的公钥和一些其他个人身份信息提交给 CA中心认证;
- CA中心在审核用户信息之后,用CA中心的 私钥 SKca 对 用户的PKa和其他信息做 数字签名,然后生成数字证书;
- 用户userB在拿到userA数字证书时用 CA的公钥PKca 打开数字证书得到userA的公钥PKa,然后比对自己手的PKa,即可验证 userA的身份是否是假冒的;
数字证书上的数字签名可以验证证书在颁发之后是否被修改过。
@2014-10-29
作者:cocoajin
链接:https://www.jianshu.com/p/af5bfff9a470
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。