The present invention relates generally to computer software, and more
specifically, to a method and system of making computer software resistant
to tampering and reverse-engineering. "Tampering" occurs when an attacker
makes unauthorized changes to a computer software program such as
overcoming password access, copy protection or timeout algorithms. Broadly
speaking, the method of the invention is to increase the tamper-resistance
and obscurity of computer software code by transforming the data flow of
the computer software so that the observable operation is dissociated from
the intent of the original software code. This way, the attacker can not
understand and decode the data flow by observing the execution of the
code. A number of techniques for performing the invention are given,
including encoding software arguments using polynomials, prime number
residues, converting variables to new sets of boolean variables, and
defining variables on a new n-dimensional vector space.
Η παρούσα εφεύρεση αφορά γενικά το λογισμικό υπολογιστών, και πιό συγκεκριμένα, σε μια μέθοδο και ένα σύστημα το λογισμικό υπολογιστών ανθεκτικό να πειράξει και την αντίστροφος-κατασκευή. "Να πειράξει" εμφανίζεται όταν κάνει ένας επιτιθέμενος τις αναρμόδιες αλλαγές σε ένα πρόγραμμα λογισμικού υπολογιστών όπως η υπερνίκηση της πρόσβασης κωδικού πρόσβασης, της προστασίας αντιγράφων ή των αλγορίθμων διαλείμματος. Μιλώντας γενικά, η μέθοδος της εφεύρεσης είναι να αυξηθεί η πλαστογράφηση-αντίσταση και το σκοτάδι του κώδικα λογισμικού υπολογιστών με το μετασχηματισμό της ροής στοιχείων του λογισμικού υπολογιστών έτσι ώστε η αισθητή λειτουργία χωρίζεται από την πρόθεση του αρχικού κώδικα λογισμικού. Αυτός ο τρόπος, ο επιτιθέμενος δεν μπορεί να καταλάβει και να αποκωδικοποιήσει τη ροή στοιχείων με την παρατήρηση της εκτέλεσης του κώδικα. Διάφορες τεχνικές για την εφεύρεση δίνονται, συμπεριλαμβανομένης της κωδικοποίησης των επιχειρημάτων λογισμικού χρησιμοποιώντας τα πολυώνυμα, πρωταρχικά υπολείμματα αριθμού, μετατρέποντας τις μεταβλητές στα νέα σύνολα του Μπουλ μεταβλητών, και καθορίζοντας τις μεταβλητές σε ένα νέο ν-διαστατικό διανυσματικό διάστημα.