» »

Preverjanje digitalnega podpisa

Preverjanje digitalnega podpisa

Urber ::

Lep pozdrav vsem !

Ker sem nov glede PKI in digitalnih podpsov, bi vas prosil za nekaj odgovorov in sicer si ne znam točno razložiti sledečih vprašanj:
1. Če na primer dobim digitalno podpisan dokument kako lahko preverim podpisnika in verodostojnost dokumenta, če sam nimam nobene progrmske opreme za digitalno podpisovanje ?
2. Ali je možno, da uporabnik sam kreira par ključev (javnega in zasebnega)in nato, da overit javnega CA oz. mu ta na polagi tega izda certifikat?
3. Če je zgoraj omenjeno možno, katera programska oprema se uporablja za generiranje ključev in kakšen je postopek za pridobitev cerifikata?
4. Kje se hrani zasebni ključ, saj se mi PC ne zdi varno mesto za hranjenje ključa?
5.Ali se en par ključev potem uporablja za podpisovanje in za šifriranje dokumentov?

Že vnaprej hvala za odgovore in vse naj v 2009 !

BlueRunner ::

1. Če na primer dobim digitalno podpisan dokument kako lahko preverim podpisnika in verodostojnost dokumenta, če sam nimam nobene progrmske opreme za digitalno podpisovanje?

Z digitalnimi podpisi dela programska oprema. Večinoma je ta takšna, da omogoča oboje. Res pa je, da ne moreš podpisovati, če nimaš lastnega digitalnega podpisa. Vendar pozor: pravilno podpisan dokument ni enako kot verodostojen dokument.

2. Ali je možno, da uporabnik sam kreira par ključev (javnega in zasebnega)in nato, da overit javnega CA oz. mu ta na polagi tega izda certifikat?

To je opis tega kako se to običajno dela. Svojega zasebnega ključa praviloma nikoli ne daš nikomur. Niti CA-ju. CA s svojim podpisom dejansko overi zvezo med tvojim javnim ključem in dodatnimo poadtki (ime, priimek, ...). Tako kot notar overi zvezo med pogodbo in tvojim podpisom na njej.

3. Če je zgoraj omenjeno možno, katera programska oprema se uporablja za generiranje ključev in kakšen je postopek za pridobitev cerifikata?

Večina sistemov in spletnih brkljalnikov potrebno programsko opremo že privzeto vsebuje. Postopek za pridobitev overitve (certifikata) je odvisen od overitelja (CA-ja).

4. Kje se hrani zasebni ključ, saj se mi PC ne zdi varno mesto za hranjenje ključa?
Zasebne ključe se lahko hrani na veliko različnih načinov, odvisno od drugih tehničnih omejitev in načina uporabe. Ključ tako je lahko zaščiten z geslom in shranjen kot navadna datoteka, pri čemer je to še vedno varno hranjenje. Po drugi strani pa je lahko shranjen v "zaščiteni obliki" kot jo pozna operacijski sistem Windows, pa ga lahko zlonamerna koda še vedno ukrade ali zlorabi v trenutku njegove uporabe.

Nekako sprejeto mnenje je, da imajo dobro razmerje med varnostjo in uporabnostjo zasebni ključi shranjeni na različnih pametnih karticah in posebnih USB ključkih (ne tistih za shranjevanje datotek). Čeprav še vedno obstaja možnost njihove zlorabe, pa njihova odtujitev samo s programsko kodo ni možna.

5.Ali se en par ključev potem uporablja za podpisovanje in za šifriranje dokumentov?
Lahko da, lahko pa tudi ne. Zaradi praktičnosti se velikokrat uporablja isti par za podpisovanje in posredno zakrivanje (šifriranje == zakrivanje), skoraj nikoli pa se takšnih ključev ne uporablja za neposredno zakrivanje. Velikokrat pa se za podpisovanje in zakrivanje (posredno ali pa neposredno) uporabljata dva različna para.

Primer posrednega podpisovanja in zakrivanja z enim asimetričnim parom ključev je TLS, kjer se asimetričen par uporabi za zakrivanje simetričnega ključa, ki se ga uporabi za dejanski prenos podatkov.

Primer podpisovanja in zakrivanja z dvema asimetričnima ključema je S/MIME, kjer se en par uporabi za podpis, drug par pa za zakrivanje vsebine sporočila.

Urber ::

BlueRunner 100 x hvala za izčrpne odgovore.
Tema je zanimiva samo na začetku kar zapletena.

Če prav razumem tvoj odgovor pod točko 3, bi tudi IE in Firefox morala omogočati generiranje para ključev.
Prosil bi te za kratka navodila kako se generira par v Firefox-u in če mogoče veš katera programska oprema za delo z digitalnimi podpisi je priporočljiva in po možnosti neplačljiva.

Še enkrat hvala !

BlueRunner ::

Če želiš pridobiti digitalno potrdilo, pri čemer se RSA par ustvari na tvojem računalniku, zaseben ključ pa nikoli ne zapusti računalnika, potem se to izvede avtomatično z vgrajenimi zmožnostmi IE ali pa FF. Tako to npr. počne SIGEN-CA. Če si želiš kar tako malo pogledati način delovanja teh komponent, pa poglej na Demo CA strani.

