Πώς, γιατί, και πότε πρέπει να ελέγξετε το hash

Εδώ στο ProPrivacy απλά αγάπη λογισμικό ανοικτού κώδικα. Αυτό οφείλεται κυρίως στο γεγονός ότι, παρά το γεγονός ότι δεν είναι τέλεια, το open source παρέχει τον μόνο τρόπο να γνωρίζει κανείς με βεβαιότητα ότι ένα πρόγραμμα είναι στο επίπεδο.

Ένα πρόβλημα, ωστόσο, είναι πώς ξέρετε ότι ένα πρόγραμμα ανοιχτού κώδικα που κατεβάζετε από έναν ιστότοπο είναι το πρόγραμμα που ο προγραμματιστής (οι προγραμματιστές) σας σκόπευε να κάνετε λήψη; Τα κρυπτογραφικά hashes είναι μια μερική λύση σε αυτό το πρόβλημα.

Τι είναι ένα κρυπτογραφικό hash?

Ένας κρυπτογραφικός κατακερματισμός είναι ένα άθροισμα ελέγχου ή ψηφιακού δακτυλικού αποτυπώματος που παράγεται με την εκτέλεση μίας λειτουργίας κατακερματισμού μονής κατεύθυνσης (μια μαθηματική λειτουργία) στα δεδομένα που περιλαμβάνουν ένα πρόγραμμα υπολογιστή (ή άλλα ψηφιακά αρχεία).

Οποιαδήποτε αλλαγή μόνο σε ένα byte των δεδομένων που περιλαμβάνουν το πρόγραμμα υπολογιστή θα αλλάξει την τιμή κατακερματισμού. Η τιμή κατακερματισμού είναι, συνεπώς, ένα μοναδικό αποτύπωμα για οποιοδήποτε πρόγραμμα ή άλλα ψηφιακά αρχεία.

Τι είναι ο έλεγχος κατακερματισμού?

Η διασφάλιση ότι ένα πρόγραμμα δεν έχει αλλοιωθεί ή είναι απλά αλλοιωμένο είναι ένα αρκετά απλό θέμα υπολογισμού της κατακερματισμένης αξίας του και στη συνέχεια σύγκρισης του με το checksum που έχει δημιουργήσει ο δημιουργός του.

Εάν είναι το ίδιο, τότε έχετε ένα λογικό βαθμό εμπιστοσύνης ότι το πρόγραμμα που έχετε κατεβάσει είναι ακριβώς το ίδιο με αυτό που έχει δημοσιευθεί από τον προγραμματιστή του. Εάν δεν είναι, τότε το πρόγραμμα έχει αλλάξει με κάποιο τρόπο.

Οι λόγοι για αυτό δεν είναι πάντα κακόβουλοι (βλ. Παρακάτω), αλλά ένας αποτυχημένος έλεγχος κατακερματισμού θα πρέπει να ορίζει κουδούνισμα του κουδουνιού.

Προβλήματα με ελέγχους κατακερματισμού

Μπορεί να έχετε εντοπίσει μια σημείωση με προσοχή όταν τραγουδάτε τις επαίνους των ελέγχων κατακερματισμού...

Ακεραιότητα αλλά όχι έλεγχο ταυτότητας

Οι έλεγχοι Hash είναι χρήσιμοι για τη διασφάλιση της ακεραιότητας των αρχείων, αλλά δεν παρέχουν κανενός είδους έλεγχο ταυτότητας. Δηλαδή, είναι καλό για την εξασφάλιση του αρχείου ή του προγράμματος που ταιριάζει με την πηγή, αλλά δεν παρέχουν κανενός είδους εξακρίβωση ότι η πηγή είναι νόμιμη.

Οι έλεγχοι Hash δεν παρέχουν καμία εγγύηση ως προς την πηγή του checksum checksum.

Για παράδειγμα, υπάρχουν ψεύτικες ιστοσελίδες που διανέμουν κακόβουλες εκδόσεις δημοφιλούς λογισμικού ανοιχτού κώδικα, όπως το KeePass. Πολλοί από αυτούς τους ιστότοπους παρέχουν ακόμη και checksum κατακερματισμού για τα προγράμματα που προμηθεύουν και, αν τα ελέγξατε ενάντια στο ψεύτικο πρόγραμμα, θα ταιριάζουν. Ωχ.

Μαθηματικές αδυναμίες

Ένα πρόσθετο πρόβλημα είναι ότι οι μαθηματικές αδυναμίες μπορεί να σημαίνουν ότι οι χασίς δεν είναι τόσο ασφαλείς όσο θα έπρεπε.

Ο αλγόριθμος MD5, για παράδειγμα, παραμένει μια πολύ δημοφιλής λειτουργία κατακερματισμού, παρά τη γνωστή της ευπάθεια σε επιθέσεις σύγκρουσης. Πράγματι, ακόμη και το SHA1 δεν θεωρείται πλέον ασφαλές ως προς αυτό.

Παρόλα αυτά, τα MD5 και SHA1 παραμένουν οι πιο δημοφιλείς αλγόριθμοι που χρησιμοποιούνται για την παραγωγή τιμών κατακερματισμού. Το SHA256, ωστόσο, παραμένει ασφαλές.

