Sicherheitsstandards im Internet 10 Code Signing, XML Code Signing Download von Software aus dem Internet birgt große Risiken. Aktuelles Beispiel: www.spiegel.de/ spiegel/0,1518,138 702,00.html Gefährlich: Applets mit Schreibrechten auf der Festplatte, ActiveX Controls (.ocx), DLLs, EXEs, CABs
Code Signing (2) Partielle Lösung: Signieren dieser Files Microsoft Authenticode (ab IE 4.0): OCX, EXE, DLL, CAB Netscape Signtool: Java-Applets mit erweiterten Privilegien (Verlassen des Sandkastens ). Um Codesigning durchzuführen sind folgende Tools nötig: Für Microsoft das Authenticode Paket: http://msdn.microsoft.com/msdn-files/027/000/219/codesign.exe Für Netscape Object-Signing Tools: http://developer.netscape.com/software/signedobj/signtool13/signtool 13WINNT40.zip Microsoft Authenticode Microsoft Authenticode Garantiert Quelle der Software; nur wenn man dieser Quelle vertraut, soll man die Software ausführen. Verhalten des IE über Optionen/Sicherheit steuerbar.
Microsoft Authenticode (2) Versicherung des SW- Produzenten, dass der Code gutartig ist. Privater Programmierer: Der gute Name zählt. Firma: Zusätzlich wird die Seriosität/Kreditwürdigkeit abgeschätzt. Microsoft Authenticode (2)
Microsoft Authenticode (2) Authenticode Tools bzw. CryptoAPI Tools MakeCert: Erzeugt X.509-Authenticode Testzertifikat Cert2SPC: Fasst einen Zertifizierungspfad zu einem Software Publisher Certificate zusammen SignCode, ChkTrust (Authenticode, bis 1998), SignTool (CryptoAPI, aktuell): Erstellen und Überprüfen einer digitalen Signatur MakeCTL: Erzeugt Certificate Trust List CertMgr: Verwaltet die Zertifikate SetReg: Eintragungen in die Registry MakeCat: Zusammenfassung mehrerer gleichartiger Programme, die dann nur einmal signiert werden müssen. Microsoft Authenticode (2)
Netscape Signtool Netscape Signtool Sandbox : Ursprüngliches JAVA-Sicherheitsmodell. Erlaubt nur Aktionen in einem Teilfenster des Browserfensters. Stark eingeschränkte Funktionalität. Erweiterte Privilegien: Schreib-/Lesezugriff auf Festplatte. Signatur hat den gleichen Zweck wie bei MS Authenticode. Beispiel Netscape Object Signing Wie wird signiert? Code: import java.applet.applet; import java.io.*; public class TestWrite extends Applet { public void start(){ try { Class c=class.forname("netscape.security.privilegemanager"); Class [] pt= {"".getclass()};//class [] pt Object [] obj= {"UniversalFileWrite"};//Object [] obj c.getmethod("enableprivilege",pt).invoke(null,obj); PrintWriter pw=new PrintWriter(new FileWriter("c:\\testapplet.txt")); pw.println("test"); pw.println(system.currenttimemillis()); pw.close(); System.out.println("written C:\\testapplet.txt successfully."); }// try catch (Exception e) {e.printstacktrace();} }//public void }//class TestWrite Speichern und Kompilieren wie gewohnt.
Beispiel Netscape Object Signing Vorraussetzungen: Das Zertifikat wurde unter dem Namen Test" beantragt. Die Zertifikatsdateien des Netscape Communicators (cert7.db und key3.db) liegen unter c:\programme\netscape\users\test_die. Signtool.exe liegt in c:\programme\signtool. Im Verzeichnis c:\programme\signtool einen Batch anlegen: set Nickname= Test" set CertDir=c:\Programme\Netscape\Users\test_die echo off echo ------------------------------------------------ echo usage: sign SignDir JarFileName echo ------------------------------------------------ signtool -d %CertDir% -k %Nickname% -Z %2 %1 Beispiel Netscape Object Signing DOS-Box öffnen In das Verzeichnis cd c:\programme\signtool wechseln. Jetzt eingeben: sign c:\applets\testwrite c:\applets\testwrite.jar. Man wird aufgefordert, das Passwort für die "Communicator Certificate DB" einzugeben. Das gesamte Verzeichnis c:\applets\testwrite wird signiert, komprimiert und in die Datei c:\applets\testwrite.jar geschrieben.
Beispiel Netscape Object Signing Einbinden des signierten Java-Applets in ein HTML-Dokument: <HTML> <HEAD> <TITLE> A Simple Program </TITLE> </HEAD> <BODY> <APPLET ARCHIVE="TestWrite.jar" CODE="TestWrite.class" WIDTH=150 HEIGHT=25> </APPLET> </BODY> </HTML> Beispiel Netscape Object Signing
Beispiel Netscape Object Signing Mehr Code Signing Möglichkeiten
Abschließendes negativ Beispiel (Dialer): Abschließendes negativ Beispiel (Dialer):
Abschließendes negativ Beispiel (Dialer): Quellen: Christian Pflüger, Vortrag FH Nürnberg