FI121487B - Tiedon hajauttamista hyödyntävä salausmenetelmä - Google Patents

Tiedon hajauttamista hyödyntävä salausmenetelmä Download PDF

Info

Publication number
FI121487B
FI121487B FI20080681A FI20080681A FI121487B FI 121487 B FI121487 B FI 121487B FI 20080681 A FI20080681 A FI 20080681A FI 20080681 A FI20080681 A FI 20080681A FI 121487 B FI121487 B FI 121487B
Authority
FI
Finland
Prior art keywords
data
block
hash
memory device
physical
Prior art date
Application number
FI20080681A
Other languages
English (en)
Swedish (sv)
Other versions
FI20080681A0 (fi
Inventor
Ville Ollikainen
Markku-Juhani Saarinen
Original Assignee
Envault Corp Oy
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Envault Corp Oy filed Critical Envault Corp Oy
Priority to FI20080681A priority Critical patent/FI121487B/fi
Publication of FI20080681A0 publication Critical patent/FI20080681A0/fi
Priority to PCT/FI2009/000035 priority patent/WO2010031894A1/en
Priority to US13/120,002 priority patent/US8555088B2/en
Priority to EP09814136.9A priority patent/EP2350908B1/en
Application granted granted Critical
Publication of FI121487B publication Critical patent/FI121487B/fi
Priority to US14/031,035 priority patent/US9009496B2/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

« -1 -
Tiedon hajauttamista hyödyntävä salausmenetelmä Keksinnön ala 5 Keksintö liittyy tiedon salaamiseen ja kryptografiaan. Eräs alan käsikirjoista on Handbook of Applied Cryptography (Discrete Mathematics and Its Applications), kirjoittajina Alfred Menezes, Paul van Oorschot ja Scott Vanstone (CRC-Press, 1996, ISBN 978-0849385230).
10 Erityisesti keksintö liittyy lohkomuotoisen tietotaltion salaamiseen, tietotaltioon tallennetun tiedon piilottamiseen, piilotetun tiedon olemassaolon valikoivaan kiistämiseen sekä tietotaltion sisällön ver s iohal Untaan.
15 Keksinnön taustaa
Tarkastellaan ensin lohkomuotoisen tiedon käsittelyä.
Lohkomuotoinen tietotaltio koostuu joukosta samankokoisia lohkoja, 20 joihin tietoa tallennetaan. Jokaisella lohkolla on oma tunnisteensa, yleensä järjestysnumero. Tästä tunnistenumerosta käytetään yleisesti nimitystä lohkonumero.
Tyypillinen esimerkki lohkomuotoisesta tietotaltiosta ovat 25 tietokoneiden massamuistit, esimerkiksi kiintolevyt (HDD = Hard Disk Drive) tai puolijohdetekniikkaan perustuvat pysyväismuistit (SSD = Solid State Disk). Kun tietoa kirjoitetaan massamuistiin tai luetaan sieltä, määritellään kirjoitus- tai lukukohta loogisen lohkonumeron (LBA) perusteella. LBA:ssa lohkot numeroidaan peräkkäisessä 30 järjestyksessä nollasta alkaen, ja tyypillinen lohkon koko on 512, 1024 tai 2048 tavua.
LBA:n lisäksi käytetään myös muita lohkon tunnisteita, esimerkiksi vanhoissa PC-laitteiden MFM-kiintolevyissä (Modified Frequency 35 Modulation) oli käytössä CHS-osoitus (cylinder-head-sector), jossa levyn raidalla, lukupäällä ja levysektorilla oli kullakin oma tunnisteensa. Parametreja CHS:ssä on siis kolme. CHS-osoituskin « -2- voidaan muuttaa LBA:ksi, kun tiedetään maksimit vähintään kahdelle näistä kolmesta parametrista. CHS:n ja LBA-lohkonumeron (lba) välillä pätee 5 lba = (((c*MAX_H) + h) * MAX_S) + s - 1, (i) jossa MAX_H on lukupäiden ja MAX_S sektorien lukumäärä, ja c, h, ja s lohkon CHS-osoituksen parametrit raita, lukupää ja levysektori.
10 Yleisesti voidaan todeta, että on olemassa laaja joukko tietotaltioita joissa lohkon osoitus voidaan tavalla tai toisella muuntaa loogiseksi lohkonumeroksi.
Lohkomuotoisen tietotaltion päälle luodaan useimmiten 15 tiedostojärjestelmä, jonka avulla tietoa voidaan tallentaa tiedostoina. Tiedostojärjestelmä huolehtii muun muassa loogisten lohkonumeroiden määrittämisestä tiedon lukua ja kirjoitusta varten.
Yleisimmät tiedostojärjestelmät tukevat poistetun tiedoston 20 palauttamista, mutta yleensä koko taltion palauttaminen johonkin edeltäneeseen tilaan on työlästä, ellei peräti mahdotonta.
Toiseksi tarkastellaan lohkomuotoisen tiedon salausta.
25
Lohkomuotoisen tiedon salaamiseen käytetään tyypillisesti jotain lohkomuotoista salausalgoritmia, kuten AES-256, jonka avulla ilmiteksti (plaintext) muokataan salatekstiksi (ciphertext) salausavainta käyttäen. Monissa salausalgoritmeissa salauslohkon koko 30 on kuitenkin pienempi kuin tyypillinen tietotaltion lohkon koko, esimerkiksi mainitussa AES-256:ssa se on 16 tavua. Tästä syystä yhden tietotaltion lohkon salaamiseksi täytyy yhdistää useita salauslohkoja.
Nimenomaan levy- tai nauhataltioiden lohkojen salaamista varten on 35 IEEE (Institute of Electrical and Electronics Engineers) julkaissut XTS-AES-standardin IEEE P1619 (IEEE Standard for Cryptographic -3 - «
Protection of Data on Block-Oriented Storage Devices, IEEE Std 1619™-2007, 18 April 2008).
Myös muita tapoja on kehitetty salauslohkojen yhdistämiseksi 5 tietotaltion lohkojen salaukseen, esimerkkinä aiemmin yleisimmin käytetty CBC-moodi, jolla salauslohkoja ketjutetaan peräkkäin. Ketjutukseen verrattuna XTS-AES:n etuna on muun muassa se, että siinä salauslohkoja voidaan prosessoida rinnakkain.
10 Mainitussa XTS-AES-standardissa esitellään notaatio salaamiselle C <- XTS-AES-Enc( Key, P, i ) (ii) ja salauksen purkamiselle 15 P -> XTS-AES-Dec( Key, C, i ) (iii) joissa Key on 256- tai 512-bittinen XTS-AES -avain, P ilmiteksti, C salateksti ja i 128-bittinen tweak. Algoritmin yksityiskohdat löytyvät 20 standardista.
Itse salausalgoritmin vahvuudesta huolimatta eräs perinteisen salauksen heikoista lenkeistä on salauksen käyttäjä: Salausavaimet johdetaan useimmiten käyttäjän määrittelemästä salasanasta. Kun 25 käyttäjä määrittelee salasanan, hän saattaa - johtaa sen jostain eris- tai yleisnimestä, tai - käyttää samaa salasanaa eri paikoissa.
Jos salasana on johdettu jostain eris- tai yleisnimestä, voidaan 30 salasana arvata yleisesti tunnetulla sanakirjahyökkäyksellä (dictionary attack), jossa varioidaan tunnettuja sanoja ja kokeillaan niitä salasanoiksi yksi toisensa jälkeen.
Jos käyttäjä käyttää samaa salasanaa tai sen johdannaisia eri 35 paikoissa, helpottaa salasanan paljastuminen yhdestä paikasta pääsyä myös muihin saman käyttäjän tietotaltioihin. Monissa tietotaltioissa salasanan vaihtaminen jälkikäteen on työlästä, joten sitä pelkästään varmuuden vuoksi harvoin tehdään.
-4- 5 Kolmanneksi tarkastellaan tiedon piilottamista (steganografia)
Osa tietotaltion lohkoista voidaan piilottaa. Oleellista piilotuksessa on, ettei piilotetun tiedon olemassaoloa voida havaita, ellei siihen ole nimenomaista pääsyä. Tällöin piilotetun tiedon olemassaolo voidaan 10 tarvittaessa kiistää. (Eräs lähdeviite aiheeseen on Anderson, R., Needham, R., and Shamir, A. The steganographic file system. In Information Hiding, Second International Workshop, Portland, Oregon, USA, April 14-17, 1998, Proceedings (1998), D. Aucsmith, Ed., vol.
1525 of Lecture Notes in Computer Science, Springer, pp. 73 - 82.) 15
Piilotetusta tietotaltion osasta käytetään jatkossa nimitystä piilotaltio.
Vaikkei piilotaltion sisältöä saataisikaan selville, voi sen 20 olemassaolo voi paljastua helpostikin. Esimerkiksi normaaliin lohkomuotoiseen tietotaltioon voidaan tallentaa tietoa lohkojen yhteenlasketun tallennuskapasiteetin verran: Jos taltioon ei voidakaan kirjoittaa sitä määrää tietoa joka on sen nimelliskapasiteetti, voidaan perustellusti olettaa, että osa kapasiteetista on varattu 25 muuhun käyttöön, kuten piilotaltioon.
Kun salatun tiedon olemassaoloa perustellusti epäillään, voidaan tietotaltion haltijaa painostaa paljastamaan se. Sen sijaan piilotaltioon, jonka olemassaolo on kiistettävissä, ei tällaista 30 painostusta voi yhtä selvästi perustella.
Neljänneksi tarkastellaan SSD-muistilaitteita 35 SSD-muistilaitteet ovat korvaamassa perinteisiä kiintolevyjä erityisesti kannettavien tietokoneiden muistilaitteina, mutta myös tietyissä palvelinsovelluksissa. On todennäköistä, että ennen pitkää -5- SSD syrjäyttää kiintolevyt pienemmän virrankulutuksensa, iskun- ja muun mekaanisen kestävyytensä, olemattoman käyntiäänensä ja olemattomien hakuaikojensa ansiosta. Useimmat SSD-muistilaitteet perustuvat Flash-teknologiaan.
5
Kiintolevyteknologian tallennuskapasiteetti ja tiedonsiirtonopeus on kymmeniä vuosia kasvanut nopeasti. Kuitenkin eräs kiintolevyteknologian eräs rajoite on jäänyt lähes ennalleen -hakuaika. Kiintolevyissä tietoa kirjoitetaan levyn pinnalle ja luetaan 10 sieltä hakuvarteen kiinnitetyn lukupään avulla. Hakuvarren liikuttaminen edestakaisin aiheuttaa tyypillisesti 4-10 ms viiveen levyn luennassa ja kirjoituksessa, jollei tieto sijaitse levyn pinnalla peräkkäin, vierekkäisiin raitoihin tallennettuna.
15 SSD-muistilaitteissa vastaavaa hakuaikaongelmaa ei ole. Tietoa osoitetaan sähköisesti, ja luku- tai kirjoituskohdan vaihtamisesta koituva viive on olematon. Näin ollen hajasaannin nopeus on SSD-muistilaitteissa lähes peräkkäissaannin luokkaa.
20 SSD-muistilaitteisiin liittyy kuitenkin eräs heikkous: kirjoituskertojen lukumäärä on rajallinen. Flash-teknologialla voidaan kuhunkin muistisoluun kirjoittaa tyypillisesti vain 10000-100000 kertaa, mikä jatkuvassa käytössä lyhentää muistilaitteen ikää. Käyttöikää jatketaan esimerkiksi menetelmillä, jotka kierrättävät 25 kirjoitettavia muistisoluja. Eräs aiheeseen liittyvä patentti on US 6,850,443, "Wear leveling techniques for flash EEPROM systems".
Viidenneksi tarkastellaan tiedon eheyttä 30 Käytännössä kaikki lohkomuotoiset tietotaltiot sisältävät jonkin lisäinformaation, jonka perusteella voidaan päätellä, onko tietotaltiolta luettu sisältö pysynyt muuttumattomana. 1
Tietolohkoille on perinteisesti laskettu tarkistuslukuja tiedon oikeellisuuden varmistamiseksi. Esimerkiksi kutakin lohkoa kiintolevylle tallennettaessa lasketaan laitteistotasolla * -6- tarkistusluku, joka tallennetaan lohkon mukana levylle. Luettaessa lohko levyltä luetaan myös lohkon tarkistusluku. Jos se ei täsmää lohkon muun tiedon kanssa, voidaan todeta joko tiedon lukemisen tai kirjoituksen tapahtuneen virheellisesti. Yleisesti tähän tarkoitukseen 5 käytetään CRC-tarkistussummaa.
Kun lohkomuotoisen tietotaltion sisältöä salataan, vie lohkon sisältö salattuna sama tilan kuin salaamattomana. Näin ollen lohkoissa ei ole tilaa sellaiselle lisäinformaatiolle, jolla voitaisiin varmistaa 10 salauksen tai sen purkamisen onnistuminen.
Kuudenneksi tarkastellaan tiivisteen laskemista.
15 Tiiviste yksilöi tietosisällön alkuperäistä tietosisältöä pienemmällä tietomäärällä. Hyvän tiivisteen ominaisuus on se, ettei kaksi vaikka kuinka samankaltaista tietolohkoa tuota samaa tiivistettä. Toinen hyvän tiivisteen ominaisuus on tarkistuslukujen jakautuminen tasaisesti koko käytössä olevan numeroavaruuden yli.
20
Perinteinen tarkistusluku lasketaan lineaarisesti kerto- ja yhteenlaskuilla, minkä seurauksena tarkistusluvusta voidaan päätellä jotain varsinaisen lohkon sisällöstä. Jos esimerkiksi tarkistusluku on tietoalkioiden summa, voidaan yhden tietoalkion puuttuessa laskea se 25 muun luetun tiedon ja tarkistusluvun avulla. Useimmissa tapauksissa kuten tietokantojen hajautustauluissa tämä ominaisuus ei haittaa, ja joissain tapauksissa, kuten virheenkorjauksessa, siitä on jopa etua. Mutta on myös sovelluksia, joissa tarkistusluvun tulee olla sellainen, ettei se paljasta mitään siitä tiedosta, josta se on laskettu.
30
Epälineaarisia muunnoksia käyttämällä voidaan tarkistusluvuiksi tuottaa tietoturvallisia tiivisteitä (secure hash), joissa muunnos toimii vain yhteen suuntaan. Tällöin voidaan laskea tarkistusluku, jota ei voi käyttää varsinaisen tiedon palauttamiseen. Yleisesti 35 käytössä olevista menetelmistä mainittakoon SHA-256 ja RIPEMD-160. Näitä pidetään yleisesti hyvinä tiivisteinä.
-7-
Seitsemänneksi tarkastellaan hajautustaulun käyttöä
Hajautustaulu on yleisesti tunnettu hakurakenne, eli avaimia arvoihin yhdistävä tietorakenne. Hyviä lähteitä hajautustaulujen käyttöön 5 löytyy julkaisuista Donald E. Knuth: Art of Programming, Volume 3: Sorting and Searching (2nd edition, Addison-Wesley, 1998, ISBN 978-0201896855) ja Cormen, Leiserson, Rivest ja Stein: Introduction to Algorithms (MIT Press, 2003, ISBN 978-0262032933).
10 Kun hajautustaululle annetaan avain (esimerkiksi henkilön nimi), se kertoo arvon (puhelinnumero). Sisäisesti se luo avaimesta tiivisteen, josta johdetaan arvot tallentavat taulukon indeksi.
Piirroksen 1 esimerkkitapauksessa nimestä "Lasse Lahtinen" on laskettu 15 tiiviste 632, nimestä "Liisa Lahtinen" 1 ja nimestä "Sami Siltanen" 998. Näitä tiivisteitä käytetään hajautustaulun indekseinä. Indeksiä vastaavassa hajautustaulun tietueessa on nimi ja sitä vastaava puhelinnumero. Tämä periaate toimii ongelmitta niin kauan kuin hajautustaulussa on vapaita tietueita.
20
Ennen pitkää hajautustaulu tulee kuitenkin niin täyteen että kahdella nimellä on sama tiiviste. Tällaisen törmäyksen käsittelyyn on kehitetty lukuisia menetelmiä, joista seuraavaksi esitetään yksi: 25 Piirroksessa 1 on havainnollistettu lineaariseen kokeiluun perustuva menetelmiä, jossa törmäyksen tapahtuessa otetaan käyttöön seuraava vapaana oleva hajautustaulun tietue. Hajautustaulun tietueissa on myös hyvä olla kenttä joka tavalla tai toisella ilmaisee, kuinka kauas pitää oikeata tietuetta enimmillään etsiä. Tässä esimerkissä "Suvi 30 Saarisella" on sama tiiviste 632 kuin "Lasse Lahtisella", mutta seuraava tietue 633 on jo varattu "Leevi Lassilalle". Koska tietue 634 on vapaana, sijoitetaan "Suvi Saarisen" tiedot siihen ja merkitään tiivistettä vastaavaan "Lasse Lahtisen" tietueeseen luku kaksi, koska se on enimmäishakumatka 634 miinus 632.
Lineaarisen kokeilun suorituskyky tunnetusti romahtaa hajautustaulun täyttyessä. Ongelmaa voidaan lievittää tekemällä hajautustaulusta 35 -8- jonkin verran, esimerkiksi 20%, suurempi kuin sille vähimmillään tarvittava koko.
5 Kahdeksanneksi tarkastellaan verkkopalvelimia
Internet-yhteys on nykyään saatavilla lähdes kaikkialla, mutta yhteys ei välttämättä ole laajakaistainen. Tietokoneiden välistä IP-tiedonsiirtoa (Internet Protocol) varten on kehitetty tietoturvallisia 10 protokollia, joihin löytyy avoimen lähdekoodin kirjastoja. Esimerkiksi avoimen lähdekoodin OpenSSL-kirjasto tarjoaa tuen SSL/TLS-protokollille.
15 Yhdeksänneksi tarkastellaan tietotaltion luomista käyttöjärjestelmään
Esimerkiksi Linux-käyttöjärjestelmässä voidaan paikallinenkin tietotaltio luoda verkkolevyasemaksi: Yleisesti tunnettu Network Block Device (NBD) voidaan asentaa siten, että se kuuntelee paikallista IP-20 osoitetta. Tietotaltio sijaitsee tällöin samalla koneella, ja NBD
mahdollistaa tiedostojen käsittelyn tietotaltion lohkoina käytetystä tiedostojärjestelmästä riippumatta.
Piirroksessa 2 on esitetty eräs Windows-käyttöjärjestelmiin liittyvä 25 malli siitä, miten sovellukset (201), kuten Microsoft Word, kirjoittavat tiedostoja tietotaltioon (208). Karkeasti ottaen tiedostojärjestelmäpino (206) käsittelee dataa tiedostojen osana, kun taas tietotaltion ajuripino (207) lohkoina. Windows-käyttöjärjestelmissä sovellukset (202) ja osa käyttöjärjestelmän 30 palveluista (203) ovat usermoden (204), kun taas useimmat ajurit kernelmoden (205) mukaisia.
Tietotaltio voi olla joko levy- tai nauha-aseman kaltainen fyysinen muistilaite, tai looginen taltio, kuten vaikkapa avoimen lähdekoodin 35 TrueCrypt-ohjelmiston luoma tiedosto. TrueCryptin luoma tiedosto näyttäytyy tietokoneelle levyasemana, kun sitä avataan TrueCrypt- -9- ohjelimistöllä. Tuo tiedosto voi toki olla fyysisen muistilaitteen kapasiteetin kokoinen ja sen ainoa tiedosto.
TrueCrypt opettaa alan asiantuntijalle, miten levylohkoja salataan 5 esimerkiksi Windowsin kernel-ohjelmoinnilla. Nykyisin TrueCrypt käyttää salaukseen XTS-AES -standardia. TrueCrypt on avoimen lähdekoodin esimerkki tietotaltion ajuripinoon (204) asettuvasta ajuriohj elmistosta.
10
Keksinnön tavoitteet
Keksinnön yksi ensisijainen tavoite on parantaa tallennetun tiedon tietoturvaa salaamalla tietoa, edullisesti siten että käyttäjän ei 15 tarvitse luoda salasanaa tai -lausetta.
Keksinnön eräänä toissijaisena tavoitteena voi olla tiedon säilyvyyden parantaminen luomalla yhtenäinen tietotaltion sisällön versiohallinta, eli helppo menettely tietotaltion aiemman tilan palauttamiseksi.
20
Edelleen keksinnön eräänä toissijaisena tavoitteena voi olla tietoturvan parantaminen luomalla piilotaltio, jonka olemassaolo voidaan paljastaa valikoidusti vain osalle niistä, joille on pääsy koko tietotaltioon (selective deniability).
25
Yhä edelleen keksinnön keksinnön eräänä toissijaisena tavoitteena voi olla yritys- tai yhteisötason tietoturvan luominen, jossa piilotaltioiden olemassaolo on salausjärjestelmän haltijan havaittavissa.
30
Vielä edelleen keksinnön yksi toissijainen tavoite voi olla SSD-muistilaitteen käyttöiän pidentäminen.
Vielä edelleen keksinnön yksi toissijainen tavoite voi olla tiedon 35 luotettavuuden parantaminen menettelyllä, jolla salatun tiedon eheys voidaan luotettavasti todentaa.
-10-
Keksinnon lyhyt kuvaus
Keksinnössä tallennetaan tietoa vähintään kahdelle muistilaitteelle, joista ensimmäinen voi olla esimerkiksi SSD-pohjainen. Ensimmäisellä 5 muistilaitteella on joukko numeroituja tietolohkoja, ja se on kytkettävissä ensimmäiseen tietokoneeseen, esimerkiksi Linux-työasemaan.
Keksinnön eräs aspekti on menetelmä tiedon kirjoittamiseksi 10 ensimmäisen ja toisen muistilaitteen käsittävään muistilaitejärjestelyyn jossa ensimmäinen muistilaite käsittää useita lohkonumeroin numeroituja tietolohkoja ja toinen muistilaite käsittää ainakin yhden tietolohkon tiivisteestä lasketun viittauksen ja sen fyysisen lohkonumeron. Menetelmä on tunnettu siitä, että se käsittää 15 seuraavat askeleet: lasketaan tiiviste ainakin osasta tietolohkon sisältöä, määritetään tai vastaanotetaan ainakin yksi fyysinen lohkonumero, johon tietolohkon sisältö ensimmäisessä muistilaitteessa tallennetaan, salataan tietolohkon sisältö, tallennetaan tietolohkon sisältö ensimmäiselle muistilaitteelle mainitun fyysisen lohkonumeron 20 osoittamaan kohtaan, tallennetaan tai annetaan komento tallentaa toiselle muistilaitteelle mainittu tiiviste tai siitä johdettu luku, ja ainakin yksi mainittu fyysinen lohkonumero.
Ensimmäinen muistilaite voi olla kytkettävissä ensimmäiseen 25 tietokoneeseen ja toinen muistilaite voi olla kytkettävissä toiseen tietokoneeseen. Kytkeminen voidaan tehdä esimerkiksi tietokoneen väylän tai sopivan tietoverkon välityksellä.
Sijainti, johon mainitut tiiviste tai siitä johdettu luku, ja fyysinen 30 lohkonumero tallennetaan, voidaan johtaa esimerkiksi tietolohkon tiivisteestä.
Menetelmä voi lisäksi käsittää askeleet toisen tietokoneen liittämiseksi ensimmäiseen tietokoneeseen esimerkiksi tietoverkon, 35 esimerkiksi TCP/IP protokollaa hyödyntävän verkon, välityksellä ja tämän liittämisen valtuuttamiseksi joko mainitun ensimmäisen -11 - tietokoneen, sen käyttäjän tai mainitun ensimmäisen muistilaitteen perusteella.
Toinen muistilaite voi sisältää taulun, jonka alkioita osoitetaan 5 loogisen lohkonumeron perusteella.
Toinen muistilaite voi sisältää taulun, joka sisältää mainitun ensimmäisen muistilaitteen fyysisen lohkonumeron.
10 Tietolohkon sisältö voidaan salata käyttäen salaamiseen ainakin yhtä seuraavista tiedoista: erillinen avain, mainittu tiiviste ja mainittu fyysinen lohkonumero.
Päivitettäessä ensimmäisessä muistilaitteessa jo tallennettuna olevaa 15 tietolohkoa päivitettävä tietolohko voidaan kirjoittaa eri osoitteeseen kuin missä muistilaitteissa oleva edellinen versio tietolohkosta sijaitsee.
Jos kahden eri tietolohkon tiiviste on täsmälleen sama, tietolohko 20 voidaan eräissä suoritusmuodoissa kirjoittaa ensimmäiseen muistilaitteeseen vain yhden kerran.
Keksinnön toinen aspekti on järjestelmä tiedon kirjoittamiseksi ensimmäisen ja toisen muistilaitteen käsittävään 25 muistilaitejärjestelyyn jossa ensimmäinen muistilaite käsittää useita lohkonumeroin numeroituja tietolohkoja ja toinen muistilaite käsittää ainakin yhden tietolohkon tiivisteestä lasketun viittauksen ja sen fyysisen lohkonumeron. Järjestelmä on tunnettu siitä, että se käsittää keinot tiivisteen laskemiseksi ainakin osasta tietolohkon sisältöä, 30 ainakin yhden fyysisen lohkonumeron määrittelemiseksi, johon tietolohkon sisältö ensimmäisessä muistilaitteessa tallennetaan, tietolohkon sisällön salaamiseksi, tietolohkon sisällön tallentamiseksi ensimmäiselle muistilaitteelle mainitun fyysisen lohkonumeron osoittamaan kohtaan, ja mainitun tiivisteen tai siitä 35 johdetun luvun, ja ainakin yhden mainitun fyysinen lohkonumeron tallentamiseksi toiselle muistilaitteelle.
-12-
Keksinnön kolmas aspekti on tietokoneohjelma tiedon kirjoittamiseksi ensimmäisen ja toisen muistilaitteen käsittävään muistilaitejärjestelyyn jossa ensimmäinen muistilaite käsittää useita lohkonumeroin numeroituja tietolohkoja ja toinen muistilaite käsittää 5 ainakin yhden tietolohkon tiivisteestä lasketun viittauksen ja sen fyysisen lohkonumeron. Tietokoneohjelma on tunnettu siitä, että se käsittää tietokoneella suoritettavat komennot seuraavien toimintojen suorittamiseksi: tiivisteen laskemiseksi ainakin osasta tietolohkon sisältöä, ainakin yhden fyysisen lohkonumeron vastaanottamiseksi, 10 johon tietolohkon sisältö ensimmäisessä muistilaitteessa tallennetaan, tietolohkon sisällön salaamiseksi, tietolohkon sisällön tallentamiseksi ensimmäiselle muistilaitteelle mainitun fyysisen lohkonumeron osoittamaan kohtaan, ja mainitun tiivisteen tai siitä johdetun luvun, ja ainakin yhden mainitun fyysinen lohkonumeron 15 tallentamiseksi toiselle muistilaitteelle tai tallennuspyynnön lähettämiseksi toiselle muistilaitteelle.
Keksinnön neljäs aspekti on palvelintietokone joka käsittää toisen tietotaltion joka sisältää informaatiota ensimmäisellä tietotaltiolla 20 sijaitsevista tietolohkoista, joka ensimmäinen tietotaltio on kommunikatiivisesti yhdistettävissä palvelintietokoneeseen ja joka informaatio käsittää tietolohkosta muodostetun tiivisteen, tietolohkon virtuaalisen osoitteen sekä tietolohkon fyysisen osoitteen. Palvelintietokone on tunnettu siitä että se käsittää tietokoneella 25 suoritettavaa ohjelmakoodia joka käsittää käskyt seuraavien toimintojen toteuttamiseksi: vastaanottaa pyynnön joka sisältää tietolohkon virtuaalisen osoitteen ensimmäisessä tietotaltiossa, selvittää virtuaalista osoitetta vastaavan tietolohkon fyysisen osoitteen sekä tiivisteen arvon käyttäen toisen tietotaltion tietoja, 30 ja lähettää vastaus joka sisältää tietolohkon fyysisen osoitteen ensimmäisessä tietotaltiossa sekä tiivisteen.
-13-
Luettelo piirroksista 5 Piirros 1 esittää tekniikan tason mukaista menetelmää avainten indeksoimiseksi,
Piirros 2 esittää erästä tekniikan tason mukaista järjestelyä tiedostojärjestelmän toteuttamiseksi, 10
Piirros 3 esittää keksinnön erään suoritusmuodon mukaisen järjestelyn,
Piirros 4 esittää keksinnön erään suoritusmuodon mukaisen menetelmän, 15 Piirros 5 esittää kaavion keksinnön erään suoritusmuodon mukaisista komponenteista,
Piirrokset 6-8 esittävät yksityiskohtia keksinnön eräiden suoritusmuotojen mukaisista järjestelyistä, 20
Piirros 9 esittää esimerkinomaisia kutsukaavioita keksinnön erään suoritusmuodon mukaisen ajuriohjelmiston ja palvelimen välillä,
Piirros 10 esittää keksinnön erään suoritusmuodon mukaisen järjestelyn 25 piilotaltion toteuttamiseksi,
Piirros 11 esittää keksinnön erään suoritusmuodon mukaisen järjestelyn tiedon versioinnin toteuttamiseksi, 30 Piirros 12 esittää keksinnön erään suoritusmuodon toteuttamista Windows(TM) -ympäristössä,
Piirros 13' esittää keksinnön erään suoritusmuodon mukaisen järjestelyn uudelleensuuntaustaulun sijoittamiseksi ensimmäiselle 35 muistilaitteelle, - 14-
Piirros 14 esittää esimerkinomaisia kutsukaavioita keksinnön edellä mainitun suoritusmuodon mukaisen ajuriohjelmiston ja palvelimen välillä, 5 Piirrokset 15 ja 16 esittävät yksityiskohtia keksinnön erään suoritusmuodon mukaisista järjestelyistä, joissa hajautustaulun indeksin sijoitetaan uudelleensuuntaustauluun ja
Piirros 17 esittää esimerkinomaisia kutsukaavioita keksinnön edellä 10 mainitun suoritusmuodon mukaisen ajuriohjelmiston ja palvelimen välillä.
Keksinnön yksityiskohtainen kuvaus 15
Tekniikan tasoa kuvaavat piirrokset 1 ja 2 on selostettu "keksinnön taustaa" -luvussa. Seuraavassa keksintöä havainnollistetaan sen eri suoritusmuotojen ja niistä laadittujen piirrosten avulla.
20 Tarkastellaan aluksi piirrosta 3 joka esittää tiedon tallentamista keksinnön erään suoritusmuodon mukaiselle loogiselle muistilaitteelle (10). Tallennettaessa tietoa johonkin loogiseen osoitteeseen (301) lasketaan tiiviste (322) ainakin osasta tietolohkon sisältöä (302) ja määritellään ainakin yksi ensimmäisen muistilaitteen (40) fyysinen 25 lohkonumero (41), johon tietolohkon sisältö salauksen jälkeen tallennetaan. Tieto ei siis lähtökohtaisesti tallennu loogisen lohkonumeronsa (301), vaan siihen fyysiseen lohkonumeron (41) osoittamaan kohtaan, joka määräytyy tiivisteestä (322). 1 35 Tässä yhteydessä on syytä todeta, että termejä "fyysinen muistilaite" (40) ja "fyysinen lohkonumero" (41) käytetään jatkossa selkeyden vuoksi: "fyysinen muistilaite" (40) voi itse asiassa olla mikä tahansa lohkopohjäinen tietotaltio, ja "fyysinen lohkonumero" (41) looginen lohkonumero, jolla tuon tietotaltion lohkoja osoitetaan.
-15-
Edelleen on syytä todeta, että piirroksen 3 esittämä esimerkki on vielä yksinkertaistettu, eikä tarjoa keksinnön tuomia etuja. Se toimii niin kauan kuin hajautustaulussa (30) ei tapahdu törmäyksiä.
5 Toiselle muistilaitteelle, esimerkiksi ulkoiselle palvelimelle, tallennetaan mainittu tiiviste (32) ja mainittu ensimmäisen muistilaitteen fyysinen lohkonumero (36). Tämä tietorakenne (30) on edullista toteuttaa hajautustauluksi.
10 Keksinnössä tieto voidaan salata käyttäen tietolohkon tiivistettä XTS-AES:n tweakina. Tarkastellaan piirrosta 4. Tietolohkon sisältö on ilmitekstiä (302). Siitä lasketaan (402) tiiviste h (322) . Tähän tiivisteeseen liitetään fyysinen lohkonumero (41) esimerkiksi poissulkeva tai -operaatiolla (405), käytetään tätä muokkaustermiä 15 (406) XTS-AES:n tweakina ja salataan ilmiteksti XTS-AES:llä (407): C <- XTS-AES-Enc( Key, P, h 0 ploc ), (iv) jossa C on ensimmäisen muistilaitteen (40) lohkoon (42) tallennettava 20 tietosisältö Key on avain, P keksinnön muistilaitteelle (10) tallennettavan lohkon tietosisältö (302), h sen tiiviste (322) ja ploc ensimmäisen muistilaitteen (40) fyysinen lohkonumero (41) . Tiiviste tallennetaan toiselle muistilaitteelle (30).
25 Avain Key voidaan tuottaa satunnaisluvusta ja se voi olla muistilaitekohtainen.
Luettaessa tietoa keksinnön muistilaitteen (10) tietystä lohkosta (404) haetaan tietosisällön tiiviste (403) toiselta muistilaitteelta 30 (30), liitetään siihen fyysinen lohkonumero (404) poissulkeva tai - operaatiolla (411), käytetään tätä muokkaustermiä (412) XTS-AES:n tweakina ja puretaan salaus AES-XTS:llä (413): P <- XTS-AES-Dec( Key, C, h 0 ploc ) (v) 35 -16- Tämän jälkeen voidaan palautetun ilmitekstin oikeellisuus vielä tarkistaa laskemalla palautetun ilmitekstin tiiviste h' (414) ja vertaamalla (416), päteekö 5 h' == h (vi)
Jos pätee, on tietolohkon ilmiteksti (419) onnistuttu hyväksytysti (418) palauttamaan, muutoin todetaan virheen (417) tapahtuneen.
10 Näin menetellen voidaan varmistaa tiedon eheys (integrity).
Tiedon salaamisessa - tehtiinpä se XTS-AES:lla tai jollain muulla menetelmällä - voidaan avaimina käyttää kiinteää tai järjestelmän määrittelemää lukua tai jotain sellaista lukua, joka perustuu 15 käyttäjän antamaan syötteeseen. Salausavainten käsittely voidaan toteuttaa jollakin alan ammattimiehen hyvin tuntemalla menetelmällä.
Kun esimerkissä tallennetaan tietolohkoa, lasketaan sen sisällön tiivisteestä hajautustaulun indeksi jonkun tunnetun 20 hajautustaulumenetelmän avulla. Mikäli salaus tehtiin ylläkuvatulla tavalla, on tiiviste jo valmiiksi laskettu.
Keksinnön esimerkinomainen suoritusmuoto ilmenee työasemalla lohkopohjaisena loogisena muistilaitteena (10), johon tietoa (302) 25 voidaan kirjoittaa ja josta sitä voidaan lukea loogisen lohkonumeron (301) perusteella. Esimerkin tietorakenteessa on kolme taulua:
Jatkossa käytetään ensimmäisestä muistilaitteesta (40) nimitystä fyysinen tietotaltio. Se voi olla mikä tahansa lohkomuotoinen 30 tietotaltio, esimerkiksi Flash-muisti, jonka tietueiden eli lohkojen sisältöihin (42) taltioidaan loogiselle muistilaitteelle (10) kirjoitettava tieto mieluiten salattuna. Fyysisen tietotaltion lohkoille on lisäksi oltava jokin mekanismi, jolla vapaat lohkot tunnistetaan. Yksinkertaisia menettelyjä on lukuisia, esimerkiksi 35 vapaiden lohkojen taulukointi tai FIFO-tyyppinen puskuri, jonka alusta poimitaan seuraavan vapaan lohkon numero ja jonka loppuun sijoitetaan käytöstä vapautuneiden lohkojen numerot.
-17-
Esimerkin toinen muistilaite käsittää hajautustaulun (30) , jonka tietueissa on viittaukset (36) fyysisen tietotaltion (40) lohkoihin. Vapaat hajautustaulun tietueet voidaan merkitä esimerkiksi antamalla 5 viittaukseksi (36) luku, joka on suurempi kuin tietotaltion lohkojen lukumäärä.
Lisäksi esimerkissä on uudelleensuuntaustaulu (20), joka on usein edullista sijaita toisella ja johon kaikki lohkojen luku- ja 10 kirjoitusoperaatiot viittaavat, vaikka se voi toki sijaita myös ensimmäisellä tai jollain muulla muistilaitteella.
Uudelleensuuntaustaulun tietueen rakenteessa on lohkon tietosisällön tiiviste (322), jonka perusteella lasketaan hajautustaulun tietueen indeksi (31). Uudelleensuuntaustaulun tietueiden määrän on edullista 15 olla sama kuin ulospäin näkyvä loogisen tietotaltion (10) lohkojen lukumäärä.
Esimerkissä luku- ja kirjoitusoperaatiot viittaavat siis uudelleensuuntaustaulun (20) tietueisiin tiedostojärjestelmän 20 määrittämän loogisen lohkonumeron (301) mukaisesti.
Mikäli esimerkin uudelleensuuntaustauluun kirjoitettava tietosisällön tiivisteen (322) leveys on riittävän suuri, vaikkapa 128 bittiä, voidaan tunnistaa jo käytössä olevat uudelleensuuntaustaulun (20) 25 alkiot siitä, että tiivisteeksi (322) on merkitty jokin tietty luku, esimerkiksi nolla: Todennäköisyys sille, että tuo luku tulisi tiivisteeksi on häviävän pieni, esimerkkitapauksessa 2~128.
Kirjoituspyynnössä annetaan esimerkin muistilaitteelle (10) looginen 30 lohkonumero (301) ja lohkon tietosisältö (302). Loogista lohkonumeroa (301) käytetään sen uudelleensuuntaustaulun tietueen indeksinä (21), johon tallennetaan tietosisällöstä (302) laskettu tiiviste (322) . Samaisen tiivisteen perusteella lasketaan sen hajautustaulun tietueen indeksi (31), johon kirjoitetaan jonkin vapaan fyysisen tietotaltion 35 lohkon indeksi (36, 41). Lopuksi tallennetaan kirjoitusoperaatiossa annettu tietosisältö (302) tämän fyysisen tietotaltion lohkon sisällöksi (42), mieluiten salattuna.
-18-
Lukupyynnössä annetaan esimerkin muistilaitteelle (10) looginen lohkonumero, jonka tietosisältö tahdotaan lukea. Loogista lohkonumeroa käytetään sen uudelleensuuntaustaulun tietueen indeksinä (21), josta 5 luetaan tiiviste (22) . Tiivisteen perusteella lasketaan sen hajautustaulun tietueen indeksi (31), josta haetaan viittaus fyysisen tietotaltion lohkoon (36). Indeksi lasketaan samalla tavalla kuin kirjoituspyyntöä käsiteltäessä. Lopuksi luetaan tämän fyysisen tietotaltion lohkon sisältö (42) ja palautetaan vastauksena 10 hakupyyntöön.
On syytä todeta, että lohkopohjäisestä tietotaltiosta poistuu tietoa vain ylikirjoituksen yhteydessä. Näin tapahtuu myös esimerkin muistilaitteella (10): 15
Tietoa poistetaan muistilaiteelta (10) , kun se uudelleensuuntaustaulun tietue, jonka indeksinä (21) on kirjoituspyynnössä annettu looginen lohkonumero (301), on jo käytössä. Kyseisestä tietueesta luetaan olemassa oleva tiiviste (322). Tiivisteen perusteella lasketaan sen 20 hajautustaulun tietueen indeksi (31) , josta haetaan viittaus fyysisen tietotaltion lohkoon (36) samalla tavalla kuin lukupyyntöä käsiteltäessä. Tämä fyysisen tietotaltion lohkonumero (41) vapautetaan. Samoin vapautetaan kyseinen hajautustaulun tietue.
25 Piirroksen 3 esimerkissä on kahdella kirjoitettavalla lohkolla sama tietosisältö (302), nimittäin lohkot 0 ja 8 sisältävät pelkkiä nollia. Molemmilla on siten sama tiiviste (322), minkä johdosta niiden osoittavat samaan hajautustaulun (30) tietueeseen, indeksiltään (31) 8. Fyysiselle tietotaltiolle (40) tietosisältö on täytynyt kirjoittaa 30 vain kerran, lohkoon 5. Esimerkissä samanlaisten lohkojen kirjoitus säästää levytilaa ja nopeuttaa kirjoitusoperaatiota, koska hidasta levykirjoitusta ei tarvitse aina tehdä.
On huomattava, että piirroksissa on selkeyden vuoksi esitetty taulujen 35 indeksit (21, 31 ja 41), vaikka ne eivät ole varsinaisissa toteutuksissa välttämättömiä. Yllä ei ole kuvattu eikä piirroksessa 3 -19- esitetty hajautustaulun törmäyksenkäsittelyyn tarvittavia tietorakenteita. Niistä esitetään esimerkki seuraavssa:
Keksinnön eräs edullinen suoritusmuoto (piirros 5) liittyy SSD-5 muistilaitteen suojaamiseen (501) , joka on keksinnön ensimmäinen muistilaite. Toinen muistilaite on verkkopalvelin (502). Tämä suoritusmuoto voidaan toteuteuttaa esimerkiksi käyttöjärjestelmän ajuripinoon (207), joka sijaitsee tiedostojärjestelmän ajureiden (206) alapuolella.
10
Tarkastellaan piirrosta 6. Keksinnön eräässä edullisessa suoritusmuodossa uudelleensuuntaustaulu (20) , hajautustaulu (30) ja tieto vapaista fyysisen tietotaltion lohkoista (650) tallennetaan verkkopalvelimelle, fyysisen tietotaltion (40) ollessa SSD-15 muistilaitteella.
Keksinnön eräässä edullisessa suoritusmuodossa tiiviste lasketaan RIPEMD-160 -menetelmällä, jonka 160-bittisestä tuloksesta käytetään 128 ensimmäistä bittiä. Syntymäpäiväparadoksin mukaisesti sama 20 tiiviste syntyy kahdesta erisisältöisestä lohkosta todennäköisesti vasta 264 = 1,845 x 1019 blokin kirjoittamisen jälkeen. Mikäli tämän ei katsota riittävän, voidaan käyttää useampibittistä tiivistettä.
Hajautustaulun tietorakenne määritellään pmap-tietorakenteessa: 25 typedef struct { md_t md; // lohkon tiiviste uint64_t pent; // viittausten fyys. osoitteeseen uint64_t sent; // viittausten määrä tietueeseen 30 uint64_t ploc; // fyysinen lohkonumero } pmap_t; jossa md_t in tiivisteen sisältävä tietorakenne, esimerkissä 128 bittinen kokonaisluku.
35
Eräässä edullisessa suoritusmuodossa merkitään fyysisen tietotaltion vapaana olevat lohkot vapaiden lohkojen rengaspuskuriin rngg (650), joka alustetaan fyysisen tietotaltion lohkonumeroilla. Rengaspuskurin lohkonumerot voivat olla satunnaisessa järjestyksessä, eikä niitä tarvitse kaikkia käyttää. Niihin fyysisiin lohkonumeroihin, joita ei alusteta rengaspuskuriin, voidaan sijoittaa piilotaltio. Tätä ominaisuutta tarkastellaan myöhemmin.
-20- 5 Rengaspuskurissa on siis aluksi luettelo kaikista ei-piilotetuista fyysisten tietotaltion lohkoista. Lukuosoitin (651) on rengaspuskurin alussa ja koska puskuri on täynnä, on kirjoitusosoitin (652) heti sitä ennen eli puskurin viimeisessä alkiossa.
10 Seuraava vapaa fyysisen tietotaltion lohko luetaan lukuosoittimen osoittamasta kohdasta ja siirretään lukuosoitinta rqtop (651) seuraavaan alkioon. Kun jokin tietotaltion lohko vapautuu, kirjoitetaan sen numero kirjoitusosoittimen rqend (652) osoittamaan kohtaan ja siirretään lukuosoitinta seuraavaan alkioon. Koska 15 rengaspuskurin alkioiden lukumäärä on sama kuin fyysisen tietotaltion lohkojen lukumäärä, ja koska yksikään tietotaltion lohko ei vapaudu kahta kertaa ilman että sitä oltaisi varattu välillä uudelleen, ei rengaspuskurin tila lopu ikinä kesken. Pseudokoodina seuraavan vapaan fyysisen tietotaltion lohkon (new_block) lukeminen tapahtuu 20 seuraavasti: new_block = rngq[rqtop++]; if (rqtop >= n) // jatka alusta rqtop = 0; 25 jossa n on rengaspuskurin (650) koko. Vapautuneet fyysisen tietotaltion lohkot kirjataan rengaspuskuriin vastaavasti: rngq[rqend++] = old_block; 30 if (rqend >= n) // jatka alusta rqend = 0; Tässä yhteydessä on syytä huomioida kaksi seikkaa: Ensinnäkin viimeisin vapautetut fyysisen tietotaltion lohkot uudelleenkäytetään 35 viimeiseksi. Viimeisimpien tilojen versiohallinta, eli käytännössä edeltäneen tilan palauttaminen voidaan toteuttaa usealla tehokkaalla tavalla, joita tarkastellaan myöhemmin. Toiseksikin vaikka alustuksen yhteydessä rengaspuskuri saa kaikki fyysisen tietotaltion lohkonumerot, käytön jälkeen rengaspuskurissa voivat toistua samat numerot uudelleen ja uudelleen.
-21 -
Viimeiseksi vapautettujen lohkojen uudelleenkäyttö vimmeisenä 5 mahdollistaa myös SSD-muistilaitteen vapaiden lohkojen tasaisen kierrätyksen, mikä pidentää oleellisesti koko laitteen käyttöikää.
Keksinnön eräässä edullisessa suoritusmuodossa on uudelleensuuntaustaulun (20) tietueiden lukumäärä sama kuin fyysisen 10 tietotaltion (40) tietueiden lukumäärä.
Kun tiivistettä (322) vastaavaa hajautustaulun alkiota etsitään, aloitetaan etsiminen kohdasta, joka on interpoloitu lineaarisesti hajautustaulun (30) tietueiden lukumäärästä: 15 uint64_t slot(h) { return *((uint64_t *) h) / d; } 20 jossa h on tiiviste ja d = 264 / (1,2 * n) valittu eräässä edullisessa suoritusmuodossa siten, että hajautustaulun tietueiden lukumäärä on 1,2 -kertainen fyysisen tietotaltion tietueiden lukumäärään n (kuvan 6 esimerkissä 10) verrattuna.
25 Eräässä edullisessa suoritusmuodossa käytetty hakufunktio find_by_hash() on psudokoodina s = slot(h) // aloitustietue c = pmap[s].sent; // hakulaskuri 30 i = s; // indeksi while (c > 0) { if (h == pmap[i].md) return i; // sama tietue? 35 if (slot(pmap[i].md) == s) c—; // vähennä hakulaskuria if (++i >= pmapsiz) // jatka alusta i = 0; }
40 return NOT_FOUND
jossa pmap-tietorakenteen scnt-alkiossa (hakuetäisyys) ylläpidetään tietoa siitä, kuinka monta tietorakenteeseen tallennettua tiivistettä (322) osoittaa kyseiseen alkioon. Sen perusteella päätellään, missä vaiheessa hakua ei kannata enää jatkaa.
-22-
Kirjoitettaessa tietolohkoa block (603) loogiseen lohkonumeroon i 5 (602) etsitään sille fyysinen lohkonumero (41) seuraavasti: h = hash(block); // laske tiiviste if (hmap[i] != NOT_USED) { if (h == hmap[i]) // sama sisältö uudelleen? 10 return; // ei tarvitse tallentaa j = find_by_hash(hmap[i]); // vapautetaan hajautustaulun alkio? if (—pmap[j].pcnt == 0) { pmap[slot(hmap[j])]. sent—; 15 rngq[rqend++] = pmap[j].ploc; if (rqend >= n) // jatka alusta? rqend = 0; } } 20 // asetetaan uudelleensuuntaustaulun alkio hmap[i] = h; // käsitellään hajautustaulu j = find_by_hash(h); if (j != NOT_FOUND) { // onko sama sisältö tallennettu? 25 pmap[j].pcnt++; // viittausten määrä tietueeseen return; // ei tarvitse tallentaa } s = slot(h); // aloitustietue pmap[s].scnt++; // on uusi tietue 30 j = s; while (pmap[j].pent >0) { // etsi vapaa if (++j >= pmapsiz) j =0; // jatka etsintää alusta } 35 pmap[j].md = h; // kirjaa tiiviste pmap[j].pent = 1; // viittausten määrä on aluksi 1 pmap[j].ploc = rngq[rqtop+t]; // hae fyysisen taltion lohko if (rqtop >= n) // rengaspuskurin lukuosoitin rqtop = 0; // jatka alusta 40 jossa pmapsiz on hajautustaulun (30) tietueiden lukumäärä, n rengaspuskurin (650) tietueiden lukumäärä ja pmap[j].ploc (36) se fyysisen tietotaltion (40) lohko, johon kirjoitetaan, ellei funktiota ole keskeytetty return'11a. Return'lla keskeytettäessä on 45 samansisältöinen lohko jo tallennettu, eikä samaa lohkoa tarvitse tallentaa kahta kertaa.
-23-
Lohkoa luettaessa fyysinen lohkonumero saadaan huomattavasti yksinkertaisemmin: p = find_by_hash(hmap[i]) ; 5 return pmap[p].ploc; jossa pmap[j].ploc (36) on se fyysisen tietotaltion (40) lohko, josta luetaan.
10 Jatkossa ei selkeyden vuoksi käsitellä hajautustaulun viittausten määriä, eikä muitakaan alan ammattilaisen tuntemia tekniikan tasoon liittyviä hajautustaulun toteutusratkaisuja.
Jatketaan piirroksen 6 ja keksinnön eräiden suoritusmuotojen toiminnan 15 tarkastelua.
Esimerkissä hajautustaulun (30) koko on 12 tietuetta, ja tiivisteet on jaettu järjestyksessä tasan kaikkien tietueiden kesken. Tasan jakaminen on perusteltua, koska tietoturvalliset tiivisteet tuottavat 20 tietolohkon sisällöstä riippumattoman tasajakauman. Tuloksena tiivisteet 000000...-14f f f f... osoittavat ensimmäiseen tietueeseen, 150000...-29f f f f... toiseen, 300000...-3ef f f f... kolmanteen ja niin edelleen, viimeisen tietueen kuuluessa tiivisteille e70000...-f f ff f f....
25 Kirjoitetun tiedon tiiviste (32) on sen tietosisällön tiiviste, joka kirjoitetaan viittausta (36) vastaavaan fyysisen tietotaltion (40) lohkoon.
Tarkastellaan edelleen piirrosta 6 ja uuden lohkon kirjoittamista 30 kuuden esimerkkitapauksen avulla.
Piirroksen 6 esimerkin lähtötilanteessa ovat jo käytössä uudelleensuuntaustaulun (20) lohkot indekseiltään (21) 0, 1, 3, 5, 8 ja 9, hajautustaulun (30) tietueet indekseiltään (31) 5, 6, 8, 10 ja 35 11 sekä fyysisen tietotaltion lohkot numeroiltaan (41) 0, 3, 5, 6 ja 9. Lähtötilanne vastaa piirroksen 3 tilaa ja itse piirros 6 kuvaa lopputilannetta.
-24-
Ensimmäisessä kirjoitusesimerkissä ei tapahdu törmäystä.
Kirjoituspyynnössä annetaan looginen lohkonumero (602) 4 ja siihen kirjoitettava tietosisältö (603). Tietosisällöstä lasketaan tiiviste 44b753..., joka sijoitetaan uudelleensuuntaustaulun tietueeseen 5 indeksiltään (21) 4. Kyseinen tiiviste kuuluu hajautustaulun tietueelle indeksiltään (31) 3. Koska kyseinen tietue on vapaana, eli sen viittausten lukumäärä (634) aluksi nolla, voidaan se ottaa käyttöön. Tämän jälkeen haetaan rengaspuskurista (650) vapaa fyysisen tietotaltiolohkon numero, esimerkissä 2, tallennetaan se kyseisen 10 hajautustaulun tietueen viittaukseksi (36) fyysisen tietotaltion (40) lohkoon ja kirjoitetaan tietosisältö (603) tuohon tietotaltion lohkoon (42) mieluiten salattuna.
Toisessa kirjoitusesimerkissä tapahtuu törmäys. Kirjoituspyynnössä 15 annetaan looginen lohkonumero 6 (604) ja siihen kirjoitettava tietosisältö (605) . Tietosisällöstä lasketaan tiiviste 691a75..., joka sijoitetaan uudelleensuuntaustaulun tietueeseen indeksiltään 6 (21). Kyseinen tiiviste kuuluu hajautustaulun tietueelle indeksiltään 5 (31), jonka viittausten lukumäärä on jo yksi (634), eli se on 20 käytössä. Myös seuraava hajautustaulun tietue, indeksiltään 6, on käytössä, mutta 7 jo vapaana.
Hajautustaulun tietueeseen indeksiltään 7 (31) kirjoitetaan kirjoitettavan tietosisällön tiiviste. Tämän jälkeen haetaan 25 rengaspuskurista (650) vapaa fyysisen tietotaltiolohkon numero, esimerkissä 8, tallennetaan se kyseisen hajautustaulun tietueen viittaukseksi (36) fyysisen tietotaltion (40) lohkoon ja kirjoitetaan tietosisältö (603) mieluiten salattuna tuohon tietotaltion lohkoon (42) .
30
Myös kolmannessa kirjoitusesimerkissä tapahtuu törmäys.
Kirjoituspyynnössä annetaan looginen lohkonumero 7 (606) ja siihen kirjoitettava tietosisältö (607). Tietosisällöstä lasketaan tiiviste fb3a71.„, joka sijoitetaan uudelleensuuntaustaulun tietueeseen 35 indeksiltään 7 (21). Kyseinen tiiviste kuuluu hajautustaulun tietueelle indeksiltään 11 (31), jonka viittausten lukumäärä (634) on -25 - jo yksi, eli se on käytössä. Se on viimeisin hajautustaulun tietue, joten hakua jatketaan tietueesta indeksiltään 0, joka on vapaana.
Hajautustaulun tietueeseen indeksiltään 0 (31) kirjoitetaan 5 kirjoitettavan tietosisällön tiiviste. Tämän jälkeen haetaan rengaspuskurista (650) vapaa fyysisen tietotaltiolohkon numero, esimerkissä 7, tallennetaan se kyseisen hajautustaulun tietueen viittaukseksi (36) fyysisen tietotaltion (40) lohkoon ja kirjoitetaan tietosisältö (603) mieluiten salattuna tuohon tietotaltion lohkoon 10 (42) .
Tarkastellaan piirrosta 7, jossa loogisen muistilaitteen (10) tila on se joksi se jäi edellisten kirjoitusesimerkkien jäljiltä. Piirros esittää siis lähtötilannetta. Piirroksessa 7 havainnollistetaan kolme 15 kirjoituslisäesimerkkiä, joissa kirjoitettavat loogisen muistilaitteen (10) lohkot on jo käytössä. Näissä esimerkeissä kirjoitetaan uudelleen samat lohkot, joita edellisissä kolmessa kirjoitusesimerkissäkin kirjoitettiin.
20 Neljännessä kirjoitusesimerkissä esitetään kirjoituspyyntö (702) muistilaitteen (10) lohkoon numero 4, jota käytetään siis uudelleensuuntaistaulun indeksinä. Uudelleensuuntaustaulun tietue indeksiltään 4 osoittaa jo hajautustaulun tietueeseen indeksiltään 3 (790), jonka tiiviste (32) täsmää samaisen uudelleensuuntaustaulun 25 tietueen tiivisteen (322) kanssa. Kyseiseen hajautustaulun tietueeseen (790) viittaa vain yksi uudelleensuuntaustaulun (20) tietue. Viittausten lukumäärää (634) hajautustaulun tietueessa (790) vähennetään yhdellä, jolloin viittausten lukumäärä putoaa nollaan ja tietue indeksiltään 3 (790) on näin vapautettu. Samalla vapautetaan se 30 fyysisen tietotaltion lohko numero 2, johon hajautustaulun tietueessa (790) viitattiin kirjoittamalla vapaiden lohkojen FIFO-tyyppiseen rengaspuskuriin arvo 2 (650). Tämän jälkeen suoritetaan varsinainen kirjoitusoperaatio, kuten kirjoitusesimerkeissä 1-3 on selostettu.
35 Viidennessä kirjoitusesimerkissä esitetään kirjoituspyyntö (704) muistilaitteen (10) lohkoon 6. Uudelleensuuntaustaulun tietue indeksiltään 6 osoittaa jo hajautustaulun tietueeseen indeksiltään 5, -26- jonka tiiviste (32) ei täsmää samaisen uudelleensuuntaustaulun tietueen tiivisteen (322) kanssa. Tällöin ratkaistaan hajautustaulun törmäys lineaarisella kokeilulla, kunnes löydetään oikea hajautustaulun tietue indeksiltään 7 (791). Koska kyseiseen 5 hajautustaulun tietueeseen (791) viittaa vain yksi uudelleensuuntaustaulun (20) tietue, edetään kuten neljännessä kirjoitusesimerkissä tietueen (790) indeksiltään 3 kanssa.
Kuudennessa kirjoitusesimerkissä esitetään kirjoituspyyntö (706) 10 loogisen muistilaitteen (10) lohkoon 8. Uudelleensuuntaustaulun tietue indeksiltään 8 osoittaa hajautustaulun tietueeseen indeksiltään 8, jonka tiiviste (32) täsmää samaisen uudelleensuuntaustaulun tietueen tiivisteen (322) kanssa. Kyseiseen hajautustaulun tietueeseen (792) viittaa kaksi uudelleensuuntaustaulun (20) tietuetta. Ensin 15 vähennetään kyseisen tietueen viittausten lukumäärää (793) yhdellä, jonka jälkeen suoritetaan varsinainen kirjoitusoperaatio siten kuin kirjoitusesimerkeissä 1-3 on kuvattu.
Tarkastellaan piirrosta 8: SSD-muistilaitetta ja palvelinta.
20
Eräässä edullisessa suoritusmuodossa SSD-muistilaitteeseen (501) luodaan muistilaitteen kokoinen taltio ajuriohjelmiston keksinnön toteuttavalla versiolla. Muokkauksen jälkeen ajuriohjelmisto kirjoittaa tuottamiensa tiedostojen lohkoihin salatekstiä, jonka 25 avaamiseen tarvitaan pieni tietomäärä verkkopalvelimelta (502) .
Kun uudelleensuuntaustaulu (20), hajautustaulu (30) ja vapaiden lohkojen fifo-tyyppinen rengaspuskuri (650) tallennetaan verkkopalvelimelle, voidaan toteuttaa luku- ja kirjoitusoperaatiot 30 palvelinavusteisena:
Tarkastellaan piirrosta 9 ja tietoliikennettä.
Eräässä edullisessa suoritusmuodossa lähetetään yhteyttä 35 muodostettaessa palvelimelle yhteyden avauspyyntö (902) ja sen mukana ensimmäisen muistilaitteen yksilöivä tunnistenumero (504). Vastauksena (903) palvelin palauttaa yksilöivää tunnistenumeroa vastaavan -27- uudelleensuuntaustaulun tietueiden lukumäärän, tallennuslohkojen koon ja salausavaimen. Tämä jälkeen taltion voidaan sanoa olevan aktiivinen.
5 Kirjoitusoperaatiossa ajuriohjelmistolta (901) lähetetään palvelimelle (502) pyyntö (906) joka sisältää loogiselle muistilaitteelle (10) kirjoitettavan lohkon numeron ja kirjoitettavan tietosisällön tiiviste (322). Vastauksena palvelin palauttaa joko (907) fyysisen lohkonumeron (41) tai (908) tiedon siitä, että samansisältöinen eli tiivisteeltään 10 identtinen lohko sijaitsee jo fyysisellä tietotaltiolla (40).
Jos palvelin palauttaa fyysisen lohkonumeron (41), suoritetaan salaus palvelimen ilmoittamalla avaimella yllä kuvatulla tavalla (kaava iv). Lopulta tieto tallennetaan fyysiselle muistilaitteelle.
15
Jos palvelin palauttaa tiedon (908) siitä, että samansisältöinen lohko sijaitsee jo fyysisellä tietotaltiolla (40), ei sitä tarvitse enää uudestaan tallentaa.
20 Lukuoperaatiossa ajuriohjelmistolta (901) lähetetään palvelimelle pyyntö (904), jossa on loogiselta muistilaitteelta (10) luettavan lohkon numero (21). Vastauksena (905) pyyntöön palvelin palauttaa fyysisen lohkonumeron (41) ja tietosisällön tiivisteen (322). Salattu tietosisältö luetaan ja salaus puretaan palvelimen ilmoittamalla 25 avaimella yllä kuvatulla tavalla (kaava v). Lopuksi tarkistetaan sisällön eheys yllä kuvatulla tavalla (kaava vi).
On syytä huomata, että piirroksessa 9 luku- ja kirjoitusoperaatioiden vastaukset (905 ja 907) sisältävät loogisen lohkonumeron, samoin kuin 30 yhteyden muodostuspyynnön vastauksessa (903) palautetaan taltioin tunniste. Jos ajuriohjelmisto (901) odottaa vastauksia useampaan kuin yhteen pyyntöön, niiden avulla voidaan tunnistaa, mikä vastaus kuului millekin pyynnölle. Alan ammattilainen voi helposti toteuttaa muitakin tapoja pyyntöjen ja vastausten keskinäiseen yhdistämiseen.
Eräässä edullisessa suoritusmuodossa siirtoprotokollana käytetään SSL-protokollaa, ja ajuriohjelmisto tai sen käyttäjä tunnistetaan jollain 35 https:stä yleisesti tunnetulla menetelmällä, kuten salasanalla, sertifikaatilla tai älykortilla, jonka perusteella palvelin valtuuttaa ajuriohjelmiston muodostamaan tiedonsiirtoyhteyden.
-28- 5 Tarkastellaan piirrosta 10 ja piilotaltion toteutusta.
Eräs piilotaltion toteutustapa on esitetty piirroksessa 10. Rengaspuskuri (650) ei sisällä kaikkia fyysisen tietotaltion tietueita, vaan osa vapaista tietueista on siirretty piilotaltion 10 rengaspuskuriin (1050) . Kun palvelimelle (502) annetaan yhteyttä muodostettaessa piilotaltion tunnistenumero (1053), ottaa palvelin käyttöön normaalin rengaspuskurin (650) ja uudelleensuuntaustaulun sijaan piilotaltion rengaspuskurin (1050) ja uudelleensuuntaustaulun (1022) . Piirroksen 9 vastauksessa (903) annetaan ajuriohjelmistolle 15 (901) piilotaltion parametrit.
Erityisesti piilotaltioita hyödynnettäessä on salausavaimen edullista olla taltiokohtainen, ei muistilaitekohtainen. Se voidaan tuottaa satunnaisluvusta taltion luomisen yhteydessä, jolloin käyttäjän ei ole 20 välttämätöntä syöttää taltiolle salasanaa.
Toteutuksen kannalta on suotavaa, jos fyysisen tietotaltion lohkot vapautuessaan sijoitetaan sen taltion rengaspuskuriin (650, 1050), joka on sillä hetkellä aktiivisena.
25 Tässä yhteydessä on syytä todeta, että vaikka yllä esitettiinkin esimerkki piilotaltion toteuttamisesta, voi samanlaisella menettelyllä luoda samaa loogiseen muistilaitteeseen (10) useille käyttäjille omia taltioitansa, joista osa voi näkyä toisille käyttäjille, mutta 30 välttämättä eivät kaikki.
Piirroksen 10 esimerkissä fyysisen muistilaitteen lohkoon 7 on tallennettu salattuna piilotaltioon kuuluvaa dataa, jonka olemassaoloa ei voi päätellä ilman pääsyä palvelimen (502) tietorakenteisiin. Näin 35 ollen piilotaltion olemassaoloa ei voi kiistää palvelimen haltijalta -esimerkiksi työnantajalta - mutta sen voi kiistää ulkopuolisille.
-29-
Huomionarvoista piilotaltiolle on, että koska samansisältöiset lohkot tallennetaan fyysiseen tietotaltioon (40) vain kerran, on siellä todennäköisesti vapaita lohkoja, joita voi hyödyntää piilotaltioon. Tällöin piirroksen 9 vastauksessa (903) tarvitsee ilmoittaa pienempää 5 uudelleensuuntaustaulun tietueiden lukumäärää kuin mitä fyysisellä tietotaltiolla (40) on lohkoja.
Tarkastellaan piirrosta 11 ja versionhallintaa.
10 Koska viimeksi vapautunut fyysinen lohkonumero (1152) luovutetaan rengaspuskurista viimeisenä käyttöön, säilyvät poistetut lohkojen sisällöt (42) tallessa vielä poistamisen jälkeenkin. Mikäli rengaspuskurista (1150) ja hajautustaulusta (30) otetaan aika ajoin varmuuskopio erilliseen taltioon (1154), voidaan pelkästään tuo 15 varmuuskopio palauttamalla palauttaa keksinnön koko tietotaltion (10) aiempi tila.
Aiempi tila voidaan palauttaa sitä suuremmalla todennäköisyydellä mitä enemmän vapaita lohkoja fyysisellä tietotaltiolla (40) on. Vapaiden 20 lohkojen lukumäärää voidaan lisätä luomalla uudelleensuuntaustauluun (1120) vähemmän tietueita kuin fyysisessä tietotaltiossa (40) on. Tällöin edes täyteen kirjoitetussa keksinnön tietotaltiossa (10) ei rengaspuskurista (1150) ikinä lueta (1151) viimeksi vapautunutta fyysisen tietotaltion lohkoa.
25
Varmuuskopioiden sijaan tai lisäksi voidaan soveltaa lukuisia muitakin alan ammattilaisen hallitsemia tapahtumankäsittely- ja peruutusmenettelyjä rengaspuskurin (1152) ja hajautustaulun (30) päivityksiin.
30
Tarkastellaan piirrosta 12 ja keksinnön Windows(TM) -toteutusta.
Tietoliikenneprotokollien käyttö ajuriohjelmistoista, eritoten TrueCryptin kaltaisista Windowsin kernelmode-ohjelmistoista on 35 hankalaa, joten alan asiantuntijan on kenties helpointa toteuttaa levyajurin (1201) rinnalle Windowsin palveluna toimiva usermode-kommunikaatio-ohjelmisto (1202) palvelimen (502) vaatimaa IP- -30- liikennöintiä varten. Tiedonvaihtoa näiden kernel- (205) ja usermoden (204) välillä opettaa Windowsin Installable File System Development Kitin esimerkkiprojekti FileSpy.
5 Keksinnöstä on sen kuvauksen sekä esitettyjen esimerkinomaisten suoritusmuotojen opastamana helppo tehdä erilaisia muunnelmia. Esimerkiksi hajautustaulu (30) ja tieto siitä, mitkä fyysisen tietotaltion (40) lohkot ovat vapaina voidaan toteuttaa lukuisilla tekniikan tasoon kuuluvilla tavoilla. Lisäksi esimerkiksi 10 ajuriohjelmiston toteutuksesta esitettiin vain yksi Windows(TM) - pohjainen suoritusmuoto, mutta keksintöä voidaan käyttää myös muissa arkkitehtuureissa hyödyntäen tässä esitettyä keksinnöllistä ajatusta.
Tarkastellaan piirroksen 13 avulla uudelleensuuntaustaulun (20) 15 sijoittamista samalle muistilaitteelle fyysisen tietotaltion (40) kanssa rengaspuskurien (650) ja hajautustaulun (30) sijaitessa palvelimella (502). Tällöin uudelleensuuntaustaulun ei ole edullista sisältää mitään sellaista tietoa, joka helpottaa luvatonta fyysisen tietotaltion lohkojen salauksen purkamista. Esimerkissä tämä tavoite 20 on hoidettu siten, että uudelleensuuntaustauluun tallennettava tiiviste (1322) on palvelimen salaama.
Tästä seuraa piirroksen 14 kaltainen esimerkinomainen muutos palvelimen (502) ja ajuriohjelmiston (901) väliseen liikennöintiin: 25 Ajuriohjelmisto laskee tietolohkon sisällöstä tiivisteen ja välittää sen kirjoituspyynnössä (1406) palvelimelle. Kirjoituspyynnön mukana välitetään myös hajautustaulussa loogisen lohkonumeron ilmoittamassa tietueessa aiemmin ollut salattu tiiviste (1423), jota mahdollisesti tarvitaan palvelimella fyysisen tietotaltion (40) lohkonumeron 30 vapauttamiseen. Lukupyynnössä (1404) ajuriohjelmisto välittää uudelleensuuntaustaulusta (20) lukemansa salatun tiivisteen (1322) ja saa vastauksena (1405) fyysisen lohkonumeron (41). Käytännössä palvelin salaa ajuriohjelmistolle lähettämänsä tiivisteet ja purkaa ajuriohjelmiston lähettämät salatut tiivisteet ennen niiden käsittelyä 35 keksinnön aiemmin kuvatussa suoritusmuodossa selostetulla tavalla.
-31-
Vastaavasti kuten keksinnön aiemmin kuvatussa suoritusmuodossa, piirroksen 14 esimerkissä luku- ja kirjoitusoperaatioiden vastaukset (1405 ja 1407) sisältävät salatun tiivisteen. Jos ajuriohjelmisto (901) odottaa vastauksia useampaan kuin yhteen pyyntöön, niiden avulla 5 voidaan tunnistaa, mikä vastaus kuului millekin pyynnölle. Alan ammattilainen voi helposti toteuttaa muitakin tapoja pyyntöjen ja vastausten keskinäiseen yhdistämiseen.
Tarkastellaan piirroksen 15 avulla keksinnön suoritusmuotoa, jossa 10 hajautustaulua osoitetaan uudelleensuuntaustaulusta (20) indeksin eikä tiivisteen avulla: Tietolohkoa loogiseen tietotaltioon (10) tallennettaessa etsitään hajautustaulusta (30) tietue keksinnön aiemmin kuvatussa suoritusmuodossa selostetulla tavalla. Aiemmin kuvatusta poiketen uudelleensuuntaustauluun (20) tallennetaan 15 tiivisteen (322) sijaan suora osoitus (1522) siihen hajautustaulun tietueeseen, joka sisältää osoituksen siihen fyysisen tietotaltion(40) tietueeseen, johon tallennetaan tietolohkon sisältö (302) mieluiten salattuna.
20 Luettaessa piirroksen 15 suoritusmuodon mukaiselta loogiselta tietotaltiolta (10), luetaan uudelleensuuntaustaulun (20) loogisen lohkonumeron (301) osoittamasta tietueesta suora osoitus (1522) hajautustaulun tietueeseen (31), josta edelleen luetaan se fyysisen tietotaltion (40) lohkonumero, johon tietolohkon sisältö on 25 tallennettu.
Tarkastellaan edelleen samaa suoritusmuotoa ja piirroksen 16 esimerkkiä. Piirros 16 vastaa sisällöltään piirrosta 6, vain suoritusmuoto on vaihtunut, tietoa loogisesta tietotaltiosta (10) 30 luettaessa käytetään uudelleensuuntaustaulun osoittimena suoraa osoitusta (1522) hajautustauluun. Kuten piirroksen 6 esimerkissä aiemmin kuvattiin, kirjoituksen yhteydessä saatetaan vapauttaa hajautustaulusta tietoa ja usein myös fyysisen tietotaltion (40) tietueita.
Vapauttamista varten on edullista, jos uudelleensuuntaustaulussa (20) tai hajautustaulussa (30) on tieto siitä, mikä on se hajautustaulun 35 tietue, johon tiiviste alun perin osoitti. Piirroksen 16 esimerkin hajautustauluun (30) on lisätty alkuperäistä tietuetta koskeva kenttä (1601).
-32- 5 Aiempiin pseudokoodeihin viitaten piirroksen 16 kuvaaman suoritusmuodon muokattu find_by_hash() voisi olla seuraavankaltainen: s = slot(h) // aloitustietue c = pmap[s].sent; // hakulaskuri 10 i = s; // indeksi while (c > 0) { if (h == pmap[i].md) return i; // sama tietue? 15 if (pmap[i].orig) == s) // muuttui c—; // vähennä hakulaskuria if (++i >= pmapsiz) // jatka alusta i = 0; }
20 return NOT_FOUND
Edelleen, kirjoitettaessa tietolohkoa block (603) loogiseen lohkonumeroon i (602) etsitään sille fyysinen lohkonumero (41) seuraavan tapaisella pseudokoodilla: 25 h = hash(block); // laske tiiviste if (hmap[i] != NOT_USED) { if (h == hmap[i]) // sama sisältö uudelleen? return; // ei tarvitse tallentaa 30 j = find_by_hash(hmap[i]); // vapautetaan hajautustaulun alkio? if (--pmap[j].pent == 0) { pmap[slot(hmap[j])]. sent—; rngq[rqend++] = pmap[j].ploc; 35 if (rqend >= n) // jatka alusta? rqend = 0; } } // asetetaan uudelleensuuntaustaulun alkio 40 hmap[i] = h; // käsitellään hajautustaulu j = find_by_hash(h); if (j != NOT_FOUND) { // onko sama sisältö tallennettu? pmap[j].pcnt++; // viittausten määrä tietueeseen 45 return; // ei tarvitse tallentaa } s = slot(h); // aloitustietue pmap[s].scnt++; // on uusi tietue k = s; 50 while (pmap[k].pent >0) { // etsi vapaa -33- if (++k >= pmapsiz) k = 0; // jatka etsintää alusta } pmap[k].md = h; // kirjaa tiiviste 5 pmap[k].orig = j; // alkuperäinen tietue pmap[k].pent = 1; // viittausten määrä on aluksi 1 pmap[k].ploc = rngq[rqtop++]; // hae fyysisen taltion lohko if (rqtop >= n) // rengaspuskurin lukuosoitin rqtop =0; // jatka alusta 10
Lopuksi, loogista lohkoa luettaessa saadaan fyysisen lohkonumero seuraavasti.
return pmap[hmap[i]].ploc; 15
Tarkastellaan edelleen samaa suoritusmuotoa ja piirroksen 17 esittämää esimerkin omaista muutosta palvelimen (502) ja ajuriohjelmiston (901) väliseen liikennöintiin: Ajuriohjelmisto laskee tietolohkon sisällöstä tiivisteen ja välittää sen kirjoituspyynnössä (1706) palvelimelle.
20 Kirjoituspyynnön mukana välitetään myös hajautustaulussa loogisen lohkonumeron ilmoittamassa tietueessa parhaillaan oleva osoitus hajautustauluun (1722). On edullista käyttää tätä tietoa palvelimella vanhojen lohkojen vapauttamiseen. Lukupyynnössä (1704) ajuriohjelmisto välittää uudelleensuuntaustaulusta (20) lukemansa suoran osoituksen 25 (1522) hajautustauluun ja saa vastauksena (1705) fyysisen lohkonumeron (41). Seuraava pseudokoodi havainnollistaa lohkon vapauttamista: i = hmap[d]; // d = vapautettava lohko 30 // vähennetään viittaustan lukumäärää pmap[pmap[i].orig].sent—; // vapautetaan hajautustaulun alkio? i f (—pmap[i].pent == 0) { 35 rngq[rqend++] = pmap[i].ploc; if (rqend >= n) rqend = 0; } 40 Vastaavasti, kuten keksinnön aiemmin kuvatuissa suoritusmuodossa, piirroksen 17 esimerkissä luku- ja kirjoitusoperaatioiden vastaukset (1705 ja 1707) sisältävät salatun tiivisteen. Jos ajuriohjelmisto (901) odottaa vastauksia useampaan kuin yhteen pyyntöön, niiden avulla voidaan tunnistaa, mikä vastaus kuului millekin pyynnölle. Alan v -34- ammattilainen voi helposti toteuttaa muitakin tapoja pyyntöjen ja vastausten keskinäiseen yhdistämiseen.
Keksinnön eräässä suoritusmuodossa fyysinen tietotaltio (40) muodostuu 5 muistilaitteesta, jossa fyysinen lohkonumero (41) muunnetaan fyysisen tietotaltion sisäiseksi loogiseksi lohkonumeroksi. Tällainen tietotaltio voisi olla esimerkiksi verkkolevyasema tai vaikkapa toinen keksinnön toteuttava looginen tietotaltio.
10 Keksinnöstä on helppo tehdä erilaisia muunnelmia, eritoten hajautustaulu (30) ja tieto siitä, mitkä fyysisen tietotaltion (40) lohkot ovat vapaina, voidaan toteuttaa lukuisilla tekniikan tasoon kuuluvilla tavoilla. Samoin uudelleensuuntaustaulu (20), hajaustustaulu (30) ja fyysinen tietotaltio (40) voidaan helposti 15 sijoittaa eri tietokoneille. Ajuriohjelmiston toteutuksesta esitettiin vain yksi Windows-esimerkki. Muiden käyttöjärjestelmien kuten Linuxin kohdalla lähestymistapa on paitsi kovin erilainen, myös ajuriohjelmistoja tuntevalle alan ammattilaiselle täysin ilmeinen.

Claims (12)

1. Menetelmä tiedon kirjoittamiseksi ensimmäisen (501) ja toisen (502) muistilaitteen käsittävään muistilaitejärjestelyyn jossa 5 ensimmäinen muistilaite käsittää useita lohkonumeroin (41) numeroituja tietolohkoja ja toinen muistilaite käsittää ainakin yhden tietolohkon tiivisteestä (322) lasketun viittauksen ja sitä vastaavan fyysisen lohkonumeron (36), tunnettu siitä, että se käsittää seuraavat askeleet: 10 a. lasketaan tiiviste ainakin osasta tietolohkon sisältöä (302), b. vastaanotetaan ainakin yksi fyysinen lohkonumero, johon tietolohkon sisältö ensimmäisessä muistilaitteessa tallennetaan, 15 c. salataan tietolohkon sisältö, d. tallennetaan tietolohkon sisältö ensimmäiselle muistilaitteelle sanotun fyysisen lohkonumeron osoittamaan kohtaan, ja e. tallennetaan tai annetaan komento tallentaa toiselle 20 muistilaitteelle mainittu tiiviste tai siitä johdettu luku, ja ainakin yksi mainittu fyysinen lohkonumero.
2. Vaatimuksen 1 mukainen menetelmä, tunnettu siitä että sanottu ensimmäinen muistilaite on kytkettävissä ensimmäiseen 25 tietokoneeseen.
3. Vaatimuksen 1 mukainen menetelmä, tunnettu siitä että sanottu toinen muistilaite on kytkettävissä toiseen tietokoneeseen. 30
4. Vaatimuksen 1 mukainen menetelmä, tunnettu siitä että sijainti (31), johon sanottu tiiviste (322) tai siitä johdettu luku, ja ainakin yksi sanottu fyysinen lohkonumero (36) johdetaan sanotun tietolohkon tiivisteestä. 35
5. Vaatimusten 2 ja 3 mukainen menetelmä, tunnettu siitä että menetelmä käsittää askeleet sanotun toisen tietokoneen -36- liittämiseksi sanottuun ensimmäiseen tietokoneeseen tietoverkon välityksellä ja tämän liittämisen valtuuttamiseksi joko mainitun ensimmäisen tietokoneen, sen käyttäjän tai mainitun ensimmäisen muistilaitteen perusteella. 5
6. Vaatimuksen 1 mukainen menetelmä, tunnettu siitä että sanottu toinen muistilaite sisältää taulun (20), jonka tietueita osoitetaan loogisen lohkonumeron (21) perusteella.
7. Vaatimuksen 1 mukainen menetelmä, tunnettu siitä että sanottu toinen muistilaite sisältää taulun (30), joka sisältää mainitun ensimmäisen muistilaitteen fyysisen lohkonumeron (36).
8. Vaatimuksen 1 mukainen menetelmä, tunnettu siitä että 15 sanottu tietolohkon sisältö salataan käyttäen salaamiseen ainakin yhtä seuraavista tiedoista: erillinen avain, sanottu tiiviste ja sanottu fyysinen lohkonumero.
9. Vaatimuksen 1 mukainen menetelmä, tunnettu siitä että 20 päivitettäessä toisessa muistilaitteessa jo tallennettuna olevaa loogista tietolohkoa voidaan päivitettävä tietolohko kirjoittaa ensimmäisessä muistilaitteessa eri fyysisen lohkonumeron osoittamaan kohtaan kuin missä senhetkinen loogisen tietolohkon sisältö sijaitsee. 25
10. Järjestelmä tiedon kirjoittamiseksi ensimmäisen (501) ja toisen (502) muistilaitteen käsittävään muistilaitejärjestelyyn jossa ensimmäinen muistilaite käsittää useita lohkonumeroin (41) numeroituja tietolohkoja ja toinen muistilaite käsittää ainakin 30 yhden tietolohkon tiivisteestä (322) lasketun viittauksen ja sen fyysisen lohkonumeron (36), tunnettu siitä, että järjestelmä käsittää keinot: a. tiivisteen laskemiseksi ainakin osasta tietolohkon sisältöä (302), 35 b. ainakin yhden fyysisen lohkonumeron määrittelemiseksi, johon tietolohkon sisältö ensimmäisessä muistilaitteessa tallennetaan, -37- c. tietolohkon sisällön salaamiseksi, d. tietolohkon sisällön tallentamiseksi ensimmäiselle muistilaitteelle mainitun fyysisen lohkonumeron osoittamaan kohtaan, ja 5 e. mainitun tiivisteen tai siitä johdetun luvun, ja ainakin yhden mainitun fyysinen lohkonumeron tallentamiseksi toiselle muistilaitteelle.
11. Tietokoneohjelma tiedon kirjoittamiseksi ensimmäisen (501) ja 10 toisen (502) muistilaitteen käsittävään muistilaitejärjestelyyn jossa ensimmäinen muistilaite käsittää useita lohkonumeroin numeroituja tietolohkoja ja toinen muistilaite käsittää ainakin yhden tietolohkon tiivisteestä (322) lasketun viittauksen ja sen fyysisen lohkonumeron (36), tunnettu siitä, että 15 tietokoneohjelma käsittää tietokoneella suoritettavat komennot seuraavien toimintojen suorittamiseksi: a. tiivisteen laskemiseksi ainakin osasta tietolohkon sisältöä (302), b. ainakin yhden fyysisen lohkonumeron vastaanottamiseksi, 20 johon tietolohkon sisältö ensimmäisessä muistilaitteessa tallennetaan, c. tietolohkon sisällön salaamiseksi, d. tietolohkon sisällön tallentamiseksi ensimmäiselle muistilaitteelle mainitun fyysisen lohkonumeron osoittamaan 25 kohtaan, ja e. mainitun tiivisteen tai siitä johdetun luvun, ja ainakin yhden mainitun fyysinen lohkonumeron tallentamiseksi toiselle muistilaitteelle tai tallennuspyynnön lähettämiseksi toiselle muistilaitteelle. 30
12. Palvelintietokone joka käsittää toisen muistilaitteen (502) joka sisältää informaatiota ensimmäisellä muistilaitteella (501) sijaitsevista tietolohkoista, joka ensimmäinen muistilaite on kommunikatiivisesti liitettävissä palvelintietokoneeseen ja joka 35 informaatio käsittää tietolohkosta muodostetun tiivisteen (322), tietolohkon virtuaalisen osoitteen (21) sekä tietolohkon fyysisen osoitteen (36), tunnettu siitä että palvelintietokone -38- käsittää tietokoneella suoritettavaa ohjelmakoodia joka käsittää käskyt seuraavien toimintojen toteuttamiseksi: a. vastaanottaa pyynnön (904) joka sisältää tietolohkon loogisen osoitteen (21) ensimmäisessä tietotaltiossa, 5 b. selvittää loogista osoitetta vastaavan tietolohkon fyysisen osoitteen (41) sekä tiivisteen arvon (322) käyttäen toisen tietotaltion tietoja, ja c. lähettää vastaus (905) joka sisältää tietolohkon fyysisen osoitteen ensimmäisessä tietotaltiossa sekä tiivisteen. 39
FI20080681A 2008-09-22 2008-12-23 Tiedon hajauttamista hyödyntävä salausmenetelmä FI121487B (fi)

Priority Applications (5)

Application Number Priority Date Filing Date Title
FI20080681A FI121487B (fi) 2008-09-22 2008-12-23 Tiedon hajauttamista hyödyntävä salausmenetelmä
PCT/FI2009/000035 WO2010031894A1 (en) 2008-09-22 2009-03-16 Method and apparatus for implementing secure and selectively deniable file storage
US13/120,002 US8555088B2 (en) 2008-09-22 2009-03-16 Method and apparatus for implementing secure and selectively deniable file storage
EP09814136.9A EP2350908B1 (en) 2008-09-22 2009-03-16 Method and apparatus for implementing secure and selectively deniable file storage
US14/031,035 US9009496B2 (en) 2008-09-22 2013-09-18 Method and apparatus for implementing secure and selectively deniable file storage

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
FI20080534 2008-09-22
FI20080534A FI20080534A0 (fi) 2008-09-22 2008-09-22 Turvallinen ja valikoidusti kiistettävissä oleva tiedostovarasto
FI20080681A FI121487B (fi) 2008-09-22 2008-12-23 Tiedon hajauttamista hyödyntävä salausmenetelmä
FI20080681 2008-12-23

Publications (2)

Publication Number Publication Date
FI20080681A0 FI20080681A0 (fi) 2008-12-23
FI121487B true FI121487B (fi) 2010-11-30

Family

ID=39852196

Family Applications (2)

Application Number Title Priority Date Filing Date
FI20080534A FI20080534A0 (fi) 2008-09-22 2008-09-22 Turvallinen ja valikoidusti kiistettävissä oleva tiedostovarasto
FI20080681A FI121487B (fi) 2008-09-22 2008-12-23 Tiedon hajauttamista hyödyntävä salausmenetelmä

Family Applications Before (1)

Application Number Title Priority Date Filing Date
FI20080534A FI20080534A0 (fi) 2008-09-22 2008-09-22 Turvallinen ja valikoidusti kiistettävissä oleva tiedostovarasto

Country Status (4)

Country Link
US (2) US8555088B2 (fi)
EP (1) EP2350908B1 (fi)
FI (2) FI20080534A0 (fi)
WO (1) WO2010031894A1 (fi)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI20080534A0 (fi) * 2008-09-22 2008-09-22 Envault Corp Oy Turvallinen ja valikoidusti kiistettävissä oleva tiedostovarasto
US20120314857A1 (en) * 2010-02-24 2012-12-13 Kazuhiko Minematsu Block encryption device, block decryption device, block encryption method, block decryption method and program
US8468365B2 (en) * 2010-09-24 2013-06-18 Intel Corporation Tweakable encryption mode for memory encryption with protection against replay attacks
US8862902B2 (en) * 2011-04-29 2014-10-14 Seagate Technology Llc Cascaded data encryption dependent on attributes of physical memory
FI20125118L (fi) * 2012-02-03 2013-08-04 Tellabs Oy Menetelmä ja laite muistivarauksen hallitsemiseksi
US20140143553A1 (en) * 2012-11-20 2014-05-22 Cloudioh Inc. Method and Apparatus for Encapsulating and Encrypting Files in Computer Device
US9208105B2 (en) * 2013-05-30 2015-12-08 Dell Products, Lp System and method for intercept of UEFI block I/O protocol services for BIOS based hard drive encryption support
US9875110B2 (en) * 2014-04-08 2018-01-23 Vmware, Inc. Dynamic application overlay for remote desktop servers
US9645946B2 (en) * 2014-05-30 2017-05-09 Apple Inc. Encryption for solid state drives (SSDs)
US10554749B2 (en) 2014-12-12 2020-02-04 International Business Machines Corporation Clientless software defined grid
US10469580B2 (en) * 2014-12-12 2019-11-05 International Business Machines Corporation Clientless software defined grid
US9614666B2 (en) 2014-12-23 2017-04-04 Intel Corporation Encryption interface
US9942324B2 (en) * 2015-08-05 2018-04-10 Futurewei Technologies, Inc. Rebalancing and elastic storage scheme with elastic named distributed circular buffers
US9977746B2 (en) * 2015-10-21 2018-05-22 Hewlett Packard Enterprise Development Lp Processing of incoming blocks in deduplicating storage system
US10831370B1 (en) * 2016-12-30 2020-11-10 EMC IP Holding Company LLC Deduplicated and compressed non-volatile memory cache
TWI700627B (zh) * 2017-05-23 2020-08-01 慧榮科技股份有限公司 認證韌體資料之資料儲存裝置與資料儲存方法
KR102445243B1 (ko) * 2017-10-23 2022-09-21 삼성전자주식회사 데이터 암호화 방법 및 그에 따른 전자 장치
US11100235B2 (en) 2019-04-29 2021-08-24 Hewlett Packard Enterprise Development Lp Backups of file system instances with root object encrypted by metadata encryption key
US11226867B2 (en) 2019-04-29 2022-01-18 Hewlett Packard Enterprise Development Lp Backups of file system instances of encrypted data objects
EP3764233A1 (en) * 2019-07-08 2021-01-13 Continental Teves AG & Co. OHG Method of identifying errors in or manipulations of data or software stored in a device
JP2023535459A (ja) 2020-07-24 2023-08-17 スーパーファイル インコーポレイテッド 信頼できないシステム上のメディアファイルの遠隔所有権およびコンテンツ制御のためのシステムならびに方法
CN114579046B (zh) * 2022-01-21 2024-01-02 南华大学 一种云存储相似数据检测方法和系统
US12007911B2 (en) 2022-03-10 2024-06-11 Samsung Electronics Co., Ltd System and method for efficiently obtaining information stored in an address space

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4815130A (en) 1986-10-03 1989-03-21 Communications Satellite Corporation Stream cipher system with feedback
JP3968477B2 (ja) * 1997-07-07 2007-08-29 ソニー株式会社 情報入力装置及び情報入力方法
US6493825B1 (en) * 1998-06-29 2002-12-10 Emc Corporation Authentication of a host processor requesting service in a data processing network
US20080192928A1 (en) * 2000-01-06 2008-08-14 Super Talent Electronics, Inc. Portable Electronic Storage Devices with Hardware Security Based on Advanced Encryption Standard
US8035612B2 (en) * 2002-05-28 2011-10-11 Intellectual Ventures Holding 67 Llc Self-contained interactive video display system
GB2374260B (en) 2001-10-12 2003-08-13 F Secure Oyj Data encryption
AUPS169002A0 (en) 2002-04-11 2002-05-16 Tune, Andrew Dominic An information storage system
TWI261757B (en) 2003-04-30 2006-09-11 Hagiwara Sys Com Co Ltd USB storage device
FI118619B (fi) * 2003-05-16 2008-01-15 Jarmo Talvitie Menetelmä ja järjestelmä tiedon salaamiseksi ja tallentamiseksi
US7797393B2 (en) 2004-01-08 2010-09-14 Agency For Science, Technology And Research Shared storage network system and a method for operating a shared storage network system
JP2007065928A (ja) * 2005-08-30 2007-03-15 Toshiba Corp 情報記憶媒体、情報処理方法、情報転送方法、情報再生方法、情報再生装置、情報記録方法、情報記録装置、及びプログラム
US20060242429A1 (en) 2004-12-21 2006-10-26 Michael Holtzman In stream data encryption / decryption method
US20070255947A1 (en) 2005-02-09 2007-11-01 Choudhury Abhijit K Methods and systems for incremental crypto processing of fragmented packets
GB2425374A (en) * 2005-04-22 2006-10-25 Vodafone Plc Controlling data access
US7911444B2 (en) * 2005-08-31 2011-03-22 Microsoft Corporation Input method for surface of interactive display
JP2007080357A (ja) * 2005-09-13 2007-03-29 Toshiba Corp 情報記憶媒体、情報再生方法、情報再生装置
CN101401141B (zh) 2006-03-14 2011-12-07 日本电气株式会社 信息处理系统以及信息处理方法
US20080172562A1 (en) 2007-01-12 2008-07-17 Christian Cachin Encryption and authentication of data and for decryption and verification of authenticity of data
US8656186B2 (en) * 2007-05-01 2014-02-18 International Business Machines Corporation Use of indirect data keys for encrypted tape cartridges
US8233624B2 (en) 2007-05-25 2012-07-31 Splitstreem Oy Method and apparatus for securing data in a memory device
US8189769B2 (en) 2007-07-31 2012-05-29 Apple Inc. Systems and methods for encrypting data
US9395929B2 (en) * 2008-04-25 2016-07-19 Netapp, Inc. Network storage server with integrated encryption, compression and deduplication capability
US8117464B1 (en) * 2008-04-30 2012-02-14 Netapp, Inc. Sub-volume level security for deduplicated data
FI20080534A0 (fi) * 2008-09-22 2008-09-22 Envault Corp Oy Turvallinen ja valikoidusti kiistettävissä oleva tiedostovarasto
WO2012129115A2 (en) 2011-03-18 2012-09-27 University Of South Florida Materials and methods for profiling micrornas

Also Published As

Publication number Publication date
FI20080681A0 (fi) 2008-12-23
US20110208979A1 (en) 2011-08-25
EP2350908B1 (en) 2019-07-10
US20140173016A1 (en) 2014-06-19
EP2350908A4 (en) 2012-10-03
US8555088B2 (en) 2013-10-08
FI20080534A0 (fi) 2008-09-22
WO2010031894A1 (en) 2010-03-25
US9009496B2 (en) 2015-04-14
EP2350908A1 (en) 2011-08-03

Similar Documents

Publication Publication Date Title
FI121487B (fi) Tiedon hajauttamista hyödyntävä salausmenetelmä
EP1942431B1 (en) Software or other information integrity verification using variable block length and selection
US7398351B2 (en) Method and system for controlling access to data of a tape data storage medium using encryption/decryption of metadata
US7818586B2 (en) System and method for data encryption keys and indicators
US20100083003A1 (en) Method and apparatus for non-redundant encrypted storage
US20050050342A1 (en) Secure storage utility
US20030023867A1 (en) Methods and systems for promoting security in a computer system employing attached storage devices
US20080063209A1 (en) Distributed key store
US8826023B1 (en) System and method for securing access to hash-based storage systems
WO1999014652A1 (en) Encrypting file system and method
US20080063206A1 (en) Method for altering the access characteristics of encrypted data
US20060089936A1 (en) System and method for a secure, scalable wide area file system
CN109144894B (zh) 基于数据冗余的内存访问模式保护方法
JP2010532880A (ja) データセキュリティのためにデータを処理するシステム及び方法
Benadjila et al. Secure storage—Confidentiality and authentication
KR100859651B1 (ko) 가변크기 데이터 저장을 위한 데이터구조를 기록한기록매체, 가변크기 데이터 저장방법, 및 가변크기 데이터저장방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한컴퓨터로 읽을 수 있는 기록매체
KR20230104877A (ko) 신뢰할 수 없는 환경에서 저장된 데이터 및 메타데이터의 기밀성과 무결성을 보장하는 방법
JP2009516961A (ja) キー及び/又は権利オブジェクトを管理する方法及びシステム
Shekhanin et al. Steganographic hiding information in a file system structure
Surmont Length-preserving authenticated encryption of storage blocks
JP5539024B2 (ja) データ暗号化装置およびその制御方法
CN117633838A (zh) 面向分布式存储的文件数据加密方法及系统
CN116155489A (zh) 一种密钥替换的方法、装置和电子设备
CN101266636A (zh) 计算机安全存储卡及存储方法
Hou et al. An efficient way to build secure disk

Legal Events

Date Code Title Description
FG Patent granted

Ref document number: 121487

Country of ref document: FI

MM Patent lapsed