Code Signung Zer­ti­fi­ka­te sind seit vie­len Jah­ren in Ver­wen­dung, um die Authen­ti­zi­tät von Soft­ware und Trei­bern zu bestä­ti­gen. Die jähr­li­chen Prei­se für die­sen spe­zi­el­len Zer­ti­fi­kats­typ lie­gen zwi­schen rd. 280€ von inter­na­tio­na­len Anbie­tern und rd. 350–360€ bei Anbie­tern aus dem deutsch­spra­chi­gen Raum.

In der Ver­gan­gen­heit reich­ten oft auch Stan­dard Code Signing Zer­ti­fi­ka­te für die Erstel­lung von Soft­ware aus, jedoch hat Micro­soft die Richt­li­ni­en ver­schärft und setzt für eini­ge Ser­vices nun Exten­ded Vali­da­ti­on (EV) Zer­ti­fi­ka­te vor­aus. Zu die­sen Diens­ten zäh­len Local Secu­ri­ty Aut­ho­ri­ty (LSA) Plug-Ins oder Trei­ber und UEFI Modu­le. Zusätz­lich erkennt auch der Microsoft’s Smart­S­creen® App­li­ca­ti­on Fil­ter EV signier­te Anwen­dun­gen und bringt die für Soft­ware­lie­fe­ran­ten läs­ti­ge Schutz­mel­dung “Win­dows pro­tec­ted your PC” bzw. “Der Com­pu­ter wur­de durch Win­dows geschützt.” nicht mehr.

Exten­ded Vali­da­ti­on nur auf Krypto-Hardware

Spe­zi­ell die Exten­ded Vali­da­ti­on (EV) Zer­ti­fi­ka­te wer­den nun nur mehr auf Kryp­to-Hard­ware aus­ge­lie­fert, wobei der Kun­de ent­schei­den kann, ob er das Code Siging Zer­ti­fi­kat in einem USB-Token gelie­fert haben möch­te, oder das Schlüs­sel­ma­te­ri­al in einem Hard­ware Secu­ri­ty Modul (HSM) erstellt und vom akkre­di­tier­ten Zer­ti­fi­zie­rungs­diens­te­an­bie­ter unter­schrie­ben wird. Der hohe Schutz der Schlüs­sel in Kryp­to-Hard­ware schützt Soft­ware­un­ter­neh­men nach­hal­tig vor dem Dieb­stahl der Code Signung Schlüs­sel durch Drit­te, da der pri­va­te Schlüs­sel weder vom USB-Token noch vom HSM expor­tiert wer­den kann.

Klei­ne­re Umge­bun­gen kön­nen mit dem USB-Token sicher­lich gut arbei­ten, bei der Code Signa­tur muss die­ser USB-Token direkt mit dem Build-Ser­ver ver­bun­den wer­den und zur rech­ten Zeit muss der PIN des USB-Token ein­ge­ge­ben werden.

Inter­na­tio­na­le Ent­wick­ler­teams oder gro­ße, abtei­lungs­über­grei­fen­de Ent­wick­lun­gen kön­nen mit einem ein­fa­chen USB-Schlüs­sel in der Regel nicht arbei­ten. Der admi­nis­tra­ti­ve Auf­wand den Token immer zur rech­ten Zeit an der rich­ti­gen Stel­le zu haben ist zu groß. Hier emp­fiehlt sich zur Soft­ware Signa­tur der Ein­satz eines Hard­ware Secu­ri­ty Moduls (HSM), ent­we­der per USB-Schnitt­stel­le oder USB-Port-Ser­ver ver­bun­den mit den Build-Ser­vern, oder für grö­ße­re Umge­bun­gen als zen­tra­li­sier­ten Netzwerk-Infrastruktur.

Schlüs­sel­spei­che­rung nur am Hard­ware Secu­ri­ty Modul (HSM)

Hier das Bei­spiel eines typi­schen Cer­ti­fi­ca­te Signing Requests (CSR) für ein Code Signing Zertifikat:

—–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­va­te Schlüs­sel des Cer­ti­fi­ca­te Signing Requests muss direkt am HSM erstellt wer­den und bleibt natür­lich pri­vat. In dem CSR ver­birgt sich jedoch der öffent­li­che Schlüs­sel (public Key) des Schlüs­sel­paa­res. Die­ser Antrag wird vom akkre­di­tier­ten Zer­ti­fi­zie­rungs­diens­te­an­bie­ter nach Über­prü­fung des Antrag­stel­lers signiert.

Über die diver­sen Schnitt­stel­len des HSM, bei­spiels­wei­se PKCS#11, OpenS­SL, Java (JCE), Micro­soft CAPI und CNG, kann das Code Signing Zer­ti­fi­kat auf unter­schied­li­chen Linux und Win­dows Soft­ware-Ent­wick­lungs­sys­te­men genutzt wer­den. Es ist jedoch erfor­der­lich, dass die HSM Midd­le­wa­re auf den Build-Ser­vern instal­liert ist. Die Per­for­mance des HSM spielt bei die­sem Anwen­dungs­fall kei­ne Rol­le, da bei jedem Soft­ware-Build nur sehr weni­ge Signa­tur­pro­zes­se am HSM durch­ge­führt werden.