ZKC, Komunikasi Pengetahuan Zero, adalah serangkaian program untuk memungkinkan komunikasi pribadi dan aman antara sejumlah pihak.
ZKC Suite adalah alat pembuktian konsep! Kode mencerminkan hal ini dengan agak saling terkait, bukan dipisahkan sepenuhnya dan benar. Sementara kami sangat berhati -hati untuk memastikan bahwa bit -bit penting sudah benar, pasti ada serangga yang mengintai. Kami akan dengan senang hati membawa PR yang memindahkan ZKC ke proyek yang lebih matang.
Merupakan ide bagus untuk membuat pengguna ZKServer dan login untuk menyelesaikan proses instalasi. Buat direktori ZKServer dan salin file konfigurasi di tempat dan kemudian edit file konfigurasi.
$ mkdir ~ /.zkserver
$ cp $GOPATH /src/github.com/companyzero/zkc/zkserver/zkserver.conf ~ /.zkserver/
$ vi ~ /.zkserver/zkserver.confAda 2 item yang harus dilihat di file konfigurasi.
allowidentify = no
createpolicy = noAlliventify adalah pengaturan yang secara eksplisit memberi tahu ZKServer jika diizinkan untuk mengidentifikasi dirinya ke pihak -pihak eksternal. Kenop ini ada untuk mengaktifkan sistem tertutup sejati. Ketika pengaturan ini diatur ke tidak satu -satunya cara untuk berkomunikasi dengan itu adalah dengan memiliki zkclient yang telah berkomunikasi dengan zkserver ini sebelum atau zkclient menggunakan zkimport untuk memasukkan catatan identitas zkserver ke dalam konfigurasinya. Jika kenop ini diatur ke ya zkserver akan memungkinkan kueri identitasnya selama fase pra-sesi.
CreatePolicy memiliki tiga pengaturan: ya, tidak dan token. Ketika createPolicy diatur ke tidak ada pihak eksternal yang tidak dapat membuat akun. Jika createPolicy diatur ke ya, setiap zkclient dapat membuat akun di zkserver ini. Dan akhirnya jika createPolicy diatur untuk token, zkclient harus memberikan token selama pembuatan akun. Token ini dapat diperoleh dari administrasi ZKServer. Membuat token dapat dilakukan sebagai administrator zkserver dengan menjalankan perintah zkservertoken. Ini akan memuntahkan token yang dapat digunakan sekali untuk membuat akun.
CATATAN: Jika Anda tidak menggunakan direktori ~/.zkserver default, Anda perlu meninjau semua entri direktori/nama file dalam file konfigurasi.
Item yang tersisa dalam file konfigurasi cukup jelas.
ZkClient adalah klien komunikasi yang mirip IRSSI. Pengguna IRSSI akan menemukan antarmuka itu akrab.
Jika zkclient dimulai untuk pertama kalinya ia akan membuat direktori default dan file konfigurasi di ~/.zkclient/zkclient.conf . Jika Anda ingin melakukan perubahan pada file konfigurasi, Anda harus keluar dari program, edit file konfigurasi dan restart zkclient.
Versi lebih besar dari 0.3.0 dapat mengekspor file konfigurasi default menggunakan metode berikut:
$ zkclient -export /tmp/zkclient.conf
exporting config file to: /tmp/zkclient.confBuat direktori ZKClient dan salin file konfigurasi di tempat dan kemudian edit file konfigurasi.
$ mkdir ~ /.zkclient
$ cp $GOPATH /src/github.com/companyzero/zkc/zkclient/zkclient.conf ~ /.zkclient/
$ vi ~ /.zkclient/zkclient.confAda 1 item yang harus dilihat di file konfigurasi.
savehistory = noSaveHistory secara default diatur ke no. Jika Anda ingin memiliki riwayat yang gigih (setelah keluar zkclient), atur ini ke ya.
Catatan: Jika Anda tidak menggunakan direktori ~/.zkclient default yang perlu Anda tinjau semua entri direktori/file dalam file konfigurasi.
Item yang tersisa dalam file konfigurasi cukup jelas.
Setelah pertama kali diluncurkan ZKClient, itu akan meminta pengguna: Nama Pengguna, Nick, Server dan Token. Nama pengguna adalah nama Anda (misalnya Alice McAlice), Nick adalah Nick pilihan Anda karena ditampilkan oleh Anda yang diterima (misalnya Alice1337), server adalah alamat zkserver Anda dan terakhir token adalah administrator zkserver yang disediakan token untuk membuat akun (jika diperlukan). Setelah langkah ini selesai, Anda sekarang dapat berkomunikasi dengan Zkserver.
Pada titik ini ZKClient TUI sepenuhnya naik dan sekali dapat mengetik /membantu untuk mendapatkan gambaran tentang perintah apa yang tersedia.
ZkClient menggunakan enkripsi ratcheted untuk komunikasi dan server tidak dapat mengintip pesan. Satu -satunya hal yang dapat dilihat Zkserver adalah bahwa seseorang berkomunikasi dengan orang lain. Oleh karena itu, ini mengharuskan pengguna untuk mengatur ratchet di antara mereka sendiri. Mari kita ilustrasikan aliran dengan contoh.
Asumsikan bahwa Alice ingin berkomunikasi dengan Bob dan keduanya memiliki akun pada zkserver bersama maka prosesnya adalah sebagai berikut:
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 hanya melewati gumpalan terenkripsi bolak -balik antara pengguna. Ia tidak memiliki pengetahuan sama sekali tentang apa yang dipertukarkan. Oleh karena itu pertukaran utama hanya dapat diselesaikan setelah semua pihak telah online cukup lama untuk semua gumpalan untuk bepergian bolak -balik.
Pada titik ini baik Alice atau Bob akan dapat mengirim pesan kembali dan benteng menggunakan perintah /m (misalnya Alice akan ke /m bob halo berikut!).
Ada lebih banyak perintah dalam kunci zkclient dan tui tetapi itu dijelaskan di tempat lain.
ZkExport mengekspor identitas publik Zkserver atau ZkClient. Identitas ZKServer juga memasukkan alamat host. String base64 yang dihasilkan dapat diemail atau ditukar dengan mitra Anda.
Contoh zkclient:
$ zkexport -root /Users/marco/.zkclient1/
AAAAEU1hcmNvIFBlZXJlYm9vbSAxAAAAAAAABm1hcmNvMQAAY3rsUd6bTpLI/n2EwmGKPkK3dA/V+wyz5HHLiQgzHNJ9KAZTOrGznd9Ulhe0Y0EVoW8OkuM/G51w6BdvIOm1CWaOAhw8SJi0/vbjZzETd8k397Vl3LPcDUFUbp+JQVKdtBWDhevh3MFN0DY7Oc5ZZrT+lIE+KVwQm/PaPpeIohoWAEBu3HEE6vuq4eQt7BQ6dbEV61ZKUHbMm/61ymhXCA==Contoh ZKSERVER:
$ 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 dimaksudkan untuk mengimpor string base64 ZkExported.
Tambahkan contoh di sini.
Karena pengguna Zkserver cukup mengetik ZKServerToken dan alat ini akan memuntahkan satu token penggunaan tunggal. Misalnya:
$ zkservertoken
7000 8677 6548 2615Rilis biner disediakan untuk sistem operasi dan arsitektur umum:
https://github.com/companyzero/zkc/releases
Setiap rilis berisi file manifes dengan hash SHA256 untuk binari dalam rilis itu. Untuk memverifikasi ini, Anda akan membutuhkan:
Langkah -langkah untuk memverifikasi binari adalah sebagai berikut:
Unduh file manifes, tanda tangan untuk manifes file, dan zip/tarball untuk OS Anda dari sini.
Dapatkan nilai SHA256 untuk zip/tarball untuk OS Anda dan periksa apakah itu cocok dengan nilai dalam manifes file, misalnya untuk 64-bit Linux
$ sha256sum zkc-linux-amd64-v0.2.0.tar.gz
51dd11ffbcc573462eb61df8fa5caa60677bcc9178fda5d68d02b3414aa6765f zkc-linux-amd64-v0.2.0.tar.gz
Impor kunci penandatanganan rilis ZKC di 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)
Verifikasi tanda tangan untuk manifes file valid dan dibuat oleh kunci penandatanganan rilis ZKC.
$ 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
Zip atau Tarball dengan binari untuk platform Anda sekarang diverifikasi dan Anda dapat yakin mereka dihasilkan oleh tim ZKC.
Dengan rilis 0.3.0, format disk Zkserver diubah. Dianjurkan untuk membuat cadangan direktori ZKServer sebelum menjalankan versi ZKServer baru. Kode tersebut berisi kode peningkatan dan telah diuji namun orang harus selalu mengindahkan peringatan ini sebelum peningkatan.
ZKC belum diaudit. Gunakan dengan bijak.
Kami mencari kontraktor untuk mengaudit dan mengembangkan ZKC dan Crypto Libs -nya. Pembayaran ditawarkan secara dekred.
ZKC dilisensikan di bawah lisensi ISC CopyFree.