digitální podpis 7.5.15 vjj 1
7.5.15 vjj 2 příklad C: \Program Files \Microsoft Office \Office15 \WinWord.exe
7.5.15 vjj 3 C: \Program Files \Microsoft Office \Office15 \WinWord.exe digitální podpis
7.5.15 vjj 4 C: \Program Files \Microsoft Office \Office15 \WinWord.exe certifikát
7.5.15 vjj 5 asymetrické šifrovací algoritmy autor privátní šifrovací klíč veřejnost certifikát potvrzení, že v certifikátu uvedený veřejný šifrovací klíč a autorova identita patří k sobě
7.5.15 vjj 6 digitální podpis xxx = hash obsahu yyy = zakódování xxx privátním klíčem zzz = obsah + yyy + certifikát autora hash obsahu =? dekódování yyy veřejným klíčem autora
proč digitální podpis záruka bezchybného a/nebo neškodného kódu autorská práva záruka integrity obsahu záruka identity zdroje pokud se budete ptát lháře jestli lže,... - NE - NE - ANO, ale... - ANO, ale... ověření identity zdroje - ANO pokud je certifikát vydán někým komu věříte autor (důvěryhodný) certifikační autorita (důvěryhodná) pokud jste si ověřili, že ten konkrétní certifikát skutečně vydal on 7.5.15 vjj 7
7.5.15 vjj 8 digitálně podepsaný kód důležité jsou body s odpovědí ANO jistota - že kód nebyl, od doby kdy ho (ověřený, tj. dohledatelný) autor (podpisu) podepsal, nikým a ničím pozměněn - pro právníky jistota - pouze schválených aplikací - secure enterprise environment důvěra - důvěřuji autorovi, že mi nepodstrčí zákeřný kód - pro (naivní) konzumenty
7.5.15 vjj 9 obsah certifikátu účel tj. k čemu lze používat příslušné klíče identita majitele certifikátu identita vydavatele certifikátu platnost certifikátu (od kdy do kdy) "public key" majitele kde lze ověřit uvedené údaje to celé je digitálně podepsáno privátním klíčem vydavatele certifikátu
7.5.15 vjj 10 důvěra důvěryhodnost certifikátu? důvěryhodnost vydavatele certifikátu? způsob ověřování
7.5.15 vjj 11 Certifikační Autorita privátní podniková státní elektronické ID karty elektronické volby komunikace s úřady u nás CHYBÍ (?!?!?! Min. vnitra / NBÚ / BIS / ÚOOÚ ) komerční akreditovaná státem stát svěřuje důvěryhodnost své komunikace s občany a podniky do rukou soukromému provozovateli CA
7.5.15 vjj 12 Certifikační Autorita komerční Thawte Consulting certificate authority (CA) for X.509 certificates Thawte was founded in 1995 by Mark Shuttleworth in South Africa and was the second largest public CA on the Internet VeriSign founded in 1995 in 1999 VeriSign acquired Thawte in a stock purchase from Shuttleworth for US$575 million in 2000, Verisign acquired Network Solutions, which operated the.com,.net and.org gtlds (generic top-level domain) Symantec In 2010, Verisign sold its authentication business unit to Symantec for $1.28 billion
7.5.15 vjj 13 Certifikační Autorita akreditovaná (pod dohledem ÚOOU) zákon o elektronickém (digitálním) podpisu (č. 227/2000 Sb,... ) komerční zájmy převládají nad zdravým rozumem akreditovaná CA - I.CA, PostSignum, eidentity kvalifikovaný certifikát zaručený podpis
7.5.15 vjj 14 Timestamp Server http://timestamp.verisign.com/scripts/timestamp.dll? offline?
získání certifikátu uživatel vygeneruje dvojici klíčů + certifikát - HOTOVO vygeneruje jen dvojici klíčů privátní klíč do souboru.pvk nebo do CSP kontejneru připraví žádost o certifikát obsahující veřejný klíč Certifikační autorita (program, instituce) ověří identitu uživatele vygeneruje a podepíše.cer CA (software) je součást Windows serveru (od W2K) 7.5.15 vjj 15
7.5.15 vjj 16 generování klíčů a certifikátu Certificate Creation Tool: makecert -sv myprivkey.pvk mycert.cer
7.5.15 vjj 17 typ souboru *.spc Software Publisher's Certificate *.pvk odpovídající privátní klíč *.cer DER encoded binary X.509 *.p7b PKCS #7 Cryptographic Message Syntax Standard slouží k ukládání privátního klíče *.pfx PKCS #12 Personal Information Exchange slouží k ukládání privátního klíče chráněn heslem *.snk Strong Name Key Personal Information Exchange slouží k ukládání privátního klíče
7.5.15 vjj 18 v souboru *.pvk - bez hesla *.p7b - s heslem privátní klíč v CSP kontejneru registry smart card, USB token
7.5.15 vjj 19 CSP CSP Crypto Services Provider modul pro přístup ke kontejneru s šifrovacími klíči CSP moduly pro přístup ke kontejnerům v registry jsou součástí Windows CSP moduly pro přístup ke kontejnerům na čipových kartách a USB tokenech by měly být součástí driverů, protože bez nich nelze tato zařízení použít. Ale většinou jsou dodávány pouze jako součást placených balíků HW + "middleware". Součásti "middleware" bývají i nejjednodušší uživatelské utility. Často bývá "middleware" spolu s administrátorskými utilitami nedílnou součástí rozsáhlých balíků PKI softwaru s astronomickými cenami.
7.5.15 vjj 20 příklad PowerShell cd cert: dir cd.\\currentuser ls cd.\my dir fl
7.5.15 vjj 21 příklad MMC Certificates Current User + Local Computer Gemalto MiniDriver Manager
7.5.15 vjj 22 EFS certifikát uživatele příklad EFS EFS Recovery certifikát doménového administrátora PowerShell - cert: MMC - certificates PowerShell - cipher /C
7.5.15 vjj 23 podepsaný mail samples Outlook File Options Trust Center Trust Center Settings Trust Center E-mail Security Settings Change Security Settings Choose Outlook Options Permissions Sign podepsaný Office dokument Outlook File Info Protect... Add a Digital Signature
Signed Exe 7.5.15 vjj 24
7.5.15 vjj 25
signing 7.5.15 vjj 26
7.5.15 vjj 27 Signing Set Signer = CreateObject ("Scripting.Signer") Signer.SignFile File, mycert.cer, "My"
7.5.15 vjj 28 co Signing PE soubory (EXE, DLL,...), ale i skripty, jakékoliv soubory jak Visual Studio utilita vlastní program skript
7.5.15 vjj 29 příprava certifikátu instalace klíče do kontejneru CSP rovnou během generování certifikátu soubory s klíčem a certifikátem -> token utilita, midleware -> registry mmc.exe snap-in Certificates, My user account Cerificates Current User Personal Certificates Action All Tasks Import
7.5.15 vjj 30 Signing - 1. způsob Visual Studio.NET aplikace menu Project Application Properties, záložka Signing podepsat manifest pro distribuci pomocí ClickOnce vytvoření testovacího certifikátu (PFX) načtení existujícího souboru PFX (bez omezení) použití certifikátu a klíčů z uživatelova CSP uložiště "My" podepsat celou assembly pomocí Strong Name existující soubor SNK existující soubor PFX (Bare Format tj. bez jiných certifikátů a bez Extended Properties) New wizard default je SNK soubor obsahující privátní klíč nebude chráněn heslem explicitní zadání přípony PFX wizard se zeptá na heslo
7.5.15 vjj 46 SignTool.exe signwizard Visual Studio SDK Signing - 2. způsob \Program Files (x86)\microsoft Visual Studio 8\SDK\v2.0\Bin už ne, ale VS obsahuje Windows SDK: Windows SDK jen "command line" verze C:\Program Files\Microsoft SDKs\Windows\v7.1A\Bin C:\Program Files (x86)\windows Kits\8.0\bin\x64 i \x86 C:\Program Files (x86)\windows Kits\8.1\bin\x64 i \x86 a \arm WDK už ne C:\WinDDK\7001\bin\SelfSign
7.5.15 vjj 47
7.5.15 vjj 48
7.5.15 vjj 49
7.5.15 vjj 51 Signing - 3. způsob signtool signtool signtool sign /f mycert.pfx /p password mypgm.exe Timestamp /t URL mypgm.exe Verify /a mypgm.exe
7.5.15 vjj 52 VB script Signing - 4. způsob soubor s certifikátem k privátnímu klíči nainstalovaném na lokálním počítači "My" - defaultní uložiště klíčů Set Signer = CreateObject ("Scripting.Signer") Signer.SignFile File, mycert.cer, "My"
7.5.15 vjj 53 Signing - 4. způsob Win32 API LoadLibrary("Mssign32.dll");... GetProcAddress("SignerSignEx");... GetProcAddress("SignerTimeStampEx");... GetProcAddress("WinVerifyTrust");
7.5.15 vjj 54 Signing - 4. způsob CAPICOM.dll System.Security.Cryptography.Pkcs SignedData object, SignedCode object SignedCode.Signer.Load ("pfx file", pswd) SignedCode.FileName =... SignedCode.Sign(Signer) SignedCode.Timestamp(URL) SignedCode.Verify(true)
7.5.15 vjj 55 PowerShell script Signing - 5. způsob "My" - defaultní uložiště klíčů $file = "file fullname" $cert = @(dir cert:\currentuser\my -codesigning)[0] Set-AuthenticodeSignature $file $cert
7.5.15 vjj 56 PowerShell New-SelfSignedCertificate Get-AuthenticodeSignature Set-ExecutionPolicy Get-ExecutionPolicy
Execution Policy Restricted nespustí žádný skript (default) AllSigned všechny skripty musí být podepsány kontroluje digitální podpisy zeptá se, zda je autor důvěryhodný (jednorázově x trvale) RemoteSigned jen remote skripty musí být podepsány kontroluje digitální podpisy zeptá se, zda je autor důvěryhodný (jednorázově x trvale) Unrestricted nekontroluje podpisy Bypass 7.5.15 vjj 57
7.5.15 vjj 58 uživatel Windows Explorer ověření podpisu File Properties Digital Signatures autor (web, tlf, osobně,... ) aplikace Windows Explorer platný certifikát x důvěryhodný majitel
verification 7.5.15 vjj 59
7.5.15 vjj 60 limited set of CAs for Windows Driver Verification Policy signtool Verify /a mypgm.exe >signtool.exe Verify /a testsigned.exe SignTool Error: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider. SignTool Error: File not valid: testsigned.exe Number of errors: 1
7.5.15 vjj 61 Default Authentication Verification Policy signtool Verify /pa mypgm.exe > signtool.exe Verify /pa testsigned.exe Successfully verified: testsigned.exe
7.5.15 vjj 63 X509 verification #using System.Security.Cryptography.X509Certificates; X509Certificate cert = CreateFromSignedFile( "filename" ); DWORD Version; DWORD SerialNumber[4]; ALG_ID SignatureAlgorithm; FILETIME ValidFrom; FILETIME ValidUntil; PSTR pszissuer; PSTR pszsubject; PctPublicKey *ppublickey
7.5.15 vjj 64 X509 certificate #using System.Security.Cryptography.X509Certificates; X509Certificate cert = CreateFromCertFile( "filename" ); DWORD Version; DWORD SerialNumber[4]; ALG_ID SignatureAlgorithm; FILETIME ValidFrom; FILETIME ValidUntil; PSTR pszissuer; PSTR pszsubject; PctPublicKey *ppublickey
je kód ze zcela spolehlivého zdroje? je kód digitálně podepsaný? je v certifikátu jako autor/distributor uveden někdo, komu důvěřuji? vydala certifikát (obecně/mně) důvěryhodná certifikační autorita nebo ho vygeneroval někdo, komu důvěřuju? kód není důvěryhodný ověřím si přímo u vydavatele certifikátu (CA, autor,...), jestli je tento certifikát platný kód je důvěryhodný 7.5.15 vjj 65
7.5.15 vjj 66 paranoidní uživatel? bázlivý, vystrašený přehnané a nedoložené obavy o vlastní bezpečnost důsledná podniková Bezpečnostní politika
7.5.15 vjj 67 PKCS #1 #3 #5 #6 #7 #8 #10 #11 #12 #13 #14 #15 public-key cryptography standards RSA Diffie-Hellman Password-based Encryption Extended-Certificate Syntax Cryptographic Message Syntax Private-Key Information Syntax Certification Request Cryptographic Token Interface Personal Information Exchange Elliptic Curve Cryptography Pseudo-random Number Generation Cryptographic Token Information Format
7.5.15 vjj 68 osobnosti Whitfield Diffie, Martin Hellman Ronald Rivest, Adi Shamir, Len Adleman, Ross Anderson Vlastimil Klíma, Tomáš Rosa Petr Hanáček Václav Matyáš Pavel Vondruška