mc cap 3

26
Microcontrolere - Capitolul 3 Corneliu BURILEANU © 1 3. MECANISMUL PROTEC IEI 3.1. Tipuri de protec ii Tipuri de protec ii: controlul tipurilor de informa ii protec ia inter-proces (între utilizatori) protec ia intra-proces (între softul de sistem i cel de aplica ii) Tipuri de mecanisme de protec ie: protec ia intrinsec gestion rii memoriei privilegiile multi-nivel Algoritm de lucru: verificare “on chip” se semnaleaz “violarea protec iei” se genereaz o întrerupere soft dedicat se ini iaz o procedur de r spuns adecvat

Upload: iulian-pavaloiu

Post on 09-Aug-2015

81 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

1

3. MECANISMUL PROTEC ŢIEI

3.1. Tipuri de protecţii

Tipuri de protecţii:•••• controlul tipurilor de informa ţii•••• protecţia inter-proces (între utilizatori)•••• protecţia intra-proces (între softul de sistem şi cel de aplicaţii)

Tipuri de mecanisme de protecţie:•••• protecţia intrinsecă gestionării memoriei•••• privilegiile multi-nivel

Algoritm de lucru:

verificare “on chip” →→→→ se semnalează “violarea protecţiei” →→→→

→→→→ se generează o întrerupere soft dedicată →→→→

→→→→ se iniţiază o procedură de răspuns adecvată

Page 2: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

2

Segment: “cuanta” de memorie cu atribute de protecţie precizate

•segmentare←←←← modularizare programe

•atributul de arhitectur ă pentru un segment este un SELECTOR

•între SELECTOR şi segmentul vizat este un DESCRIPTOR

DESCRIPTOR-ul permite:

�rezervarea unei zone de memorie pentru segment�definirea dimensiunii segmentului în funcţie de cantitatea de informaţii care trebuie stocată�restricţionarea accesului în segment

Proces:

•execuţia a unul sau mai multe programe

•nivelul de privilegiu este dinamic (după programul în curs de rulare)

•atribute: spaţiul adreselor, utilizarea registrelor, stivă, date

Page 3: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

3

3.2. Protecţia rezultată din gestionarea memoriei

Separarea spaţiului adreselor în:

•adrese globale –TI = 0

•adrese locale –TI = 1

Utilizarea tabelelor de descriptori –GDT şi LDT

Delimitarea segmentelor de lucru –BAZA şi LIMITA

Alocarea de proprietăţi segmentelor de lucru –ACCES; se impun constrângeri de utilizare

Definirea cuantei de informaţie (granularitatea) şi a compatibilit ăţii cu alte procesoare –ALTE_PROPRIETĂŢI

Page 4: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

4

1. Verificări la încărcarea selectorului:

1.A – Verificarea tipului de segment relativ la registrul segment folosit; câmpuri implicate: S, P/D, ED

1.B – Verificarea existenţei descriptorului pentru segmentul vizat; câmpuri implicate: ACCES

1.C – Verificarea dacă segmentul vizat este în memoria internă; câmpuri implicate: P

1.D – Verificarea respectării regulilor nivelelor de privilegii; câmpuri implicate: DPL, C

2. Verificări la încărcarea descriptorului în registrul cache:

2.A – Verificarea dacă sunt respectate limitele segmentului; câmpuri implicate:LIMITA , ED

2.B – Verificarea dacă segmentul este folosit conform atributelor din octetul ACCES; câmpuriimplicate: W, R

Page 5: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

5

Observaţii:

GDT nu poate fi accesată de către oricare utilizator – mecanism suplimentar de protecţie; ea conţine informa ţii despre LDT şi deci impune configuraţia segmentelor de sistem şi, implicit, a segmentelorde lucru

GDT şi LDT au, de regulă, dimensiuni fixate indiferent de evoluţia numărului de segmente de lucru pentru un program: ACCES = 00H – „descriptor nul”

Page 6: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

6

3.3. Protecţia rezultată din mecanismul privilegiilor multi-nivel

Nivelele de protecţie

nivel 0 – cel mai privilegiat; conţine nucleul sistemului de operare:gestionarea memoriei, multiprocesarea, controlul resurselor I/O;

nivel 1 – restul sistemului de operare;

nivel 2 – soft dedicat şi supervizor sistem;

nivel 3 – soft de aplicaţii

Algoritm de lucru:

verificare “on chip” a „autoriza ţiei” de acces în funcţie de „clasificarea” informaţiei vizate →→→→

→→→→ se semnalează “violarea protecţiei” →→→→

→→→→ se generează o întrerupere soft dedicată →→→→

→→→→ se iniţiază o procedură de răspuns adecvată

Page 7: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

7

Regulile generale de protecţie impuse de privilegiile multi-nivel:

1. Datele pot fi accesate în segmente cu acelaşi nivel de privilegiu sau în segmenteaflate pe nivele mai puţin privilegiate

2. Programele pot fi accesate(CALL, JMP) în segmente cu acelaşi nivel de privilegiu.Accesul prin nivele este restricţionat: se face numai prin PORŢI

Exemplu:

Page 8: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

8

3.4. Protecţia datelor şi a programelor

Datele pot fi accesate în segmente de date (selectoare în DS, ES, FS, GS, SS)sau în segmente de program citibile (selector în CS)

Indicatori ai nivelului de privilegiu:

DPL : nivelul de privilegiu al descriptorului (bi ţii 5-6 din ACCES); clasifică nivelul de privilegiual segmentului de dateşi autorizează în cazul segmentului de program

RPL : nivelul de privilegiu cerut (bi ţii 0-1 din SELECTOR); este nivelul impusde cel care furnizează selectorul

CPL: nivelul de privilegiu curent (menţinut automat de către procesor);este nivelul de privilegiu al segmentului curent de program care dă autorizaţia de acces.Deci: CPL = DPL al descriptorului accesat cu SELECTORUL din CS, pentru programul curent

a) Accesul datelor

Page 9: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

9

Regula 1 devine:

max (CPL, RPL) ≤≤≤≤ DPL

EPL = max (CPL, RPL)

EPL ≤≤≤≤ DPL

adică, pentru accesul datelor în segmente de dateşi în segmente de program non-conforme,

programul curent trebuie să fie cel puţin tot atât de privilegiat ca şi segmentul vizat

(autorizaţia programului trebuie să fie mai puternică decât clasificarea segmentului)

Page 10: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

10

Verific ări :

VERIFICAREA I (tip 1.A şi 2.B):

Se verifică tipul de segment în funcţie de registrul segment în care se încarcă selectorul

şi în funcţie de octetul ACCES

TTiippuurr ii ddee sseeggmmeennttee ppeerr mmiissee RReeggiissttrr uu sseeggmmeenntt

rrss SSeegg..ddaattee““ RROO”” SSeegg..ddaattee““ RRWW”” SSeegg..pprr ooggrr ..““ EEOO”” SSeegg..pprr ooggrr ..““ EERR””

DDSS ddaa ddaa nnuu ddaa

EESS,,FFSS,,GGSS ddaa ddaa nnuu ddaa

SSSS nnuu ddaa nnuu nnuu

CCSS nnuu nnuu ddaa ddaa

Page 11: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

11

VERIFICAREA a II-a (tip 1.D):

max(CPL, RPL) ≤≤≤≤ DPL

DPL – pentru segmentul vizat (clasificare)

CPL – pentru programul care rulează (autorizaţie)

Excepţii:

a) pentru stivă trebuie ca: DPL = CPL .

b) segmentele de program "conforme"(C=1) sunt exceptate

VERIFICAREA a III-a (tip 2.A):

Se verifică încadrarea în LIMITA indicată de descriptor:

Pentru ED = 0 trebuie ca AE curentă ≤≤≤≤ LIMITA

Pentru ED = 1 trebuie ca AE curentă >>>> LIMITA

Page 12: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

12

b) Accesul segmentelor de program

•••• Segmente de program care sunt doar executabile (selector înCS).

•••• Instruc ţiunile folosite sunt de tip “JMP”, “ CALL ” şi “ RETURN”

VERIFICAREA I (tip 1.A şi 2.B):

Se verifică tipul de segment în funcţie de registrul segment în care se încarcă selectorul (CS)

