ZKC, Zero Knowledge Communications เป็นชุดของโปรแกรมเพื่อเปิดใช้งานการสื่อสารส่วนตัวและปลอดภัยระหว่างหลายฝ่าย
ZKC Suite เป็นเครื่องมือพิสูจน์แนวคิด! รหัสสะท้อนถึงสิ่งนี้โดยมีการเชื่อมโยงกันแทนที่จะแยกออกจากกันอย่างสมบูรณ์และถูกต้อง ในขณะที่เราดูแลเป็นอย่างดีเพื่อให้แน่ใจว่าบิตที่สำคัญนั้นถูกต้องแน่นอนว่ามีข้อบกพร่องที่ซุ่มซ่อน เราจะใช้ PRS อย่างมีความสุขที่ย้าย ZKC ไปสู่โครงการที่เป็นผู้ใหญ่มากขึ้น
เป็นความคิดที่ดีที่จะสร้างผู้ใช้ Zkserver และเข้าสู่ระบบเพื่อสรุปกระบวนการติดตั้ง สร้างไดเรกทอรี zkserver และคัดลอกไฟล์กำหนดค่าแล้วแก้ไขไฟล์กำหนดค่า
$ mkdir ~ /.zkserver
$ cp $GOPATH /src/github.com/companyzero/zkc/zkserver/zkserver.conf ~ /.zkserver/
$ vi ~ /.zkserver/zkserver.confมี 2 รายการที่ต้องดูในไฟล์กำหนดค่า
allowidentify = no
createpolicy = noFellIdentify เป็นการตั้งค่าที่บอก zkserver อย่างชัดเจนว่าได้รับอนุญาตให้ระบุตัวเองไปยังบุคคลภายนอกหรือไม่ ปุ่มนี้มีอยู่เพื่อเปิดใช้งานระบบปิดที่แท้จริง เมื่อการตั้งค่านี้ถูกตั้งค่าเป็นวิธีเดียวที่จะสื่อสารกับมันคือการมี zkclient ที่ได้สื่อสารกับ zkserver นี้ก่อนหรือ zkclient ใช้ zkimport เพื่อแทรกบันทึก zkserver identity ลงในการกำหนดค่า หากปุ่มนี้ถูกตั้งค่าเป็นใช่ zkserver จะอนุญาตการสืบค้นของตัวตนของมันในช่วงก่อนการเซสชัน
CreatePolicy มีสามการตั้งค่า: ใช่ไม่ใช่และโทเค็น เมื่อ createpolicy ถูกตั้งค่าเป็นบุคคลภายนอกไม่สามารถสร้างบัญชีได้ หาก createPolicy ถูกตั้งค่าเป็น zkclient ใด ๆ สามารถสร้างบัญชีใน zkserver นี้ และในที่สุดถ้า createpolicy ถูกตั้งค่าเป็นโทเค็น zkclient จะต้องให้โทเค็นในระหว่างการสร้างบัญชี โทเค็นนี้สามารถรับได้จากการบริหาร Zkserver การสร้างโทเค็นสามารถทำได้ในฐานะผู้ดูแลระบบ Zkserver โดยเรียกใช้คำสั่ง zkservertoken สิ่งนี้จะคายโทเค็นที่สามารถใช้หนึ่งครั้งเพื่อสร้างบัญชี
หมายเหตุ: หากคุณไม่ได้ใช้ไดเรกทอรี ~/.zkserver เริ่มต้นที่คุณต้องตรวจสอบรายการไดเรกทอรี/ไฟล์ทั้งหมดในไฟล์ config
รายการที่เหลืออยู่ในไฟล์กำหนดค่าเป็นคำอธิบายด้วยตนเอง
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 เป็นค่าเริ่มต้นตั้งค่าเป็น NO หากคุณต้องการมีประวัติถาวร (หลังจากออกจาก ZKClient) ตั้งค่านี้เป็นใช่
หมายเหตุ: หากคุณไม่ได้ใช้ไดเรกทอรี ~/.zklient เริ่มต้นที่คุณต้องตรวจสอบรายการไดเรกทอรี/ไฟล์ทั้งหมดในไฟล์ config
รายการที่เหลืออยู่ในไฟล์กำหนดค่าเป็นคำอธิบายด้วยตนเอง
เมื่อเปิดตัว ZKClient ครั้งแรกมันจะแจ้งให้ผู้ใช้: ชื่อผู้ใช้, Nick, Server และ Token ชื่อผู้ใช้คือชื่อของคุณ (เช่น Alice McAlice) นิคเป็นนิคที่คุณต้องการเนื่องจากมันแสดงโดยที่คุณได้รับ (เช่น Alice1337) เซิร์ฟเวอร์เป็นที่อยู่ของ Zkserver ของคุณและโทเค็นสุดท้ายคือผู้ดูแลระบบ Zkserver ที่ให้โทเค็นเพื่อสร้างบัญชี เมื่อขั้นตอนนี้เสร็จสมบูรณ์คุณสามารถสื่อสารกับ Zkserver ได้แล้ว
ณ จุดนี้ zkclient tui จะเพิ่มขึ้นอย่างเต็มที่และเมื่อสามารถพิมพ์ /ช่วยได้เพื่อรับทราบว่ามีคำสั่งใดบ้าง
ZKClient ใช้การเข้ารหัส ratcheted สำหรับการสื่อสารและเซิร์ฟเวอร์ไม่สามารถสอดแนมข้อความได้ สิ่งเดียวที่ 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 ผ่าน blobs ที่เข้ารหัสไปมาระหว่างผู้ใช้เท่านั้น มันไม่มีความรู้ใด ๆ ในสิ่งที่กำลังแลกเปลี่ยน ดังนั้นการแลกเปลี่ยนที่สำคัญสามารถสรุปได้เมื่อทุกฝ่ายออนไลน์นานพอสำหรับ blobs ทั้งหมดที่จะเดินทางไปมา
ณ จุดนี้ทั้งอลิซหรือบ๊อบจะสามารถส่งข้อความกลับและป้อมปราการโดยใช้คำสั่ง /m (เช่นอลิซจะไปที่บ๊อบต่อไปนี้ /M Bob สวัสดีที่นั่น!)
มีคำสั่งอื่น ๆ อีกมากมายในคีย์ zkclient และ tui แต่มีการอธิบายไว้ที่อื่น
zkexport ส่งออกทั้ง zkserver หรือ zkclient เอกลักษณ์สาธารณะ ตัวตนของ 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 สำหรับไบนารีในรุ่นนั้น ในการตรวจสอบสิ่งเหล่านี้คุณจะต้อง:
ขั้นตอนในการตรวจสอบไบนารีมีดังนี้:
ดาวน์โหลดไฟล์ Manifest, ลายเซ็นสำหรับไฟล์ Manifest และ 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
ตอนนี้ซิปหรือ tarball ที่มีไบนารีสำหรับแพลตฟอร์มของคุณได้รับการยืนยันแล้วและคุณสามารถมั่นใจได้ว่าพวกเขาถูกสร้างขึ้นโดยทีม ZKC
ด้วยการเปิดตัว 0.3.0 รูปแบบดิสก์ของ zkserver ก็เปลี่ยนไป ขอแนะนำให้สำรองไดเรกทอรี zkserver ก่อนที่จะเรียกใช้เวอร์ชัน zkserver ใหม่ รหัสมีรหัสการอัพเกรดและได้รับการทดสอบ แต่ก็ควรคำนึงถึงคำเตือนนี้ก่อนการอัพเกรด
ZKC ยังไม่ได้รับการตรวจสอบ ใช้อย่างชาญฉลาด
เรากำลังมองหาผู้รับเหมาเพื่อตรวจสอบและพัฒนา ZKC และ libs crypto จ่ายมีให้ใน Decred
ZKC ได้รับใบอนุญาตภายใต้ใบอนุญาต CopyFree ISC