digitální podpis 10.5.17 vjj 1
10.5.17 vjj 2 příklad C: \Program Files \Microsoft Office \Office15 \WinWord.exe
10.5.17 vjj 3 C: \Program Files \Microsoft Office \Office15 \WinWord.exe digitální podpis
10.5.17 vjj 4 C: \Program Files \Microsoft Office \Office15 \WinWord.exe certifikát
10.5.17 vjj 5 test E:\Documents\SECURITY\ testsigned.exe
10.5.17 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ě
10.5.17 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 10.5.17 vjj 8
10.5.17 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
10.5.17 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
10.5.17 vjj 11 důvěra důvěryhodnost certifikátu? důvěryhodnost vydavatele certifikátu? způsob ověřování
10.5.17 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
10.5.17 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
10.5.17 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
10.5.17 vjj 15 Timestamp Server http://timestamp.verisign.com/scripts/timestamp.dll? offline?
10.5.17 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)
10.5.17 vjj 17 generování klíčů a certifikátu Certificate Creation Tool: makecert -sv myprivkey.pvk mycert.cer
10.5.17 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
10.5.17 vjj 19 v souboru *.pvk - bez hesla *.p7b - s heslem privátní klíč v CSP kontejneru registry smart card, USB token
10.5.17 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.
10.5.17 vjj 21 příklad PowerShell cd cert: dir cd.\\currentuser ls cd.\my dir fl
10.5.17 vjj 22 příklad MMC Certificates Current User + Local Computer Gemalto MiniDriver Manager
signing 10.5.17 vjj 23
10.5.17 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 10.5.17 vjj 25
Signed Exe 10.5.17 vjj 26
10.5.17 vjj 27
10.5.17 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 - displays information about encrypted files /E - encrypts /D - decrypts
10.5.17 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
10.5.17 vjj 30 3rd method - document podepsaný Word dokument File Protect Document Add a Digital Signature
10.5.17 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
10.5.17 vjj 32 4th method - Visual Studio.NET aplikace menu Project Application Properties, záložka Signing
10.5.17 vjj 33 Visual Studio - ClickOnce podepsat manifest pro distribuci pomocí ClickOnce nejedná se o Authenticode, tj. nejde o ověření autora allows users to verify that any updates really originated from the publisher of the version they installed before 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" Timestamp server URL (http://timestamp.verisign.com/scripts/timestamp.dll)
10.5.17 vjj 34 Visual Studio - Strong Name Strong Name pro celou assembly zajišťuje integritu assembly umožňuje nastavit specifická oprávnění pomocí Code Access Security strong name key file existující soubor SNK existující soubor PFX obsahující private key (Bare Format tj. bez jiných certifikátů a bez Extended Properties - tj. exportovaný bez "Include all certificates in the certification path if possible") 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
10.5.17 vjj 49 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
10.5.17 vjj 50
10.5.17 vjj 51
10.5.17 vjj 52
10.5.17 vjj 54 6th method - SignTool.exe signtool signtool signtool sign /f mycert.pfx /p password mypgm.exe Timestamp /t URL mypgm.exe Verify /a mypgm.exe
10.5.17 vjj 55 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"
10.5.17 vjj 56 VB script Win32 API LoadLibrary("Mssign32.dll");... GetProcAddress("SignerSignEx");... GetProcAddress("SignerTimeStampEx");... GetProcAddress("WinVerifyTrust");
10.5.17 vjj 57 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)
10.5.17 vjj 58 8th method - PowerShell "My" - defaultní uložiště klíčů příklad $file = "file fullname" $cert = @(dir cert:\currentuser\my -codesigning)[0] Set-AuthenticodeSignature $file $cert
verification 10.5.17 vjj 61
10.5.17 vjj 62 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
10.5.17 vjj 63 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
10.5.17 vjj 64 Default Authentication Verification Policy signtool Verify /pa mypgm.exe > signtool.exe Verify /pa testsigned.exe Successfully verified: testsigned.exe
10.5.17 vjj 66 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
10.5.17 vjj 67 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
10.5.2017 vjj 68 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ý 10.5.17 vjj 69
10.5.17 vjj 70 paranoidní uživatel? bázlivý, vystrašený přehnané a nedoložené obavy o vlastní bezpečnost důsledná podniková Bezpečnostní politika
10.5.17 vjj 71 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
10.5.17 vjj 72 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
10.5.17 vjj 73 DSM peer reviewed journal Data Security Management vydavatel: Tate Int., s.r.o. https://tate.cz/