» »

Šifriranje podatkov v bazi

Šifriranje podatkov v bazi

tx-z ::

Recimo da imamo v bazi eno tabelo uporabnikov (username + password) in pa neko tabelo zapisov.

V osnovi to ni OK, ker je vse plaintext, kar pomeni da če ima kdo dostop do userjev, dobi dostop do profila in dobi dostop do zapisov. Če ima kdo dostop do baze ima do zapisov.

Zato ideja->Šifriram vse podatke z nekim ključem. Ok, vse lepo in prav, ampak takoj ko nekdo dobi ključ, so zopet vsi podatki vidni.

Potem nova ideja->Šifriram podatke v tabeli tistih zapisov s ključem, ki je hkrati tudi geslo. Ampak če imam geslo šifrirano z znanim ključem spet lahko dešifriram geslo in dobim ven podatke.

Kako pristopit temu? Predvidevam da je druga ideja dobra, ampak samo pod pogojem da ne morem dešifrirat ključa. Ampak kako pa potem lahko dešifriram podatke?

Skratka tole me zanima - teoretična razlaga(za praktičen primer) kako to rešit? Hvala za odgovore! :)
tx-z

AnotherMe ::

ne shranjuješ gesel?

jernejl ::

Gesla se shranijo kot hash. Iz hasha ni mogoče dobiti gesla, zato pa morajo aplikacije za preverjanje gesel primerjati hash gesla iz baze z hash-em vnesenega gesla.

Zakaj bi pa šifriral ostale podatke v tabeli, pa mi ni povsem jasno. Če nekomu daš dostop do baze (oz. select privilegij do tabele), potem je logična posledica, da lahko gleda vsebino te tabele.
Tako da ne razumem smisla, zakaj bi nekomu dal dostop do baze, potem pa šifriral podatke, da jih ne bi mogel gledati?

Yacked2 ::

jernejl je izjavil:

Gesla se shranijo kot hash. Iz hasha ni mogoče dobiti gesla, zato pa morajo aplikacije za preverjanje gesel primerjati hash gesla iz baze z hash-em vnesenega gesla.

Zakaj bi pa šifriral ostale podatke v tabeli, pa mi ni povsem jasno. Če nekomu daš dostop do baze (oz. select privilegij do tabele), potem je logična posledica, da lahko gleda vsebino te tabele.
Tako da ne razumem smisla, zakaj bi nekomu dal dostop do baze, potem pa šifriral podatke, da jih ne bi mogel gledati?


Pa ne na salt pozabit, sploh če imaš zraven shranjene tudi "namige" za geslo.
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

SeMiNeSanja ::

Načeloma že razumem, da je lahko zanimivo šifrirati (vsaj nekatere) podatke v bazi, tako da bi v primeru napake v spletni aplikaciji bili ukradeni podatki neuporabni.

Takšni podatki bi lahko bili vsi osebni podatki, zlasti pa številke kreditnih kartic.

Da se gesla shranjuje kot zasoljen hash, bi moralo danes biti počasi že vsakomur jasno, tudi če ni programer. Bi se pa moralo šifrirati tudi najbolj občutljive podatke.

Ne moreš pa te podatke šifrirati tako, da bodo berljivi izključno za določenega uporabnika. Čim bi šifriranje vezal na uporabniško ime ali password hash, bi zašel v precejšne težave, čim bi se spremenilo deslo ali uporabniško ime, saj bi moral vse njegove zapise prešifrirati.

Poleg tega potrebuje dostop do teh podatkov 'backend' sistem (da npr. lahko banki posreduje transakcijo s tvojo številko kreditne kartice).
To pa potem še dodatno zakomplicira šifriranje z nekim ključem, ki bi bil drugačen za vsakega uporabnika.

Še bolj pisano potem postane, če želiš delat kakšen search po celi bazi, saj bi moral vsak zapis dešifrirat z drugim ključem.

Ne rečem, da zadeva nikakor ni izvedljiva. Zagotovo tudi kje obstaja kaj takega. Ampak za nekoga, ki šele študira, kako je treba gesla shraniti, je to že na nivoju znanstvene fantastike.

Ker nisem programer, se seveda lahko tudi motim in te bodo programerji poučili o čem drugem.

jype ::

tx-z> Potem nova ideja->Šifriram podatke v tabeli tistih zapisov s ključem, ki je hkrati tudi geslo. Ampak če imam geslo šifrirano z znanim ključem spet lahko dešifriram geslo in dobim ven podatke.

Šifriraj podatke o vsakem uporabniku z njegovim naključno generiranim ključem, njegov ključ pa z njegovim geslom, njegovega gesla pa si ne zapomni. Tako bo napadalec moral počakat, da se uporabnik prijavi, da bo prišel do podatkov, kar močno poveča časovno zahtevnost napada, katerega cilj so podatki o uporabnikih.

Ice-Heki ::

SeMiNeSanja je izjavil:

Takšni podatki bi lahko bili vsi osebni podatki, zlasti pa številke kreditnih kartic.

A številke kreditnih kartic shranjujemo v bazo?

SeMiNeSanja ::

Ice-Heki je izjavil:

SeMiNeSanja je izjavil:

Takšni podatki bi lahko bili vsi osebni podatki, zlasti pa številke kreditnih kartic.

A številke kreditnih kartic shranjujemo v bazo?

Kako pa misliš, da Paypal ve številke tvojih kartic? Saj jih ne vnašaš vsakič posebej.

Seveda pa to s seboj prinaša precej tveganja. Tveganje, ki ga je marsokdo že podcenjeval, kar je potem imelo za posledico odtekanje stotisočev številk kreditnih kartic in podatkov o njihovih lastnikih.

