Apparatus and an accompanying method, for forming and embedding a highly
tamper-resistant cryptographic identifier, i.e., a watermark, within
non-marked executable code, e.g., an application program, to generate a
"watermarked" version of that code. Specifically, the watermark,
containing, e.g., a relatively large number of separate executable
routines, is tightly integrated into a flow pattern of non-marked
executable code, e.g., an application program, through randomly
establishing additional control flows in the executable code and
inserting a selected one of the routines along each such flow. Since the
flow pattern of the watermark is highly intertwined with the flow pattern
of the non-marked code, the watermark is effectively impossible to either
remove from the code and/or circumvent. The routines are added in such a
manner that the flow pattern of resulting watermarked code is not
substantially different from that of the non-marked code, thus
frustrating third party detection of the watermark using, e.g., standard
flow analysis tools. To enhance tamper-resistance of the watermarked
code, each such routine can provide a pre-defined function such that if
that routine were to be removed from the marked code by, e.g., a third
party adversary, then the marked code will prematurely terminate its
execution.
Συσκευές και μια συνοδευτική μέθοδος, για τη διαμόρφωση και την ενσωμάτωση ενός ιδιαίτερα πλαστογράφηση-ανθεκτικού κρυπτογραφικού προσδιοριστικού, δηλ., ένα υδατόσημο, μέσα στον μη- non-marked εκτελέσιμο κώδικα, π.χ., ένα πρόγραμμα εφαρμογής, για να παραγάγει μια "watermarked" έκδοση εκείνου του κώδικα. Συγκεκριμένα, το υδατόσημο, που περιέχει, π.χ., ένας σχετικά μεγάλος αριθμός χωριστών εκτελέσιμων ρουτινών, είναι στενά ενσωματωμένο σε ένα σχέδιο ροής του μη- non-marked εκτελέσιμου κώδικα, π.χ., ένα πρόγραμμα εφαρμογής, μέσω τυχαία να καθιερώσει τις πρόσθετες ροές ελέγχου στον εκτελέσιμο κώδικα και της παρεμβολής επιλεγμένης μιας από τις ρουτίνες κατά μήκος κάθε τέτοιας ροής. Δεδομένου ότι το σχέδιο ροής του υδατοσήμου συνδυάζεται ιδιαίτερα με το σχέδιο ροής του μη- non-marked κώδικα, το υδατόσημο είναι αποτελεσματικά αδύνατο είτε να αφαιρέσει από τον κώδικα ή/και να παρακάμψει. Οι ρουτίνες προστίθενται με έναν τέτοιο τρόπο ότι το σχέδιο ροής του προκύπτοντος watermarked κώδικα δεν είναι ουσιαστικά διαφορετικό από αυτό του μη- non-marked κώδικα, ματαιώνοντας κατά συνέπεια την ανίχνευση τρίτων του υδατοσήμου που χρησιμοποιεί, π.χ., τα τυποποιημένα εργαλεία ανάλυσης ροής. Για να ενισχύσει την πλαστογράφηση-αντίσταση του watermarked κώδικα, κάθε τέτοια ρουτίνα μπορεί να παρέχει μια προκαθορισμένη λειτουργία έτσι ώστε εάν εκείνη η ρουτίνα επρόκειτο να αφαιρεθεί από το χαρακτηρισμένο κώδικα από, π.χ., ένας αντίπαλος τρίτων, κατόπιν ο χαρακτηρισμένος κώδικας θα ολοκληρώσει πρόωρα την εκτέλεσή του.