digitální podpis 11.5.16 vjj 1
11.5.16 vjj 2 příklad C: \Program Files \Microsoft Office \Office15 \WinWord.exe
11.5.16 vjj 3 C: \Program Files \Microsoft Office \Office15 \WinWord.exe digitální podpis
11.5.16 vjj 4 C: \Program Files \Microsoft Office \Office15 \WinWord.exe certifikát
11.5.16 vjj 5 test E:\Documents\SECURITY\ testsigned.exe
11.5.16 vjj 6 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ě
11.5.16 vjj 7 digitální podpis aaa = obsah xxx = hash( aaa ) yyy = zakódování xxx privátním klíčem zzz = aaa + yyy + certifikát autora bbb = obsah( zzz ) hash( bbb ) =? 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 - NE autorská práva záruka integrity obsahu záruka identity zdroje pokud se budete ptát lháře jestli lže,... - 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 11.5.16 vjj 8
11.5.16 vjj 9 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
11.5.16 vjj 10 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
11.5.16 vjj 11 důvěra důvěryhodnost certifikátu? důvěryhodnost vydavatele certifikátu? způsob ověřování
11.5.16 vjj 12 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
11.5.16 vjj 13 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
11.5.16 vjj 14 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
11.5.16 vjj 15 Timestamp Server http://timestamp.verisign.com/scripts/timestamp.dll? offline?
11.5.16 vjj 16 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)
11.5.16 vjj 17 generování klíčů a certifikátu Certificate Creation Tool: makecert -sv myprivkey.pvk mycert.cer
11.5.16 vjj 18 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
11.5.16 vjj 19 v souboru *.pvk - bez hesla *.p7b - s heslem privátní klíč v CSP kontejneru registry smart card, USB token
11.5.16 vjj 20 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.
11.5.16 vjj 21 příklad PowerShell cd cert: dir cd.\\currentuser ls cd.\my dir fl
11.5.16 vjj 22 příklad MMC Certificates Current User + Local Computer Gemalto MiniDriver Manager
signing 11.5.16 vjj 23
11.5.16 vjj 24 Signing Set Signer = CreateObject ("Scripting.Signer") Signer.SignFile File, mycert.cer, "My"
co PE soubor (EXE, DLL,...), ale i skript, dokument e-mail jakýkoliv soubor jak Visual Studio utilita vlastní program skript Signing 11.5.16 vjj 25
Signed Exe 11.5.16 vjj 26
11.5.16 vjj 27
11.5.16 vjj 28 1st method - file EFS requirements certifikát uživatele Recovery certifikát doménového administrátora check for certificates in the container PowerShell namespace cert: MMC snap-in Certificates file encryption Explorer - local menu prompt - cipher /C
11.5.16 vjj 29 podepsaný mail 2nd method - mail Outlook File Options Trust Center Trust Center Settings Trust Center E-mail Security Settings Change Security Settings Choose Outlook Options Permissions Sign
11.5.16 vjj 30 3rd method - document podepsaný Word dokument File Protect Document Add a Digital Signature
11.5.16 vjj 31 příprava certifikátu instalace klíče do kontejneru CSP rovnou během generování certifikátu soubor 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
11.5.16 vjj 32 4th method - 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" vytvořit Strong Name pro celou assembly 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
11.5.16 vjj 48 5th method - SignTool.exe > SignTool.exe signwizard Visual Studio SDK \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
11.5.16 vjj 49
11.5.16 vjj 50
11.5.16 vjj 51
11.5.16 vjj 53 6th method - SignTool.exe signtool signtool signtool sign /f mycert.pfx /p password mypgm.exe Timestamp /t URL mypgm.exe Verify /a mypgm.exe
11.5.16 vjj 54 7th method - VB script 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"
11.5.16 vjj 55 VB script Win32 API LoadLibrary("Mssign32.dll");... GetProcAddress("SignerSignEx");... GetProcAddress("SignerTimeStampEx");... GetProcAddress("WinVerifyTrust");
11.5.16 vjj 56 VB script 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)
11.5.16 vjj 57 8th method - PowerShell "My" - defaultní uložiště klíčů $file = "file fullname" $cert = @(dir cert:\currentuser\my -codesigning)[0] Set-AuthenticodeSignature $file $cert
11.5.16 vjj 58 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 11.5.16 vjj 59
verification 11.5.16 vjj 60
11.5.16 vjj 61 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
11.5.16 vjj 62 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
11.5.16 vjj 63 Default Authentication Verification Policy signtool Verify /pa mypgm.exe > signtool.exe Verify /pa testsigned.exe Successfully verified: testsigned.exe
11.5.16 vjj 65 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
11.5.16 vjj 66 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
11.5.2016 vjj 67 edit + sign / verify + run notepad $filename Start-Sleep Seconds 1 $processtowatch = get-process notepad $processtowatch.waitforexit() $cert = dir cert:\currentuser\my -codesign Set-AuthenticodeSignature $filename -cert $cert $cert = Get-AuthenticodeSignature $filename [reflection.assembly]::loadwithpartialname ("System.Management.Automation") if ($cert.status -eq "Valid") { &$filename }
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ý 11.5.16 vjj 68
11.5.16 vjj 69 paranoidní uživatel? bázlivý, vystrašený přehnané a nedoložené obavy o vlastní bezpečnost důsledná podniková Bezpečnostní politika
11.5.16 vjj 70 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
11.5.16 vjj 71 who-is-who svět: Whitfield Diffie, Martin Hellman Ronald Rivest, Adi Shamir, Len Adleman, Ross Anderson ČR Vlastimil Klíma, Tomáš Rosa Petr Hanáček Václav "Vashek" Matyáš Pavel Vondruška
11.5.16 vjj 72 DSM - Data Security Management vydavatel: Tate Int., s.r.o.