开始使用Linux上的命令行加密工具

在Linux上开始使用命令行加密工具

1介绍

加密是以只有授权方才能读取的方式编码消息或信息的过程。 在我们这个数字世代几乎没有隐私的情况下,我们的数据加密是最需要的工具之一。 大多数应用程序(如gmail)加密了我们的数据,但系统上的数据仍然没有安全隐患,黑客或未经授权的用户等待访问。 减少数据窃取风险的一种方法是对即使在本地系统上存在的数据进行加密。

本教程演示了使用命令行工具在Linux系统上加密数据的几种方法。

2加密使用GPG

2.1 GPG简介

GPG代表GNU Private Guard,它是一个命令行实用程序,用于使用对称或公钥加密对数据文件或文件夹进行加密和解密。 GPG是GPGP授权替代PGP加密软件套件。 GPG也由OpenPGP编译系统使用。

2.2加密使用对称密钥

这里我有一个名为“test.txt”的文件,我将加密然后用对称密钥解密,并将解密的文本打印到另一个名为“output.txt”的文件中

运行以下命令使用对称密钥加密文件test.txt。 选项“-c”表示GPG使用对称密钥。

gpg -c test.txt

其结果将如下图所示。 运行GPG时,首次创建.gnupg文件夹。 它包含加密过程所需的文件。 然后它要求您输入两次密码。 请确保您输入了一个强大的密码,并且您记得这个密码,以备将来解密您的文件。

因此,一旦密码输入正确,就会创建一个名为“test.txt.gpg”的文件。 这是加密文件。 以下图像显示加密前后的文件。您可以看到加密的文本是不可读的格式。

使用以下命令解密加密文件

gpg -o output.txt test.txt.gpg

系统将提示您输入用于加密的密码。 一旦您正确输入,“output.txt”文件将创建与“test.txt”相同的内容。 解密的输出可能类似于下面的图像:

2.3公钥加密

在这里,我们将使用GPG的公钥/私钥加密机制加密一组文件。 它涉及创建一个不应与任何人共享的私钥,以及必须与要向您发送加密数据的用户共享的公钥。

首先,我们必须将文件打包成压缩文件夹。 这里我有一个名为“enctest”的目录,其中有三个文件test1.txt到test3.txt。我们将压缩此目录tar.gz文件。 我将使用以下命令创建压缩的tar.gz存档:

tar czf files.tar.gz ~/enctest

这将创建一个文件“files.tar.gz”。 我们现在必须生成公钥/私钥对。 运行以下命令生成密钥:

gpg --gen-key

记住,这只需要完成一次,任何数量的文件和文件夹都可以使用此密钥进行加密。 一旦你键入这个命令,将会询问各种各样的问题。 问题将是:

  • 什么样的加密使用? 我选择1是RSA和RSA。
  • 什么是关键尺寸? 我选择2048,你可以选择1024和4096范围内的任意大小。
  • 钥匙什么时候过期? 我选择了0,这意味着密钥永远不会过期。 但如果您希望在特定的时间过期,可以提供数天,数周或数年。

将会询问其他类似密码的内容,您将被提示输入两次。 确保你使用强大的,并记住密码。 此外,您的凭据也将被使用。 我在这里使用的凭据(如下所示)仅用于测试。 建议您使用您的真实凭据,如姓名,电子邮件ID,并提供一些评论。

以下内容显示了我的答案,输出结果如何:

gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 2048
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
      
  
     = key expires in n days
      
   
    w = key expires in n weeks
      
    
     m = key expires in n months
      
     
      y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

Real name: John Doe
Email address: johndoe@somemail.com
Comment: tis is key generation
You selected this USER-ID:
    "John Doe (tis is key generation) <johndoe@somemail.com>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.
    
     
    
   
  

一旦你输入密码,它就开始生成密钥。 它会要求你做一些工作。 建议移动鼠标或键入某些东西或使用驱动器打开一些文件。 它将使用此工作来生成随机位。 您可能需要多次执行此操作。 我的输出如下所示:

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 187 more bytes)
+++++
...+++++
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 92 more bytes)
.....+++++

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 114 more bytes)

+++++

一旦完成,密钥已经生成。 它将类似于以下内容:

gpg: /home/akshay/.gnupg/trustdb.gpg: trustdb created
gpg: key FA2314B6 marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
pub   2048R/FA2314B6 2015-04-02
      Key fingerprint = 5A02 5D77 3E0A 8B69 8086  3032 DE51 6EA5 FA23 14B6
uid                  John Doe (tis is key generation) <johndoe@somemail.com>
sub   2048R/6F78E642 2015-04-02

这里有两个重要的事情:提供强大的密码,并确保记住你的密码

现在生成密钥,我们现在必须导出公用密钥文件,以便在其他系统上导入,或通过电子邮件发送。 要启动导出,请使用以下命令:

gpg --armor --output file-enc-pubkey.txt --export 'John Doe'

使用您在生成密钥时使用的名称替换'John Doe'。

还建议备份私钥。 我们可以使用gpg来做到这一点。 要进行备份,请使用以下命令:

gpg --armor --output file-enc-privkey.asc --export-secret-keys 'John Doe'

这里的文件“file-enc-privkey.asc”将安全地保存私钥的备份。 一旦导出和密钥备份完成,我们现在可以加密和解密.tar.gz文件。 使用以下命令加密:

gpg --encrypt --recipient 'John Doe' files.tar.gz

记住在上述命令中将“John Doe”更改为在密钥生成期间给出的名称,否则加密将失败。 当命令成功运行时,将创建一个名为“files.tar.gz.gpg”的加密文件。

现在我们可以使用以下命令解密tar.gz存档。 它将使用私钥和密码来解密并提供解密的文件夹。 使用以下命令解密:

gpg --output output.tar.gz --decrypt files.tar.gz.gpg

上述命令将要求密码,然后解密加密的文件,并创建一个名为“output.tar.gz”的压缩文件,然后可以使用tar将其解压缩到文件夹以获取文件。 下图显示加密和解密命令的输出:

2.4为什么选择GPG?

GPG既支持公钥加密和对称加密,也提供了很好的灵活性,可以用于广泛的应用。 不需要提供任何类型的敏感信息,gpg也可以通过使用公共密钥来使用任何数量的加密器。 给予用户从多种加密算法中选择的选择。 这些原因使其成为加密文件和文件夹或数据的非常有用的安全工具。

3使用OpenSSL加密

3.1 OpenSSL简介

OpenSSL项目是开发一个强大的,商业级,全功能的开源工具包,实施安全套接字层(SSL v2 / v3)和传输层安全(TLS)协议以及全面的一般性目的加密库。 OpenSSL适用于大多数类Unix操作系统,它基于SSLeay。 OpenSSL还支持许多SSH,SFTP和SCP应用。 这里我们使用OpenSSL通过使用非对称加密和AES密码来加密数据。 对称加密可用于加密较大的文件或数据。

3.2生成公钥和私钥

我们首先要做的是生成公钥​​和私钥。我们首先生成私钥。 为此,请使用以下命令:

openssl genrsa -out private_key.pem 1024

上述命令指示OpenSSL使用RSA生成大小为1024字节的私钥。 然后将密钥安全地存储在名为“private_key.pem”的文件中。 此命令的输出将与下面的图像类似:

一旦生成了私有(密钥)密钥,我们可以使用它来生成公钥,以便形成一对。 使用以下命令生成公钥:

openssl rsa -in private_key.pem -out public_key.pem -outform PEM -pubout

它将如下图所示:

3.3加密数据

我们现在可以使用公钥加密数据。 这里我们将加密文件“test.txt”并将加密的文本存储在文件encrypt.dat中。 执行以下命令:

openssl rsautl -encrypt -inkey public_key.pem -pubin -in encrypt.txt -out encrypt.dat

以下图像显示加密前后的文本文件:

3.4解密数据

这里我们使用私钥来解密文件。 运行以下命令:

openssl rsautl -decrypt -inkey private_key.pem -in encrypt.dat -out decrypt.txt

文件decrypt.txt将包含解密的数据。 执行上述命令以及文件内容如下图所示:

4。结论

上述方法在仔细使用时是高度安全的,并允许多个密码和安全级别适合不同的安全级别。 因此,可以使用任何这些可以用于加密文件/文件夹和原始数据的各种场景。

5链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