IE za ta namen uporablja poseben ActiveX objekt.
FF za ta namen uporablja posebno HTML kodo.

Sicer pa je postopek po korakih takšen:
1. Ustvariš RSA par
2. Ustvariš PKCS #10 zahtevo za podpis
3. Zahtevo pošlješ CA-ju
4. CA ti vrne X.509 overjen digitalen podpis

Vgrajene kontrole v FF in IE poskrbijo za korake 1-3. X.509, ki ga na koncu dobiš pa uvoziš v program, kjer imaš shranjen zaseben del RSA para.

Lahko pa seveda to narediš tudi ročno. V sistemu Windows uporabiš VBScript ali JScript skripte v katerih kličeš zgoraj omenjene API-je. V sistih Unix in njemu podobnih (Linux, OS X, ...) pa imaš na voljo OpenSSL, s katerim delaš neposredno iz ukazne vrstice.

Urber ::

Hvala za vse odgovore vidim, da me čaka kar nekaj raziskovanja oz. branja predno bom zadevo dobro razumel.
Imam pa še eno najbrž za tiste ki obvladate neumno vprašanja, ampak zanima me kje se konkretno nahaja javni ključ ? Ali je del certifikata ali je objavljen na kakšnem javnem strežniku in se nato programska oprema poveže na ta strežnik in na primer preveri oz. dešifrira prstni odtis dokumenta.

ender ::

Odvisno - pri S/MIME, se npr. javni ključ pošlje skupaj s podpisanim sporočilom.
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.

Tomas 33 ::

Javni ključ pa je navadno tudi v kakšnem x.509 direktoriju. Vsaj PostarCA in SigenCA/SigovCA imata tako narejeno.

BlueRunner ::

Certifikat == digitalno potrdilo.

Javni ključ je del X.509 digitalnega potrdila.

Pri različnih protokolih pa ga lahko dobiš na različne načine. Pri S/MIME je zapisan v PKCS #7 strukturi (podpisano in/ali zakrito sporočilo). Pri TLS se javni ključi izmenjajo pri rokovanju neposredno v obliki X.509. Pri SSH se javni ključi izmenjajo brez certifikata, neposredno kot modulo in javni eksponent.

Praviloma pa aplikacije teh digitalnih podpisov za potrebe vzpstavljanja varne povezave ne iščejo ne iščejo na centralnih lokacijacijah ali v imenikih, temveč v lokalnih seznamih. Če želiš poslati zavarovano sporočilo, boš tako moral v večini primerov sam (ročno) nekje poiskati digitalno potrdilo naslovnika in ga potem uporabiti.

Lokalni seznami teh javnih ključev pa so za različne aplikacije zapisani na različne načine in na različnih lokacijah.

X.509 digitalno potrdilo je lahko zapisano kot datoteka na disku, neposredno kot ASN1. kodirana X.509 struktura, ali pa kot PKCS #12 struktura (skupaj z zasebnim ključem). To so .cer, .crt, .pem, .p12 in .pfx datoteke.

Če uporabljaš npr. SSH, je javni ključ shranjen v eni izmed datotek v imeniku "~/.ssh".

Če uporabljaš PGP so tvoji javni ključi shranjeni v .skr (secret keyring) dateteki, javni ključi drugih pa v .pkr (public keyring) datoteki.

Če uporabljaš FF so javni ključi shranjeni v datotekah cet8.db in key3.db.

Če uporabljaš sistem Windows, potem so ti ključi shranjeni v (recimo temu) skriti in zaščiteni lokaciji na disku. Če imaš dostop do Windows XP Professional, poženi pripomoček "certmgr.msc" in si poglej katera logičan imena se pri tem upoarbljajo.

imagodei ::

Da zlorabim malo temo, vprašanje za znalce...

Na šihtu razmišljamo o striktnem hranjenju dokumentov iz procesa razvoja in proizvodnje v e-obliki. Zato bi rabili digitalni podpis in sem razmišljal o uvedbi GPG/PGP ključev.

Ali je tak način podpisovanja dovolj dober za interno rabo, ali obstajajo kakšne zakonske omejitve glede veljavnosti?
- Hoc est qui sumus -

Ziga Dolhar ::

Podpisovanje ali šifriranje, imagodei?
https://dolhar.si/

imagodei ::

Podpisovanje.

Anyone?
- Hoc est qui sumus -

Zgodovina sprememb…

  • spremenil: imagodei ()

BlueRunner ::

Za neko kvazi pravno varnost, če si to iskal pod besedo "veljavnost", morate zagotoviti najmanj:
1. da je zagotovljeno, da podisanega dokumenta ni možno spremeniti
2. da je možno ugotoviti kdo je dokument podpisal
3. da bo možno ugotoviti kdaj je bil dokument podpisan
4. da obstoja podpisanega dokumenta ne bo možno zanikati

1. in 2. točka običajno nista problematični.
3. točka je že zahtevnejši postopek, saj morate zagotoviti še dobro časnovno žigosanje, s katerim bo čim bolj nedvoumno, kdaj je dokument začel "obstajati". Včasih namreč težava ni samo v temu kdo ga je naridl, mapk tudi kdaj ga je naredil (pravočasno, prepozno, pred nekim dogodkom, po nekem dogodku)
4. točka pa je običajno najtežje, saj se s tem zagotovi, da nobena stran v sporu ne more podpisanega dokumenta uničiti in nato trditi, da ni obstajal.

