ZKC, Zero Knowledge Communications, ist eine Reihe von Programmen, um private und sichere Kommunikation zwischen einer beliebigen Anzahl von Parteien zu ermöglichen.
Die ZKC-Suite ist ein Proof-of-Concept-Tool! Der Code spiegelt dies wider, indem er etwas miteinander verflochten ist, anstatt vollständig und ordnungsgemäß getrennt zu sein. Während wir uns sehr darauf achteten, dass die wichtigen Teile korrekt sind, lauten sicherlich Fehler. Wir werden gerne PRs verwandeln, die ZKC in ein reiferes Projekt bewegen.
Es ist eine gute Idee, einen ZkServer -Benutzer zu erstellen und sich anzumelden, um den Installationsprozess abzuschließen. Erstellen Sie ein ZkServer -Verzeichnis und kopieren Sie die Konfigurationsdatei an und bearbeiten Sie die Konfigurationsdatei.
$ mkdir ~ /.zkserver
$ cp $GOPATH /src/github.com/companyzero/zkc/zkserver/zkserver.conf ~ /.zkserver/
$ vi ~ /.zkserver/zkserver.confEs gibt 2 Elemente, die in der Konfigurationsdatei betrachtet werden müssen.
allowidentify = no
createpolicy = noDeglyIdentify ist eine Einstellung, die ZkServer ausdrücklich mitteilt, ob es sich an externen Parteien identifizieren darf. Dieser Knopf existiert, um echte geschlossene Systeme zu ermöglichen. Wenn diese Einstellung auf nein gesetzt ist, besteht die einzige Möglichkeit, damit zu kommunizieren, dass ein ZKClient vorhanden ist, der vor dem ZkClient mit diesem ZkServer oder dem ZKClient verwendet hat, um den ZkServer -Identitätsdatensatz in seine Konfiguration einzulegen. Wenn dieser Knopf auf Ja eingestellt ist, lässt der ZkServer die Abfragen seiner Identität während der Vorsitzungsphase zu.
Createpolicy hat drei Einstellungen: Ja, Nein und Token. Wenn CreatePolicy auf keine externe Partei eingestellt ist, kann ein Konto kein Konto erstellen. Wenn CreatePolicy auf Ja eingestellt ist, kann ein ZkClient ein Konto auf diesem ZkServer erstellen. Und schließlich, wenn CreatePolicy auf Token eingestellt ist, muss der ZKClient während der Kontoerstellung ein Token bereitstellen. Dieses Token kann aus der ZkServer -Administration erhalten werden. Das Erstellen eines Tokens kann als ZkServer -Administrator durchgeführt werden, indem der Befehl zkServertoken ausgeführt wird. Dies wird ein Token ausspucken, das einmal verwendet werden kann, um ein Konto zu erstellen.
Hinweis: Wenn Sie nicht das Verzeichnis von Standard ~/.zkServer verwenden, das Sie alle Verzeichnisse/Dateinamen in der Konfigurationsdatei überprüfen müssen.
Die verbleibenden Elemente in der Konfigurationsdatei sind ziemlich selbsterklärend.
ZkClient ist ein IRSSI-Look-Alike-Kommunikationskunde. Benutzer von IRSSI werden feststellen, dass die Benutzeroberfläche vertraut ist.
Wenn ZkClient erstmals gestartet wird, wird ein Standardverzeichnis und eine Konfigurationsdatei in ~/.zkclient/zkclient.conf erstellt. Wenn Sie Änderungen an der Konfigurationsdatei vornehmen möchten, müssen Sie das Programm beenden, die Konfigurationsdatei bearbeiten und ZKClient neu starten.
Versionen größer als 0,3.0 können eine Standardkonfigurationsdatei mit der folgenden Methode exportieren:
$ zkclient -export /tmp/zkclient.conf
exporting config file to: /tmp/zkclient.confErstellen Sie ein ZKClient -Verzeichnis und kopieren Sie die Konfigurationsdatei an und bearbeiten Sie die Konfigurationsdatei.
$ mkdir ~ /.zkclient
$ cp $GOPATH /src/github.com/companyzero/zkc/zkclient/zkclient.conf ~ /.zkclient/
$ vi ~ /.zkclient/zkclient.confEs gibt 1 Element, das in der Konfigurationsdatei betrachtet werden muss.
savehistory = noSaveHistory ist standardmäßig auf Nr. Wenn Sie eine persistente Geschichte haben möchten (nachdem Sie ZKClient beendet haben), stellen Sie dies auf ja.
Hinweis: Wenn Sie nicht das Verzeichnis von Standard ~/.zkclient verwenden, das Sie alle Verzeichnisse/Dateinamen in der Konfigurationsdatei überprüfen müssen.
Die verbleibenden Elemente in der Konfigurationsdatei sind ziemlich selbsterklärend.
Beim ersten Start von ZKClient wird der Benutzer für: Benutzername, Nick, Server und Token aufgefordert. Der Benutzername ist Ihr Name (z. B. Alice McAlice), Nick ist Ihr bevorzugter Nick, wie er von Ihrem empfangenen (z. B. Alice1337) angezeigt wird, der Server ist die Adresse Ihres ZkServers und zuletzt Token ist der ZkServer -Administrator zur Verfügung gestellt, um ein Konto zu erstellen (falls erforderlich). Sobald dieser Schritt abgeschlossen ist, können Sie jetzt mit ZkServer kommunizieren.
Zu diesem Zeitpunkt ist der Zkclient TUI vollständig aufgestiegen und kann einmal tippen /helfen, um eine Vorstellung davon zu erhalten, welche Befehle verfügbar sind.
ZKClient verwendet eine Ratcheted -Verschlüsselung für die Kommunikation, und der Server kann keine Snoop -Nachrichten schnüffeln. Das einzige, was Zkserver sehen kann, ist, dass jemand mit jemand anderem kommuniziert. Auf diese Weise müssen Benutzer Ratschen zwischen sich einstellen. Veranschaulichen wir den Fluss mit einem Beispiel.
Angenommen, Alice will mit Bob kommunizieren und beide haben ein Konto auf einem gemeinsam genutzten ZkServer, dann lautet der Prozess wie folgt:
1. Alice must upload her identity as an encrypted blob to the zkserver. This
can be accomplished by typing /kx and then filling out a password that is
going to be shared with Bob. The server will return a PIN code upon
completion.
2. Using an out-of-band communication mechanism Alice must share the PIN and
password with Bob.
3. Bob needs to fetch Alice's identity by typing the following /fetch PIN
("PIN" is replaced with the actual number provided by Alice). If the PIN is
correct Bob will be prompted for the password of the encrypted blob. If the
blob decrypts properly Bob will additionally be prompted to accept Alice's
fingerprint. If Bob accepts Alice's fingerprint then the rest of the key
exchange will be finalized.
ZkServer übergibt verschlüsselt nur verschlüsselte Blobs zwischen den Benutzern hin und her. Es hat überhaupt kein Wissen, was ausgetauscht wird. Daher kann ein wichtiger Austausch nur abgeschlossen werden, wenn alle Parteien lange genug online waren, damit alle Blobs hin und her fahren können.
Zu diesem Zeitpunkt können Alice oder Bob mit dem Befehl /m Nachrichten zurück und das Fort senden (zB Alice würde es an die folgenden /m Bob Hallo!).
Es gibt noch viele weitere Befehle in ZKClient- und TUI -Schlüssel, aber diese werden an anderer Stelle beschrieben.
ZKEXPORT Exportieren Sie entweder die öffentliche Identität von ZkServer oder Zkclient. Die ZkServer -Identität enthält ebenfalls die Host -Adresse. Die resultierende Basis64 -Zeichenfolge kann per E -Mail oder auf andere Weise mit Ihrem Gegenstück ausgetauscht werden.
zkclient Beispiel:
$ zkexport -root /Users/marco/.zkclient1/
AAAAEU1hcmNvIFBlZXJlYm9vbSAxAAAAAAAABm1hcmNvMQAAY3rsUd6bTpLI/n2EwmGKPkK3dA/V+wyz5HHLiQgzHNJ9KAZTOrGznd9Ulhe0Y0EVoW8OkuM/G51w6BdvIOm1CWaOAhw8SJi0/vbjZzETd8k397Vl3LPcDUFUbp+JQVKdtBWDhevh3MFN0DY7Oc5ZZrT+lIE+KVwQm/PaPpeIohoWAEBu3HEE6vuq4eQt7BQ6dbEV61ZKUHbMm/61ymhXCA==zkserver Beispiel:
$ zkexport -s -root /Users/marco/.zkserver/
AAAACHprc2VydmVyAAAACHprc2VydmVyr51dJzm8pxrjiQsxFF3Bez+6izPdWAcEWZFHka7OwoTAoamQ1hm5eU5HwgQdSS7Ek+nd2LkvjUcu55l3jUhKdBwpfrCn/N/mGWpJS6iMSFSxU/OcRvWe9pEySQZR4gyjjb4TKuaaaReGBI4d8rUfOwoDTs1y05YO4Fgtx9a0BOQsBHvxoPKeqGJ6gxf5QlF4Xu8RRashfRYcTVG44uMpBwAAAmUwggJhMIIBw6ADAgECAhBGHi9VXIHCoQ6W3uSSG9OLMAoGCCqGSM49BAMEMAsxCTAHBgNVBAoTADAeFw0xNjExMjgxNzQwNThaFw00OTEyMzEyMzU5NTlaMAsxCTAHBgNVBAoTADCBmzAQBgcqhkjOPQIBBgUrgQQAIwOBhgAEAPHlelHUjxH+4JR2+PP71imPZ5b0JjF4vq86UYdgzJXzYmVShJgd+f8qK4ZP+GjLDiZjfl8ov+HUF63uX3V23EZxAVTW0FDyshRiJ+Lt5YmWRMVAM4i+I979Gjq6ySf9bm4Z4vxx1lvUBizussP3KoEG7AdmvbP/HqWzjuQaFH3oeTxDo4HFMIHCMA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MIGeBgNVHREEgZYwgZOCCWxvY2FsaG9zdIIUTWFyY29zLU1hYy1Qcm8ubG9jYWyHBMCojQGHBMCoHQGHEAAAAAAAAAAAAAAAAAAAAAGHEP6AAAAAAAAAuCSI2MJKFRGHEP0JBrb3SIrKuCSI2MJKFRGHBAqqAGmHBH8AAAGHEP6AAAAAAAAAAAAAAAAAAAGHEP6AAAAAAAAAAiUA//7ved0wCgYIKoZIzj0EAwQDgYsAMIGHAkIAstVERsGjpqib7xm1NaplfzmpvOD0H+Zr8lJfKkSCWcnzbPhqo+rl71QlTdqZNzvQHX/hfBNntcXE8f4J80oI+zYCQUl0d7BZYis1X3OTGvguHd01GoxTPFv3HAvu1YlTWFvoShWilKOzH1jDJM//qyagwe/sg67pBUzQ24GQdGDxn/qIAAAAZkimport soll zkexportierte Base64 -Saiten importieren.
Fügen Sie hier Beispiele hinzu.
Da der ZkServer -Benutzer einfach ZKServertoken eingeht und das Tool einen einzelnen Gebrauchs -Token ausspuckt. Zum Beispiel:
$ zkservertoken
7000 8677 6548 2615Für gemeinsame Betriebssysteme und Architekturen werden Binärveröffentlichungen vorgesehen:
https://github.com/companyzero/zkc/releases
Jede Version enthält eine Manifest -Datei mit SHA256 -Hashes für die Binärdateien in dieser Version. Um diese zu überprüfen, benötigen Sie:
Die Schritte zur Überprüfung der Binärdateien sind wie folgt:
Laden Sie das Dateimanifest, die Signatur für das Dateimanifest und den Zip/Tarball für Ihr Betriebssystem von hier herunter.
Ermitteln Sie den SHA256-Wert für das ZIP/Tarball für Ihr Betriebssystem und überprüfen Sie, ob er dem Wert in der Dateimanifest entspricht, z. B. für 64-Bit-Linux
$ sha256sum zkc-linux-amd64-v0.2.0.tar.gz
51dd11ffbcc573462eb61df8fa5caa60677bcc9178fda5d68d02b3414aa6765f zkc-linux-amd64-v0.2.0.tar.gz
Importieren Sie den ZKC -Release -Signierschlüssel in GNUPG.
$ gpg --keyserver hkps://pgp.mit.edu --recv-key 0x14B9CD80
gpg: requesting key 14B9CD80 from hkps server pgp.mit.edu
gpg: key 511E9D66: public key "zkc Release Signing Key <[email protected]>" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
Überprüfen Sie, ob die Signatur für das Dateimanifest gültig ist und vom ZKC -Release -Signierschlüssel erstellt wurde.
$ gpg --verify zkc-manifest-v0.2.0.txt.asc
gpg: assuming signed data in `zkc-manifest-v0.2.0.txt'
gpg: Signature made Mon Jul 2 14:17:16 2018 EDT using RSA key ID 14B9CD80
gpg: Good signature from "zkc Release Signing Key <[email protected]>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: EDCF B52A FCDA E2D2 D9C3 7708 E046 0873 511E 9D66
Subkey fingerprint: 1D16 538A 43D1 6765 43E7 31BF D79D DEA2 14B9 CD80
Der Reißverschluss oder Tarball mit Binärdateien für Ihre Plattform wird jetzt verifiziert und Sie können zuversichtlich sein, dass sie vom ZKC -Team generiert wurden.
Mit der Freisetzung von 0.3.0 wurde das Festplattenformat von ZkServer geändert. Es ist ratsam, das ZkServer -Verzeichnis zu sichern, bevor die neuer Zkserver -Version ausgeführt wird. Der Code enthält den Upgrade -Code und wurde getestet, aber man sollte diese Warnung vor den Upgrades immer beachten.
ZKC wurde noch nicht geprüft. Mit Bedacht verwenden.
Wir suchen Auftragnehmer, um ZKC und seine Krypto -Libs zu prüfen und zu entwickeln. Die Bezahlung wird in Decred angeboten.
ZKC ist unter der kopierfreen ISC -Lizenz lizenziert.