ຂ້າມໄປຫາເນື້ອຫາ
ກັບໄປທີ່ Nymchat

ພື້ນຖານຄວາມຮູ້ ພາຍໃຕ້ hood ໄດ້

ຢືນຢັນການກໍ່ສ້າງ

Open source ພຽງແຕ່ຊ່ວຍໄດ້ຖ້າຫາກວ່າລະຫັດທີ່ທ່ານກໍາລັງແລ່ນແມ່ນລະຫັດທີ່ເປັນ ຈັດພີມມາ. Nymchat ຖືກສ້າງຂຶ້ນຢ່າງຕັ້ງໃຈເພື່ອໃຫ້ທ່ານສາມາດກວດເບິ່ງວ່າຕົວທ່ານເອງ, ຈາກພາຍໃນ app ຫຼືຈາກ terminal.

ການກໍ່ສ້າງທີ່ແຜ່ພັນໄດ້

ການສ້າງແອັບຯ emits a build-manifest.json ປະກອບດ້ວຍແຫຼ່ງຄໍາຫມັ້ນສັນຍາ, a SHA-256 hash ຂອງທຸກໆຊັບສິນ HTML, JavaScript ແລະ CSS ທີ່ຮັບໃຊ້, ແລະອັນດຽວ bundleHash ຫຼາຍກວ່າຊຸດຊັບສິນທັງໝົດນັ້ນ.

ຜົນ​ຜະ​ລິດ​ແມ່ນ​ຂຶ້ນ​ກັບ​ເນື້ອ​ຫາ​ທີ່​ມາ​ພຽງ​ແຕ່ — ເຖິງ​ແມ່ນ​ວ່າ​ເວ​ລາ​ການ​ສ້າງ​ທີ່​ບັນ​ທຶກ​ໄວ້​ແມ່ນ​ ເວລາຂອງ commit ແທນທີ່ຈະເປັນເວລາທີ່ການກໍ່ສ້າງແລ່ນ - ດັ່ງນັ້ນຜູ້ໃດກໍ່ກໍ່ສ້າງຄືກັນ commit ໄດ້ຮັບໄຟລ໌ທີ່ຄືກັນ byte ແລະດຽວກັນ bundleHash.

A GitHub Action ຫຼັງຈາກນັ້ນກໍ່ສ້າງຄືນໃຫມ່ແຕ່ລະຄໍາຫມັ້ນສັນຍາເປັນເອກະລາດແລະສັນຍານການກໍ່ສ້າງ- provenance ການຢັ້ງຢືນສໍາລັບ hash ແລະ manifest, ສະນັ້ນມີບັນທຶກການລົງນາມ tying a bundleHash ກັບຄໍາຫມັ້ນສັນຍາໃນ repository, ຜະລິດໂດຍບາງສິ່ງບາງຢ່າງອື່ນທີ່ບໍ່ແມ່ນ ການນຳໃຊ້.

ສິ່ງທີ່ກ່ຽວກັບກ່ອງໂຕ້ຕອບກວດສອບ

ກ່ຽວກັບ ໃນ header ດໍາເນີນການກວດສອບສົດ, ໃນຕົວທ່ອງເວັບຂອງທ່ານ.

ກ່ອງໂຕ້ຕອບ Nymchat ກ່ຽວກັບ, ສະແດງໃຫ້ເຫັນສະບັບ, ສ້າງຄວາມຊື່ສັດແລະຮັບປະກັນສະຖານະພາບ canary.
ກ່ອງໂຕ້ຕອບກ່ຽວກັບ: ສະບັບ, ສ້າງຄວາມສົມບູນ, ຮັບປະກັນ canary ແລະສາຍໂດຍກົງກັບນັກພັດທະນາ.