Konkretna tehnična rešitev je lahko tudi PGP/GPG, vendar pa se morate odločiti kakšne točno so vaše želje in katera zagotovila potrebujete/želite. Morda točka 4. za vas morda ni pomembna, morda pa je... Morda potrebujete nekaj, kar bo zadoščalo kot notranji dokaz, morda pa potrebujete nekaj, kar bo čim lažje zagovarjati na sodišču. Skratka najprej razmislek o konkretnih pričakovanjih.

Tomas 33 ::

V osnovi je možnost za podpisovanje že v samem MS Office, mislim pa, da je tudi vgrajena v Adobe profesional. Rabite le kvalificirano potrdilo (SigenCA, PostarCA) za posameznega uporabnika. Za časovno žigosanje pa mislim, da se bolj splača uporabiti neko avtoriteto za časovno žigosanje, kot postavljati lastno kvalificirano infrastrukturov(pravtako SigenCA ter PostarCA). SigenCA potrdila so za fizične osebe brezplačna, Časovna žigosanja pa se plačujejo na žig (ki pa ne vem točne cene).

noraguta ::

Da zlorabim malo temo, vprašanje za znalce...

Na šihtu razmišljamo o striktnem hranjenju dokumentov iz procesa razvoja in proizvodnje v e-obliki. Zato bi rabili digitalni podpis in sem razmišljal o uvedbi GPG/PGP ključev.

Ali je tak način podpisovanja dovolj dober za interno rabo, ali obstajajo kakšne zakonske omejitve glede veljavnosti?


za interno rabo je dovolj check in/out ter ustrezen workflow(supervizor potrdi ustreznost dokumentov po drevesu v instanci). Če gre za prenos v tiskano obliko ted dejansko podpisovanje pa se stvari nekoliko zapletejo. saj je potrebno zagotoviti , da se podpis ne zlorablja, iz tega naslova gre tudi ves ta mamojambo okrog kriptiranja.
Pust' ot pobyedy k pobyedye vyedyot!

imagodei ::

BlueRunner,

a ni z ring of trust 4. točko precej lažje zagotovit, kot 3.?

Poleg tega, ali GPG omogoča časovno žigosanje oz. kako ga zagotoviš s kako opensource zadevo?
- Hoc est qui sumus -

BlueRunner ::

Hipotetično...

Dokumenti se shranjujejo na lokacijo X.
Na lokacijo X shranim dokument, opozarja na težavo v YYY, lepo podpisano in časovno žigosano.
V YYY pride do težav na katere sem opozarjal.
Šef, ki želi obdržati svojo plačo in službo, izbriše moj dokument in trdi, da ga nisem nikoli nikogar opozoril.
4. mi zagotavlja, da šef tega ne more narediti, to pa ni enostavno zagotoviti. Ni pa nujno, da se to zagotavlja s kakršno koli enkripcijo.

Seveda je to samo in izključno hipotetično. Če zanikanje obstoja dokumenta v vašem primeru ni težava potem se s tem pač ne ubadaš. Tukaj so bistvene izključno vaše zahteve in pričakovanja, ki jih bo moral vaš sistem izpolnjevati.

Za GPG in časnovno žigosanje pa nimam pojma kaj omogoča... Morda ga pa lahko po potrebi naredite sami. Poanta je samo v temu, da oseba X na svojem računalniku ne more premakniti ure nazaj in naprej in tako ustvariti podpisa, ki bi trdil, da je dokument obstajal, čeprav ga takrat še ni bilo in obratno.

Hipotetična rešitev:
- uporabnik da na dokument svoj podpis
- vsi podpisani dokumenti, ki spadajo v centralno hrambo se odložijo na centralni strežnik
- centralni strežnik ga podpiše (GPG) in shrani kamor spada
- centralni strežnik uporabniku vrne podpisano potrdilo (detached signature)
- centralni strežnik vodi revizijsko sled, kjer piše najmanj s katerim podpisom in kdaj je sprejel kater dokument (ID dokumenta).
- z organizacijskimi ukrepi se centralni strežnik zavaruje pred nepooblaščenimi dostopi

Tako imaš zagotovljeno:
- hrambo dokumentov
- katerih spremembe so opazne (ključ preneha veljati)
- katerih obstoj je težko zanikati (pošiljatelj dobi nazaj potrdilo o obstoju dokumenta in trenutku vnosa v sistem)
- ker podpisuje samo en računalnik, pa je ura zanesljiva
- pod pogojem, da je računalnik ustrezno zavarovan (pred šefi ;))

Za interne potrebe moraš potem poskrbeti še varovanje vsebine (avtomatizirane varnostne kopije), kar tako pa predlagam še kakšen versioning.


Seveda pa je vse to hipotetika. Če bi naštel zlorabe, ki se jih najbolj bojite, bi bilo veliko lažje svetovati kakšno rešitev iščite.

imagodei ::

Ah, fensi... Vidim, da so zadeve kar precej advanced, dobro premišljene. Drugače sem glede zanikanja v točki 4. mislil na zanikanje avtorstva, na zanikanje obstoja nisem pomislil. Je pa zanimiva situacija, ja.

