Αντιμετώπιση προβλημάτων

Γνώση Υπολογιστών >> Αντιμετώπιση προβλημάτων >  >> Οι κωδικοί πρόσβασης

Πώς μπορείτε να βάλετε έναν κωδικό πρόσβασης στο MATLAB;

Δεν μπορείτε να δημιουργήσετε απευθείας ένα πραγματικό αρχείο "προστατευμένο με κωδικό πρόσβασης" στο MATLAB που είναι τόσο ισχυρό όσο ένα ειδικό σύστημα κρυπτογράφησης. Το MATLAB δεν διαθέτει ενσωματωμένες λειτουργίες κρυπτογράφησης κωδικού πρόσβασης που πληρούν τα πρότυπα ασφαλείας. Ωστόσο, μπορείτε να εφαρμόσετε ορισμένα βασικά στοιχεία ελέγχου πρόσβασης με βάση τον κωδικό πρόσβασης. Ακολουθούν μερικές προσεγγίσεις, που κυμαίνονται από απλό (εύκολα παρακάμπτονται) έως πιο εμπλεκόμενες:

1. Απλή προτροπή κωδικού πρόσβασης (όχι ασφαλές):

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

`` `Matlab

λειτουργία my_script

% Καθορίστε τον κωδικό πρόσβασης (μην αποθηκεύσετε τους ευαίσθητους κωδικούς πρόσβασης απευθείας στον κωδικό)

scorrepspassword ='mySecretPassWord';

% Προτροπή για τον κωδικό πρόσβασης

UserPassWord =είσοδος ('Enter Password:', 's');

% Ελέγξτε εάν ο κωδικός πρόσβασης ταιριάζει

Εάν το strcmp (userPassword, correctPassword)

disp ('πρόσβαση που έχει χορηγηθεί!');

% Ο κωδικός σας για να εκτελέσετε εάν ο κωδικός πρόσβασης είναι σωστός πηγαίνει εδώ

disp («Αυτός είναι ο προστατευμένος κώδικας»).

αλλού

disp («εσφαλμένος κωδικός πρόσβασης.

τέλος

τέλος

`` `

Επεξήγηση:

* `Εισαγωγή ('Enter Password:', 'S')` Προτρέπει τον χρήστη να εισάγει κείμενο και να το αποθηκεύει στο `userPassWord`. Το επιχείρημα "S'` λέει" Input "για να αντιμετωπίσει την είσοδο ως συμβολοσειρά.

* `strcmp (userPassword, crealcompassword)` Συγκρίνει τον κωδικό πρόσβασης που έχει εισαχθεί με τον hardcoded κωδικό πρόσβασης.

* Με βάση τη σύγκριση, η πρόσβαση χορηγείται ή απορρίπτεται.

Θέματα ασφάλειας:

* Hardcoded κωδικός πρόσβασης: Ο κωδικός πρόσβασης είναι απλό κείμενο στον κώδικα, καθιστώντας το ασήμαντο να βρεθεί. Όποιος μπορεί να διαβάσει το αρχείο `.m` γνωρίζει τον κωδικό πρόσβασης.

* Δεν υπάρχει κρυπτογράφηση: Ο ίδιος ο κώδικας δεν προστατεύεται.

2. Ο κωδικός πρόσβασης αποθηκεύεται ως τιμή hashed (ελαφρώς καλύτερος, αλλά ακόμα αδύναμος):

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

`` `Matlab

Λειτουργία my_script_hashed

% Δημιουργήστε το hash του κωδικού πρόσβασης (το κάνετε μόνο μία φορά και αποθηκεύστε το hash)

% Μην αποθηκεύετε ποτέ τον πραγματικό κωδικό πρόσβασης.

% Παράδειγμα χρησιμοποιώντας μια βασική συνάρτηση κατακερματισμού (όχι για παραγωγή):

correctPassWordHash =datahash ('mySecretPassWord', 'md5'); % Αντικαταστήστε με ένα πιο σύγχρονο χαστούκι

% Σε μια πραγματική εφαρμογή, θα εξοικονομήσατε το "CorrectPassWordHash" σε ένα αρχείο.

% Για σκοπούς επίδειξης, θα το κάνετε hardcode εδώ (κακή πρακτική):

sciencePassWordHash ='e5b6460f9578c6382f2c4d0f28d4e9f7';

% Προτροπή για τον κωδικό πρόσβασης

UserPassWord =είσοδος ('Enter Password:', 's');

% Κατακερματισμένος ο κωδικός πρόσβασης που εισάγεται από το χρήστη

UserPassWordHash =Datahash (userPassword, 'md5'); % Χρησιμοποιήστε την ίδια λειτουργία κατακερματισμού

% Ελέγξτε εάν η αντιστοίχιση hashes

Εάν το strcmp (userPasswordHash, correctpasswordhash)

disp ('πρόσβαση που έχει χορηγηθεί!');

% Ο προστατευμένος κωδικός σας πηγαίνει εδώ

disp («Αυτός είναι ο προστατευμένος κώδικας»).

αλλού

disp («εσφαλμένος κωδικός πρόσβασης.

τέλος

τέλος

`` `

