公钥加密
公钥加密使用两组密钥,称为密钥对。一个是公钥,可以与你想要秘密通信的任何人自由共享。另一个是私钥,应该是一个秘密,永远不会共享。
公钥用于加密。如果某人想与你交流敏感信息,你可以将你的公钥发送给他们,他们可以使用公钥加密消息或文件,然后再将其发送给你。私钥用于解密。解密发件人加密的消息的唯一方法是使用私钥。因此,它们被称为“密钥对”,它们是相互关联的。
如何使用 OpenSSL 加密文件
OpenSSL 是一个了不起的工具,可以执行各种任务,例如加密文件。本文使用安装了 OpenSSL 的 Fedora 计算机。如果你的机器上没有,则可以使用软件包管理器进行安装:
- alice $ cat /etc/fedora-release
- Fedora release 33 (Thirty Three)
- alice $
- alice $ openssl version
- OpenSSL 1.1.1i FIPS 8 Dec 2020
- alice $
要探索文件加密和解密,假如有两个用户 Alice 和 Bob,他们想通过使用 OpenSSL 交换加密文件来相互通信。
步骤 :生成密钥对
在加密文件之前,你需要生成密钥对。你还需要一个密码短语passphrase,每当你使用 OpenSSL 时都必须使用该密码短语,因此务必记住它。
Alice 使用以下命令生成她的一组密钥对:
- alice $ openssl genrsa -aes128 -out alice_private.pem 1024
此命令使用 OpenSSL 的 genrsa 命令生成一个 1024 位的公钥/私钥对。这是可以的,因为 RSA 算法是不对称的。它还使用了 aes128 对称密钥算法来加密 Alice 生成的私钥。
输入命令后,OpenSSL 会提示 Alice 输入密码,每次使用密钥时,她都必须输入该密码:
- alice $ openssl genrsa -aes128 -out alice_private.pem 1024
- Generating RSA private key, 1024 bit long modulus (2 primes)
- ……….+++++
- …………………………….+++++
- e is 65537 (0x010001)
- Enter pass phrase for alice_private.pem:
- Verifying – Enter pass phrase for alice_private.pem:
- alice $
- alice $
- alice $ ls -l alice_private.pem
- -rw——-. 1 alice alice 966 Mar 22 17:44 alice_private.pem
- alice $
- alice $ file alice_private.pem
- alice_private.pem: PEM RSA private key
- alice $
Bob 使用相同的步骤来创建他的密钥对:
- bob $ openssl genrsa -aes128 -out bob_private.pem 1024
- Generating RSA private key, 1024 bit long modulus (2 primes)
- ………………+++++
- ……………………….+++++
- e is 65537 (0x010001)
- Enter pass phrase for bob_private.pem:
- Verifying – Enter pass phrase for bob_private.pem:
- bob $
- bob $ ls -l bob_private.pem
- -rw——-. 1 bob bob 986 Mar 22 13:48 bob_private.pem
- bob $
- bob $ file bob_private.pem
- bob_private.pem: PEM RSA private key
- bob $
如果你对密钥文件感到好奇,可以打开命令生成的 .pem 文件,但是你会看到屏幕上的一堆文本:
- alice $ head alice_private.pem
- —–BEGIN RSA PRIVATE KEY—–
- Proc-Type: 4,ENCRYPTED
- DEK-Info: AES-128-CBC,E26FAC1F143A30632203F09C259200B9
- pdKj8Gm5eeAOF0RHzBx8l1tjmA1HSSvy0RF42bOeb7sEVZtJ6pMnrJ26ouwTQnkL
- JJjUVPPHoKZ7j4QpwzbPGrz/hVeMXVT/y33ZEEA+3nrobwisLKz+Q+C9TVJU3m7M
- /veiBO9xHMGV01YBNeic7MqXBkhIrNZW6pPRfrbjsBMBGSsL8nwJbb3wvHhzPkeM
- e+wtt9S5PWhcnGMj3T+2mtFfW6HWpd8Kdp60z7Nh5mhA9+5aDWREfJhJYzl1zfcv
- Bmxjf2wZ3sFJNty+sQVajYfk6UXMyJIuWgAjnqjw6c3vxQi0KE3NUNZYO93GQgEF
- pyAnN9uGUTBCDYeTwdw8TEzkyaL08FkzLfFbS2N9BDksA3rpI1cxpxRVFr9+jDBz
- alice $
要查看密钥的详细信息,可以使用以下 OpenSSL 命令打开 .pem 文件并显示内容。你可能想知道在哪里可以找到另一个配对的密钥,因为这是单个文件。你观察的很细致,获取公钥的方法如下: