Tietojärjestelmien laitteistosuojaus - laitteistotasolla toteutettu tiedon ja tietojärjestelmien suojaus. Nämä työkalut ovat välttämätön osa tietojärjestelmän turvallisuutta , vaikka laitteistokehittäjät jättävätkin yleensä tietoturvaongelmien ratkaisun ohjelmoijien tehtäväksi.
Tämä ongelma on herättänyt monien yritysten huomion, kuten Intel . 80-luvulla kehitettiin järjestelmä 432, mutta projekti epäonnistui. Ehkä "suuren" epäonnistumisen jälkeen muut yritykset hylkäsivät tämän idean.
Neuvostoliiton kehittäjät ratkaisivat laskelmien laitteistosuojauksen luomalla Elbrus 1 -laskentakompleksin . Se perustuu ajatukseen tyypin hallinnasta kaikilla järjestelmän tasoilla, mukaan lukien laitteisto. Ja kehittäjien tärkein ansio sen systemaattisessa toteutuksessa.
Elbruksen kehittäjät ehdottivat seuraavaa suojatun tietojärjestelmän mallia [1] .
Yleisesti ottaen tietojärjestelmä voidaan esittää tietotilana ja sitä palvelevana käsittelylaitteena. Laskelmat on jaettu tietoavaruudessa sijaitseviin erillisiin laskentamoduuleihin. Laskelmien toteutuskaavio voidaan esittää seuraavasti: prosessointilaite ohjelman ohjauksessa pääsee käsiksi tähän tilaan, lukee ja muokkaa sitä.
Järjestelmän kuvaamiseksi esittelemme käsitteet
Solmu on mielivaltaisen kokoinen tietosolu, jossa on linkki siihen käsittelylaitteelta.
Linkki ei ainoastaan kuvaa tietoja, vaan sisältää myös kaikki käyttöoikeudet niihin. Järjestelmän tulee varmistaa, että viittauksia käyttävät toiminnot eivät käytä muuntyyppistä dataa ja että operaatiot muun tyyppisillä argumenteilla eivät voi muuttaa viittausta.
Ohjelman konteksti on joukko kaikkia tietyn moduulin laskelmia varten käytettävissä olevia tietoja.
Luodaan mielivaltaisen kokoinen solmu tietojen tallennusta varten
Kutemisen jälkeen uuden solmun pitäisi olla
Solmun poistaminen .
Kontekstin muutos tai prosessointilaitteen suorittaman proseduurin muutos.
Uusi konteksti koostuu kolmesta osasta:
Yleiset menetelmät ja vaatimukset kontekstin vaihtamiselle:
Toteutukset voivat olla erilaisia (myös ilman erityisviittauksia), mutta perusperiaatteita tulee noudattaa:
Elbrus - arkkitehtuurissa tietotyyppien erottamiseksi sen tunniste tallennetaan muistiin jokaisen sanan mukana . Tunnisteen avulla voit määrittää, onko annettu sana linkki vai kuuluuko se johonkin erityiseen tietotyyppiin.
Linkki sisältää kuvauksen alueesta (kahvasta), johon se viittaa, ja käyttöoikeudet. Kuvaajan tulee sisältää perusosoite ja tietokoko.
Seuraavat kuvausmuodot ovat mahdollisia:
Oliokuvaajaa käytetään olio-ohjelmoinnin tukemiseen ja se sisältää lisäksi kuvauksen yksityisistä ja julkisista alueista. Pääsy julkiselle alueelle on vakio (perusosoitteen ja indeksin lisääminen sekä myöhemmän koon säädön. Jos muistin pääsykomentoissa on merkki yksityisistä tiedoista, niin pääsyn ratkaisemiseksi tarkastetaan prosessorissa oleva erityinen rekisteri, joka tallentaa objektin tyypin, kun tämän tyyppisiä prosessointiohjelmia on käynnissä, jolloin tämän tyyppisten kohteiden yksityiset tiedot tulevat saataville ohjelman sisällä.
Kun käytetään muistisolua, linkin oikeellisuus tarkistetaan.
Tärkeitä toimintoja linkkien kanssa työskennellessä:
Moduulikonteksti koostuu RAM-muistiin ja tiedostoista tallennetusta tiedosta, ja se toimii viitteenä prosessorirekistereihin.
Kontekstin vaihto on pohjimmiltaan kutsu proseduuriin tai paluu siitä. Kun toiminto suoritetaan, alkuperäisen moduulin koko konteksti säilyy ja uusi luodaan. Kun prosessi poistuu, sen konteksti tuhoutuu.
Toteutettaessa menettelymekanismia Elbrusissa pinomekanismia käytetään lisäämään paikallisen datan muistin allokoinnin tehokkuutta .
Pinotiedot on jaettu kolmeen ryhmään sen toiminnallisten ominaisuuksien ja käyttäjän saavutettavuustason mukaan:
Proseduuripino on tarkoitettu toimintarekistereihin sijoitetuille tiedoille. Kukin toiminto toimii vain omassa ikkunassaan, joka voi mennä päällekkäin edellisen ikkunan kanssa parametrialueella (se on myös palautusarvoalue). Tietojen pyytäminen (käyttäjälle) on mahdollista vain nykyisessä ikkunassa, joka sijaitsee aina toimintarekistereissä.
Käyttäjäpino on datalle, jonka käyttäjä haluaa tallentaa muistiin.
Sidontatietopino on suunniteltu sisältämään tiedot edellisestä (kutsuvasta) menettelystä ja siitä, mitä on käytetty palatessa. Turvallisen ohjelmoinnin avulla käyttäjän ei pitäisi pystyä muuttamaan näitä tietoja, joten sille on varattu erityinen pino, joka on vain käyttöjärjestelmän ja laitteiston käytettävissä. Sitovan tiedon pino on järjestetty samalla tavalla kuin proseduuripino.
Koska virtuaalimuistia käytetään uudelleen pinossa, tietosuojasta tulee ongelma. Siinä on kaksi näkökohtaa:
Ensimmäinen ongelma ratkaistaan puhdistamalla uudelleen käytetyt muistit automaattisesti. Toisen ongelman ratkaisemisen periaate on seuraava. Osoittimet proseduurin nykyiseen kehykseen voidaan tallentaa vain nykyiseen kehykseen tai välittää parametrina kutsutulle proseduurille (syötetty pinosta). Näin ollen osoitinta ei voida kirjoittaa globaaleihin tietoihin, välittää palautusarvona eikä kirjoittaa pinon syvyyteen.