Hårdvaruskydd av informationssystem - medel för skydd av information och informationssystem implementerade på hårdvarunivå. Dessa verktyg är en nödvändig del av informationssystemsäkerhet , även om hårdvaruutvecklare vanligtvis överlåter lösningen av informationssäkerhetsproblem till programmerare.
Detta problem har uppmärksammats av många företag, inklusive som Intel . På 80-talet utvecklades systemet 432. Men projektet misslyckades. Kanske var det efter misslyckandet med den "stora" som andra företag övergav denna idé.
Uppgiften med hårdvaruskydd av beräkningar löstes av sovjetiska utvecklare genom att skapa datorkomplexet Elbrus 1 . Den är baserad på idén om typkontroll på alla nivåer i systemet, inklusive hårdvaran. Och utvecklarnas främsta förtjänst i dess systematiska genomförande.
Utvecklarna av Elbrus föreslog följande modell av ett säkert informationssystem [1] .
I allmänhet kan ett informationssystem representeras som ett informationsutrymme och en bearbetningsanordning som betjänar det. Beräkningar är uppdelade i separata beräkningsmoduler placerade i informationsutrymmet. Schemat för att implementera beräkningar kan representeras enligt följande: en bearbetningsenhet under ledning av ett program kan komma åt detta utrymme, läsa och redigera det.
För att beskriva systemet introducerar vi begreppen
En nod är en datacell av godtycklig storlek, tillsammans med en länk till den från bearbetningsenheten.
Länken beskriver inte bara data, utan innehåller också alla åtkomsträttigheter till den. Systemet måste säkerställa att operationer som använder referenser inte använder data av andra typer och att operationer med argument av andra typer inte kan ändra referensen.
Kontexten för programmet är uppsättningen av all data tillgänglig för beräkningar i en viss modul.
Skapa en nod av godtycklig storlek för datalagring
Efter lek ska den nya noden vara
Ta bort en nod .
Ändring av sammanhang eller ändring av procedur som exekveras av bearbetningsenheten.
Det nya sammanhanget består av tre delar:
Allmänna metoder och krav för kontextbyte:
Implementeringarna kan vara olika (inklusive de utan särskilda referenser), men de grundläggande principerna måste följas:
I Elbrus-arkitekturen , för att skilja mellan datatyper, lagras dess tagg i minnet tillsammans med varje ord . Med taggen kan du avgöra om det givna ordet är en länk eller tillhör någon speciell datatyp.
Länken innehåller en beskrivning av området (handtaget) som den hänvisar till och åtkomsträttigheter. Beskrivningen måste innehålla basadressen och datastorleken.
Följande deskriptorformat är möjliga:
Objektbeskrivningen används för att stödja objektorienterad programmering och innehåller dessutom en beskrivning av de privata och offentliga områdena. Tillgång till det allmänna området är standard (tillägg av basadress och index tillsammans med efterföljande storlekskontroll. Om det finns tecken på privata data i minnesåtkomstkommandona kontrolleras ett speciellt register i processorn för att lösa åtkomsten, vilket lagrar typen av objekt när bearbetningsprogram av denna typ körs.Privat data för objekt av denna typ blir alltså tillgänglig inuti programmet.
Vid åtkomst till en minnescell kontrolleras länkens korrekthet.
Viktiga åtgärder för att arbeta med länkar:
Modulkontexten består av data lagrad i RAM och i filer, och tjänar som en referens till processorregister.
En kontextväxling är i huvudsak ett anrop till eller retur från en procedur. När proceduren körs bevaras hela sammanhanget för den ursprungliga modulen och en ny skapas. När en procedur avslutas förstörs dess sammanhang.
När den processuella mekanismen implementeras i Elbrus, används stackmekanismen för att öka effektiviteten av minnesallokering för lokal data .
Stackdata delas in i tre grupper efter dess funktionella egenskaper och tillgänglighetsnivå för användaren:
Stapeln med procedurer är avsedd för data som placeras i verksamhetsregister. Varje procedur fungerar bara i sitt eget fönster, som kan överlappa det föregående fönstret av parameterområdet (det är också returvärdesområdet). Att begära data (för användaren) är endast möjligt i det aktuella fönstret, som alltid finns i driftregistren.
Användarstacken är för data som användaren vill placera i minnet.
Den bindande informationsstacken är utformad för att innehålla information om den tidigare (anrops)proceduren och den som användes vid retur. Med säker programmering bör användaren inte kunna ändra denna information, så en speciell stack tilldelas för den, endast tillgänglig för operativsystemet och hårdvaran. Stapeln med bindande information är ordnad på samma sätt som stapeln av procedurer.
Eftersom virtuellt minne återanvänds i stacken blir dataskyddet ett problem. Den har två aspekter:
Det första problemet löses genom automatisk rengöring av återanvänt minne. Principen för att lösa det andra problemet är som följer. Pekare till den aktuella ramen för en procedur kan endast lagras i den aktuella ramen, eller skickas som en parameter till den anropade proceduren (passade upp i stacken). Följaktligen kan pekaren inte skrivas till den globala datan, inte heller skickas som ett returvärde eller skrivas till stackens djup.