ZKC, Zero Knowledge Communications, представляет собой набор программ для обеспечения частной и безопасной связи между любым количеством сторон.
Suite ZKC-это инструмент проверки концепции! Код отражает это, будучи несколько переплетенным, а не полностью и должным образом разделен. Хотя мы очень заботились о том, чтобы важные кусочки были правильными, безусловно, скрываются ошибки. Мы с радостью возьмем PR, которые перемещают ZKC в более зрелый проект.
Это хорошая идея, чтобы создать пользователя Zkserver и входить в систему для завершения процесса установки. Создайте каталог Zkserver и скопируйте файл конфигурации на месте, а затем отредактируйте файл конфигурации.
$ mkdir ~ /.zkserver
$ cp $GOPATH /src/github.com/companyzero/zkc/zkserver/zkserver.conf ~ /.zkserver/
$ vi ~ /.zkserver/zkserver.confВ файле конфигурации необходимо просмотреть 2 элемента.
allowidentify = no
createpolicy = noAlliendify - это настройка, которая явно говорит Zkserver, если разрешено идентифицировать себя перед внешними сторонами. Эта ручка существует, чтобы обеспечить истинные закрытые системы. Когда эта настройка не установлена, единственным способом общения с ним - это иметь ZKClient, который общался с этим Zkserver до или ZKClient, использовавшего Zkimport для внедрения записи идентификации Zkserver в свою конфигурацию. Если эта ручка установлена на да, Zkserver разрешит запросы своей идентичности во время фазы предварительной сессии.
CreatePolicy имеет три настройки: да, нет и токен. Когда CreatePolicy не устанавливается на внешнюю сторону, не может создать учетную запись. Если CreatePolicy устанавливается на да, любой ZKClient может создать учетную запись на этом Zkserver. И, наконец, если CreatePolicy настроен на токен, ZKClient должен предоставить токен во время создания учетной записи. Этот токен может быть получен из администрации Zkserver. Создание токена может быть сделано в качестве администратора Zkserver, выполнив команду Zkservertoken. Это выплюнет токен, который можно использовать один раз для создания учетной записи.
Примечание. Если вы не используете каталог по умолчанию ~/.zkserver, который вам необходимо просмотреть все записи Directory/filenames в файле конфигурации.
Остальные элементы в файле конфигурации довольно самостоятельно.
ZKClient-это клиент, похожий на IRSSI. Пользователи IRSSI найдут свой интерфейс знакомым.
Если ZKClient запускается в первый раз, он создаст файл каталога и конфигурации по умолчанию в ~/.zkclient/zkclient.conf . Если вы хотите внести изменения в файл конфигурации, вы должны выйти из программы, отредактируйте файл конфигурации и перезапустите ZKClient.
Версии, превышающие 0,3.0, могут экспортировать файл конфигурации по умолчанию, используя следующий метод:
$ zkclient -export /tmp/zkclient.conf
exporting config file to: /tmp/zkclient.confСоздайте каталог ZKClient и скопируйте файл конфигурации на месте, а затем отредактируйте файл конфигурации.
$ mkdir ~ /.zkclient
$ cp $GOPATH /src/github.com/companyzero/zkc/zkclient/zkclient.conf ~ /.zkclient/
$ vi ~ /.zkclient/zkclient.confЕсть 1 элемент, который должен быть рассмотрен в файле конфигурации.
savehistory = noSavehistory по умолчанию установлен на нет. Если вы хотите иметь постоянную историю (после выхода из ZKClient), установите это на да.
Примечание. Если вы не используете каталог по умолчанию ~/.zkclient, вам необходимо просмотреть все записи Directory/filenames в файле конфигурации.
Остальные элементы в файле конфигурации довольно самостоятельно.
После первого запуска ZKClient он подскажет пользователю: имя пользователя, ник, сервер и токен. Имя пользователя - ваше имя (например, Алиса Макалис), Ник - ваш предпочтительный Ник, так как он отображается на вашем получении (например, Alice1337), сервер является адресом вашего Zkserver, а наконец -токен является администратором Zkserver, предоставленным токеном для создания учетной записи (если это необходимо). Как только этот шаг будет завершен, теперь вы можете общаться с Zkserver.
На этом этапе ZKClient TUI полностью поднят, и однажды сможет ввести /помощь, чтобы получить представление о том, какие команды доступны.
ZKClient использует цифровое шифрование для связи, а сервер не может привести к сообщениям. Единственное, что может видеть Zkserver, это то, что кто -то общается с кем -то другим. Поэтому это требует, чтобы пользователи настраивали сборы между собой. Давайте проиллюстрируем поток с примером.
Предположим, что Алиса хочет общаться с Бобом, и у обоих есть учетная запись на общем Zkserver, тогда процесс выглядит следующим образом:
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 только проходит зашифрованные капли взад и вперед между пользователями. Он не знает во всем, что обменивается. Поэтому обмен ключом может быть завершен только после того, как все стороны были достаточно долго, чтобы все капли путешествовали туда -сюда.
На этом этапе Алиса или Боб смогут отправлять сообщения обратно и форт, используя команду /m (например, Алиса будет следующим /M Боб привет!).
Есть еще много команд в клавишах ZKClient и TUI, но они описаны в другом месте.
ZKEXPORT EXPORT либо Zkserver, либо ZKClient Public Identity. Идентификация Zkserver также включает в себя адрес хоста. Полученная строка BASE64 может быть по электронной почте или иным образом обменять с вашим аналогом.
Пример ZKClient:
$ zkexport -root /Users/marco/.zkclient1/
AAAAEU1hcmNvIFBlZXJlYm9vbSAxAAAAAAAABm1hcmNvMQAAY3rsUd6bTpLI/n2EwmGKPkK3dA/V+wyz5HHLiQgzHNJ9KAZTOrGznd9Ulhe0Y0EVoW8OkuM/G51w6BdvIOm1CWaOAhw8SJi0/vbjZzETd8k397Vl3LPcDUFUbp+JQVKdtBWDhevh3MFN0DY7Oc5ZZrT+lIE+KVwQm/PaPpeIohoWAEBu3HEE6vuq4eQt7BQ6dbEV61ZKUHbMm/61ymhXCA==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 предназначен для импорта строк ZKEXPORTED BASE64.
Добавьте примеры здесь.
Поскольку пользователь Zkserver просто вводит ZkserVertoken, и инструмент выплюнет один токен использования. Например:
$ zkservertoken
7000 8677 6548 2615Бинарные выпуски предоставляются для общих операционных систем и архитектур:
https://github.com/companyzero/zkc/releases
Каждый выпуск содержит манифестный файл с хэши SHA256 для двоичных файлов в этом выпуске. Чтобы проверить их, вам понадобится:
Шаги по проверке двоичных файлов следующие:
Загрузите манифест файла, подпись для манифеста файла и Zip/Tarball для вашей ОС отсюда.
Получите значение SHA256 для Zip/Tarball для вашей ОС и убедитесь, что оно соответствует значению в манифесте файла, например, для 64-битного Linux
$ sha256sum zkc-linux-amd64-v0.2.0.tar.gz
51dd11ffbcc573462eb61df8fa5caa60677bcc9178fda5d68d02b3414aa6765f zkc-linux-amd64-v0.2.0.tar.gz
Импортируйте ключ подписания релиза ZKC в 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)
Убедитесь, что подпись для манифеста файла действительна и создана ключом подписи 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
Застежка -молния или тарбол с двоичными файлами для вашей платформы теперь проверены, и вы можете быть уверены, что они были созданы командой ZKC.
С выпуском 0,3.0 формат диска Zkserver был изменен. Рекомендуется сделать резервную копию каталога Zkserver до запуска новой версии Zkserver. Код содержит код обновления, и он был протестирован, однако всегда следует обращать внимание на это предупреждение до обновления.
ZKC еще не проверялся. Используйте мудро.
Мы ищем подрядчиков для аудита и развития ZKC и его крипто -либеров. Оплата предлагается в DECRED.
ZKC имеет лицензию по лицензии CopyFree ISC.