şi în funcţie de octetul ACCES ţinând seama că segmentul este de tip “EO”

VERIFICAREA a II-a (tip 1.D) – se aplică Regula 2:

CPL = DPL

DPL – pentru programul vizat (clasificare)

CPL – pentru programul care rulează (autorizaţie)

Excepţie:

segmentele de program „conforme”(C=1) sunt exceptate

Page 13: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

13

Observaţii:

a) CALL către segmente de program cu nivel de privilegiu mai mare se face numai prin porţi

b) RETURN se poate face la un segment de program cu acelaşi nivel de privilegiu sau mai puţin privilegiat

VERIFICAREA a III-a (tip 2.A):

Se verifică încadrarea în LIMITA indicată de descriptor:

Trebuie ca AE curent ă ≤≤≤≤ LIMITA

Ajustarea (micşorarea) nivelului de privilegiu al selectorului (autorizaţia)

ARPL r16 mem16, r16

operand 1:SELECTORUL procedurii apelate (care se ajustează);

operand 2:SELECTORUL procedurii apelante.

Dacă RPL din operandul 1 este numeric mai mic decât al doilea, ZF←←←←1 şi RPL din operand 1

devine egal cuRPL din operand 2. Altfel, nu se întâmplă nimic

Page 14: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

14

3.5. Transferul controlului între nivelele de protecţie

Instruc ţiunile folosite sunt de tip “JMP”, “ CALL ” şi “ RETURN”

•Transfer intra-segment: nu se schimbă nivelul de privilegiu

•Transfer inter-segment, la acelaşi nivel de privilegiu: regula 2 este respectată

•Transfer inter-segment la nivele diferite de privilegiu: se folosesc porţi

Porţile sunt descriptori de tip b3

•Porţile reprezintă un nivel suplimentar de adresare indirectă

•SELECTORUL pentru o poartă se încarcă obligatoriu în CS

•Se utilizează pentru:•apelarea programelor la nivele diferite de privilegiu;•răspunsul la cererile de întreruperi;•multiprocesare

Page 15: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

15

Poarta de apelare

Octetul ACCES al unei porţi :

b0 - b3 : TIP ;

b4 : S = 0 ;

b5 - b6 : DPL al porţiib7 : P ( „prezent”)

PPeennttrr uu II AA1166 ((II nntteell 8800228866))

PPeennttrr uu II AA3322 ((338866,, 448866,, PPeennttiiuumm))

DDeessccrr iieerr ee

44 ((00110000)) 1122 ((11110000)) ppooaarr ttăă ddee aappeellaarr ee

55 ((00110011)) 0055 ((00110011)) ppooaarr ttăă ddee pprr oocceess

66 ((00111100)) 1144 ((11111100)) ppooaarr ttăă ppeennttrr uu îînnttrr eerr uuppeerr ii

77 ((00111111)) 1155 ((11111111)) ppooaarr ttăă ppeennttrr uu „„ ttrr aapp””

Page 16: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

16

Etapele apelării prin poart ă:

•Din AV care însoţeşte instrucţiunile “ JMP”, “ CALL ” şi “ RETURN” se păstrează doar SELECTOR; OFFSET-ul se ignoră →→→→ se identifică un descriptor de tip b3 – poarta de apelare

•Verific ări:

I. SELECTOR DESTINAŢIE să nu fie nulII. SELECTOR DESTINAŢIE să fie în limita tabelei de descriptori vizatăIII. Descriptorul vizat s ă fie pentru segment de programIV. Segmentul de program să fie prezent şi în LIMITA impusăV. CPL apelant ≤≤≤≤ DPL poartă

•Se determină adresa informaţiei din segmentul vizat folosind mecanismul translaţiei cu AV din poartă, formată din SELECTOR DESTINAŢIE şi OFFSET DESTINAŢIE(RPL din SELECTOR DESTINAŢIE se ignoră)

•Se determină necesitatea schimbării nivelului de privilegiu; se admit:•CPL ≥≥≥≥ DPL pentru CALL•CPL = DPL pentru JMP•CPL ≤≤≤≤ DPL pentru RETURN

•Se face schimbarea nivelului de privilegiu, dacă e necesar