Sej, v kolikor imaš nek e-arhiv, ki izvaja vse tisto, kar imaš ti predpisano pod odstavkom "Hipotetična rešitev", najbrž reši tudi to?

Drugače bi se to pri nas šli primarno zaradi Green politike, da prišparamo kako drevo (papir), je pa potem na nek način treba zagotoviti veljavnost dokumentov, kar sedaj zagotavlja podpis. Poleg tega je tu še ISO standard, ki predpisuje, da morajo zapisi pač ostati nespremenjeni, kar lahko zagotovimo ali s printanjem vedno novih verzij, ali pa z digitalnim podpisom. Nimamo pa trenutno kakšne bojazni, da bi se izogibalo odgovornosti in brisalo dokumente. Seveda, prilika dela tatu, lahko kaj takega še pride.

A pozna kdo kakšno odprtokodno rešitev na to temo (e-arhiv, ki bi omogočal tudi časovno žigosanje oz. rešitev, ki jo omenja BlueRunner zgoraj)?
- Hoc est qui sumus -

BlueRunner ::

Ali ste vezani na kakšno zunanjo certifikacijo? Če da, na katero?
Ali bodo morali biti dokumenti tudi verodostojni pred katerimi državnimi organi?

Lasten e-arhiv je sicer res rešitev, ki morda lahko reši vse vaše zahteve, ampak to je tudi vprašanje ekonomije stroškov. Dokumentni sistemi so praviloma ali dragi, ali pa jim kakšna stvar, ki jo potrebujete morda manjka.

Green gor ali dol, če si v komercialnem okolju je treba šparat in lasten e-arhiv ni nujno optimalna rešitev...

Ali si morda kdaj razmišljal o temu, da bi uporabil "hosted" storitev, ki izpolnjuje čisto vse zakonske zahteve iz ZVDAG? Pošta ima takšno rešitev in morda se vam bi jo za začetek splačalo ogledati in oceniti stroške za njeno uporabo. Obstajajo tudi alternativni ponujdniki, vendar pa njihove tehničnih in organizacijskih podatkov ne poznam, za Pošto pa si upam reči, da so tam poslovni podatki resnično varni, kolikor jih je v tem trenutku v Sloveniji tehnično možno zavarovati.

Dualis ::

Pozdravljeni !

Temo sem prebral in moram reči, da se sliši vse skupaj preprosto, ko pa se malo bolj začneš pogljabljati v delovanje pa prav nič več.
Zanima me kje se fizično nahaja privatni ključ RSA para. Ali je tudi privatni ključ tako kot javni ključ del cerifikata in če sem na primer certifikat od NLB prevzel na pametni usb ključ kako lahko preverim, da nimam privatnega ključa nekje na Pc-ju ? Oziroma, če sem prejel certifikat v browser kje se fizično nahaja privatni kjuč v PC-ju ?
Glede na podatek, da cerifikat nikoli ne zapusti pametne kartice kako to, da jaz svoj certifikat vidim v Internet explorer-ju kljub temu, da sem ga sprejel na pametno kartico ?

BlueRunner ::

Zanima me kje se fizično nahaja privatni ključ RSA para.

To je odvisno od OS-a oziroma knjižnice/aplikacijskega ogrodja.
- Microsoft CAPI jih hrani v zaščiteni datoteki v profilu uporabnika oziroma v "All Users" za sistemske SID-e.
- Java jih hrani v keystore datoteki.
- NSS jih hrani v .db7 datoteki.
- OpenSSL nima predpisanega tipa hrambe, za uporabo pa jih tipično najdeš v tekstovni datoteki.

V vseh primerih je možna tudi uporaba dodatne storjne opreme (npr. pametne kartice), kamor se ključ shrani na način, da ga naknadno več ni možno izvoziti.

Ravno tako se v vseh primerih uporablja oziroma naj bi se uporabljalo geslo za dostop do privatnega ključa. Tukaj je morda največja izjema Mozilla in njihove aplikacije, ki uporabljajo knjižnice NSS na način, da zasebni ključi privzeto niso šifrirani.

Sicer pa, če nisi ravno v poslu pisanja tovrstnih knjižnic, takšnega poglobljenega vedenja o lokaciji ključa tipično ne potrebuješ.


Ali je tudi privatni ključ tako kot javni ključ del cerifikata in če sem na primer certifikat od NLB prevzel na pametni usb ključ kako lahko preverim, da nimam privatnega ključa nekje na Pc-ju ?


Privatni ključ ni nikoli del X.509 strukture, saj bi to negiralo razloge za njen obstoj. Osnoven namen certifikata, oziroma pravilno povedano digitalnega potrdila, je prenos javnega ključa skupaj z zagotovilom tretje strani o njegovi istovetnosti.

Pri nekaterih knjižnicah pa je privaten ključ fizično shranjen v isti datoteki, kot so shranjeni tudi ostali podatki. Vendar pa so to interne podatkovne strukture knjižnic in ne "certifikati".