Επεξήγηση:

* `Datahash ('MySecretPassword', 'MD5')` Υπολογίζει το hash MD5 του κωδικού πρόσβασης. Το MD5 θεωρείται σπασμένο και δεν πρέπει να χρησιμοποιείται για ευαίσθητες εφαρμογές. Συνήθως θα το κάνατε μόνο μία φορά για να δημιουργήσετε το hash και να αποθηκεύσετε το hash.

* `Datahash (userPassword, 'MD5')` Υπολογίζει το hash MD5 του κωδικού πρόσβασης εισαγόμενου χρήστη.

* Ο κώδικας συγκρίνει τότε τα δύο hashes.

Θέματα ασφάλειας:

* αδύναμη λειτουργία κατακερματισμού: Το MD5 (και το SHA-1) είναι ευαίσθητα σε επιθέσεις σύγκρουσης, καθιστώντας ευκολότερη την εύρεση ενός διαφορετικού κωδικού πρόσβασης που παράγει το ίδιο κατακερματισμό. Θα πρέπει να χρησιμοποιηθούν Sha-256 ή SHA-3. Ωστόσο, το Datahash υποστηρίζει μόνο αδύναμες λειτουργίες κατακερματισμού.

* Το hashing του Matlab είναι ανασφαλές: Οι ενσωματωμένες λειτουργίες κατακερματισμού του Matlab δεν είναι κρυπτογραφικά ασφαλείς. Δεν έχουν σχεδιαστεί για να αντιστέκονται στις επιθέσεις.

* Ακόμα ευάλωτα: Ένας καθορισμένος εισβολέας θα μπορούσε ενδεχομένως να αντιστρέψει τον μηχανικό του κατακερματισμού ή να χρησιμοποιήσει μια επίθεση τραπεζιού ουράνιου τόξου.

3. Εξωτερική κρυπτογράφηση (πιο ασφαλής):

Αυτή είναι η συνιστώμενη προσέγγιση εάν χρειάζεστε πραγματική ασφάλεια. Περιλαμβάνει τη χρήση εξωτερικών εργαλείων κρυπτογράφησης (εκτός του MATLAB) για την κρυπτογράφηση των δεδομένων ή ολόκληρου του σεναρίου MATLAB.

* Κρυπτογραφήστε ολόκληρο το σενάριο MATLAB: Χρησιμοποιήστε ένα ειδικό πρόγραμμα κρυπτογράφησης (π.χ. 7-ZIP με προστασία κωδικού πρόσβασης) για να κρυπτογραφήσετε το αρχείο `.m`. Ο χρήστης θα πρέπει να αποκρυπτογραφήσει το σενάριο πριν το εκτελέσει στο MATLAB. Αυτό προστατεύει ολόκληρο τον κώδικα.

* Κρυπτογραφήστε ευαίσθητα αρχεία δεδομένων: Εάν χρειάζεται μόνο να προστατεύσετε ορισμένα αρχεία δεδομένων που χρησιμοποιούνται από το σενάριο MATLAB, μπορείτε να χρησιμοποιήσετε εξωτερικά εργαλεία κρυπτογράφησης για να κρυπτογραφήσετε αυτά τα αρχεία. Το σενάριο MATLAB θα χρειαζόταν τότε να αποκρυπτογραφήσει τα αρχεία πριν από τη χρήση των δεδομένων και να τα κρυπτογραφήσει ξανά μετά τη χρήση.

Παράδειγμα (χρησιμοποιώντας 7-ZIP στη γραμμή εντολών):

`` `bash

για να κρυπτογραφήσετε το my_script.m με κωδικό "mySecretPassword" (αντικαταστήστε με ισχυρό κωδικό πρόσβασης):

7z a -pmysecretpassword my_script.7z my_script.m

να αποκρυπτογραφήσει:

7z x my_script.7z -pmysecretpassword

`` `

