2017-10-12 1 views
0

Ich bin mir ziemlich sicher, dass dies einfach sein sollte, aber irgendwie habe ich kurz von Googeln gekommen.verschlüsseln mit Keyfile, entschlüsseln mit Passwort

Ich schreibe ein PHP-Skript auf Linux zum Verschlüsseln von Dateien. Ich möchte, dass jeder mit diesem Skript Dateien verschlüsseln kann, aber beim Entschlüsseln der Dateien ein Passwort benötigt.

Ich habe mir GnuPG und openssl angeschaut, aber sie scheinen auch Schlüsseldateien zu benötigen, wenn sie entschlüsseln, oder ein Passwort sowohl beim Verschlüsseln als auch beim Entschlüsseln - es sei denn, ich habe etwas übersehen.

Im Grunde arbeite ich an einem Repository und die Konfigurationsdateien des Projekts enthalten vertrauliche Informationen, die ich nicht unverschlüsselt im Repo haben möchte, aber ich möchte ein Skript haben, mit dem alle Entwickler sensible Dateien verschlüsseln können, bevor sie sie committen zum Repo.

+1

Gibt es einen Grund, warum Sie einen Schlüssel (Datei) nicht verwenden können, um die Dateien zu entschlüsseln? Warum muss es ein Passwort sein? – martinstoeckli

+0

Das ist eine sehr gute Frage - Es kommt darauf an, wie einfach es ist, ein Passwort zu verteilen, denke ich - wir verwenden einen Passwort-Manager (Keepass). Allerdings gab es mir nur eine Idee für einen Hack ... Ich könnte die Entschlüsselungsdatei mit einem Passwort verschlüsseln und als Teil des Skripts die Schlüsseldatei mit einem Passwort entschlüsseln und dann die Schlüsseldatei verwenden, um die anderen Dateien zu entschlüsseln ... Ich verstehe, wie verrückt das klingt, aber es könnte funktionieren: o –

+0

Wenn Sie anstelle eines Kennworts eine Schlüsseldatei verwenden könnten, könnten Sie ein öffentliches/privates Schlüsselpaar verwenden. Dann könnten Sie den öffentlichen Schlüssel verwenden, um die Dateien zu verschlüsseln, und den privaten Schlüssel, um die Dateien zu entschlüsseln. In diesem Fall ist es nicht nötig, den privaten Schlüssel an irgendjemanden weiterzugeben, sondern den anderen Entwicklern den öffentlichen Schlüssel zu geben. – martinstoeckli

Antwort

-1

Nachdem martinstöckli die offensichtliche Frage "Warum kann man einen Schlüssel nicht zum Entschlüsseln der Dateien verwenden?", Dachte ich, ich hätte an einen Hack gedacht, aber anscheinend ist er nach dem Googlen tatsächlich sehr weit verbreitet - meine Lösung hier beteiligte sich mit einem Schlüsselpaar und einem Passwort.

Anmerkung: Ich erzeugen das Schlüsselpaar in einem temporären Ordner, sonst das Schlüsselpaar auf dem Schlüsselbund auf dem PC existieren würde, wo sie erzeugt werden, ich will nicht, dass deshalb ich --homedir /tmp/gnupg

hinzufügen erstelle ich einen Passwort- weniger Keypair mit GPG - hier ist was ich getippt:
mkdir /tmp/gnupg
gpg --homedir /tmp/gnupg --full-gen-key
(1) RSA and RSA (default)
4096
0
y
mark
[email protected]
this key is used for protecting config files
o
exportieren Sie dann den privaten Schlüssel, private Schlüssel und Besitzervertrauen
gpg --homedir /tmp/gnupg --armor --export [email protected] > gpg_keyfile.pub
gpg --homedir /tmp/gnupg --armor --export-secret-keys [email protected] > gpg_keyfile.priv
gpg --homedir /tmp/gnupg --export-ownertrust > gpg_ownertrust.txt
rm -rf /tmp/gnupg
Dies genug ist, zu verschlüsseln und Dateien zu entschlüsseln wit hout ein Passwort, sobald die Schlüssel in den Schlüsselbund von GPG importiert werden.

Als nächstes gibt es ein Passwort, das den privaten Schlüssel schützt, so dass niemand ihn benutzen kann, ohne das Passwort zu haben. gpg -c --batch --passphrase password1234 gpg_keyfile.priv
ACHTUNG: GPG löscht nicht die Original-Dateien, so dass, wenn die Verschlüsselung, erinnere mich an die ursprüngliche Datei zu löschen, wenn nötig
Dann kann ich alle drei Dateien in das Repository hinzufügen (gpg_keyfile.pub gpg_keyfile.priv.gpg gpg_ownertrust.txt - NOT gpg_keyfile.priv!).
1: importieren Sie die öffentliche Datei und Besitzervertrauen
gpg --import gpg_keyfile.pub
gpg --import-ownertrust gpg_ownertrust.txt
2: Verschlüsseln Sie die Datei mit dem öffentlichen Schlüssel
gpg -e -r [email protected] configfile.ini
configfile.ini.gpg sollte jetzt existieren
Um eine Datei auf einem anderen Rechner verschlüsseln , die zum Repo committiert werden kann

Wenn Sie jetzt eine Datei wieder entschlüsseln wollen, gibt es ein paar zusätzliche Hoops, um durch zu springen, um sicherzustellen, dass das System den privaten Schlüssel nicht speichert.
1: Erstens, der private Schlüssel ist durch ein Passwort geschützt, entschlüsseln so den privaten Schlüssel:
gpg --batch --passphrase password1234 gpg_keyfile.priv.gpg
2: Erstellen Sie dann ein temporäres GPG-Verzeichnis
mkdir /tmp/gnupg
3: importieren, den privaten Schlüssel zum temporären Schlüsselanhänger
gpg --homedir /tmp/gnupg --import gpg_keyfile.priv
4: die temporären Schlüsselanhänger verwenden, die jetzt die privaten Schlüssel halten die Datei zu entschlüsseln
gpg --homedir /tmp/gnupg configfile.ini.gpg
5: stellen Sie sicher, den temporären Schlüsselbund und einen privater Schlüsselsofort entfernen rm -rf /tmp/gnupg gpg_keyfile.priv

Das funktioniert für mich, jetzt kann ich git einen Zweig auf ein neues System klonen, leicht meine Anwendung einrichten und nur ein Passwort mit meinen Konfigurationsdateien entschlüsseln.

0

Dies sollte sowohl mit GnuPG als auch mit openssl möglich sein.

Sie benötigen eine verschlüsselte (d. H. Passwortgeschützte) private Schlüsseldatei und eine unverschlüsselte öffentliche Schlüsseldatei. Jeder kann mit dem öffentlichen Schlüssel verschlüsseln, aber zum Entschlüsseln muss der private Schlüssel bereitgestellt werden, der passwortgeschützt ist.

Die einzige technische Eigenschaft ist, dass Sie die Schlüsseldateien an alle verteilen müssen.

Verwandte Themen