GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Erste Schritte mit Befehlszeilen-Verschlüsselungstools unter Linux

1 Einführung

Verschlüsselung ist der Prozess, Nachrichten oder Informationen so zu verschlüsseln, dass nur autorisierte Parteien sie lesen können. Da es in unserer digitalen Generation fast keine Privatsphäre gibt, ist die Verschlüsselung unserer Daten eines der am meisten benötigten Werkzeuge. Die meisten Anwendungen wie Google Mail verschlüsseln unsere Daten, aber die Daten auf Ihrem System sind immer noch ungesichert und es gibt Hacker oder nicht autorisierte Benutzer, die darauf warten, darauf zuzugreifen. Eine Möglichkeit, das Risiko von Datendiebstahl zu minimieren, besteht darin, die Daten zu verschlüsseln, die sogar auf unserem lokalen System vorhanden sind.

Dieses Tutorial demonstriert verschiedene Methoden zum Verschlüsseln der Daten auf Linux-Systemen mithilfe von Befehlszeilentools.

2 Verschlüsselung mit GPG

2.1 GPG-Einführung

GPG steht für GNU Private Guard, ein Befehlszeilendienstprogramm, das zum Verschlüsseln und Entschlüsseln von Datendateien oder Ordnern mit symmetrischer oder öffentlicher Schlüsselverschlüsselung verwendet wird. GPG ist eine GPL-lizenzierte Alternative zur kryptografischen Software-Suite PGP. GPG wird auch von OpenPGP-kompatiblen Systemen verwendet.

2.2 Verschlüsselung mit symmetrischem Schlüssel

Hier habe ich eine Datei namens "test.txt" dass ich verschlüsseln und dann mit einem symmetrischen Schlüssel entschlüsseln und den entschlüsselten Text in eine andere Datei namens "output.txt" drucken werde

Führen Sie den folgenden Befehl aus, um die Datei test.txt mit einem symmetrischen Schlüssel zu verschlüsseln. Die Option "-c" weist GPG an, symmetrische Schlüssel zu verwenden.

gpg -c test.txt

Das Ergebnis sieht wie im Bild unten aus. Wenn GPG zum ersten Mal ausgeführt wird, wird ein .gnupg-Ordner erstellt. Es enthält die Dateien, die für den Verschlüsselungsprozess notwendig sind. Anschließend werden Sie aufgefordert, zweimal eine Passphrase einzugeben. Bitte stellen Sie sicher, dass Sie eine starke Passphrase eingeben und sich diese gut merken, da Sie diese in Zukunft zum Entschlüsseln Ihrer Dateien benötigen.

Sobald also die Passphrase korrekt eingegeben wurde, wird eine Datei mit dem Namen "test.txt.gpg" geschaffen. Dies ist die verschlüsselte Datei. Das folgende Bild zeigt die Datei vor und nach der Verschlüsselung. Sie können sehen, dass der verschlüsselte Text in einem nicht lesbaren Format vorliegt.

Verwenden Sie den folgenden Befehl, um die verschlüsselte Datei zu entschlüsseln

gpg -o output.txt test.txt.gpg

Sie werden aufgefordert, die zum Verschlüsseln verwendete Passphrase einzugeben. Sobald Sie dies richtig eingegeben haben, wird die Datei "output.txt" mit demselben Inhalt wie "test.txt" erstellt. Die Ausgabe der Entschlüsselung könnte ähnlich wie im folgenden Bild aussehen:

2.3 Verschlüsselung öffentlicher Schlüssel

Hier verschlüsseln wir eine Reihe von Dateien mit dem Public/Private-Key-Verschlüsselungsmechanismus von GPG. Es beinhaltet die Erstellung eines privaten Schlüssels, der niemals mit jemandem geteilt werden sollte, und eines öffentlichen Schlüssels, der mit den Personen geteilt werden muss, die Ihnen verschlüsselte Daten senden möchten.

Zuerst müssen wir die Dateien in einen komprimierten Ordner packen. Hier habe ich ein Verzeichnis namens "enctest" mit drei Dateien test1.txt bis test3.txt . Wir komprimieren diese Verzeichnis-tar.gz-Datei. Ich werde den folgenden Befehl verwenden, um das komprimierte tar.gz-Archiv zu erstellen:

tar czf files.tar.gz ~/enctest

Dadurch wird eine Datei "files.tar.gz" erstellt. Wir müssen nun das öffentliche/private Schlüsselpaar generieren. Führen Sie den folgenden Befehl aus, um den Schlüssel zu generieren:

