证书与签名(三):RSA非对称式加解密算法

1. 前言

  OpenSSL提供了完整的安全通信所需的编码工具,诸如杂凑演算法(哈希算法),加解密演算法(加密/解密算法)及SSL / TLS协议的实现等。加上其开放源码的特性,使得许多开源专案或商业套件都有其踪迹.OpenSSL除了提供程式API扩充接口外,也有命令列模式的操作。
  本专案主要使用C程式语言撰写,于Windows / Linux / BSD / MacOS下皆可运行。
  官方网站:https://www.openssl.org/
  软体授权:OpenSSL License或SSLeay License的双重授权
  本篇文章为OpenSSL系列文章第三篇。常见的加解密演算法分为对称式与非对称式,有兴趣的使用者,可以在网路上搜寻相关的文章。本章节将介绍OpenSSL在非对称式加解密演算法的运用。本篇将着重于命令列模式下的非对称式加解演算法的操作。

2. 使用OpenSSL RSA演算法产生私钥

  请使用“genrsa”为其参数,随后附上“-out”参数指定输出后的档案名称

$ openssl genrsa -out private.pem
Generating RSA private key, 512 bit long modulus
.++++++++++++
...++++++++++++
e is 65537 (0x10001)

  执行后,OpenSSL预设会产生长度为512位的私钥。

  我们可以使用额外指令参数来改成预设的私钥长度。例如,产生1024位长度的私钥,可以在上列指令的最后加上“1024”,如:

$ openssl genrsa -out private.pem 1024
Generating RSA private key, 1024 bit long modulus
.++++++
........................................................++++++
e is 65537 (0x10001)

  以此类推,若是“4096”,则

$ openssl genrsa -out private.pem 4096
Generating RSA private key, 4096 bit long modulus
......................................................................................++
..................++
e is 65537 (0x10001)

  需要注意的是,愈长的私钥被破解的机率愈低,但是相对地,我们在使用加密与解密的时间也会愈长。使用者可以自行评量。

3. 使用RSA的私钥产生相对应的公钥

  参考指定私钥档案“ - out”参数指定产生的公钥档案名称,“ - outform”参数指定公钥的输出格式,以及“ - 参数结尾

$ openssl rsa -in private.pem -out public.pem -outform PEM -pubout
writing RSA key

  执行后,OpenSSL会产生public.pem的档案在磁碟中。

4. 使用RSA的公钥加密档案

  请使用“rsautl”为其参数,随后附上“-encrypt”参数指定加密的运行,“ - inkey”参数指定密钥档案,“ - pubin”参数将公钥产生于加密档案中,“ - 参数指定欲加密的档案,以及“-out”参数指定加密后的档案名称

$ openssl rsautl -encrypt -inkey public.pem -pubin -in file -out file.rsa

  执行后,OpenSSL会产生档案.rsa的档案在磁碟中。
  注意,RSA非对称式加解演算法因为先天的限制,无法加密过大的档案,若遇到这个问题时,OpenSSL会输出如下的错误讯息:

RSA operation error
13931:error:0406D06E:rsa routines:RSA_padding_add_PKCS1_type_2:data too large for key size:rsa_pk1.c:151:

  若遇到到这个问题时,最简单的方式就是使用对称式的加解密演算法,而不是非对称式的加解密演算法。

5. 使用 RSA的私钥解密档案

  请使用“rsautl”为其参数,随后附上“-decrypt”参数指定解密的运行,“ - inkey”参数指定密钥档案,“ - in”参数指定欲解密的档案,以及“-out”参数指定解密后的档案名称:

$ openssl rsautl -decrypt -inkey private.pem -in file.rsa -out file

  执行后,OpenSSL会产生档案的档案在磁碟中。

6. 结语

  本文范例介绍了RSA非对称式加解密档案的操作。当然除了本系列文章的介绍外,OpenSSL还提供许多好用的功能,就请使用者自行探索啰。

7. 参考

https://www.openfoundry.org/en/tech-column/8615-opensource-security-algorithm-tool-openssl3-rsa-symmetric-encryption-and-decryption-algorithms

你可能感兴趣的:(网络通信,RSA,非对称式加解密,数字签名算法)