Za tvoj primer ne-obstoj ključa preveriš tako, da poskusiš uporabiti zaseben ključ, ne da bi imel vstavljen medij, kjer se ta ključ nahaja. Vem, da to ni 100% test, vendar pa je v Windows zelo težko prideš do "pozabljene" kopije ključa, če uničiš metapodatek, ki povezuje podatke o lokaciji privatnega ključa s podatki o javnem ključu.

Oziroma, če sem prejel certifikat v browser kje se fizično nahaja privatni kjuč v PC-ju ?

Če si ga prejel v IE in ne uporabljaš dodatne strojne opreme, potem se ključ nahaja v eni izmed datotek v imeniku %USERPROFILE%\AppData\Roaming\Microsoft\Crypto.
Če si ga prejel v Mozili in ne uporabljaš dodatne strojne opreme, potem se ključ nahaja v datoteki v profile imenuku.

Glede na podatek, da cerifikat nikoli ne zapusti pametne kartice kako to, da jaz svoj certifikat vidim v Internet explorer-ju kljub temu, da sem ga sprejel na pametno kartico ?


Certifikat oziroma digitalno potrdilo je javen podatek in kot takšen bo viden v IE (Microsft CAPI implementacija). K njemu pa so pripeti metapodatki, ki povedo kje se dejansko nahaja privaten ključ. Če ta metapodatek spremeniš ali uničiš, potem privaten ključ CAPI več ne more najti in uporabiti. Ravno tako kot privatnega ključa ne moreš uporabiti, če ni na voljo (USB dongle ni v računalniku, pravilen PIN ni bil vpisan, ...).

Verjetno te je zmedlo šavje različnih izrazov, zato bi bilo najbolje, če se vrneš k osnovam:
- digitalno potrdilo X.509 je s strani tretje osebe podpisan tvoj javen ključ
- tvoje digitalno potrdilo je možno uporabiti za preverjanje tvojega podpisa in za šifriranje sporočila, ki ga bo lahko dešifriral samo tisti, ki lahko uporablja tvoj privaten ključ.
- privaten ključ se hrani logično ločeno od tvojega digitalnega potrdilo; nikoli se ga ne prenaša okoli, oziroma zagotovo ga ne želiš posredovati komurkoli tretjemu.
- vse to velja ne glede na uporabljeno tehnologijo ali konkretno knjižnico, ki implementira kriptografske funkcije.

Dualis ::

No tole so pa odgovori nekoga, ki se res spozna. Ja vem, da z uporabniškega stališča ne potrebujem poglobljenega vedenja o teh zadevah ampak zadeva mi je zelo interesantna in bi jo rad bolj potrobno spoznal. Če imaš kakšen link do kakšne dobre strani, kjer je dobro predstavljeno delovanje teh zadev se priporočam.

Če te prav razumem, je najbolj preprost test, če se moj privatni ključ fizično nahaja v pc-ju ali ne, dostop do strani, ki zahtevajo digitalno potrdilo. V primeru, da je privatni ključ na pametni kartici in le ta ni vstavljena v čitalec, mi bo dostop do strani onemogočen. V primeru pa, da bi se privatni ključ nahajal v pc-ju, bi imel dostop do strani odobren. Ali sem te prav razumel ?
Se pravi digitalno potrdilo, je s strani CA v bistvu z njihovim ključem podpisan moj javni ključ. Moj privatni ključ pa se v primeru prevzema na pametno kartico tam tudi nahaja in ga ni mogoče izvoziti z nje, le ta pa namesto browserja opravlja funkcijo oz. je sposobna lastnega kriptografskega šifriranja. Digitalno potrdilo pa brez privatnega ključa praktično ne more opravljati nobene funkcije.
Upam, da nisem preveč pomešal stvari !

Hvala ti in lep pozdrav !

BlueRunner ::

V primeru, da je privatni ključ na pametni kartici in le ta ni vstavljena v čitalec, mi bo dostop do strani onemogočen. V primeru pa, da bi se privatni ključ nahajal v pc-ju, bi imel dostop do strani odobren. Ali sem te prav razumel ?

Da.

Se pravi digitalno potrdilo, je s strani CA v bistvu z njihovim ključem podpisan moj javni ključ.

Da.

Moj privatni ključ pa se v primeru prevzema na pametno kartico tam tudi nahaja in ga ni mogoče izvoziti z nje, le ta pa namesto browserja opravlja funkcijo oz. je sposobna lastnega kriptografskega šifriranja.

Načeloma da.

Vendar pa se v TLS/SSL za šifriranje podatkov uporablja t.i. simetričen ključ (z uporabo algoritmov 3DES, AES, RC4, ...), ki se ga strežnik in odjemalec varno dogovorita z uporabo asimetričnih ključev. Asimetrični ključi (to je RSA ključ) torej služijo za avtentikacijo ne pa neposredno za šifriranje podatkov.

SSL/TLS protokol - kako se uporablja tvoj privaten ključ

Digitalno potrdilo pa brez privatnega ključa praktično ne more opravljati nobene funkcije.

Z njegovo pomočjo lahko prejemnik podpisanega sporočila preveri, da si ga resnično podpisal ti.
Z njegovo pomočjo ti lahko nekdo pošlje šifrirano sporočilo, ki ga boš lahko prebral samo ti.
Drugih funkcij načeloma ne omogoča...

Prispodoba kako poteka asimetrično šifriranje

poweroff ::