gpg --gen-key

Denken Sie daran, dass dies nur einmal gemacht werden muss und beliebig viele Dateien und Ordner mit diesem Schlüssel verschlüsselt werden können. Sobald Sie diesen Befehl eingeben, werden verschiedene Fragen gestellt. Die Fragen lauten:

  • Welche Art von Verschlüsselung soll verwendet werden? Ich habe 1 ausgewählt, was RSA und RSA ist.
  • Was sollte die Schlüsselgröße sein? Ich habe 2048 gewählt, Sie können jede Größe zwischen 1024 und 4096 wählen.
  • Wann sollte der Schlüssel ablaufen? Ich habe 0 ausgewählt, was bedeutet, dass der Schlüssel nie abläuft. Kann aber Tage, Wochen oder Jahre angeben, wenn Sie möchten, dass es zu einem bestimmten Zeitpunkt abläuft.

Andere Dinge wie Passphrase werden gefragt, Sie werden aufgefordert, sie zweimal einzugeben. Stellen Sie sicher, dass Sie eine starke Passphrase verwenden und sich an die Passphrase erinnern. Auch Ihre Anmeldeinformationen werden verwendet. Die Anmeldeinformationen, die ich hier verwendet habe (siehe unten), dienen nur zu Testzwecken. Es wird empfohlen, dass Sie Ihre echten Anmeldeinformationen wie Name und E-Mail-ID verwenden und einen Kommentar abgeben.

Der folgende Inhalt zeigt meine Antwort und wie die Ausgabe aussehen wird:

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.
    

Sobald Sie die Passphrase eingegeben haben, beginnt es mit der Generierung des Schlüssels. Es wird Sie bitten, etwas zu tun. Es wird empfohlen, die Maus zu bewegen oder etwas einzugeben oder die Laufwerke zu verwenden, um einige Dateien zu öffnen. Es wird diese Arbeit verwenden, um zufällige Bits zu erzeugen. Möglicherweise müssen Sie dies mehrmals tun. Die Ausgabe für mich ist unten dargestellt:

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)

+++++

Sobald dies erledigt ist, wurde der Schlüssel generiert. Es sieht ähnlich aus wie der Inhalt unten:

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

Hier sind zwei Dinge wichtig:Geben Sie eine starke Passphrase an und merken Sie sich Ihre Passphrase

Nachdem die Schlüssel generiert wurden, müssen wir nun die öffentliche Schlüsseldatei exportieren, um sie auf anderen Systemen zu importieren oder per E-Mail zu versenden. Um den Export zu starten, verwenden Sie den folgenden Befehl:

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

Ersetzen Sie „John Doe“ durch den Namen, den Sie beim Generieren des Schlüssels verwendet haben.

Es wird auch empfohlen, eine Sicherungskopie des privaten Schlüssels zu erstellen. Dazu können wir gpg verwenden. Um die Sicherung zu erstellen, verwenden Sie den folgenden Befehl:

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

Hier die Datei "file-enc-privkey.asc" wird das Backup des privaten Schlüssels sicher aufbewahren. Sobald der Export und die Schlüsselsicherung abgeschlossen sind, können wir nun die .tar.gz-Datei verschlüsseln und entschlüsseln. Verwenden Sie zum Verschlüsseln den folgenden Befehl:

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

Denken Sie daran, „John Doe“ im obigen Befehl in den Namen zu ändern, den Sie bei der Schlüsselgenerierung angegeben haben, da sonst die Verschlüsselung fehlschlägt. Wenn der Befehl erfolgreich ausgeführt wird, wird eine verschlüsselte Datei namens "files.tar.gz.gpg" wird erstellt.

Jetzt können wir das tar.gz-Archiv mit dem folgenden Befehl entschlüsseln. Es verwendet den privaten Schlüssel zusammen mit der Passphrase, um den entschlüsselten Ordner zu entschlüsseln und bereitzustellen. Verwenden Sie zum Entschlüsseln den folgenden Befehl:

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

Der obige Befehl fragt nach der Passphrase und entschlüsselt dann die verschlüsselte Datei und erstellt eine komprimierte Datei mit dem Namen "output.tar.gz" die dann mit tar in den Ordner entpackt werden können, um die Dateien zurückzubekommen. Das folgende Bild zeigt die Ausgabe von Verschlüsselungs- und Entschlüsselungsbefehlen:

2.4 Warum GPG?

