ຂ້າມໄປຫາເນື້ອຫາ
ກັບໄປທີ່ 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

ແອັບ Android ແລະ iOS

ການກວດສອບຂ້າງເທິງແມ່ນການກວດສອບເວັບ app, ແລະເຫດຜົນແມ່ນສົມຄວນທີ່ຈະບອກຢ່າງຈະແຈ້ງ: ແອັບຯພື້ນເມືອງ ບໍ່ສາມາດເຮັດສິ່ງດຽວກັນກັບຕົວມັນເອງ. ສິ່ງທີ່ເຮັດວຽກຢູ່ໃນໂທລະສັບຂອງທ່ານແມ່ນການລວບລວມລະຫັດເຄື່ອງ, ບໍ່ແມ່ນ ແຫຼ່ງໃນ repository, ແລະບໍ່ມີຫຍັງ app ສາມາດຄິດໄລ່ໃນອຸປະກອນທີ່ກ່ຽວຂ້ອງກັບຫນຶ່ງກັບ ອື່ນໆ.

Android ສາມາດເຮັດສິ່ງທີ່ດີທີ່ສຸດຕໍ່ໄປ. ທີ່​ຕິດ​ຕັ້ງ .apk ເປັນໄຟລ໌ທີ່ແອັບຯສາມາດອ່ານໄດ້ ແລະ hash, ແລະ hash ຂອງທຸກໆການປ່ອຍທີ່ເຜີຍແຜ່ແມ່ນສາທາລະນະແລ້ວ: ເຜີຍແຜ່ໄປຫາ Zapstore ເຊັນເຫດການ Nostr ທີ່ຖື SHA-256 ຂອງ APK ແລະໃບຢັ້ງຢືນການເຊັນ SHA-256 ຂອງມັນ. ດັ່ງນັ້ນ Android ກ່ຽວກັບ ກ່ອງໂຕ້ຕອບ hashes APK ທີ່ມັນກໍາລັງແລ່ນມາຈາກ, ດຶງຂໍ້ມູນເຫຼົ່ານັ້ນທີ່ໄດ້ເຊັນ ເຫດການ, ຮັກສາພຽງແຕ່ຜູ້ທີ່ເຊັນໂດຍລະຫັດຂອງນັກພັດທະນາ, ແລະປຽບທຽບ. ມັນສະແດງໃຫ້ເຫັນທັງສອງ hashes ເຊັ່ນດຽວກັນ, ດັ່ງນັ້ນທ່ານສາມາດເຮັດຊ້ໍາການກວດສອບອຸປະກອນ: ດາວນ໌ໂຫລດ APK ຈັດພີມມາ, ດໍາເນີນການ sha256sum ກ່ຽວກັບມັນ, ແລະເບິ່ງເຫດການດຽວກັນຕົວທ່ານເອງ.

ບໍ່ສາມາດກວດສອບແອັບທີ່ຕິດຕັ້ງຈາກ Google Play ໄດ້ດ້ວຍວິທີນີ້Google re-signs ທັງຫມົດ upload ກັບ key ຂອງຕົນເອງແລະສ້າງ APK ອື່ນໆສໍາລັບທຸກອຸປະກອນ, ດັ່ງນັ້ນສິ່ງທີ່ landed ໃນໂທລະສັບຂອງທ່ານແມ່ນບໍ່ແມ່ນເອກະສານຜູ້ພັດທະນາຜະລິດແລະ hash ຂອງຕົນບໍ່ມີຫຍັງທີ່ສາມາດໄດ້ຮັບການພິຈາລະນາ. app recognizes a Play install ແລະ ເວົ້າວ່າມັນບໍ່ແມ່ນວ່າຈະບັນທຶກຄວາມຜິດພາດ. ເພື່ອກວດສອບການພິຈາລະນາຂອງທ່ານ, ດາວໂຫລດ APK ອື່ນໆ.

iOS ບໍ່ສາມາດກວດສອບໄດ້. Apple ເຂົ້າ​ລະ​ຫັດ​ແລະ re-signs ການ​ດາວ​ໂຫຼດ​ແຕ່​ລະ​ຄັ້ງ​ ສ່ວນບຸກຄົນ, ສະນັ້ນ hash ຄິດໄລ່ໃນ iPhone ຂອງທ່ານແມ່ນເປັນເອກະລັກຂອງ iPhone ຂອງທ່ານແລະບໍ່ກົງກັນ ເຜີຍແຜ່ຢູ່ບ່ອນໃດກໍໄດ້. ກ່ອງໂຕ້ຕອບກ່ຽວກັບເວົ້າອັນນີ້ຢ່າງກົງໄປກົງມາ ແທນທີ່ຈະສະແດງໃຫ້ເຫັນຄວາມໝັ້ນໃຈ ສະຖານະພາບທີ່ຫມາຍຄວາມວ່າບໍ່ມີຫຍັງ. ຖ້າທ່ານຕ້ອງການ Nymchat ທ່ານສາມາດກວດສອບໃນຮາດແວ Apple, ໃຊ້ເວັບ app, ເຊິ່ງກວດເບິ່ງທຸກໄຟລ໌ທີ່ມັນກໍາລັງແລ່ນ.

ສິ່ງ​ທີ່​ບໍ່​ມີ​ນີ້​ພິ​ສູດ​

ການກວດສອບແອັບທີ່ເຮັດວຽກດ້ວຍຕົວມັນເອງບໍ່ສາມາດພິສູດວ່າແອັບນັ້ນມີຄວາມຊື່ສັດ — ໃຜກໍຕາມທີ່ດັດແປງມັນ ສາມາດເອົາເຊັກໄດ້ຄືກັນ. ສິ່ງ​ທີ່​ມັນ​ພິ​ສູດ​ແມ່ນ​ກໍ​ລະ​ນີ​ທໍາ​ມະ​ດາ​: ວ່າ​ສໍາ​ເນົາ​ຂອງ​ທ່ານ​ ຕິດ​ຕັ້ງ​ແມ່ນ​ສໍາ​ເນົາ​ທີ່​ໄດ້​ຈັດ​ພີມ​ມາ​. ນັ້ນ​ແມ່ນ​ມີ​ຄ່າ​ຄວນ​ເພາະ​ວ່າ​ຄຸນ​ຄ່າ​ຂອງ​ມັນ ການປຽບທຽບແມ່ນສາທາລະນະ, ສະນັ້ນຄົນອື່ນນອກເຫນືອຈາກທ່ານສາມາດກວດເບິ່ງພວກມັນ, ແລະບໍ່ເຫັນດີນໍາ.

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 ເພື່ອໃຫ້ທ່ານສາມາດກວດເບິ່ງມັນໄດ້.