预共享密钥是一串字符,在加密过程中可以用于身份验证的密钥。PSK在使用之前是共享的,通信的双方都持有密钥能互相验证身份,一般在应用用户名和密码等身份验证方法之前进行。这样的方式不同于其他类型虚拟专用网络连接、无线网络中WPA-PSA和WPA2-PSK的加密类型,以及EAP和许多其他身份验证机制。下面是华纳云分享关于Linux中生成强预共享密钥的多种方式。
通过OpenSSL命令,OpenSSL是一种广泛应用的命令行工具,用于从shell调用OpenSSL加密库的多种机密功能。想生成强PSK可以使用rand子命令,该命令会生成伪随机字节且通过base64编码对其进行过滤。如:
$ openssl rand -base64 32
$ openssl rand -base64 64
使用GPG命令,GPG是一个命令行工具用OpenPGP标准提供数据加密和签名服务,可以使用以下命令选项生成强PSK并通过base64编码对其进行过滤,在以下命令中,1或2是质量级别,10、20、40和70是字符数。:
$ gpg --gen-random 1 10 | base64
$ gpg --gen-random 2 20 | base64
$ gpg --gen-random 1 40 | base64
$ gpg --gen-random 2 70 | base64
用伪随机数生成器,如/dev/random或/dev/urandom。head命令-c的选项有助于生成字符数:
$ head -c 35 /dev/random | base64
$ head -c 60 /dev/random | base64
可以使用date和sha256sum 命令来创建强PSK :
$ date | sha256sum | base64 | head -c 45; echo
$ date | sha256sum | base64 | head -c 50; echo
$ date | sha256sum | base64 | head -c 60; echo
还可以通过以下命令创建一个64字符的字母数字PSK:
< /dev/urandom tr -dc a-zA-Z0-9 | head -c64
将其中a-zA-ZO-9替换成另外一个字符列表和范围来控制哪些字符出现,并将64替换成另外一个数字来控制长度。如8个小写字母:
< /dev/urandom tr -dc a-z | head -c8
16个手写无歧义的字母数字字符
< /dev/urandom tr -dc a-jmnoqrtyA-HJLMNQRTY2-9 | head -c16
64个字母数字字符和所以非空格打印ASCII符号(\ 在 shell 中转义)
< /dev/urandom tr -dc \!-~ | head -c64
64 个 URL 安全字符(对于 shell,\ 转义 ()'!*;)
< /dev/urandom tr -dc a-zA-Z0-9-._~\(\)\'\!\*:@,\; |头-c64
以上就是关于Linux中生成强预共享密钥的部分方法,在使用过程中需要确保生成的PSK传输过程中不会被截获。可以通过使用安全的密钥交换协议,通过加密传输,保证物理安全,保证存储安全,限制PSK分配,定期更新密钥,使用安全的密钥存储机制等最大程度的保护PSK的安全,预防传输过程中遭遇截获。