GPG unterstützt beides:die Verschlüsselung mit öffentlichen Schlüsseln und die symmetrische Verschlüsselung, und dies bietet eine gute Flexibilität und kann für eine Vielzahl von Anwendungen verwendet werden. Es besteht keine Notwendigkeit, sensible Informationen bereitzustellen, und gpg kann auch eine beliebige Anzahl von Verschlüsselungsfunktionen haben, indem der öffentliche Schlüssel verwendet wird. Dem Benutzer wird die Wahl gegeben, aus mehreren Verschlüsselungsalgorithmen auszuwählen. Diese Gründe machen es zu einem sehr nützlichen Sicherheitstool zur Verschlüsselung von Dateien und Ordnern oder Daten.

3 Verschlüsselung mit OpenSSL

3.1 Einführung in OpenSSL

Das OpenSSL-Projekt ist eine gemeinsame Anstrengung zur Entwicklung eines robusten, kommerziellen, voll funktionsfähigen Open-Source-Toolkits, das die Protokolle Secure Sockets Layer (SSL v2/v3) und Transport Layer Security (TLS) sowie einen General mit voller Stärke implementiert Zweck kryptografische Bibliothek. OpenSSL ist für die meisten Unix-ähnlichen Betriebssysteme verfügbar und basiert auf SSLeay. OpenSSL unterstützt auch viele SSH-, SFTP- und SCP-Anwendungen. Hier verwenden wir OpenSSL, um Daten zu verschlüsseln, indem wir die asymmetrische Verschlüsselung und die AES-Verschlüsselung verwenden. Symmetrische Verschlüsselung kann zum Verschlüsseln größerer Dateien oder Daten verwendet werden.

3.2 Generierung der öffentlichen und privaten Schlüssel

Als erstes müssen wir den öffentlichen und den privaten Schlüssel generieren. Wir generieren zuerst den privaten Schlüssel. Verwenden Sie dazu den folgenden Befehl:

openssl genrsa -out private_key.pem 1024

Der obige Befehl weist OpenSSL an, RSA zu verwenden, um einen privaten Schlüssel mit einer Größe von 1024 Bytes zu generieren. Der Schlüssel wird dann sicher in einer Datei namens "private_key.pem" gespeichert . Die Ausgabe dieses Befehls sieht ähnlich aus wie im folgenden Bild:

Sobald der private (geheime) Schlüssel generiert ist, können wir diesen verwenden, um den öffentlichen Schlüssel zu generieren, sodass sie ein Paar bilden. Verwenden Sie den folgenden Befehl, um den öffentlichen Schlüssel zu generieren:

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

Es sieht wie im Bild unten aus:

3.3 Daten verschlüsseln

Wir können jetzt den öffentlichen Schlüssel verwenden, um Daten zu verschlüsseln. Hier verschlüsseln wir die Datei „test.txt“ und speichern den verschlüsselten Text in der Datei encrypt.dat. Führen Sie den folgenden Befehl aus:

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

Die folgenden Bilder zeigen die Textdatei vor und nach der Verschlüsselung:

3.4 Daten entschlüsseln

Hier verwenden wir den privaten Schlüssel, um die Datei zu entschlüsseln. Führen Sie den folgenden Befehl aus:

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

Die Datei decrypt.txt enthält die entschlüsselten Daten. Die Ausführung des obigen Befehls und auch der Dateiinhalt ist im folgenden Bild dargestellt:

4 Fazit

Die oben gezeigten Methoden sind sehr sicher, wenn sie sorgfältig verwendet werden, und ermöglichen mehrere Verschlüsselungen und Sicherheitsstufen für unterschiedliche Sicherheitsstufen. Daher kann jedes davon in verschiedenen Szenarien zum Verschlüsseln von Dateien/Ordnern und Rohdaten verwendet werden.

  • OpenSSL
  • OpenPGP

Linux
  1. Erste Schritte mit Linux-Firewalls

  2. Erste Schritte mit dem Linux-tac-Befehl

  3. Erste Schritte mit PiFlash:Starten Sie Ihren Raspberry Pi unter Linux

  4. Erste Schritte mit dem Linux-cat-Befehl

  5. Erste Schritte mit PostgreSQL unter Linux

Erste Schritte mit dem Linux-Betriebssystem

Vagrant-Tutorial – Erste Schritte mit Vagrant unter Linux

Erste Schritte mit Docker Compose unter Linux

Erste Schritte mit VirtualBox unter Linux – Teil 1

Erste Schritte mit Flutter auf dem Linux-Desktop

Erste Schritte mit Linux Mint? Konzentrieren Sie sich auf diese drei Werkzeuge