Ja, samo jaz bi dodal še tole, da je PKI resno broken sistem. Ravno sedaj se malce ukvarjam s tem in ugotavljam, da je zaupanje PKI-ju lahko zelo tvegano.
sudo poweroff

BlueRunner ::

Ravno sedaj se malce ukvarjam s tem in ugotavljam, da je zaupanje PKI-ju lahko zelo tvegano.


Uuuu. Sedaj si mi pa odprl bolečo rano. What took you so long to realize that?

Pa tega ne mislim kot šale, temveč smrtno resno vprašanje. Kako, da si šele sedaj opazil, da je PKI oziroma X.500 serija standardov za današnje okoliščine čisto neprimerna, neučinkovita in posledično tudi v dobršnji meri nevarna izbira.

Pa po mojem mnenju ni kriv standard, temveč so krivi ljudje (halo, Nestcape! Ali je od teh kljukcev, ki so dolgoročno zaj**i spletno trgovanje), ki so standarde na napačen način aplicirali v okolje za katerega niso bili pisani.

Recept za katastrofo na vseh nivojih...

Dualis ::

Zdravo !
Natthai, BlueRunner !
Dajta malo bolj in kolikor se da razumljivo laiku razložiti, kje vidita največje nevarnosti in razloge za nezaupanje PKI !

Hvala in LP !

BlueRunner ::

Iz moje strani: PKI, ki temelji na ITU X.500 seriji standardov bazira na temu, da obstaja ena sama enotna svetovna hirearhija delegiranja zaupanja. Ta hirearhija pa je organizirana podpobno kot sistem telefonskega številčenja: preko ITU na države, znotraj držav pa preko akreditiranih ustanov (npr. pri nas bi bil to APEK).

Skratka zgodba, ki je narejena po filozofiji enega drevesa (ali gozda, če že mora biti) in enega zaupanja - vseobsegajoča slika centraliziranega hirearhičnega telefonskega sistema preslikana v moderne elektronske komunikacije. No, vsaj bila bi, če se bi X.400 smatralo za moderno obliko komunikacije.

Takšna preslikava na Internet/SMTP/IP/... preprosto ne zdrži in se jo IMHO lahko samo v nedogled flika - IMNSHO nepotreben napor, energija pa bi bila mnogo bolje potrošena, če se bi preko IETF ali W3C naredilo nekaj resnega na področju prenosa zaupanja. DNS sicer ima hirearhičnost, vendar pa ne rešuje vprašanja zaupanja. Zato bi bil kater koli sistem zaupanja, ki bi baziral na DNS v trenutni obliki, že po definiciji nevreden zaupanja.

Zgodovina sprememb…

poweroff ::

BlueRunner, v bistvu že ves čas nisem z aupal PKI ideji, ampak sodu je izbilo dno ko sem pred kratkim začel pripravljati eno malo bolj konkretno predavanje o kriptografiji.

Konkretno pa se mi je postavilo vprašanje, ko sem bral o Comodu. Problem je namreč v temle - če je nek SSL certifikat podpisan s strani CAja in je ta CA v browserju, potem se avtomatično predvideva, da je s tem certifikatom vse v redu. Saj je vendar trustworthy.

OK, Comodo je bil pač malomaren oz. pohlepen, ampak - kako hudiča se je to lahko zgodilo?

In potem greš gledat in vidiš, da je pogoj za to, da postaneš CA, da najprej svoje poslovanje uskladiš z nekimi standardi. Ki jih pa kasneje noben več ne preverja, vsaj ne v globino. Celoten security industry danes bazira na papirju - da imaš vse urejeno s pravilniki in izjavami, kako je v realnosti, pa nikogar ne zanima. In da - to uskladitev se danes tudi kupi oz. plača. Pride firma, ki ti pregelda poslovanje in priparvi pravilnike in vse skupaj lepo uskladi in uredi, da na papriju lepo izgleda. In izstavi račun.

Bistveno je pa, da plačaš. Okrog $75.000 USD, plus 10k na leto. http://wiki.cacert.org/InclusionStatus

In potem si trustworthy. Kar pomeni, da si v osnovi zaupanja vreden, če imaš dovolj denarja.

Torej, so sedaj odprte vse možnosti. Si recimo direktor tajne službe - zakaj ne bi ustanovil svojega podjetja, ki bi bilo CA. SOVA je recimo ustanovila podjetje Webs... In ko boš delal MITM, noben browser ne bo muksnil, ker bo lažni certifikat pač podpisan s strani trusted CA-ja.

Ali pa si vodja kriminalne tolpe, ki je s prodajo otroške pornografije zaslužila 2 mio. USD na mesec. In pač daš enotedenski zaslužek za to, da postaneš CA in potem lepo kradeš podatke in si "razširiš poslovanje".

Problem PKI-ja je, da ima CA-je. In da CA-jem zaupamo zgolj zato, ker so plačali za to, da so postali CA-ji.

http://www.instantssl.com/ssl-certifica...
Evo. Mater, jaz si bom resno naredil certifikat za NLB. :D

(na srečo ta ne bo deloval, ker Klik zahteva auth userja).
sudo poweroff

Zgodovina sprememb…

  • spremenilo: poweroff ()

fiction ::

