
数据传输安全
|
161
3.
发送方使用接收方的公钥加密消息,然后使用自己的私钥签署加密的消息。
4.
把加密且签名后的数据传输给接收方,有时可能经由中间设备或服务。
5.
接收方使用发送方的公钥确认签名的消息,(如果有效)然后使用自己的
私钥加密消息。
消息经确认和解码后,便可按照需要处理。
具体示例
下面以
Node
为例说明具体如何实现这个过程。整个过程将分为三步:
•
第
1a/1b
步:生成两对公私钥。
1a
使用代码生成,不存储密钥;
1b
更进一步,
把公私钥存储在文件中。
1a
是为了验证可行性,在生产环境中首选
1b
提
供的方式。跟着我们做时,你可以选择其中一种方式。
•
第
2
步:在发送方加密和签署数据,发给接收方。
•
第
3
步:解密并确认发送方发来的数据。
应该何时生成和使用密钥
我们展示的过程虽然可以一次性完成,但是在生产环境中可能不会这样划分
步骤。实际上,发送方设备通常要在接收方的服务中注册。公私钥应该在注
册时生成(第
1a
步或第
1b
步)。直到用户开始使用服务传输数据时(第
2
步和第
3
步),才会提取并使用这些密钥。
先来看如何生成密钥。
第
1a
步:生成密钥,但不存储在文件中
不使用文件系统存储异步密钥的完整代码在
https://github.com/iddatasecuritybook/
chapter7/blob/master/asymmetric-crypto/crypto_no_fs.js
。