ცოდნის ბაზა კაპოტის ქვეშ
აშენების შემოწმება
ღია წყარო დაგეხმარებათ მხოლოდ იმ შემთხვევაში, თუ კოდი, რომელსაც თქვენ აწარმოებთ, არის ის კოდი, რომელიც იყო გამოქვეყნდა. Nymchat აგებულია დეტერმინისტულად, ასე რომ თქვენ შეგიძლიათ შეამოწმოთ ეს თავად, შიგნიდან აპლიკაციიდან ან ტერმინალიდან.
ეს გვერდი მოხერხებულობისთვის მანქანურად ითარგმნება. ინგლისური ორიგინალი არის ვერსია, რომელიც გამოიყენება.
რეპროდუცირებადი ნაგებობები
აპლიკაციის აგება გამოსცემს ა build-manifest.json შეიცავს წყაროს დავალებას, ა
SHA-256 ჰეშის ყველა მოწოდებული HTML, JavaScript და CSS აქტივი და ერთი
bundleHash მთელი აქტივების კომპლექტზე.
გამომავალი დამოკიდებულია მხოლოდ წყაროს შინაარსზე - ჩაწერილი აშენების დროც კი არის
ჩადენის დროის ანაბეჭდი და არა build-ის გაშვების მომენტი - ასე რომ, ვინც აღადგენს იგივეს
commit იღებს ბაიტის იდენტურ ფაილებს და იგივე bundleHash.
GitHub Action შემდეგ აღადგენს თითოეულ ჩადენას დამოუკიდებლად და ხელს აწერს აშენების წარმოშობას
ატესტაციები ჰეშისა და მანიფესტისთვის, ამიტომ არის ხელმოწერილი ჩანაწერი, რომელიც აკავშირებს ა
bundleHash საცავში ჩადენილი ვალდებულება, რომელიც წარმოებულია რაღაცის გარდა
განლაგება.
რას ამოწმებს დიალოგი About
შესახებ სათაურში გადის შემოწმება პირდაპირ, თქვენს ბრაუზერში.
ის ხელახლა იღებს თითოეულ აქტივს, რომელსაც გვერდი რეალურად მუშაობს, ჰეშირებს მას Web Crypto API-ით და
ადარებს მანიფესტს. მაშინ - და ეს არის ის ნაწილი, რომელსაც აქვს მნიშვნელობა - ის
ხელახლა ითვლის bundleHash ჰეშებიდან ის უბრალოდ გათვლილი, არა
ყველაფერს, რასაც მანიფესტი ამტკიცებს და ამას ეძებს საცავში ხელმოწერილ ატესტაციაში
GitHub API-ს მეშვეობით.
ეს არის ის, რაც აჩერებს განლაგებას საკუთარი თავის გარანტიას: მოდიფიცირებული ფაილების გამოყენებასთან ერთად შესატყვისი მანიფესტი მაინც ვერ ხერხდება, რადგან ხელახლა გამოთვლილ ჰეშს არ აქვს ატესტაცია.
| სტატუსი | ნიშნავს |
|---|---|
| &შეამოწმეთ; დადასტურებული ოფიციალური აპი (n/n) | ყველა აქტივი ემთხვევა, ხელახლა გამოთვლილი პაკეტის ჰეში დამოწმებულია საცავში, და გვერდი ემსახურება ოფიციალური დომენიდან. |
| ⚠ დადასტურებული კონსტრუქცია · არა ოფიციალური აპლიკაცია | კოდი არის ნამდვილი და დამოწმებული, მაგრამ ეს არის სარკე სხვა დომენზე. სარკე ვერ წაშლის ამ გაფრთხილებას დადასტურების წარუმატებლობის გარეშე. |
| ✗ შეუსაბამობა | აქტივი არ ჰეშირებს იმას, რასაც მანიფესტი ამბობს. |
| ✗ არაოფიციალური აშენება | შეფუთვის ხელახლა გამოთვლილ ჰეშს არ აქვს ატესტაცია საცავიდან - თვითნაკეთი მანიფესტი. |
| ⚠ წარმოშობა მიუწვდომელია | GitHub API-სთან დაკავშირება ვერ მოხერხდა, ამიტომ ატესტაციის შემოწმება ვერც ერთი გზით ვერ მოხერხდა. |
თავად გადაამოწმეთ
აღადგინეთ commit შესახებ დიალოგის სახელები და შეადარეთ:
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>"
დაბეჭდილი ჰეში უნდა ემთხვეოდეს როგორც About-ის დიალოგში, ასევე იმ commit-ში build-provenance run რეზიუმე. თქვენ ასევე შეგიძლიათ შეამოწმოთ ხელმოწერა პირდაპირ GitHub CLI-ით:
gh attestation verify dist/build-manifest.json --repo Spl0itable/NYM
Android და iOS აპლიკაციები
ზემოთ მოყვანილი შემოწმება არის ვებ – აპლიკაციის შემოწმება და მიზეზი აშკარად უნდა ითქვას: მშობლიური აპლიკაცია არ შეუძლია იგივე გააკეთოს საკუთარ თავს. რაც მუშაობს თქვენს ტელეფონზე არის კომპილირებული მანქანის კოდი და არა წყაროს საცავში და ვერაფერი, რომელსაც აპს შეუძლია მოწყობილობაზე გამოთვლა, არ უკავშირდება მას სხვა.
Android-ს შეუძლია გააკეთოს შემდეგი საუკეთესო რამ. დაყენებული .apk არის ფაილი, რომლის წაკითხვაც აპს შეუძლია
და ჰეში, და ყოველი გამოქვეყნებული გამოშვების ჰეში უკვე საჯაროა: გამოქვეყნება
Zapstore
ხელს აწერს Nostr ღონისძიებას, რომელიც შეიცავს APK-ის SHA-256-ს და მისი ხელმოწერის სერტიფიკატს SHA-256-ს. ასე რომ
Android შესახებ დიალოგური ჰეშები APK, საიდანაც გაშვებულია, იღებს ხელმოწერილებს
მოვლენები, ინახავს მხოლოდ დეველოპერის გასაღებით ხელმოწერილებს და ადარებს. ეს აჩვენებს ორს
ჰეშებიც, ასე რომ თქვენ შეგიძლიათ გაიმეოროთ მოწყობილობის შემოწმება: ჩამოტვირთეთ გამოქვეყნებული APK, გაუშვით
sha256sum მასზე და თავად შეხედეთ იმავე მოვლენას.
Google Play-დან დაინსტალირებული აპის შემოწმება ამ გზით შეუძლებელია, და ეს არ არის ნაჩვენები, რომ არაფერი არ არის ცუდი. Google ყოველ სატვირთვა დარეგისტრირებს საკუთარი კურსი და აშენებს სხვადასხვა APK თითოეული მოწყობილობისთვის, ასე რომ, რაც თქვენი ტელეფონიში იღებს, არ არის ფაილი, რომელიც განვითარებელი აწარმოებს, და მისი hash შეესაბამება არაფერი, რომელიც შეიძლება გამოქვეყნდეს. პროგრამა აღიარებს Play ინსტალაცია და ამბობს, რომ ვიდრე შეტყობინება ცუდი. შეამოწმეთ Build თავს, დააყენეთ პირდაპირი გამოქვეყნდა APK.
iOS-ის შემოწმება საერთოდ შეუძლებელია. Apple შიფრავს და ხელახლა აწერს ხელს ყოველ ჩამოტვირთვას ინდივიდუალურად, ასე რომ, თქვენს iPhone-ზე გამოთვლილი ჰეში უნიკალურია თქვენი iPhone-ისთვის და არაფერს ემთხვევა გამოქვეყნებულია სადმე. დიალოგში About ამბობს ეს პირდაპირ, ვიდრე დამამშვიდებელი სტატუსი, რომელიც არაფერს ნიშნავს. თუ გსურთ Nymchat, შეგიძლიათ გადაამოწმოთ Apple-ის აპარატურაზე, გამოიყენეთ ინტერნეტი აპლიკაცია, რომელიც ამოწმებს მის გაშვებულ ყველა ფაილს.
აპის შემოწმება თავისთავად ვერ დაამტკიცებს აპლიკაციის პატიოსნებას – ვინც შეცვალა იგი შეიძლება ჩეკის ამოღებაც. რაც ადასტურებს არის ჩვეულებრივი შემთხვევა: რომ კოპირება თქვენ დაინსტალირებული არის ასლი, რომელიც გამოქვეყნდა. ეს ღირს, რადგან აფასებს მას შედარება საჯაროა, ასე რომ თქვენ გარდა ვინმეს შეუძლია შეამოწმოს ისინი და არ დაეთანხმოს.
ორდერი კანარის
ორდერი კანარა არის განცხადება, გამოქვეყნებული ფიქსირებული გრაფიკით, რომელიც აქვს დეველოპერს არა მიიღო საიდუმლო მთავრობის ბრძანება, რომლის გამჟღავნება ეკრძალებათ - ა ეროვნული უსაფრთხოების წერილი, FISA-ს ბრძანება. დეველოპერი შეიძლება აიძულოს ჩუმად დარჩეს ასეთი ბრძანებაა, მაგრამ ტყუილის იძულება არ შეიძლება, ასე რომ, კანარა ჩერდება ან ქრება თავად სიგნალი.
ის ცხოვრობს canary.json საცავის ძირში და მიიღება პირდაპირ
GitHub-ისგან, ასე რომ, მისი ისტორიის შემოწმება განხორციელდება დამოუკიდებლად, რაც არ უნდა თქვას განლაგებული საიტი.
დიალოგური About შესახებ ფერად კოდებს მას:
| ფერი | ნიშნავს |
|---|---|
| მწვანე - ყველაფერი გასაგებია | ხელმოწერილი, მიმდინარე და ხელმოწერა ემთხვევა დეველოპერის გასაღებს. საიდუმლო ბრძანება არ მიუღია. |
| ყვითელი - დაგვიანებულია, ან ყველაფერი გაუგებარია | ის არ იყო განახლებული მისი მითითებული თარიღით ან მისით allClear დროშა ყალბია. გაჩუმებული ბრძანება არ არის გამორიცხული. |
| წითელი - არასწორი ხელმოწერა, ან წავიდა | ხელმოწერა არ ემთხვევა დეველოპერის გასაღებს, ან ფაილი მთლიანად წაიშალა. მოექეცით ამას, როგორც სერიოზულ გაფრთხილებას. |
სიახლის წამყვანი
ხელმოწერილი კანარი ათავსებს ბიტკოინის ბლოკის უახლეს სიმაღლეს და ჰეშს ხელმოწერის მომენტში. ეს ჰაში არ შეიძლებოდა ყოფილიყო ცნობილი ბლოკის არსებობამდე, რაც ადასტურებს, რომ კანარა იყო ხელი მოაწერა შემდეგ დროის კონკრეტულ მომენტში, ვიდრე წინასწარ ხელმოწერილი იყო თვეებით ადრე. შესახებ დიალოგი აკავშირებს წამყვანს ბლოკის მკვლევართან, ასე რომ თქვენ შეგიძლიათ შეამოწმოთ იგი.