ECC 密钥对生成
简介
ECC(椭圆曲线密码)密钥对的生成方式和 RSA 不同——不是指定密钥长度,而是选一条命名曲线。没有特殊需求一律用 NIST P-256(OpenSSL 里叫 prime256v1,别名 secp256r1)。概念与 RSA/ECC 的选型对比见《非对称加密算法与应用场景》,RSA 密钥对生成见《Rsa 密匙对生成》。
ECC(椭圆曲线密码)密钥对的生成方式和 RSA 不同——不是指定密钥长度,而是选一条命名曲线。没有特殊需求一律用 NIST P-256(OpenSSL 里叫 prime256v1,别名 secp256r1)。概念与 RSA/ECC 的选型对比见《非对称加密算法与应用场景》,RSA 密钥对生成见《Rsa 密匙对生成》。
三方交互的本质,是把数据丢进一条你掌控不了的网络,交给一个必须确信“这确实是你发的、中途没被动过”的系统。
HTTPS 只加密传输管道本身——挡得住窃听,挡不住把一段合法报文原样重放,更证明不了应用层面的身份。管道之外,应用层得自己把四件事补齐:机密性、完整性、身份认证、不可否认性。整套方案的每一个环节,都是在加固其中一项。
在计算机中,算法层面并不存在真正的随机数,凡是使用算法生成的随机数都是伪随机数(Pseudo-Random Numbers, PRNG)。
在编程中用到的各种 random 库,都是通过算法进行一系列复杂的运算生成的序列。每次生成的结果其实都是可预测的,并不是真正的随机数。
生成 rsa 密匙对有许多中方式,而在系统中使用最多的就是 openssl。如果你的操作系统还没有 openssl,就需要手动安装。
Windows 用户需要到官网 https://www.openssl.org 进行下载安装。
Unix 用户可以直接使用默认的包管理工具进行安装。具体可以参考:https://command-not-found.com/openssl,这里提供了各种发行版对应的安装命令。
SSH key 和通过 OpenSSL 生成的 SSL key 尽管都基于公钥加密技术,但是是两种不同用途的密钥。以下是它们的主要区别和用途:
非对称加密需要一对密钥:公开的公钥和不公开的私钥。用其中一个加密,只能用另一个解密——连加密用的密钥本身也解不开。
两个密钥数学上相关,但知道其中一个推不出另一个,所以公钥可以任意公开,私钥必须由持有者严格保管,不通过网络传输、不交给通信对方。加解密用不同密钥,故称"非对称",区别于加解密共用同一密钥的对称加密。