f[i] (p)
fw[i] (p)
Trap
f[i,1] (p[1])
p,i
j
(p[2])
f[i,2] (p[3])
Trap
f[i,3] (p[3])
...
k=i
f[i,n] (p[n])
Berechnung der Variantenauswahl im Dongle
jeweiligen pIn[i] liefert der Funktionsblock
entsprechende pOut[i] zurück. Beim Blurry
Box-Verfahren werden einzelne Funktionsblöcke zu m Varianten vervielfältigt: Aus einem
Funktionsblock f[i] werden die Blöcke f[i,1]
bis f[i,m] generiert. Die Funktionsblöcke f[i,j]
werden durch eine Wrapperfunktion fw[i]
in Abhängigkeit der Aufrufparameter pIn[i]
aufgerufen. Die Ausgabe der Variante f[i,j]
wird als Rückgabewert pOut[i] von der Wrapperfunktion fw[i] zurückgegeben. Damit wird
erreicht, dass die Codeabdeckung bei einem
Durchlauf verringert wird und zusätzlich
von den verwendeten Eingabeparametern
abhängig ist.
bei der die verschlüsselten Daten in den
CmDongle übertragen und mit dem Schlüssel
intern im CmDongle entschlüsselt werden.
Der entschlüsselte Programmcode wird als
Rückgabewert der CmDongle-API zurückgeliefert und in der Software als Code der
Variante ausgeführt. Ohne CmDongle mit dem
passenden Schlüssel kann eine Variante nicht
entschlüsselt werden. Zur Verschlüsselung
wird der Advanced Encryption Standard (AES)
verwendet. Um Blöcke mit gleichem Inhalt auf
unterschiedliche Chiffrate abzubilden, fließt in
die Berechnung ein zufällig gewählter Wert
mit ein.
Modifikation der Varianten
Um zu verhindern, dass ein Angreifer nun
alle Varianten unabhängig von einem
Programmlauf durch den CmDongle
entsc