•Se selectează şi se actualizează noua stivă – corespunzătoare noului nivel de privilegiu;pentru a menţine integritatea sistemului :

•în cadrul unui proces, fiecare nivel de privilegiu îşi are propria stivă;•procese diferite, chiar aflate la acelaşi nivel de privilegiu, au stive diferite

Page 17: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

17

Poarta garantează că toate transferurile la un nivel superior de privilegiu se fac printr-un punct de intrare sigur şi nu în mijlocul unei proceduri sau al unei instrucţiuni sau la o procedură „vulnerabil ă”

Page 18: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

18

Page 19: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

19

Schimbările de stivă cauzate de porţile de apelare

Etapele de actualizare a stivei:

•Se selectează o nouă stivă cu nivelul de privilegiu corespunzător noului CPL

•Noua valoare a indicatorului de stivă (SS):(SP) este încărcată din segmentul de stare al procesului (TSS)

•Câmpul NUMĂRĂTOR DE CUVINTE indică numărul de poziţii din stiv ă (de câte 4B pentru IA32)care vor fi copiate din vechea stivă în noua stivă; se realizează transparent pentru utilizator

•Se verifică dacă informa ţiile care urmează a fi copiate au loc în noua stivă

Page 20: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

20

Explicaţia utilizării instruc ţiunilor de tip CALL :

•Transferul cu instruc ţiunea CALL se face către nivele mai privilegiate pentru ca stiva modulului apelatsă se afle la dispoziţia procesului cu un nivel de privilegiu mai mareşi nu invers

Evident, RETURN se face către nivele cu un nivel de privilegiu inferior

•Este interzis transferul controlului către alte nivele de privilegiu prin instrucţiuni de tip JMP pentru cănu există posibilitatea de a salva selectorul din CS şi nu există posibilitatea de a identifica(din descriptorul aferent selectorului) nivelul autorizaţiei

Page 21: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

21

Sinteza modalităţilor de transfer al controlului programului – aplicarea Regulii 2:

1. Un modul de program poate apela (CALL ) un modul mai privilegiat (numeric – nivel mai mic)numai prin poartă de apelare

2. Este interzisă apelarea unui modul de program mai puţin privilegiat (numeric – nivel mai mare)

3. Apelul la acelaşi nivel de privilegiu este permis şi poarta de apelare e opţională

4. Este interzis saltul (JMP) către alte nivele de privilegiu

5. Saltul la acelaşi nivel de privilegiu este permis şi poarta de apelare e opţională

Page 22: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

22

Exemplu:

Page 23: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

23

Folosirea instrucţiunii “ ARPL ”(Problema „atacului Calului Troian”)

Instruc ţiunea ARPL este inserată în modulul de program de la nivelul 1 de privilegiu;

RPL este ajustat – devine mai mare numeric →→→→ nivelul efectiv de privilegiu se micşorează

max (CPL, RPL) = max (1, 3) = 3 >>>> DPL

Page 24: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

24

Observaţii

•••• Un modul de program care utilizează RPL = 0, poate fi folosit fără pericol la orice nivel de privilegiu:

max (CPL, RPL) = max (CPL, 0) = CPL

•••• Un program la nivel 3 (neprivilegiat) poate utiliza orice RPL:

max (CPL, RPL) = max (3,RPL) = 3

Page 25: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

25

3.6. Protecţia paginilor

Protecţia paginilor pentru Intel 386, 486 Pentium:

Elementele dindirectorul de tabele şi tabelele paginilor :

Câmpurile R/W, U/S folosesc pentru protecţia paginilor:

Page 26: Mc cap 3

Microcontrolere - Capitolul 3 Corneliu BURILEANU ©

26

U/S = 0 – pagina/tabela supervizorului= 1 – pagina/tabela utilizatorului

•Pagina supervizorului poate fi folosită numai de module de program privilegiate: CPL = 0, 1, 2

•Pagina utilizatorului poate fi folosită la orice nivel

•Dacă U/S = 0 în directorul de tabele , U/S din tabela de pagini la care se face referire nu mai contează

R/W = 1 – supervizorul poate scrie în pagini, dacă are şi permisiunea suplimentarădată de un câmp din CR0