ມັນດຶງເອົາຊັບສິນແຕ່ລະອັນທີ່ໜ້າເຮັດວຽກຕົວຈິງ, ແຊຣ໌ມັນດ້ວຍ Web Crypto API, ແລະ ປຽບທຽບກັບ manifest ໄດ້. ຫຼັງຈາກນັ້ນ - ແລະນີ້ແມ່ນສ່ວນຫນຶ່ງທີ່ສໍາຄັນ - ມັນ recomputes ໄດ້ bundleHash ຈາກ hashes ໄດ້ ມັນ ພຽງແຕ່ຄິດໄລ່, ບໍ່ແມ່ນມາຈາກ ສິ່ງໃດແດ່ທີ່ manifest ອ້າງ, ແລະເບິ່ງວ່າຢູ່ໃນ repository ເຊັນຢັ້ງຢືນ ຜ່ານ GitHub API.

ນັ້ນແມ່ນສິ່ງທີ່ຢຸດການປະຕິບັດຈາກ vouching ສໍາລັບຕົວມັນເອງ: ໃຫ້ບໍລິການໄຟລ໌ດັດແກ້ພ້ອມກັບ manifest ການຈັບຄູ່ຍັງລົ້ມເຫລວ, ເພາະວ່າ hash ທີ່ຖືກຄິດໄລ່ໃຫມ່ບໍ່ມີການຢັ້ງຢືນ.

ສະຖານະຫມາຍຄວາມວ່າ
&ກວດເບິ່ງ; ແອັບທີ່ເປັນທາງການທີ່ຢືນຢັນແລ້ວ (n/n)ທຸກໆຊັບສິນທີ່ກົງກັນ, hash bundle recomputed ໄດ້ຖືກຢັ້ງຢືນໂດຍ repository, ແລະ ຫນ້າແມ່ນໃຫ້ບໍລິການຈາກໂດເມນທີ່ເປັນທາງການ.
⚠ ຢືນຢັນການກໍ່ສ້າງ · ບໍ່ແມ່ນແອັບທີ່ເປັນທາງການລະຫັດແມ່ນແທ້ຈິງແລະຢັ້ງຢືນ, ແຕ່ນີ້ແມ່ນບ່ອນແລກປ່ຽນຄວາມຢູ່ໃນໂດເມນອື່ນ. ກະຈົກບໍ່ສາມາດລຶບຄຳເຕືອນນີ້ອອກໄດ້ໂດຍທີ່ບໍ່ສາມາດຢັ້ງຢືນໄດ້.
✗ ບໍ່ກົງກັນຊັບສິນບໍ່ hash ກັບສິ່ງທີ່ manifest ເວົ້າ.
✗ ການກໍ່ສ້າງທີ່ບໍ່ເປັນທາງການhash bundle recomputed ບໍ່ມີການຢັ້ງຢືນຈາກ repository - ເປັນ manifest ດ້ວຍຕົນເອງ.
⚠ ບໍ່ສາມາດຕິດຕໍ່ໄດ້GitHub API ບໍ່ສາມາດເຂົ້າເຖິງໄດ້, ດັ່ງນັ້ນການຢັ້ງຢືນບໍ່ສາມາດຖືກກວດສອບໄດ້ໃນທາງໃດກໍ່ຕາມ.

ຢືນຢັນມັນຕົວທ່ານເອງ

ກໍ່ສ້າງຄືນ commit ຊື່ dialog ກ່ຽວກັບແລະປຽບທຽບ:

git clone https://github.com/Spl0itable/NYM
cd NYM
git checkout <commit shown in the About dialog>
npm ci
npm run build   # prints "Build hash: <bundleHash>"

hash ທີ່ພິມອອກຄວນຈະກົງກັບທັງສອງອັນຢູ່ໃນກ່ອງໂຕ້ຕອບກ່ຽວກັບ ແລະອັນທີ່ຢູ່ໃນຄໍາຫມັ້ນສັນຍານັ້ນ ສະຫຼຸບການດໍາເນີນການກໍ່ສ້າງ. ທ່ານຍັງສາມາດກວດເບິ່ງລາຍເຊັນໂດຍກົງກັບ GitHub CLI:

gh attestation verify dist/build-manifest.json --repo Spl0itable/NYM

Canary ຮັບປະກັນ

