Tietokannan salaus - salaustekniikan käyttö tietokantaan (DB) tallennetun tiedon muuntamiseksi salatekstiksi , mikä tekee mahdottomaksi lukea henkilöt, joilla ei ole salausavaimia [1] .
Tärkeimmät lähestymistavat voidaan luokitella sen mukaan, millä tasolla salaus tapahtuu [1] [2] :
Kutsutaan myös "läpinäkyväksi" ( englanniksi Transparent Database Encryption , TDE). Tätä tekniikkaa käytetään esimerkiksi Microsoftin ja Oraclen tuotteissa tietokantatiedostojen sisään-/ulostulon salaamiseen ja salauksen purkamiseen . Tiedot salataan ennen kuin ne kirjoitetaan levylle ja puretaan salauksen aikana, kun ne luetaan muistiin, mikä ratkaisee "inaktiivisen" tiedon suojausongelman, mutta ei takaa tiedon turvallisuutta viestintäkanavien kautta siirrettäessä tai käytön aikana. TDE:n etuna on, että salaus ja salauksen purku ovat läpinäkyviä sovelluksille, eli niitä ei tarvitse muokata [3] [4] [5] .
TDE:tä sovelletaan tietokantatiedostoihin ja tapahtumalokiin sivutasolla. Sivut salataan erityisellä symmetrisellä tietokannan salausavaimella ( Database Encryption Key ), joka on suojattu päätietokantaan tallennetulla varmenteella, joka on salattu pääavaimellaan, tai epäsymmetrisellä avaimella, joka on suojattu Extensible Key Managerilla ( EKM ). TDE:n käyttö ei lisää salatun tietokannan kokoa, ja suorituskykyvaikutus on mitätön [3] .
TDE:tä sovelletaan tietokantatiedostoihin saraketasolla. Salaukseen valitut sarakkeet sisältävälle taulukolle luodaan pääavaimella suojattu symmetrinen salausavain, joka on tallennettu turvalliseen paikkaan tietokannan ulkopuolella, jota kutsutaan lompakoksi ( English Wallet ). Taulukoiden salatut avaimet ovat tietosanakirjassa [ 4 ] .
On tärkeää huomata, että perinteiset tietokannan salausmenetelmät yleensä salaavat ja purkaavat tietokannan sisällön, jota hallinnoi tietokannan hallintajärjestelmä, joka toimii käyttöjärjestelmän päällä [6] . Tämä vähentää tietojen turvallisuutta, koska salattua tietokantaa voidaan käyttää avoimessa tai mahdollisesti haavoittuvassa käyttöjärjestelmässä . Esimerkiksi Microsoft käyttää Encrypting File System (EFS) -tekniikkaa salauksen tarjoamiseen tiedostotasolla . Jokainen objekti on salattu ainutlaatuisella tiedostosalausavaimella , joka on suojattu käyttäjän varmenteella. Tämä varmenne voi olla yhdistelmä, jolloin tiedostoon pääsee useampi kuin yksi käyttäjä. Salausalueen laajenemisen vuoksi EFS:n käyttö voi heikentää suorituskykyä ja vaikeuttaa hallintoa, koska järjestelmänvalvoja tarvitsee pääsyn käyttöjärjestelmään käyttääkseen EFS:ää [7] [8] .
Yksi esimerkki tietokantatason salauksesta on saraketason salaus ( Eng. Column-Level Encryption ), joka kirjoittaa jo salatut tiedot tietokantaan ja itse tietokanta - ilman lisäsalausta - varastoon. Saraketason salauksen ominaisuus on yhden avaimen käyttö yhden sarakkeen tietojen käsittelyssä. Avaimia voidaan määrittää käyttäjille ja suojata salasanalla automaattisen salauksen purkamisen estämiseksi, mutta tämä vaikeuttaa tietokannan hallintaa. Saraketason salausta käytettäessä asiakassovelluksiin on tehtävä muutoksia. Lisäksi tietokannan suorituskyky heikkenee [4] [7] .
Sovellustason salauksessa salausprosessin suorittaa sovellus, joka luo tai muokkaa dataa, eli se tapahtuu ennen kuin se kirjoitetaan tietokantaan. Tämä lähestymistapa on joustavampi, koska sovellus tietää käyttäjien roolit tai käyttöoikeudet sekä tiedot siitä, mitkä tiedot ovat yksityisiä [8] [9] .
Yksi sovellukseen sisäänrakennetun salauksen tärkeimmistä eduista on, että viestintäkanavien kautta siirrettävän tiedon suojaamiseen ei tarvitse käyttää lisäratkaisua, koska se lähetetään jo salattuna. Toinen tämän menetelmän plussa on, että luottamuksellisten tietojen varastaminen vaikeutuu, koska hyökkääjällä on oltava pääsy sovellukseen voidakseen purkaa tietokantaan tallennettujen tietojen salaus [8] [9] .
Salauksen toteuttamiseksi sovellustasolla on tarpeen tehdä muutoksia paitsi itse sovellukseen myös tietokantaan. Myös tietokannan toiminnassa voi esiintyä ongelmia, mikä esimerkiksi menettää indeksointi- ja hakukyvyn. Toinen haittapuoli on avainten hallinta järjestelmässä, jossa on tällainen salaus. Koska useat sovellukset voivat käyttää tietokantaa, avaimet on tallennettu moniin paikkoihin, joten niiden huono hallinta voi johtaa tietojen varastamiseen tai kyvyttömyyteen käyttää niitä. Tämän lisäksi, jos avainta on vaihdettava, sinun on ensin purettava kaikkien tietojen salaus vanhalla avaimella ja sitten salattava se uudelleen uudella avaimella [8] [9] .
Se on yksi esimerkki sovellustason salauksesta. Arkkitehtuurista voidaan erottaa [10] : välityspalvelin , johon on suojattu pääsy sovelluksesta, palvelin, jossa on SQL -tietokanta, jonka sarakkeet on salattu. Välityspalvelimen pyynnöt menevät tälle tietokantapalvelimelle (esim. DBMS-palvelin) kanavan kautta, jonka oletetaan olevan suojaamaton. Erona yllä olevaan saraketason salaukseen on se, että palvelin ei pura saraketietojen salausta, eikä välityspalvelin lähetä avaimia tai muuta tietoa, jonka avulla palvelin voi purkaa sarakkeiden salauksen. Tietokannan sisältävän palvelimen näkökulmasta välityspalvelimelta tulevat pyynnöt näyttävät tavallisilta SQL-tietokannan kanssa työskentelyn komentoilta. Siksi palvelimella voi olla valmis ratkaisu esimerkiksi tekijöiden käyttämän CryptDB MySQL :n muodossa . Koska DBMS-palvelin voi suorittaa toimintoja vain salatuille tiedoille, välityspalvelimen tehtävänä on muuntaa käyttäjien pyynnöt vastaaviksi pyynnöiksi ja toiminnoiksi, jotka toimivat salatulla tiedolla. Tämä ongelma ratkaistaan erilaisten salausluokkien avulla, joiden yhteinen piirre on selkotekstien tietyn ominaisuuden säilyminen. Jotkut niistä on lueteltu alla. [kymmenen]
Deterministiset salaukset englanninkielisestä deterministisesta salauksesta. Se koostuu kaikista salakirjoista, joilla on seuraava ominaisuus: samalla avaimella samat selkeät tekstit myös salataan samalla tavalla.
Siksi, jos kaikki sarakkeen tiedot on salattu tällaisella salauksella, pelkän datasarakkeen toiminnot, jotka vaativat kahden arvon vertailua, ovat samat kuin salatussa datasarakkeessa. Jos käyttäjä esimerkiksi haluaa laskea rivien määrän, jonka Nimi-sarakkeen arvo on yhtä suuri kuin "Liisa", välityspalvelin korvaa vain käyttäjän pyynnön parametrit, ei operaattoreita. "Alice" - vastaavaan salatekstiin. Tämän salausluokan avulla voit suorittaa kyselyitä, jotka sisältävät muun muassa: COUNT, GROUP BY, DISTINCT ja SELECT tasa- tai epäyhtälöpredikaatilla. Esimerkki deterministisesta salauksesta on lohkosalaus , jossa on kiinteä alustusvektori (englanniksi IV, alustusvektori) [11] .
HOM-luokkaHomomorfiset salaukset, englannin homomorfisesta salauksesta. Tämä luokka koostuu salakirjoista, jotka [12] muuntavat sarakkeiden arvot siten, että niiden toiminto vastaa yksilöllisesti, mahdollisesti toista salatekstien toimintoa. CryptDB:n arkkitehtuuri käyttää Peye-salausjärjestelmää , jonka avulla voit laskea arvojen summan salatekstin, jos kunkin niistä tunnetaan, nimittäin:
Siksi, jos sarake on salattu homomorfisella salauksella, valittujen arvojen summa voidaan laskea purkamalla vastaavien salatekstien tulo. Siksi välityspalvelin kääntää käyttäjän SUM-pyynnön tuotteeksi (ilmaistuna EXP:llä, LOG:lla), ja saatuaan tietokantapalvelimelta vastauksen, purkaa sen salauksen ja lähettää sen käyttäjälle.
OPE-luokkaJärjestystä säilyttävät salaukset, englanninkielisestä järjestystä suojaavasta salauksesta. Tämän luokan salaus toimii sarakkeen tietoihin siten, että .
Siksi, jos sarake on salattu OPE-luokan salauksella, sarakkeen selkeälle tekstille suoritettu ORDER BY -kutsu vastaa salatun sarakkeen kutsua. Tällaisille tiedoille on käytettävissä operaatioita arvoalueella BETWEEN sekä MIN, MAX, RANK. Esimerkki tällaisesta salauksesta olisi kokonaisluvun p yhdistäminen luvuksi c, joka on p pseudosatunnaisen positiivisen luvun summa [13] .
Kryptohyökkäyskestävyys
Edellä kuvattujen salausluokkien ja erityisesti arkkitehtuurin haittoja ovat haavoittuvuus tietyille tunnetuille hyökkäyksille. Naveed , 2015, ottaa huomioon hyökkääjän, jolla on pääsy salakirjoituksiin ja jonkin verran ennakkotietoa selkeän tekstin jakelusta. Oletus pätee tosielämässä, esimerkiksi tietokanta voi sisältää lääketieteellistä tietoa ja hyökkääjällä voi sen lisäksi, että hän pääsee suoraan salattuun tietokantaan, tietoa väestölaskennasta tai vastaavista laitoksista. Eli tietää esimerkiksi veriryhmien jakautuminen. Perustuen oletukseen siitä, mitä hyökkääjän käytettävissä on tarkalleen, kirjoittajat ehdottavat useita menetelmiä tietojen palauttamiseksi sarakkeissa, jotka on salattu sekä DET-salauksella että OPE-salauksella. Koska deterministinen salaus kartoittaa saman salatekstin samaan arvoon sarakkeessa, salatun sarakkeen tietojen taajuusjakauma vastaa tavallisen tekstin taajuusjakaumaa. Klassisella taajuusanalyysillä on monimutkaisuus , jossa N on koko selkeiden tekstien joukon koko. Tämä tarkoittaa, että tällainen hyökkäys on tehokas, jos N on pieni. Taajuusanalyysin kaltaista hyökkäystä sovelletaan sarakkeeseen, jossa on järjestys säilyttävä salaus, mutta tiettyjen taajuusarvojen sijasta sarakkeen salatekstijoukon sijoitusta verrataan sanan järjestykseen selväkielisessä joukossa. Hyökkäys, kuten todettiin, on tehokkain sarakkeissa, joissa mahdollisten selkeiden tekstien joukko on edustettuna täydellisimmin [14] .
Lisäksi on kehitetty empiirinen jakelufunktio (ECDF) -hyökkäysmenetelmä, joka soveltuu paremmin epätasaisesti esitettyä salatekstiä sisältävän sarakkeen hyökkäämiseen, sekä menetelmä, joka ottaa huomioon useiden sarakkeiden tiedot sekä niiden korrelaation [15] . Lisäksi Minaudin teos 2019 esittelee OPE-sarakkeessa kaavion tietojen osittaiselle palautukselle, jos kaikista kyselyistä on vain tietoa. Algoritmi, toisin kuin edelliset, on skaalautuva, koska N [14] ei sisälly sen kompleksisuusestimaattiin .
Lisäksi DET- tai OPE-salauksilla, kuten kaikilla deterministisilla salakirjoilla, ei ole erottamattomuusominaisuutta. Ymmärtääkseen, onko tietty salateksti salattu viesti vai tarvitseeko hyökkääjän pyytää salatekstiä molemmille viesteille, mikä on mahdollista, jos käytetään avointa salausta, ja verrata annettuun salatekstiin H [14] .
Tietojen salaamiseen on kaksi päätapaa: symmetrinen ja epäsymmetrinen. Pääperiaate niissä on, että lähetin ja vastaanottaja tietävät etukäteen salausalgoritmin ja viestin avaimen, tietämättä mikä tieto on merkityksetön merkkijoukko [8] [16] .
Symmetrinen salaus (yksityisen avaimen salaus) on vanhin ja tunnetuin menetelmä. Tietokantojen yhteydessä se sisältää yksityisen avaimen, jota käytetään tietokantaan tallennettujen ja sieltä haettujen tietojen salaamiseen ja salauksen purkamiseen. Tämä avain muuttaa tiedot siten, että sen lukeminen ilman salauksen purkamista tulee mahdottomaksi. Tämän menetelmän ilmeinen haittapuoli on, että luottamuksellisia tietoja voi vuotaa, jos avain on sellaisten henkilöiden käsissä, joilla ei pitäisi olla pääsyä tietoihin. Kuitenkin vain yhden avaimen käytöllä salausprosessissa on tämän tekniikan nopeus ja helppokäyttöisyys [8] [16] [17] .
Ongelma salaisen avaimen saamisesta vääriin käsiin siirrettäessä viestintäkanavia pitkin, mikä yksityisen avaimen salauksella on, ratkaistaan epäsymmetrisellä salauksella (julkisen avaimen salaus), jossa on kaksi toisiinsa liittyvää avainta - tämä on avainpari . Julkinen avain on kaikkien tiedossa ja se voidaan välittää suojaamattoman viestintäkanavan kautta. Toinen, yksityinen avain, pidetään salassa ja on yksilöllinen jokaiselle käyttäjälle. Julkista avainta käytetään tietojen salaamiseen ja yksityistä avainta käytetään salauksen purkamiseen. Epäsymmetrinen salaus on turvallisempi kuin symmetrinen salaus, mutta samalla se on huomattavasti hitaampi [8] [16] . Muita haittoja ovat se, että deterministinen epäsymmetrinen salaus, jota käytetään tietokannoissa, joissa salaus tapahtuu sovelluskerroksessa (katso CryptDB ), on alttiina hyökkäyksille valitun selkeän tekstin perusteella [18] .