In potem si trustworthy. Kar pomeni, da si v osnovi zaupanja vreden, če imaš dovolj denarja.
Tako pac (na zalost) je v danasnjem kapitalisticnem svetu: vse se meri v denarju. Ti bi najbrz raje hotel, da bi odgovorne poslali v gulage? :)

Problem PKI-ja je, da ima CA-je. In da CA-jem zaupamo zgolj zato, ker so plačali za to, da so postali CA-ji.
Sej jim ne zaupas brezpogojno. Se vedno se lahko odlocis in jih zbrises s seznama pri tebi. Na default listi so zgolj zato, ker so izdali svojo identiteto in dokazali neko odgovornost. Ne mores pa vedeti ali nima kdo slucajno prikritih zlih namenov.

Samo to, da postanes CA se ni dovolj za prestrezanje komunikacije. Za tisto rabis se nekaj denarja. Jasno pa, da vse skupaj ni problem za tajne sluzbe. Zato pa obstaja tudi "web-of-trust", kjer nimas enega centralnega CA-ja.

Dualis ::

Pozdrav !

Da malo izkoristim sicer zelo zanimivo temo ! Zanima me ali digitalno potrdilo oz. zasebni ključ spravljen na pametni kartici ali pametnem USB res zagotavlja 100% varnost (no tega itak ni pa vendar). Zanima me namreč ali lahko kdo zlorabi potrdilo v fazi ko je pametna kartica vstavljena v čitalec in se v brskalniku vzpostavi link. V bistvu se v brskalniku med cerifikati vidi dejansko certifikat oz. link certifikata na pametni kartici. Zanima me ali je v tem momentu le tega možno zlorabiti. Sicer se ga je možno brez problema izbrisati in se pojavi spet pri naslednji uporabi pametne kartice ampak to najbrž (da bi ga vestno brisal) ne dela nihče. V primeru, da je tak scenarij možen me zanima ali obstaja kakšna rešitev.

Hvala in LP

BlueRunner ::

Certifikat ali digitalno potrdilo je javni dokument, ki vsebuje "certificiran" javni ključ. "Certificiran" pomeni, da ga je podpisala neka tretja stran (CA ali kdo drug), ki mu zaupaš. Kot javni dokument ga v splošnem seveda ni potrebno varovati. Prej nasprotno.

Zato je brisanje digitalnega potrdila iz vidika varovanja skritega dela ključa nepotrebno in nesmiselno početje. Brišeš samo nekaj, kar že v osnovi ne predstavlja varnostne grožnje.

Ker je pri asimetričnem šifriranju najpomembnejši podatek skriti del ključa (private key), je tega potrebno varovati. Na PC-ih imaš dve izbiri:.Sistem po katerem se ključ hrani na računalniku (v ožjem smislu), za uporabo pa se v dešifrirani obliki pojavi v delovnem pomnilniku in CPE... od koder ga lahko tudi ukradeš.

Sistem strojne zaščite (pametne kartice in njihovi derivati na USB ključih) pa je usmerjen v to, da se skriti ključ nikoli ne pojavi v delovnem pomnilniku računalnika. To pa se doseže tako, da gre zahteva za dešifriranje/podpisovanje (to za kar skrit ključ sploh potrebuješ) skozi mini računalnik (mikrokontroler + pomnilnik + I/O), ki se nahaja na strojnem zaščitnem modulu (pametni kartici, USB ključku). Torej gre podatek ven iz računalnika na pametno kartico, kjer se ga dešifrira, nato pa pride dešifriran nazaj v računalnik. Ključa pa običajno navadnim smrtnikom iz takšnega strojnega modula ni možno pridobiti. Torej je varen pred kopiranjem.

Pomankljivost tega sistema, kot je pomakljivost vsakega šifrirnega sistema, ki je javno dostopen, pa je nadzor nad njegovo celotno vsebino. Zaradi lažjega delovanja se zaščitna fraza (običajno se temu reče PIN) za nek omejen čas ali za aplikacijo hrani v pomnilniku, da je ni potrebno vnašati za vsako malenkost. Lahko pa je rešitev takšna, kot jo poznaš tudi na mobitelih: PIN vpišeš pri vklopu (prvi uporabi), potem pa je modul "odklenjen" dokler ga ne izklopiš (kartico potegneš ven iz čitalca).

Zlonamerna koda lahko ti dve ranljivost izkoristi preprosto tako, da izkoristi prost dostop do strojnega modula in na njemu opravi, kar mora opraviti...

Kar pomeni, da tvoj scenarij zlorabe kartice, ki je v čitalniku in aktivna, še vedno deluje. Sami digitalni podpisi pa niso relevantni, ker jih sistem Windows (predvidevam, da govoriš o njemu) samo vstavi v register zato, da vzpostavi povezavo med podpisom in lokacijo njegovega pripadajočega skritega ključa (to je načeloma dobra rešitev, ki ima nekaj uporabnih posledic ne predstavlja pa velike nevarnosti). Ta pa se nahaja na kartici in, če kartice ni v čitalcu, skriti ključ ni na voljo za uporabo.

