ZRE Knowledge Communications、ZKCは、あらゆる多くの関係者間でプライベートで安全なコミュニケーションを可能にするための一連のプログラムです。
ZKCスイートは、概念実証ツールです!コードは、完全に適切に分離されるのではなく、やや絡み合っていることにより、これを反映しています。重要なビットが正しいことを確認するために私たちは細心の注意を払っていますが、確かにバグが潜んでいます。 ZKCをより成熟したプロジェクトに移行するPRを喜んで使用します。
Zkserverユーザーを作成し、ログインしてインストールプロセスを完成させることをお勧めします。 ZkServerディレクトリを作成し、構成ファイルを所定の位置にコピーしてから、構成ファイルを編集します。
$ mkdir ~ /.zkserver
$ cp $GOPATH /src/github.com/companyzero/zkc/zkserver/zkserver.conf ~ /.zkserver/
$ vi ~ /.zkserver/zkserver.conf構成ファイルに表示する必要がある2つのアイテムがあります。
allowidentify = no
createpolicy = noAllowIdentifyは、Zkserverに外部の当事者に識別できるかどうかを明示的に伝える設定です。このノブは、真の閉じたシステムを有効にするために存在します。この設定が設定されている場合、それと通信する唯一の方法は、このZkserverと通信したZkclientを使用するか、ZkclientがZkimportを使用してZkserver IDレコードをその構成に挿入することです。このノブがYESに設定されている場合、Zkserverはセッション前段階でそのアイデンティティのクエリを許可します。
CreatePolicyには3つの設定があります:はい、いいえ、トークン。 createpolicyが設定されている場合、外部の当事者はアカウントを作成できません。 CreatePolicyがYESに設定されている場合、zkclientはこのZkserverでアカウントを作成できます。そして最後に、createpolicyがトークンに設定されている場合、Zkclientはアカウントの作成中にトークンを提供する必要があります。このトークンは、Zkserver管理から取得できます。トークンの作成は、Zkservertokenコマンドを実行することにより、Zkserver管理者として実行できます。これにより、アカウントを作成するために1回使用できるトークンが吐き出されます。
注:configファイルのすべてのディレクトリ/ファイルネームエントリを確認する必要があるデフォルト〜/.zkserverディレクトリを使用していない場合。
構成ファイルの残りのアイテムは、かなり自明です。
Zkclientは、IRSSIのような通信クライアントです。 IRSSIのユーザーは、インターフェイスが馴染みのあると感じるでしょう。
zkclientが初めて開始された場合~/.zkclient/zkclient.confでデフォルトのディレクトリと構成ファイルを作成します。構成ファイルを変更する場合は、プログラムを終了する必要があります。構成ファイルを編集してZkclientを再起動します。
0.3.0を超えるバージョンは、次の方法を使用してデフォルトの構成ファイルをエクスポートできます。
$ zkclient -export /tmp/zkclient.conf
exporting config file to: /tmp/zkclient.confzkclientディレクトリを作成し、構成ファイルを所定の位置にコピーしてから、構成ファイルを編集します。
$ mkdir ~ /.zkclient
$ cp $GOPATH /src/github.com/companyzero/zkc/zkclient/zkclient.conf ~ /.zkclient/
$ vi ~ /.zkclient/zkclient.conf構成ファイルに表示する必要があるアイテムが1つあります。
savehistory = noSaveHistoryはデフォルトでNOに設定されています。永続的な履歴が必要な場合(zkclientを終了した後)これをyesに設定します。
注:configファイルのすべてのディレクトリ/ファイルネームエントリを確認する必要があるデフォルト〜/.zkclientディレクトリを使用していない場合。
構成ファイルの残りのアイテムは、かなり自明です。
Zkclientを最初に発売すると、ユーザー名、ニック、サーバー、トークンのユーザーに促されます。ユーザー名はあなたの名前(Alice McAliceなど)で、Nickは受信したもの(Alice1337など)によって表示されるように希望のニックです。サーバーはZkserverのアドレスであり、最後にトークンはアカウントを作成するために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は、ZkserverまたはZkclientのパブリックアイデンティティのいずれかをエクスポートします。 ZkserverのIDには、ホストアドレスも含まれています。結果の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は、Zkexportとbase64文字列をインポートすることを目的としています。
ここに例を追加します。
zkserverユーザーがzkservertokenを入力するだけで、ツールは単一の使用トークンを吐き出します。例えば:
$ zkservertoken
7000 8677 6548 2615バイナリリリースは、一般的なオペレーティングシステムとアーキテクチャ用に提供されます。
https://github.com/companyzero/zkc/releases
各リリースには、そのリリースのバイナリ用のSHA256ハッシュを備えたマニフェストファイルが含まれています。これらを確認するには、次のことが必要です。
バイナリを検証するための手順は次のとおりです。
ここからOSのファイルマニフェスト、ファイルマニフェストの署名、zip/tarballをダウンロードします。
OSのzip/tarballのsha256値を取得し、64ビットLinuxの場合、ファイルマニフェストの値と一致することを確認します
$ sha256sum zkc-linux-amd64-v0.2.0.tar.gz
51dd11ffbcc573462eb61df8fa5caa60677bcc9178fda5d68d02b3414aa6765f zkc-linux-amd64-v0.2.0.tar.gz
GNUPGにZKCリリース署名キーをインポートします。
$ 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
プラットフォーム用のバイナリを備えたZipまたはTarballが検証され、ZKCチームによって生成されたと確信できます。
0.3.0のリリースにより、Zkserverのディスク形式が変更されました。新しいZkserverバージョンを実行する前に、Zkserverディレクトリをバックアップすることをお勧めします。コードにはアップグレードコードが含まれており、テストされていますが、アップグレード前に常にこの警告に注意する必要があります。
ZKCはまだ監査されていません。賢く使用してください。
ZKCとその暗号LIBSを監査および開発する請負業者を探しています。給与は秘密に提供されます。
ZKCは、コピーフリーISCライセンスに基づいてライセンスされています。