digitální podpis
11.5.16
vjj
1
příklad • C: \Program Files \Microsoft Office \Office15 \WinWord.exe
11.5.16
vjj
2
digitální podpis • C: \Program Files \Microsoft Office \Office15 \WinWord.exe
11.5.16
vjj
3
certifikát • C: \Program Files \Microsoft Office \Office15 \WinWord.exe
11.5.16
vjj
4
test • E:\Documents\SECURITY\ testSigned.exe
11.5.16
vjj
5
asymetrické šifrovací algoritmy •
autor privátní šifrovací klíč
•
veřejnost certifikát •
11.5.16
potvrzení, že v certifikátu uvedený veřejný šifrovací klíč a autorova identita patří k sobě
vjj
6
digitální podpis • • • •
aaa = obsah
• •
bbb = obsah( zzz )
11.5.16
xxx = hash( aaa ) yyy = zakódování xxx privátním klíčem
zzz = aaa + yyy + certifikát autora
hash( bbb ) =? dekódování yyy veřejným klíčem autora
vjj
7
proč digitální podpis •
záruka bezchybného a/nebo neškodného kódu - NE
•
autorská práva
- NE
•
záruka integrity obsahu
- ANO, ale...
•
záruka identity zdroje
- ANO, ale...
•
•
pokud se budete ptát lháře jestli lže, ...
ověření identity zdroje
•
pokud je certifikát vydán někým komu věříte
• •
• 11.5.16
- ANO
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 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
11.5.16
vjj
9
obsah certifikátu • • • • • •
účel – tj. k čemu lze používat příslušné klíče
•
to celé je digitálně podepsáno privátním klíčem vydavatele certifikátu
11.5.16
identita majitele certifikátu identita vydavatele certifikátu
platnost certifikátu (od kdy do kdy) "public key" majitele kde lze ověřit uvedené údaje
vjj
10
důvěra •
důvěryhodnost certifikátu ?
•
důvěryhodnost vydavatele certifikátu ?
•
způsob ověřování
11.5.16
vjj
11
Certifikační Autorita •
privátní
•
podniková
•
státní
•
11.5.16
• • • •
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 vjj
12
Certifikační Autorita •
komerční
•
Thawte Consulting
• •
•
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
• 11.5.16
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
In 2010, Verisign sold its authentication business unit to Symantec for $1.28 billion vjj
13
Certifikační Autorita •
akreditovaná
•
zákon o elektronickém (digitálním) podpisu (č. 227/2000 Sb, ... )
•
11.5.16
(pod dohledem ÚOOU)
komerční zájmy převládají nad zdravým rozumem
•
akreditovaná CA
•
kvalifikovaný certifikát
•
zaručený podpis
- I.CA, PostSignum, eIdentity
vjj
14
Timestamp Server •
http://timestamp.verisign.com/scripts/timestamp.dll
•
? offline ?
11.5.16
vjj
15
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)
• •
• 11.5.16
ověří identitu uživatele vygeneruje a podepíše .CER
CA (software) je součást Windows serveru (od W2K)
vjj
16
generování klíčů a certifikátu • Certificate Creation Tool:
makecert -sv
11.5.16
myPrivKey.pvk myCert.cer
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
• • 11.5.16
vjj
18
privátní klíč • v souboru • •
*.pvk - bez hesla *.p7b - s heslem
• v CSP kontejneru • • 11.5.16
registry smart card, USB token
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.
11.5.16
vjj
20
příklad PowerShell cd cert: dir cd .\\CurrentUser ls cd .\My dir | fl 11.5.16
vjj
21
příklad • MMC Certificates Current User + Local Computer
• Gemalto MiniDriver Manager
11.5.16
vjj
22
signing
11.5.16
vjj
23
Signing Set Signer = CreateObject ("Scripting.Signer")
Signer.SignFile File, myCert.cer, "My"
11.5.16
vjj
24
Signing •
•
11.5.16
co
• • • • •
PE soubor (EXE, DLL, . . .), ale i skript, dokument e-mail jakýkoliv soubor
jak
• • • •
Visual Studio utilita vlastní program skript vjj
25
Signed Exe
11.5.16
vjj
26
11.5.16
vjj
27
1st method - file •
•
•
11.5.16
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 vjj
28
2nd method - mail • podepsaný mail
11.5.16
•
Outlook | File | Options | Trust Center | Trust Center Settings…
• •
Trust Center | E-mail Security | Settings…
•
Outlook | Options | Permissions | Sign
Change Security Settings | Choose…
vjj
29
3rd method - document • podepsaný Word dokument •
11.5.16
File | Protect Document | Add a Digital Signature
vjj
30
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
•
•
-> registry
• • • 11.5.16
utilita, midleware
mmc.exe snap-in Certificates, My user account Cerificates – Current User | Personal | Certificates Action | All Tasks | Import… vjj
31
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
• • •
11.5.16
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 vjj
32
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
48
11.5.16
vjj
49
11.5.16
vjj
50
11.5.16
vjj
51
6th method - SignTool.exe signtool
sign /f myCert.pfx /p password myPgm.exe
signtool
Timestamp
/t URL myPgm.exe
signtool
Verify /a myPgm.exe
11.5.16
vjj
53
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
54
VB script • Win32 API
LoadLibrary("Mssign32.dll"); ... GetProcAddress("SignerSignEx"); ... GetProcAddress("SignerTimeStampEx"); ... GetProcAddress("WinVerifyTrust"); 11.5.16
vjj
55
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
56
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
57
PowerShell New-SelfSignedCertificate
Get-AuthenticodeSignature
Set-ExecutionPolicy
Get-ExecutionPolicy 11.5.16
vjj
58
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
ověření podpisu • uživatel • Windows Explorer • File Properties | Digital Signatures • autor (web, tlf, osobně, ... )
• aplikace • Windows Explorer • platný certifikát 11.5.16
x
důvěryhodný majitel vjj
61
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
62
Default Authentication Verification Policy
signtool
Verify /pa myPgm.exe
> signtool.exe Verify testSigned.exe
/pa
Successfully verified: testSigned.exe
11.5.16
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 11.5.16
vjj
65
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.16
vjj
66
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 } 11.5.2016
vjj
67
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
paranoidní uživatel ? • •
•
11.5.16
bázlivý, vystrašený přehnané a nedoložené obavy o vlastní bezpečnost
důsledná podniková Bezpečnostní politika
vjj
69
PKCS • #1 • #3 • #5 • #6 • #7 • #8 • #10 • #11 • #12 • #13 • #14 • #15 11.5.16
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 vjj
70
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
71
• DSM - Data Security Management • vydavatel: Tate Int., s.r.o.
11.5.16
vjj
72