Code Sign­ing in Teams — Kostengün­stige HSM Lösung

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.

2018-11-30T19:44:18+00:00 24.10.2018|

Über den Autor:

Andreas Schuster ist 45 Jahre alt und wohnt in Wien. Vor über 20 Jahren hat er sein Hobby die IT zum Beruf gemacht und arbeitet seit vielen Jahren in der Crypto-Branche. Sein technisches Interesse an allem das ein Kabel hat (exklusive Weißwaren...) bringt immer wieder spannende Blog-Inhalte.

Hinterlassen Sie einen Kommentar