digitální podpis

Transkript

digitální podpis
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

Podobné dokumenty

TLD

TLD Vedlejší účinky? Trocha spekulace na konec! „To už bude pomalu jednodušší zapamatovat si IP adresu než správnou doménu.“ • vliv na domény jako takové? • co nástup soc. sítí, mobilních aplikací, in...

Více

Impersonation - vjj root page

Impersonation - vjj root page místo přidělení tohoto privilegia konkrétnímu uživatelskému účtu je prý vhodnější spustit zastupující aplikaci pod účtem SYSTEM, který privilegium TCB standardně má vjj

Více

Internals - vjj root page

Internals - vjj root page • user-mode asynchronous procedure call (APC) dispatcher • exception dispatcher

Více

Trigger - vjj root page

Trigger - vjj root page Routed events use one of three routing strategies: Direct: Only the source element itself is given the opportunity to invoke handlers in response. This is analogous to the "routing" that Windows Fo...

Více