证书请求格式 证书文件格式 RSA公私钥格式 RSA如何保证私钥安全

2016-12-07 22:12:00
admin
原创 4544
摘要:证书请求格式 证书文件格式 RSA公私钥格式 RSA如何保证私钥安全

一、证书请求格式

默认pkcs10格式:

-----BEGIN CERTIFICATE REQUEST-----
-----END CERTIFICATE REQUEST-----

newhdr选项生成NEW格式:

-----BEGIN NEW CERTIFICATE REQUEST-----
-----END NEW CERTIFICATE REQUEST-----


参数说明:

-key 支持私钥格式pem和der,不指定时自动生成pkcs8格式私钥

-sha256 指定消息摘要算法;

-newhdr 生成NEW格式证书;

-x509 不生成证书请求,直接生成自签名证书;


示例命令:

生成证书主题时,回车则使用默认值,输入点字符则忽略字段。

openssl req -new -key private.pem -sha256 -out req.csr -subj "$subject"


二、证书文件格式

1、证书后缀是pem,内容是base64编码;

2、证书后缀是der,内容是二进制格式;

3、证书后缀是crt或cer,内容是base64编码或二进制格式;

4、证书后缀是p7b或p7c,内容是pkcs7格式;


三、RSA私钥格式

openssl默认生成pkcs1格式私钥,C程序使用格式:

-----BEGIN RSA PRIVATE KEY-----

-----END RSA PRIVATE KEY-----


pkcs8格式私钥,打包私钥的格式,分加密和未加密两种:

-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----

-----BEGIN ENCRYPTED PRIVATE KEY-----
-----END ENCRYPTED PRIVATE KEY-----


格式转换:

1、pkcs1转换为pkcs8,openssl pkcs8 −topk8 -nocrypt -in key.pem

2、pkcs8转换为pkcs1,openssl rsa -in key.pem


四、RSA公钥格式

-RSAPublicKey_out生成pkcs1格式公钥:

-----BEGIN RSA PUBLIC KEY-----
-----END RSA PUBLIC KEY-----


-pubout生成pkcs8格式公钥,默认公钥格式:

-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----


五、RSA如何保证私钥安全

1、公钥密码基石:Oneway Function,单向函数,正向计算容易,不能反向计算或者非常困难;

2、公钥密码基石:Trapdoor Function,陷门函数,一种特殊单向函数,存在私钥可以反向计算;

3、m=p*q,p和q是随机质数

4、r=(p-1)(q-1),e与r互质,(e*d)%r=1

5、公钥由e和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


解析私钥:

openssl genrsa 32 2>/dev/null | openssl rsa -text -noout
Private-Key: (32 bit)
modulus: 3943717597 (0xeb105add)
publicExponent: 65537 (0x10001)
privateExponent: 150132933 (0x8f2d8c5)
prime1: 63299 (0xf743)
prime2: 62303 (0xf35f)
exponent1: 53375 (0xd07f)
exponent2: 47415 (0xb937)
coefficient: 2987 (0xbab)


私钥说明:

modulus,p*q,模的长度是密钥长度

publicExponent,公开幂e

privateExponent,私有幂d

prime1,模的素数因子p

prime2,模的素数因子q

exponent1,d mod (p−1)
exponent2,d mod (q−1)


六、RSA工具

openssl genrsa:生成私钥,默认不加密,-des3参数用于加密;

openssl rsa:显示私钥、提取公钥转换格式,比如显示modulus;

openssl rsautl:签名验签、加密解密,签名和加密的数据长度不能超过keysize

发表评论
评论通过审核之后才会显示。