openssl基本概念 openssl源码编译 RSA如何保证私钥安全 DH秘钥交换算法
- 2017-09-22 22:52:00
- admin
- 原创 2099
一、openssl基本概念
1、BIO是IO函数的抽象,对应用屏蔽底层细节,有两种类型BIO:数据源BIO,过滤器BIO;
2、数据源BIO包括:内存、文件、网络等;
3、过滤器BIO包括:消息摘要、加密、解密等;
4、EVP是高级加密接口,封装了消息摘要、加密解密、签名验签等功能,对外提供统一接口,推荐使用;
5、FIPS是美国联邦信息处理标准,FIPS-140-2是针对加密模块的安全要求,openssl的fips版本满足该规范;
二、openssl源码编译
编译openssl:
./config no-shared --prefix=/data/app/openssl
make && make install
编译fips:
./config no-shared --prefix=/data/app/fips
make && make install
编译openssl的fips版本:
./config no-shared fips --with-fipsdir=/data/app/fips --prefix=/data/app/openssl
make depend && make && make install
三、RSA如何保证私钥安全
1、m=p*q,p和q是随机质数
2、r=(p-1)(q-1)
3、e与r互质
4、(e*d)%r=1
5、公钥由e和m组成,m长度就是公钥和私钥长度;
6、私钥由d和m组成,没有p和q无法推导出r,因此无法推导出d;
7、加密操作:c=p^e mod m,e很小时有低加密指数安全问题,因为加密迭代次数有限;
8、解密操作:p=c^d mod m,e很大时有低解密指数安全问题,因为解密迭代次数有限;
9、分解整数:支持分解十进制整数,http://www.factordb.com
四、DH秘钥交换算法
1、Alice与Bob确定两个大素数n和g,这两个数不用保密
2、Alice选择另一个大随机数x,并计算A如下:A=gx mod n
3、Alice将A发给Bob
4、Bob选择另一个大随机数y,并计算B如下:B=gy mod n
5、Bob将B发给Alice
6、计算秘密密钥K1如下:K1=Bx mod n
7、计算秘密密钥K2如下:K2=Ay mod n
K1=K2,因此Alice和Bob可以用其进行加解密