Pa koneckoncev... kako naj bi deloval katerikoli e-banking, če podatki nebi bili na voljo v bazah?

Žal ponavadi šele ob uhajanju podatkov izvemo, kako (slabo) so bili ti podatki zaščiteni.

Zgodovina sprememb…

Ice-Heki ::

To že (PayPal, eBanking, itd.). Ampak ali te podatke shranjujete tudi npr. če ste lastniki spletnih trgovin?

stb ::

Ice-Heki je izjavil:

To že (PayPal, eBanking, itd.). Ampak ali te podatke shranjujete tudi npr. če ste lastniki spletnih trgovin?

To mora pretehtati vsaka trgovina, razmerje med olajšanjem nakupovanja (praktično 1-click) in odgovornostjo, ki si jo s tem naprtijo (podvrženi so strožjim varnostnim standardom PCI, nekatere kupce to lahko celo odvrne, nekateri nakupi bodo opravljeni nenamerno in blago nato vrnjeno...).

Ni pa da bi šifriral kar vse podatke (vsaj email recimo rabiš v plain text obliki če želiš pošiljati kaka obvestila ali podpreti resetiranje gesel), ampak le najbolj kritične.

SeMiNeSanja ::

stb je izjavil:

To mora pretehtati vsaka trgovina, razmerje med olajšanjem nakupovanja (praktično 1-click) in odgovornostjo, ki si jo s tem naprtijo (podvrženi so strožjim varnostnim standardom PCI,...

Ali si že slišal za koga pri nas, ki bi mu 'težili' zaradi (ne)izpolnjevanja določil PCI standarda?

Sem se pred časom pogovarjal z eno gospo na zvezi bank, ki mi je povedala, da celo eden od velikih e-payment ponudnikov pri nas ne izpolnjuje določila PCI standarda.

Pri tem v principu PCI niti ni tako zelo grozljivo 'zadrgnjen'. Zahteve so dokaj smiselne za praktično vsako organizacijo, tudi če ne baranta s kreditnimi karticami. Je pa res, da se iz leta v leto zaostrujejo.

Problem pa je, da se PCI pri nas ne jemlje resno - vsaj jaz imam tak občutek. Medtem ko je v Ameriki cela panika zaradi PCI-ja in sankcij, ki so z njim povezane, se pri nas o njemu bore malo govori.
Če naročiš terminal za kartično poslovanje, te nihče ne vpraša, če si naredil kakšen self-assessment. Glavno, da ga prevzameš in plačuješ članarino in narediš čim več prometa. J***š PCI.

Po moje je PCI preko luže veliko pripomogel k boljši razširjenosti razumevanja, kaj so minimalne zahteve za varovanje omrežij. Za nek TP-Link je tam jasno, da ne izpolnjuje PCI zahtev in ga ne boš našel tam, kjer se držijo standarda. Pri nas pa tako in podobno robo najdeš na vsakem koraku, pa še nikomur ni jasno, zakaj vraga naj nebi bil 'optimalen' za poslovna okolja.

Ampak če se vrnemo nazaj na baze - koneckoncev tudi ni nujno, da so vsi 'kritični' podatki na voljo v tisti bazi, ki je direktno ob web serverju v kakšni DMZ coni. Kritične lahko tudi umakneš na drug strežnik v ločeno bazo, kateri potem posvečaš posebno pozornost, da nebi mogli podatki 'pobegniti'.

jype ::

SeMiNeSanja> Ampak če se vrnemo nazaj na baze - koneckoncev tudi ni nujno, da so vsi 'kritični' podatki na voljo v tisti bazi, ki je direktno ob web serverju v kakšni DMZ coni. Kritične lahko tudi umakneš na drug strežnik v ločeno bazo, kateri potem posvečaš posebno pozornost, da nebi mogli podatki 'pobegniti'.

Ja, pogosto se zgradi poseben API, ki je bistveno bolj omejen, strežnike pa loči na načine, ki močno otežijo prestopanje omejitev.

SeMiNeSanja ::

jype je izjavil:

SeMiNeSanja> Ampak če se vrnemo nazaj na baze - koneckoncev tudi ni nujno, da so vsi 'kritični' podatki na voljo v tisti bazi, ki je direktno ob web serverju v kakšni DMZ coni. Kritične lahko tudi umakneš na drug strežnik v ločeno bazo, kateri potem posvečaš posebno pozornost, da nebi mogli podatki 'pobegniti'.

Ja, pogosto se zgradi poseben API, ki je bistveno bolj omejen, strežnike pa loči na načine, ki močno otežijo prestopanje omejitev.

Vsaj enkrat, da se strinjava... ;)


Vredno ogleda ...

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

Evropski ponudniki e-mail in "oblačnih" storitev (zasebnost itd.) (strani: 1 2 )

Oddelek: Informacijska varnost
8631737 (29993) SeMiNeSanja
»

Sony še vedno na udaru (strani: 1 2 3 )

Oddelek: Novice / Varnost
13127184 (24824) ABX
»

Sum vdora v LastPass povzročil množično menjavo gesel

Oddelek: Novice / Varnost
3013779 (12678) poweroff
»

Odkrita resna ranljivost v Dropboxu (strani: 1 2 )

Oddelek: Novice / Varnost
6026068 (21487) ginekolog
»

Sony PlayStation Network nazaj prihodnji teden, številke kreditnih kartic so bile šif

Oddelek: Novice / Zasebnost
4914570 (13230) opeter

Več podobnih tem