Τεχνητή τεμπελιά

Οι προγραμματιστές μερικές φορές ενημερώνουν τα προγράμματά τους με διορθώσεις σφαλμάτων και νέα χαρακτηριστικά, αλλά παραμελούν να δημοσιεύσουν ένα ενημερωμένο checksum checksum. Αυτό οδηγεί σε αποτυχημένο έλεγχο κατακερματισμού όταν κάνετε λήψη και προσπαθείτε να επαληθεύσετε το πρόγραμμά τους.

Αυτό, φυσικά, δεν είναι σχεδόν τόσο σοβαρό όσο ο έλεγχος κατακερματισμού που δίνει στο κακόβουλο λογισμικό ένα πέρασμα, αλλά μπορεί να υποβαθμίσει την εμπιστοσύνη στο οικοσύστημα, με αποτέλεσμα να μην ενοχλούνται οι άνθρωποι να ελέγχουν την ακεραιότητα των αρχείων που κατεβάζουν...

Κρυπτογραφικά hashes εναντίον ψηφιακών υπογραφών

Τα περισσότερα από τα προβλήματα με κρυπτογραφικά hashes καθορίζονται από τη χρήση ψηφιακών υπογραφών, οι οποίες εγγυώνται τόσο την ακεραιότητα όσο και τον έλεγχο ταυτότητας.

Οι προγραμματιστές που χαίρονται να χρησιμοποιούν αποκλειστικό κώδικα μπορούν να επικυρώσουν αυτόματα και με διαφάνεια τις υπογραφές κατά την πρώτη εγκατάσταση του λογισμικού, χρησιμοποιώντας μηχανισμούς όπως οι τεχνολογίες Microsoft, Apple ή Google PKI (υποδομή δημόσιου κλειδιού).

Οι προγραμματιστές ανοιχτού κώδικα δεν έχουν αυτή την πολυτέλεια. Πρέπει να χρησιμοποιούν το PGP, το οποίο δεν υποστηρίζεται από κάποιο ιδιόκτητο λειτουργικό σύστημα και γιατί δεν υπάρχει ισοδύναμο λογισμικού Microsoft, Apple ή Google PKI στο Linux.

Επομένως, οι ψηφιακές υπογραφές PGP πρέπει να επαληθεύονται χειροκίνητα. Αλλά το PGP είναι ένας πλήρης χοίρος για χρήση και δεν είναι μια απλή διαδικασία, καθώς μια γρήγορη ματιά στον οδηγό μας για τον έλεγχο των υπογραφών PGP στα Windows θα αποδείξει.

Ούτε είναι η πραγματική διαδικασία υπογραφής για προγραμματιστές, οι οποίοι γνωρίζουν καλά ότι στον πραγματικό κόσμο λίγοι άνθρωποι κάνουν τον κόπο να ελέγχουν χειροκίνητα τις ψηφιακές υπογραφές, ούτως ή άλλως.

Τα κρυπτογραφικά hashes δεν είναι σχεδόν τόσο ασφαλή όσο οι ψηφιακές υπογραφές PGP, αλλά είναι πολύ πιο εύχρηστα, με αποτέλεσμα πολλοί προγραμματιστές απλά να επιλέξουν να στηριχθούν σε αυτές αντί να υπογράψουν ψηφιακά το έργο τους.

Πρέπει πραγματικά να ελέγξετε το hash (εάν δεν υπάρχει ψηφιακή υπογραφή)

Αυτή είναι μια κατάσταση που δεν είναι ιδανική και θα πρέπει πάντα να ελέγχετε την ψηφιακή υπογραφή του προγράμματος ανοιχτού κώδικα όταν είναι διαθέσιμη. Αν όμως δεν υπάρχει κάποιος, τότε ο έλεγχος του κρυπτογραφικού κατακερματισμού του είναι πολύ καλύτερο από το να μην κάνεις τίποτα.

Εφόσον είστε βέβαιοι για την πηγή (για παράδειγμα, είστε σίγουροι ότι είναι από την πραγματική ιστοσελίδα του προγραμματιστή, η οποία δεν έχει πειραχτεί για εμφάνιση ψεύτικου κρυπτογραφικού κατακερματισμού), τότε ο έλεγχος της τιμής κατακερματισμού του παρέχει ένα δίκαιο βαθμό σύμπτωσης ότι το λογισμικό έχετε κατεβάσει είναι το λογισμικό που σχεδίασε ο προγραμματιστής για να κατεβάσετε.

Εάν δεν υπάρχει ούτε ψηφιακή υπογραφή ούτε έλεγχος αθροίσματος για το λογισμικό ανοιχτού κώδικα, τότε μην το εγκαταστήσετε ή το εκτελέσετε.

Πώς να ελέγξετε το hash

Η βασική διαδικασία είναι η εξής:

