GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでコマンドライン暗号化ツールを使い始める

1はじめに

暗号化とは、許可された関係者だけが読み取ることができるようにメッセージまたは情報をエンコードするプロセスです。このデジタル世代のデータにはプライバシーがほとんどないため、データの暗号化は最も必要なツールの1つです。 Gmailのようなほとんどのアプリケーションはデータを暗号化しますが、システム上のデータはまだ保護されておらず、ハッカーや許可されていないユーザーがそれらにアクセスするのを待っています。データ盗難のリスクを最小限に抑える1つの方法は、ローカルシステムにも存在するデータを暗号化することです。

このチュートリアルでは、コマンドラインツールを使用してLinuxシステムでデータを暗号化するいくつかの方法を示します。

2GPGを使用した暗号化

2.1GPGの紹介

GPGはGNUPrivateGuardの略で、対称暗号化または公開鍵暗号化を使用してデータファイルまたはフォルダーを暗号化および復号化するために使用されるコマンドラインユーティリティです。 GPGは、PGP暗号化ソフトウェアスイートの代わりにGPLライセンスを取得したものです。 GPGは、OpenPGPコンパイラシステムでも使用されます。

2.2対称鍵を使用した暗号化

ここに"test.txt"という名前のファイルがあります 暗号化してから対称鍵で復号化し、復号化したテキストを"output.txt"という別のファイルに出力します。

次のコマンドを実行して、対称鍵を使用してファイルtest.txtを暗号化します。オプション「-c」は、GPGが対称鍵を使用することを示しています。

gpg -c test.txt

この結果は、次の画像のようになります。 GPGを初めて実行すると、.gnupgフォルダーが作成されます。暗号化プロセスに必要なファイルが含まれています。次に、パスフレーズを2回入力するように求められます。強力なパスフレーズを入力し、ファイルを復号化するために将来必要になるので、それを覚えておいてください。

したがって、パスフレーズが正しく入力されると、 "test.txt.gpg"というファイルが作成されます。 創造された。これは暗号化されたファイルです。次の画像は、暗号化の前後のファイルを示しています。暗号化されたテキストが読み取り不可能な形式であることがわかります。

次のコマンドを使用して、暗号化されたファイルを復号化します

gpg -o output.txt test.txt.gpg

暗号化に使用するパスフレーズを入力するように求められます。正しく入力すると、「test.txt」と同じ内容の「output.txt」ファイルが作成されます。復号化の出力は、次の画像のようになります。

2.3公開鍵暗号化

ここでは、GPGの公開鍵/秘密鍵暗号化メカニズムを使用して一連のファイルを暗号化します。これには、誰とも共有してはならない秘密鍵と、暗号化されたデータを送信したい人と共有しなければならない公開鍵の作成が含まれます。

まず、ファイルを圧縮フォルダーにパックする必要があります。ここに"enctest"というディレクトリがあります test1.txtからtest3.txtへの3つのファイルを使用します。このディレクトリのtar.gzファイルを圧縮します。次のコマンドを使用して、圧縮されたtar.gzアーカイブを作成します。

tar czf files.tar.gz ~/enctest

これにより、ファイル「files.tar.gz」が作成されます。ここで、公開鍵と秘密鍵のペアを生成する必要があります。次のコマンドを実行して、キーを生成します。

gpg --gen-key

これは1回だけ実行する必要があり、このキーを使用して任意の数のファイルとフォルダーを暗号化できることを忘れないでください。このコマンドを入力すると、さまざまな質問が表示されます。質問は次のようになります:

  • どのような暗号化を使用しますか? RSAとRSAの1つを選択しました。
  • キーサイズはどのくらいにする必要がありますか?私は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) <[email protected]>"

Real name: John Doe
Email address: [email protected]
Comment: tis is key generation
You selected this USER-ID:
    "John Doe (tis is key generation) <[email protected]>"

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) <[email protected]>
sub   2048R/6F78E642 2015-04-02

ここには2つの重要なことがあります。強力なパスフレーズを提供することと、パスフレーズを忘れないようにすることです。

鍵が生成されたので、公開鍵ファイルをエクスポートして他のシステムにインポートするか、電子メールで送信する必要があります。エクスポートを開始するには、次のコマンドを使用します。

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

「JohnDoe」を、キーの生成時に使用した名前に置き換えます。

秘密鍵のバックアップを取ることもお勧めします。 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

上記のコマンドの「JohnDoe」を、キーの生成中に指定した名前に変更することを忘れないでください。変更しないと、暗号化が失敗します。コマンドが正常に実行されると、 "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は、公開鍵を使用して任意の数の暗号化機能を使用できます。複数の暗号化アルゴリズムから選択する選択肢がユーザーに与えられます。これらの理由により、ファイルやフォルダ、またはデータを暗号化するための非常に便利なセキュリティツールになっています。

3OpenSSLを使用した暗号化

3.1OpenSSLの概要

OpenSSLプロジェクトは、Secure Sockets Layer(SSL v2 / v3)およびTransport Layer Security(TLS)プロトコルと、フルストレングスの一般的なプロトコルを実装する、堅牢で商用グレードのフル機能のオープンソースツールキットを開発するための共同作業です。目的の暗号化ライブラリ。 OpenSSLは、ほとんどのUnixライクなオペレーティングシステムで利用でき、SSLeayに基づいています。 OpenSSLは、多くのSSH、SFTP、およびSCPアプリケーションもサポートしています。ここでは、OpenSSLを使用して、非対称暗号化とAES暗号を使用してデータを暗号化します。対称暗号化は、より大きなファイルやデータの暗号化に使用できます。

3.2公開鍵と秘密鍵の生成

最初に行う必要があるのは、公開鍵と秘密鍵を生成することです。最初に秘密鍵を生成します。これを行うには、次のコマンドを使用します。

openssl genrsa -out private_key.pem 1024

上記のコマンドは、RSAを使用して1024バイトのサイズの秘密鍵を生成するようにOpenSSLに指示します。その後、キーは "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結論

上記の方法は、注意深く使用すると非常に安全であり、複数の暗号とセキュリティレベルをさまざまなセキュリティレベルに適合させることができます。したがって、これらのいずれも、ファイル/フォルダーと生データを暗号化するためのさまざまなシナリオで使用できます。

  • OpenSSL
  • OpenPGP

Linux
  1. Linuxファイアウォールの使用を開始する

  2. LinuxでPostgreSQLを使い始める

  3. LinuxでSSHを使い始める

  1. Linuxtacコマンドの使用を開始する

  2. PiFlashの使用を開始する:LinuxでRaspberryPiを起動する

  3. Linuxcatコマンドの使用を開始する

  1. Linux用のbtrfsの使用を開始する

  2. GNOMEを使い始めるためのアドバイス

  3. GNOMELinuxデスクトップの使用を開始する