Code signing certifikáty: Proč jsou nezbytné?

6.2.2018 | Jindřich Zechmeister

I pokud (zatím) nepatříte mezi přímé uživatele code signing certifikátů, určitě jste s nimi již – i když možná nevědomky – pracovali nebo o nich minimálně slyšeli. Ať již patříte do kterékoliv skupiny, následující článek vám jistě přijde vhod. Shrneme si v něm, co si vlastně pod pojmem code signing certifikát můžeme představit, k čemu slouží a jak z něj vytěžit maximum

Bez code signing certifikátů se neobejdeme

Spojení code signing je vcelku prozaické a nenarazíme v něm na žádnou zradu. Co si však pod oním kódem, který je třeba podepsat, máme představit konkrétně? Aplikace a programy, soubory s koncovkami .exe, .app, .msi, .cab, .dll, .jar i jinými – jedním slovem software.

A právě pokud software vyvíjíte, je jeho úspěšná distribuce jistě vaší prioritou. Nebude-li software code signing ceritikátem vybaven, nebudou si jej vaši zákazníci moci ani stáhnout na mobil, ani jej spustit ve Windows, protože pro koncové zařízení nebude důvěryhodný – tedy zabezpečený před riziky. Jakými? Je samozřejmě na místě, aby se výsledky vašeho snažení k zákazníkům dostaly v nezměněné, originální podobě – tedy aby na své cestě od vás ke koncovému uživateli nedošly „úhony“. Podobně jako může být kompromitována elektronická pošta zneužitím adresy odesílatele nebo zásahem do samotného obsahu zprávy, může oběma způsoby dojít i ke zmanipulování vašeho produktu. Zejména pokud distribuujete online, jak zabráníte tomu, aby se útočník zmocnil kopie vašeho programu a vydával ji za originál, ovšem obohacený o adware nebo malware? Jako uživatel si potom můžete klást otázku, zda aplikace, kterou jste si vybrali a kterou se chystáte instalovat, opravdu pochází od uvedeného vývojáře. Code signing certifikát nás ujistí o obojím – zaručuje, že produkt jím podepsaný nebyl změněn zásahem třetí strany a že skutečně pochází od deklarovaného tvůrce.

Jak to celé funguje?

Každý code signing certifikát je spárován s unikátním privátním klíčem, který vlastní pouze majitel daného certifikátu a který vzniká na základě vytvoření CSR požadavku o certifikát. Právě pomocí tohoto privátního klíče lze vybraný soubor opatřit digitálním podpisem.

Pro každý podepisovaný program je tato signatura jedinečná. Podepisujeme totiž hash, který si obecně můžeme představit jako unikátní otisk či hodnotu jakéhokoliv řetězce dat, v našem případě podepisovaného souboru. Právě tento otisk znemožňuje k aplikaci připojený podpis odcizit a zneužít jej pro podvodný software. Pokud by byl originální produkt výrobce jakkoliv modifikován, bude pro zařízení koncového uživatele podpis neplatný, protože již nebude odpovídat původnímu otisku. Code signing certifikát tedy zajišťuje integritu přenášených dat. Zaručuje, že od doby podpisu nebyl kód nijak a nikým změněn.

Jakmile je spuštěn průvodce aplikací, platforma, ať už Windows, iOS nebo Java, podpis prověří a zobrazí jej uživateli. Ten si tak může zkontrolovat původ softwaru a rozhodnout se, zda jej instalovat. Zde se dostáváme k druhé funkci podpisových certifikátů – k autentizaci vydatele a identifikaci podepsaných dat. Pokud privátní klíč bezpečně uložíme a neposkytneme k dispozici třetí straně, nemůže být cizí software podepsán naším jménem. Ovšem pozor, může se i stát, že do code signing certifikátu investuje hacker a podepíše s ním malware, aby zvýšil důvěryhodnost souboru a nalákal více obětí. Posouzení, zda je vydávající subjekt hoden důvěry či nikoliv, je už tak v rukou uživatele. Ve většině případů ovšem platí, že autorem stahované aplikace je nám známá firma – v pozitivním smyslu slova.

Timestamping – krok navíc, který se vyplatí

Jamile certifikát vyprší, již jej nelze použít k podpisu nových aplikací. A co je horší, se dnem expirace certifikátu přestanou být platné i již provedené podpisy. Pokud nevyužijeme tzv. timestamping.

Timestamping si můžeme představit jako dodatečné sdělení, které připojíme k podpisu a které zařízení uživatele informuje o tom, kdy jsme kód podepsali. Díky této informaci bude podpis vlastně fungovat jako perpetuum mobile. Což je samozřejmě užitečné, zvlášť pokud zvážíme, že vydané aplikace mohou být v nezměněné podobě distribuovány roky. „Razítkování“ tak logicky šetří i naše finance – nepotřebujeme-li podepsat nové soubory, nemusíme průběžně investovat do prodloužení již jednou vydaného certifikátu.

Různé platformy & jeden certifikát

Code signing certifikáty jsou podporovány na každé platformě. Ať už pracujete s Windows, OS X, iOS, Androidem, Javou či Adobe AIR, užití code signing certifikátu je zde nejenom možné, ale dokonce doporučeníhodné – bez uskutečnění podpisu se vystavujete riziku, že bude váš software označen za nedůvěryhodný a vaši zákazníci budou před jeho stažením důsledně varováni.

Code signing certifikát je vyžadován mnoha aplikacemi

Při distribuci softwaru v oficiálních obchodech pro iOS, Android a OS X je užití code signing certifikátů dokonce povinností. A těchto platforem přibývá. Podepsány musí být také všechny ovladače – drivery - Windows a makra MS Office. Na tomto místě je vhodné zmínit i prestižní code signing certifikát s EV ověřením, který je vyžadován pro Windows 10 kernel mode drivery a představuje jediné možné řešení, jak zabránit nepříjemným blokacím Smartscreen Filteru.

Přitom ani tak nezáleží na tom, pro kterou platformu konkrétně certifikát potřebujete – obdržené soubory si můžete jednoduše během pár minut konvertovat dle potřeby.

Na některých platformách vám k instalaci certifikátu i realizaci podpisu bude stačí jeden podpisový nástroj. Na jiných bude třeba importovat certifikát do úložiště, než s ním budete moci podpis provést. S těmito konkrétními úkony vám však po vystavení certifikátu ráda pomůže zákaznická podpora SSLmarketu.

Přejeme příjemné podepisování!

Reference

Digitální podpis aplikací

Getting Started with Code Signing

 

 


Ing. Jindřich Zechmeister
Specialista pro bezpečnostní SSL certifikáty
DigiCert TLS/SSL Professional
e-mail: jindrich.zechmeister(at)zoner.cz