Mc cap 3
- 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:
→
se semnaleaz “violarea protec iei” →
ă
→ se genereaz o întrerupere soft dedicat
→
ă
ă
→ se ini iaz o procedur de r spuns adecvat
ă
ă
ă
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
ă
verificare “on chip”
1
- 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
ă
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
2
- 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
ă
ş
Ă
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
3
- 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âmpuri
implicate: W, R
ă
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
4
- 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 segmentelor
de 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”
ă
ă
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
5
ş
- 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
ă
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
6
ă
ă
ă
- 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 segmente
aflate 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
ş
(
ş
:ulpmexE
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
7
- 8. 3.4. Protec ia datelor i a programelor
ş
a) Accesul datelor
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 privilegiu
al segmentului de date i autorizeaz în cazul segmentului de program
RPL :
nivelul de privilegiu cerut (bi ii 0-1 din SELECTOR); este nivelul impus
de cel care furnizeaz selectorul
ă
ă
ş
ă
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
ă
ă
CPL
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
8
:
- 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)
ă
ă
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
9
- 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
ş
Registru
segment
rs
Tipuri de segmente permise
Seg.date“RO” Seg.date“RW” Seg.progr.“EO” Seg.progr.“ER”
DS
da
da
nu
da
ES,FS,GS
da
da
nu
da
SS
nu
da
nu
nu
CS
nu
nu
da
da
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
10
- 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:
pentru stiv trebuie ca: DPL = CPL.
b) segmentele de program "conforme" C=1) sunt exceptate
)a
ă
(
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
ă
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
11
ă
- 12. b) Accesul segmentelor de program
•
Segmente de program care sunt doar executabile (selector în CS).
•
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
(
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
12
- 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
r16mem16, 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 cu RPL din operand 2. Altfel, nu se întâmpl nimic
ă
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
13
- 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
ă
ă
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
14
- 15. Poarta de apelare
Pentru IA32
(386, 486, Pentium)
Descriere
4
(0100)
12
(1100)
poart de apelare
5
(0101)
05
(0101)
poart de proces
6
(0110)
14
(1110)
poart pentru întreruperi
7
(0111)
15
(1111)
poart pentru „trap”
ă
ă
ă
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
ă
ă
: TIP
:S=0
: DPL al por ii
: P ( „prezent”)
;
;
b0 - b3
b4
b5 - b6
b7
Pentru IA16
(Intel 80286)
ă
ă
Octetul ACCES al unei por i :
15
- 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:
ă
SELECTOR DESTINA IE s nu fie nul
SELECTOR DESTINA IE s fie în limita tabelei de descriptori vizat
Descriptorul vizat s fie pentru segment de program
Segmentul de program s fie prezent i în LIMITA impus
CPL apelant ≤ DPL poart
ă
ă
ă
ă
ă
ş
ă
ă
I.
II.
III.
IV.
V.
•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
ă
ă
ă
ş
ş
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
16
ă
şă
- 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 ”
ă
ă
ă
ă
ş
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
17
- 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
ă
ă
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
19
ă
ă
- 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 apelat
s 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
ă
ă
ş
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
20
ă
- 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
ă
ă
ă
ş
ş
ă
ă
ş
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
21
ş
- 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
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
23
- 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
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
24
- 25. 3.6. Protec ia paginilor
Protec ia paginilor pentru Intel 386, 486 Pentium:
Elementele din directorul de tabele i tabelele paginilor:
ş
Câmpurile R/W, U/S folosesc pentru protec ia paginilor:
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
25
- 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
ă
ă
= 1 – supervizorul poate scrie în pagini, dac are i permisiunea suplimentar
dat de un câmp din CR0
ă
ş
ă
ă
R/W
Microcontrolere - Capitolul 3
Corneliu BURILEANU ©
26