KEYnote 29 Deutsch - Frühjahrsausgabe 2015 | Page 9

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