A warrant canary ແມ່ນຄໍາຖະແຫຼງການ, ຈັດພີມມາໃນກໍານົດເວລາຄົງທີ່, ທີ່ນັກພັດທະນາມີ ບໍ່ ໄດ້​ຮັບ​ຄຳ​ສັ່ງ​ຂອງ​ລັດ​ຖະ​ບານ​ລັບ​ທີ່​ເຂົາ​ເຈົ້າ​ຖືກ​ຫ້າມ​ບໍ່​ໃຫ້​ເປີດ​ເຜີຍ — ກ ຈົດໝາຍຄວາມປອດໄພແຫ່ງຊາດ, ຄໍາສັ່ງ FISA. ນັກພັດທະນາສາມາດຖືກບັງຄັບໃຫ້ຢູ່ silent ກ່ຽວກັບ ຄໍາສັ່ງດັ່ງກ່າວ, ແຕ່ບໍ່ສາມາດຖືກບັງຄັບໃຫ້ຕົວະ, ດັ່ງນັ້ນ canary ຈະ stale ຫຼືຫາຍໄປ ຕົວຂອງມັນເອງສັນຍານ.

ມັນອາໃສຢູ່ໃນ canary.json ຢູ່ຮາກຂອງບ່ອນເກັບມ້ຽນແລະຖືກດຶງມາໂດຍກົງ ຈາກ GitHub, ສະນັ້ນປະຫວັດຂອງມັນແມ່ນສາມາດກວດສອບໄດ້ຢ່າງເປັນເອກະລາດຈາກສິ່ງທີ່ເວັບໄຊທ໌ທີ່ໃຊ້ເວົ້າ. The About dialog color-codes it:

ສີຫມາຍຄວາມວ່າ
ສີຂຽວ — ທັງ​ຫມົດ​ທີ່​ຈະ​ແຈ້ງ​ເຊັນ, ປັດຈຸບັນ, ແລະລາຍເຊັນກົງກັບລະຫັດຂອງນັກພັດທະນາ. ບໍ່ໄດ້ຮັບຄໍາສັ່ງລັບ.
ສີເຫຼືອງ — ເກີນກຳນົດ, ຫຼືບໍ່ຈະແຈ້ງທັງໝົດມັນບໍ່ໄດ້ຖືກປັບປຸງໂດຍວັນທີທີ່ລະບຸໄວ້, ຫຼືຂອງມັນ allClear ທຸງແມ່ນບໍ່ຖືກຕ້ອງ. ຄຳສັ່ງທີ່ມິດງຽບບໍ່ສາມາດຖືກປະຕິເສດໄດ້.
ສີແດງ — ລາຍເຊັນບໍ່ຖືກຕ້ອງ, ຫຼືຫມົດໄປລາຍເຊັນບໍ່ກົງກັບລະຫັດຂອງຜູ້ພັດທະນາ, ຫຼືໄຟລ໌ດັ່ງກ່າວໄດ້ຖືກລຶບອອກທັງຫມົດ. ຮັກສານີ້ເປັນການເຕືອນໄພທີ່ຮ້າຍແຮງ.

ສະມໍຄວາມສົດ

Canary ທີ່ລົງນາມໄດ້ຝັງຄວາມສູງຂອງບລັອກ Bitcoin ຫຼ້າສຸດແລະ hash ໃນເວລານີ້ຂອງການເຊັນ. hash ນັ້ນບໍ່ສາມາດເປັນທີ່ຮູ້ຈັກກ່ອນທີ່ຈະມີຕັນ, ເຊິ່ງພິສູດວ່າ canary ແມ່ນ ເຊັນ ຫຼັງຈາກ ຈຸດສະເພາະໃນເວລາແທນທີ່ຈະລົງນາມໃນຫຼາຍເດືອນກ່ອນໜ້ານີ້. ກ່ອງໂຕ້ຕອບກ່ຽວກັບການເຊື່ອມຕໍ່ສະມໍກັບ block explorer ເພື່ອໃຫ້ທ່ານສາມາດກວດເບິ່ງມັນໄດ້.