Προαιρετική υποδιαίρεση

  1. Σημειώστε τον αριθμό κατακερματισμού που δημοσιεύει ο προγραμματιστής
  2. Δημιουργήστε την τιμή κατακερματισμού του αρχείου που έχετε
  3. Συγκρίνετε τις δύο τιμές κατακερματισμού

Αν είναι πανομοιότυπα, τότε έχετε το αρχείο που ο προγραμματιστής σκόπευε να έχετε. Εάν όχι, τότε είτε έχει καταστραφεί είτε έχει παραβιαστεί.

Εάν είναι διαθέσιμο ένα hash SHA256 +, ελέγξτε το. Αν όχι, χρησιμοποιήστε SHA1. Μόνο ως έσχατη λύση θα πρέπει να ελέγξετε κατά ένα MD5 hash.

Ο εύκολος τρόπος (όλα τα συστήματα)

Ο πιο απλός τρόπος για να δημιουργήσετε την τιμή κατακερματισμού των αρχείων είναι χρησιμοποιώντας έναν ιστότοπο όπως τα Εργαλεία Online. Απλά επιλέξτε το είδος της τιμής κατακερματισμού που χρειάζεστε για να δημιουργήσετε και έπειτα σύρετε και αποθέστε το απαιτούμενο αρχείο στον διαθέσιμο χώρο και θα δημιουργηθεί η σχετική τιμή κατακερματισμού.

Παράδειγμα

Θέλουμε να ελέγξουμε την ακεραιότητα του αρχείου εγκατάστασης KeePass που κατεβάσαμε από την ιστοσελίδα KeePass.org (την οποία γνωρίζουμε ότι είναι ο σωστός τομέας). Ο ιστότοπος δημοσιεύει hashes MD5, SHA1 και SHA256 για όλες τις εκδόσεις του KeePass του, έτσι θα ελέγξουμε το SHA256 για την έκδοση που κατεβάσαμε.

  1. Σημειώνουμε την σωστή τιμή κατακερματισμού, όπως δημοσιεύεται στον ιστότοπο KeePass.

  2. Στη συνέχεια, επισκεφτείτε τον ιστότοπο Online Tools, επιλέξτε File Hash: SHA256 και σύρετε το ληφθέν αρχείο εγκατάστασης KeePass στο χώρο που παρέχεται.

  3. Συγκρίνουμε την έξοδο με το άθροισμα ελέγχου που δημοσιεύεται στον ιστότοπο KeePass και είναι ταυτόσημες. Υποθέτοντας λοιπόν ότι ο ιστότοπος του KeePass δεν έχει πειραχτεί για να εμφανίσει τιμές ψευδούς κατακερματισμού, μπορούμε να είμαστε σίγουροι ότι έχουμε κατεβάσει ένα αρχείο χωρίς αρετή. Yay!

    Τα Windows, macOS και Linux έχουν επίσης ενσωματωμένες λειτουργίες αξίας κατακερματισμού, οι οποίες είναι προσβάσιμες μέσω της γραμμής εντολών...

Windows

Αυτή η μέθοδος λειτουργεί έξω από το πλαίσιο στα Windows 10, ενώ οι χρήστες των Windows 7 πρέπει πρώτα να ενημερώσουν το Windows PowerShell με το Windows Management Framework 4.0.

Για να αποκτήσετε ένα SHA256 hash, κάντε δεξί κλικ στο Start (Έναρξη) -> Windows PowerShell και πληκτρολογήστε:

Get-FileHash [διαδρομή / σε / αρχείο]

Για παράδειγμα:

Get-FileHash C: \ Χρήστες \ Douglas \ Λήψεις \ KeePass-2.43-Setup.exe

Οι μάζες MD5 και SHA1 μπορούν να υπολογιστούν χρησιμοποιώντας τη σύνταξη:

Get-FileHash [διαδρομή προς [path / to / file] -Algorithm MD5

και

Get-FileHash [διαδρομή προς [path / to / file] - Αλγόριθμος SHA1

Για παράδειγμα:

Get-FileHash C: \ Χρήστες \ Douglas \ Λήψεις \ KeePass-2.43-Setup.exe-Αλγόριθμος MD5

macOS

Ανοίξτε τον τερματικό και πληκτρολογήστε:

openssl [τύπος hash] [/ path / to / file]

Ο τύπος Hash πρέπει να είναι md5, SHA1 ή SHA256.

Για παράδειγμα, για να ελέγξετε το SHA256 hash για το πρόγραμμα εγκατάστασης των Windows KeePass (μόνο για να κρατήσετε τα πράγματα απλά για αυτό το σεμινάριο), πληκτρολογήστε:

openssl sha256 /Users/douglascrawford/Downloads/KeePass-2.43-Setup.exe

Linux

Ανοίξτε το τερματικό και πληκτρολογήστε είτε:

Md5sum [διαδρομή / σε / αρχείο] Sha1sum [διαδρομή / σε / αρχείο]

ή

Sha256sum [διαδρομή / προς / αρχείο]

Για παράδειγμα:

sha256sum /home/dougie/Downloads/KeePass-2.43-Setup.exe

Brayan Jackson
Brayan Jackson Administrator
Sorry! The Author has not filled his profile.
follow me