Στη συνέχεια, μπορείτε να καλέσετε αυτές τις εντολές από το MATLAB χρησιμοποιώντας την εντολή `System ', αλλά θα χρειαστείτε ακόμα τον χρήστη να εισαγάγει τον κωδικό πρόσβασης με το χέρι σε μια εξωτερική εφαρμογή.

Κωδικός MATLAB για την εκτέλεση εξωτερικής εφαρμογής:

`` `Matlab

λειτουργία my_encrypted_script

% Προτρέψτε τον χρήστη να αποκρυπτογραφήσει το αρχείο (χρησιμοποιώντας ένα εξωτερικό εργαλείο)

EncryptedFile ='my_script.7z';

decryptedFile ='my_script.m';

% Ζητήστε από τον χρήστη να αποκρυπτογραφήσει το αρχείο και πατήστε Enter για να συνεχίσετε

είσοδος (['παρακαλώ αποκρυπτογραφήστε το αρχείο "' EncryptedFile" σε "'' αποκρυπτογράφηση '' και πατήστε Enter:'],' s ');

% Τώρα εκτελέστε το αποκρυπτογραφημένο σενάριο

Εκτέλεση (αποκρυπτογράφηση);

τέλος

`` `

Θέματα ασφάλειας:

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

* Διαχείριση κλειδιών: Η ασφαλής διαχείριση του κλειδιού κρυπτογράφησης είναι ζωτικής σημασίας. Μην αποθηκεύετε τον κωδικό πρόσβασης στο σενάριο MATLAB.

4. Χρησιμοποιώντας ένα καταρτισμένο εκτελέσιμο Matlab με την προστασία των αδειών (καλύτερα για εμπορικά προϊόντα, αλλά ακριβό):

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

* Συγκεντρώστε με τον μεταγλωττιστή MATLAB: Συγκεντρώστε το σενάριο MATLAB σε ένα εκτελέσιμο αρχείο (.exe).

* Προστασία άδειας: Χρησιμοποιήστε τον μεταγλωττιστή MATLAB για να προσθέσετε προστασία από την άδεια χρήσης στο εκτελέσιμο. Αυτό μπορεί να περιορίσει την πρόσβαση στην εφαρμογή με βάση ένα κλειδί άδειας.

Σκέψεις ασφαλείας:

* abfuscation, όχι κρυπτογράφηση: Ο μεταγλωττιστής Matlab παραβιάζει τον κώδικα, αλλά δεν τον κρυπτογραφεί πραγματικά. Ένας εξειδικευμένος μηχανικός αντίστροφης μπορεί να εξακολουθεί να είναι σε θέση να εξαγάγει τον κώδικα, αλλά το καθιστά πολύ πιο δύσκολο.

* Κόστος: Ο μεταγλωττιστής Matlab είναι ένα ξεχωριστό προϊόν που απαιτεί άδεια.

Περίληψη και συστάσεις:

* Μην βασίζεστε στις ενσωματωμένες λειτουργίες hashing για την ασφάλεια του MATLAB. Δεν έχουν σχεδιαστεί για το σκοπό αυτό.

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

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

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

Σημαντικές πρακτικές ασφαλείας:

* Ισχυροί κωδικοί πρόσβασης: Χρησιμοποιήστε ισχυρούς, τυχαίους κωδικούς πρόσβασης (τουλάχιστον 12 χαρακτήρες, με ένα μείγμα κεφαλαίων, πεζών, αριθμών και συμβόλων).

* Ασφαλής διαχείριση κλειδιών: Αποθηκεύστε τα κλειδιά κρυπτογράφησης με ασφάλεια. Μην τους hardcode στο σενάριο MATLAB. Χρησιμοποιήστε μεταβλητές περιβάλλοντος, αρχεία ρυθμίσεων ή ειδικά συστήματα διαχείρισης κλειδιών.

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

* Τακτικοί έλεγχοι ασφαλείας: Ελέγξτε τις πρακτικές ασφαλείας σας τακτικά και ενημερώστε τις ανάλογα με τις ανάγκες.

* Κρατήστε ενημερωμένο λογισμικό: Κρατήστε την εγκατάσταση MATLAB και τυχόν εξωτερικά εργαλεία κρυπτογράφησης που ενημερώνονται με τα τελευταία ενημερωμένα μέσα ασφαλείας.

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

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα