Code Sig­nung Zer­ti­fikate sind seit vie­len Jahren in Ver­wen­dung, um die Authen­tiz­ität von Soft­ware und Treibern zu bestäti­gen. Die jährlichen Preise für diesen speziellen Zer­ti­fikat­styp liegen zwis­chen rd. 280€ von inter­na­tionalen Anbi­etern und rd. 350–360€ bei Anbi­etern aus dem deutschsprachi­gen Raum.

In der Ver­gan­gen­heit reicht­en oft auch Stan­dard Code Sign­ing Zer­ti­fikate für die Erstel­lung von Soft­ware aus, jedoch hat Microsoft die Richtlin­ien ver­schärft und set­zt für einige Ser­vices nun Extend­ed Val­i­da­tion (EV) Zer­ti­fikate voraus. Zu diesen Dien­sten zählen Local Secu­ri­ty Author­i­ty (LSA) Plug-Ins oder Treiber und UEFI Mod­ule. Zusät­zlich erken­nt auch der Microsoft’s SmartScreen® Appli­ca­tion Fil­ter EV sig­nierte Anwen­dun­gen und bringt die für Soft­ware­liefer­an­ten lästige Schutzmel­dung “Win­dows pro­tect­ed your PC” bzw. “Der Com­put­er wurde durch Win­dows geschützt.” nicht mehr.

Extend­ed Val­i­da­tion nur auf Kryp­to-Hard­ware

Speziell die Extend­ed Val­i­da­tion (EV) Zer­ti­fikate wer­den nun nur mehr auf Kryp­to-Hard­ware aus­geliefert, wobei der Kunde entschei­den kann, ob er das Code Sig­ing Zer­ti­fikat in einem USB-Token geliefert haben möchte, oder das Schlüs­sel­ma­te­r­i­al in einem Hard­ware Secu­ri­ty Mod­ul (HSM) erstellt und vom akkred­i­tierten Zer­ti­fizierungs­di­en­stean­bi­eter unter­schrieben wird. Der hohe Schutz der Schlüs­sel in Kryp­to-Hard­ware schützt Soft­ware­un­ternehmen nach­haltig vor dem Dieb­stahl der Code Sig­nung Schlüs­sel durch Dritte, da der pri­vate Schlüs­sel wed­er vom USB-Token noch vom HSM exportiert wer­den kann.

Kleinere Umge­bun­gen kön­nen mit dem USB-Token sicher­lich gut arbeit­en, bei der Code Sig­natur muss dieser USB-Token direkt mit dem Build-Serv­er ver­bun­den wer­den und zur recht­en Zeit muss der PIN des USB-Token eingegeben wer­den.

Inter­na­tionale Entwick­lerteams oder große, abteilungsüber­greifende Entwick­lun­gen kön­nen mit einem ein­fachen USB-Schlüs­sel in der Regel nicht arbeit­en. Der admin­is­tra­tive Aufwand den Token immer zur recht­en Zeit an der richti­gen Stelle zu haben ist zu groß. Hier emp­fiehlt sich zur Soft­ware Sig­natur der Ein­satz eines Hard­ware Secu­ri­ty Moduls (HSM), entwed­er per USB-Schnittstelle oder USB-Port-Serv­er ver­bun­den mit den Build-Servern, oder für größere Umge­bun­gen als zen­tral­isierten Net­zw­erk-Infra­struk­tur.

Schlüs­sel­spe­icherung nur am Hard­ware Secu­ri­ty Mod­ul (HSM)

Hier das Beispiel eines typ­is­chen Cer­tifi­cate Sign­ing Requests (CSR) für ein Code Sign­ing Zer­ti­fikat:

—–BEGIN CERTIFICATE REQUEST—–
MIIC6zCCAdMCAQAwgaUxCzAJBgNVBAYTAkFUMRYwFAYDVQQIDA1VcHBlciBBdXN0
cmlhMQ0wCwYDVQQHDARMaW56MR4wHAYDVQQKDBVjcHNkIGl0IHNlcnZpY2VzIEdt
YkgxEjAQBgNVBAsMCUNyeXB0b1BybzEeMBwGA1UEAwwVY3BzZCBpdCBzZXJ2aWNl
cyBHbWJIMRswGQYJKoZIhvcNAQkBFgxpbmZvQGNwc2QuYXQwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQDVZlx1IUZYE/6VSnzcGQPILmS5wNw59JrRmlA6
wuHoug8Ag1rNcdWJ+5CvksTw8g5nAaRulWbQA1Nd46/aVyvFni8Eaa2yJh13Vm5M
80rBq5AxlmJ91XAeVy6glyN9j3ZIcX/2TwGYPwUGEDq3lM6UPgBg3tmV8CZDWqVn
Zm05S1q00W0L5N7vlGYiRDLnPQvjchg9kpDZYG7xzuK0C3qCieIJcFoTfMRQS9g3
trZ4qdGmHNRBzNBUIHC00jY51JsEKfvPe1RogFZ5PHvuTjztKqXPG3SCU0UaaydP
j7Ib8HwJEilWBw8uhOxqqIg6WcBHxlFukND0Ip4WjLj4HmNFAgMBAAGgADANBgkq
hkiG9w0BAQsFAAOCAQEAmBCouUifwV/kJQxWax86sBsV2EgxSXk4hTplgOrhCwez
nLaPRx2wqsqTTQ1Q+zYzl8YMLHHdWJk3QYaGd3PHmvZdV1MaSHdWybJGdfcf4bpB
0Hl0bNzI5ElTzw22vY7MhKrHzlzna9Y3bxgkDsg26ZLLq1XvWryDg/R3f/4Q9sCc
ALlsIpif1QeeHFZrMtEPh4A0RcP+nd6isNSvGXs98gP1qWsUDhrbipADu6fvvLHx
dI/l7OBFXbNZYu2Txbz8bmhEsRv6Pg5QDXCl9cae5X+kiE1dagGL9T+z4WVYERLa
skpySr+oGcKfVtxxi5EgKoAxdweZZjqAzmuI2gRplA==
—–END CERTIFICATE REQUEST—–

Der pri­vate Schlüs­sel des Cer­tifi­cate Sign­ing Requests muss direkt am HSM erstellt wer­den und bleibt natür­lich pri­vat. In dem CSR ver­birgt sich jedoch der öffentliche Schlüs­sel (pub­lic Key) des Schlüs­sel­paares. Dieser Antrag wird vom akkred­i­tierten Zer­ti­fizierungs­di­en­stean­bi­eter nach Über­prü­fung des Antrag­stellers sig­niert.

Über die diversen Schnittstellen des HSM, beispiel­sweise PKCS#11, OpenSSL, Java (JCE), Microsoft CAPI und CNG, kann das Code Sign­ing Zer­ti­fikat auf unter­schiedlichen Lin­ux und Win­dows Soft­ware-Entwick­lungssys­te­men genutzt wer­den. Es ist jedoch erforder­lich, dass die HSM Mid­dle­ware auf den Build-Servern instal­liert ist. Die Per­for­mance des HSM spielt bei diesem Anwen­dungs­fall keine Rolle, da bei jedem Soft­ware-Build nur sehr wenige Sig­natur­prozesse am HSM durchge­führt wer­den.