http://www.spinellis.gr/pubs/trade/1993-Winmag/winlock/html/winlock.html This is an HTML rendering of a working paper draft that led to a publication. The publication should always be cited in preference to this draft using the following reference:
|
Συχνά είναι απαραίτητο ένα πρόγραμμα να προστατευτεί από την παράνομη και αθέμιτη αντιγραφή του. Εκτός από την προστασία που παρέχει ο νόμος, ο κατασκευαστής μπορεί να επιλέξει να χρησιμοποιήσει και κάποια τεχνικά μέσα για να αποτρέψει τον επίδοξο αντιγραφέα. Στο παρελθόν ένας συνηθισμένος τρόπος τέτοιας προστασίας ήταν η χρήση ειδικών τρόπων εγγραφής στις δισκέτες του προγράμματος. Αυτές ελέγχονταν κατά την εκτέλεση του προγράμματος για να διαπιστωθεί αν η δισκέτα ήταν γνήσια ή πειρατικό αντίγραφο. Ο τρόπος αυτός έχει πολλά μειονεκτήματα όπως η απαίτηση των προγραμμάτων που τον χρησιμοποιούν να μπορούν να διαβάσουν την πρωτότυπη δισκέτα τη στιγμή της εκτέλεσής τους, και η ύπαρξη ειδικών προγραμμάτων που αντιγράφουν τις προστατευμένες δισκέτες. Για το λόγο αυτό τα τελευταία χρόνια η μέθοδος προστασίας που χρησιμοποιείται περισσότερο είναι αυτή που βασίζεται σε ηλεκτρονικά κλειδιά (dongles) τα οποία συνδέονται με τον υπολογιστή με σκοπό να πιστοποιούν την αυθεντικότητα του προγράμματος. Ο συνηθέστερος τύπος τέτοιων κλειδιών συνδέεται στην παράλληλη θύρα του υπολογιστή και επιτρέπει τη σε σειρά σύνδεση του εκτυπωτή. Ενα τέτοιο προϊόν είναι το Hardlock EYE της Fast Electronic.
Κάθε εταιρία που χρησιμοποιεί το Hardlock EYE για να προστατέψει τα προϊόντα της εφοδιάζεται και με μια κάρτα προγραμματισμού του κλειδιού που προγραμματίζει τη μηχανή κρυπτογράφησης με ένα μοναδικό στον κόσμο κωδικό. Ο κωδικός αυτός μεταφέρεται από την κάρτα προγραμματισμού στο κλειδί και χρησιμοποιείται για την κρυπτογράφηση και αποκρυπτογράφηση. Ο συγκεκριμένος κωδικός μπορεί να προγραμματιστεί μόνο από την κάρτα που τον περιέχει. Ετσι, μόνο τα κλειδιά που έχουν προγραμματιστεί από τη συγκεκριμένη κάρτα είναι δυνατόν να χρησιμοποιηθούν από ένα πρόγραμμα που περιμένει να βρει πάνω στον υπολογιστή τη συγκεκριμένη κρυπτογραφική μηχανή. Ενας απλοϊκός τρόπος χρήσης του Hardlock EYE για την προστασία ενός προγράμματος θα ήταν λοιπόν η κρυπτογράφηση ενός συγκεκριμένου κειμένου από το πρόγραμμα με τη χρήση του Hardlock EYE και η σύγκρισή του με το από πριν υπολογισμένο αποτέλεσμα της κρυπτογράφησης φυλαγμένο μέσα στο πρόγραμμα. Στην πραγματικότητα για την αποτελεσματική προστασία από τους αντιγραφείς χρησιμοποιούνται πιο αναπτυγμένοι τρόποι, όπως η κρυπτογράφηση τμημάτων του εκτελέσιμου κώδικα, και αρχείων που χρειάζεται το πρόγραμμα για τη σωστή λειτουργία του.
Κατά τον προγραμματισμό του κλειδιού από το δημιουργό του προγράμματος είναι δυνατόν να αλλαχθεί και ένα τμήμα του κωδικού της κρυπτογράφησης, για τη δημιουργία "διαφορετικών" κλειδιών που θα χρησιμοποιούνται με διαφορετικά προγράμματα. Ακόμα υπάρχει μοντέλο του Hardlock EYE που περιέχει μνήμη EEPROM (Electrically Erasable Programmable Read Only Memory - μνήμη της οποίας τα στοιχεία παραμένουν χωρίς να απαιτείται τροφοδοσία). Ενα τμήμα της μνήμης αυτής μπορεί να προγραμματιστεί μόνο από την κάρτα προγραμματισμού και μπορεί να χρησιμοποιηθεί για να φυλάει χαρακτηριστικά του προγράμματος ή τον κωδικό του χρήστη. Το υπόλοιπο τμήμα της μνήμης μπορεί να προγραμματιστεί με κατάλληλες εντολές από τον υπολογιστή του τελικού χρήστη και μπορεί να χρησιμοποιηθεί για τη φύλαξη λειτουργικών παραμέτρων του προγράμματος ή τη μέτρηση του χρόνου χρήσης του προγράμματος.
Το Hadlock EYE τοποθετείται είτε στην παράλληλη θύρα του εκτυπωτή, είτε (με την μορφή μια μικρής κάρτας ISA ή MCA) κατευθείαν πάνω στο δίαυλο. Ενα σύστημα από βιβλιοθήκες λογισμικού και μια ειδική έκδοση του Hardlock EYE επιτρέπουν τον έλεγχο προγραμμάτων που τρέχουν σε δίκτυο υπολογιστών με την καταμέτρηση του αριθμού των προγραμμάτων που έχουν κάθε στιγμή αποκτήσει πρόσβαση στο κλειδί. Ετσι, ο τελικός χρήστης του κλειδιού αγοράζει άδειες χρήσης του προγράμματος ανάλογες με τις ανάγκες του, και όχι τόσες όσοι είναι οι υπολογιστές πάνω στο δίκτυο. Η επικοινωνία μεταξύ των σταθμών εργασίας και του σταθμού που διαμοιράζει και ελέγχει τις άδειες χρήσης γίνεται με τα πρωτόκολλα δικτύου NetBIOS ή IPX.
Η προστασία ενός προγράμματος με βάση το Hardlock EYE μπορεί να γίνει αυτόματα (δηλαδή χωρίς καμία μετατροπή του προγράμματος) ή με την προσθήκη ειδικών εντολών ελέγχου του κλειδιού.
Το πρόγραμμα της αυτόματης προστασίας μπορεί χρησιμοποιηθεί σε οποιοδήποτε εκτελέσιμο πρόγραμμα των Windows όπως αρχεία .EXE, οδηγοί συσκευών .DRV και δυναμικές βιβλιοθήκες .DLL. Εκτός από τα συνηθισμένα εκτελέσιμα προγράμματα, μπορούν να κλειδωθούν και εκτελέσιμα προγράμματα της Visual Basic (τα οποία χρησιμοποιούν διαφορετική δομή του .EXE αρχείου) καθώς και προγράμματα που χρησιμοποιούν τον επεκτατή (extender) 32-bit της Watcom. Το πρόγραμμα HLWCRYPT έχει δοκιμαστεί με επιτυχία στο υποσύστημα Windows 3.1 του OS/2 και στην άλφα έκδοση των επερχομένων Windows 4.0 που είναι γνωστά με την κωδική ονομασία Chicago. Για τα Windows NT έχει αναπτυχθεί ένας ειδικός οδηγός πρόσβασης στο Hardlock EYE αφού ο πυρήνας τους δεν επιτρέπει σε τυχαία προγράμματα απευθείας πρόσβαση σε περιφερειακά του υπολογιστή.
Η προστασία του εκτελέσιμου προγράμματος γίνεται με την πλήρη κωδικοποίηση του προγράμματος έτσι ώστε να μην είναι δυνατή η αντίστροφη συμβολομετάφρασή του (disassembly). O έλεγχος για την ύπαρξη του κλειδιού γίνεται είτε τοπικά, είτε μέσω δικτύου.
Εικόνα
1: Το πρόγραμμα
ελέγχου του
Hardlock API
Ενα τυπικό παράδειγμα χρήσης του API μέσα από τη Visual Basic
βλέπουμε στις εικόνες 2-4.
Η εικόνα 2 περιέχει τις τυπικές δηλώσεις για τη σύνδεση της βιβλιοθήκης
DLL με το πρόγραμμα, η εικόνα 3 ένα κουτί διαλόγου που παρουσιάζει
τα χαρακτηριστικά του Hardlock EYE και η εικόνα 4 ένα τυπικό
παράδειγμα κώδικα που αντιστοιχεί σε ένα από τα κουμπιά της
εικόνας 3.
Εικόνα
2: Δηλώσεις
για τις συναρτήσεις
του API από τη
Visual Basic
Εικόνα
3: Παράδειγμα
προγράμματος
ελέγχου του
κλειδιού με
Visual Basic
Εικόνα
4: Κώδικας ελέγχου
του κλειδιού
σε Visual Basic
Μερικά από τα συστήματα ανάπτυξης εφαρμογών Windows που υποστηρίζονται
είναι η γλώσσα C με τους διερμηνευτές Borland, Microsoft και
Watcom, η Borland Pascal, η βάση δεδομένων
FoxPro, οι επεκτάσεις του AutoCAD για
Windows με το διερμηνευτή της Watcom C και φυσικά οποιοδήποτε
σύστημα μπορεί να καλεί βιβλιοθήκες DLL (Access, Excel, Toolbook
κ.λπ.)
Εικόνα 5: Κώδικας ελέγχου του κλειδιού σε FoxPro
Βλέπουμε συμπερασματικά πως το Hardlock EYE είναι ένα εργαλείο που επιτρέπει την προστασία από παράνομη αντιγραφή ενός μεγάλου εύρους προγραμμάτων που τρέχουν κάτω από Windows. Η προστασία αυτή μπορεί να γίνει σε τοπικό επίπεδο, ή σε επίπεδο δικτύου.
(C) Copyright 1993-97 Διομήδης Σπινέλλης. Επιτρέπεται η ελεύθερη ανάγνωση από browsers του WWW και παρόμοια προγράμματα. Με την επιφύλαξη κάθε άλλου δικαιώματος.