Če hočeš varen sistem, potem moraš celoten sistem zavarovati pred vnosom neavtorizirane kode - PC svet v tem trenutku tega ne zagotavlja ravno 100%. Nekateri sistemi pa so tako zelo na udaru, da je za npr. transakcije elektronskem bančništvu nujno uporabljati čisto drugačne sisteme varovanja (potrjevanje po ločenem komunikacijskem kanalu). Kar nekaj ljudi pa je že izjavilo, da za bančništvo in podobno uporabljajo poseben računalnik, za katerega praktično ni vektorjev okužbe (drug sistem, ni stalno na omrežju, ni namenjen vsakodnevni uporabi).

Zgodovina sprememb…

Dualis ::

BlueRunner 100 X hvala za strokovno razlago !

Se opravičujem za napačno izrazoslovje, ja ko sem govoril o certifikatu sem dejansko mislil na zasebni ključ.
Se pravi, če te prav razumem zasebni ključ v principu ni možno pridobiti (ukrasti) iz strojnega modula (pametna kartica, usb...).
Kritična faza za zlorabo v tem primeru je torej čas, ko je kartica v čitalniku in odlkenjena s PIN-on. V tem trenutku lahko pride do zlorabe s pomočjo škodljive programske kode. Zanima me ali v tem trenutku škodljiva programska opreme lahko pride dejansko do zasebnega ključa (ga za zlorabo lahko uporabi kasneje) ali samo izkorsti zasebni ključ na kartici (točno v tem času ko žrtev dela)npr. za finančno zlorabo. Ali mogoče veš ali so znani in opisani kje primeri takšnih zlorab ?

Se pravi, da se visok nivo vranosti lahko zagotovi samo z zelo izoliranimi PC-ji.

Hvala in LP

poweroff ::

Škodljiva programska koda v tem primeru lahko izkoristi zasebni ključ na kartici. Dol ga načeloma skopirati ne more. Načeloma, ker se včasih izkaže, da nekatere pametne kartice oz. pametni ključki nekatere stvari delajo malo po svoje. Bo morda BlueRunner povedal kako točno po specifikacijah delujejo kakšni pametni ključki... :D

Sicer je pa problem varovanja čisto drugje. Večina slovenskih on-line bank (ali pa kar vse) ne omogočajo digitalno podpisovanje transakcij. Paš pa se certifikat uporabi samo za prijavo v sistem. Ko pa si logiran v sistem, pa lahko poljubno izvajaš transakcije.

Problem je to, da obstajajo načini kako ukrasti sejo brskalnika. Več ne bom povedal, ampak za foro vpiši v ukazno vrstico naslednji ukaz:
ping localhost.nlb.si
In si kaj preberi o CSFR napadih.

Banke sicer zadeve "rešujejo" tako, da sejo zaklenejo na IP naslov (+session cookie), ti dodelijo dodatno geslo ali celo omogočijo "fake mTAN" (se pravi, da dobiš obvestilo o transakciji preko SMS, ne pa da se mobilni telefon uporabi kot potrditev transakcije). Ampak to so precej polovične rešitve.

Načeloma pa ja. če hočeš visok nivo varnosti, uporabiš virtualno mašino, ki je maksimalno zaščitena in jo uporabiš (prižgeš) samo za e-bančništvo in nato ugasneš.
sudo poweroff

brodul ::

Še mojih 6 centov.

Pri varnosti je tako, vse je odvisno od paranoje (rečimo, da je to nevtralna lastnost, ki nosi tako negativne in pozitivne stvari) človeka.

Sam se realno počutim varnega, če delam iz svojega računala. Svoje GPG in SSH ključe imam v lastnem homu, zaščitene z gesli. Moj public GPG kluč najdete pgp.mit.edu strežniku (če želite testirat enkripcijo, vam bom odgovoril).
Za browser imam Firefox. Če sem na nezaščitenih javnih točkah imam kriptiran SOCKS do doma. Iz mojega računalnika je v mrežo odprt en port(22). Diski niso kriptirani.
In meni osebno se mi zdi to dovolj.

100% varnosti ni. In po večini delajo ljudje pri varnosti dost bolj bedne napake in jim ni treba hardwarsko krasti podatke.
Ljudje se pri strežnikih delajo nevem kakšne varnostne sisteme, potem pa bozabijo blokirati execute v mapah kamor lahko uploadaš razne skripte.
Potem ti tudi HW random generator ne pomaga.
Pretending to be a mature adult is so exhausting.

neki4 ::

sem si naložil to digitalno potrdilo in je tudi vpisano v IE pod tools/internet options/certificates. ampak sem tudi prej kliknil na sosedni gumb, ker piše clear ssl state, zdej pa nevem ali je to problem da mi noče dostopat na račun(ker piše kot da nimam še digitalnega potrdila, čeprav piše da ga imam aktiviranega v IE) ali je problem čisto drugje.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Backup in uvoz SIGEN-CA certifikata

Oddelek: Omrežja in internet
4412375 (1264) kow
»

Halcom ena za vse kako z njo podpisovati pošto v Thunderbirdu in drugje

Oddelek: Informacijska varnost
152717 (2114) mat xxl
»

Certifikat !

Oddelek: Informacijska varnost
278994 (3798) SeMiNeSanja
»

Prevzemanje digitalnega potrdila

Oddelek: Informacijska varnost
71338 (1054) metalc

Več podobnih tem