1.當(dāng)前特權(quán)CPL(Current Privilege Level)
CPL是當(dāng)前進(jìn)程的權(quán)限級(jí)別(Current Privilege Level),是當(dāng)前正在執(zhí)行的代碼所在的段的特權(quán)級(jí),存在于cs寄存器的低兩位。
2.描述符特權(quán)級(jí)DPL(Descriptor Privilege Level)
DPL存儲(chǔ)在段描述符中,規(guī)定訪問(wèn)該段的權(quán)限級(jí)別(Descriptor Privilege Level),每個(gè)段的DPL固定。
3.請(qǐng)求特權(quán)級(jí)RPL(Request Privilege Level)
RPL保存在選擇子的最低兩位。RPL說(shuō)明的是進(jìn)程對(duì)段訪問(wèn)的請(qǐng)求權(quán)限,意思是當(dāng)前進(jìn)程想要的請(qǐng)求權(quán)限。RPL的值由程序員自己來(lái)自由的設(shè)置,并不一定RPL>=CPL,但是當(dāng)RPL<CPL時(shí),實(shí)際起作用的就是CPL了,因?yàn)樵L問(wèn)時(shí)的特權(quán)檢查是判斷:EPL=max(RPL,CPL)<=DPL是否成立,所以RPL可以看成是每次訪問(wèn)時(shí)的附加限制,RPL=0時(shí)附加限制最小,RPL=3時(shí)附加限制最大。所以你不要想通過(guò)來(lái)隨便設(shè)置一個(gè)RPL來(lái)訪問(wèn)一個(gè)比CPL更內(nèi)層的段。
對(duì)于為甚麼在CPL之外在增加一個(gè)RPL的原因:
Intel手冊(cè)上的解釋為:The RPL can be used to insure that privileged code does not access a segment on behalf of an application program unless the program itself has access privileges for that segment.
(RPL能夠用來(lái)確保具有特權(quán)級(jí)的代碼不會(huì)代表另一個(gè)應(yīng)用程序去訪問(wèn)一個(gè)段,除非那個(gè)應(yīng)用程序具有訪問(wèn)那個(gè)段的權(quán)限.)
比方說(shuō):A進(jìn)程的DPL為0,C進(jìn)程的DPL為1,現(xiàn)在有一個(gè)B進(jìn)程他的DPL為2,這B進(jìn)程想委托A進(jìn)程去訪問(wèn)C的數(shù)據(jù),如果沒(méi)有RPL的話這樣的委托訪問(wèn)是可以成功的,但這樣是非常不安全的。有了RPL以后A進(jìn)程在訪問(wèn)C的時(shí)候還要受到RPL的約束,此時(shí)可以將訪問(wèn)C的選擇子的RPL設(shè)為B的DPL,這樣A的訪問(wèn)權(quán)限就相當(dāng)為EPL=max(RPL,DPL)=2,這樣他就無(wú)法代表B去越權(quán)訪問(wèn)C了。
在網(wǎng)上還有一個(gè)形象的例子,一起貼出來(lái):
一個(gè)農(nóng)民(低特權(quán)級(jí))請(qǐng)縣長(zhǎng)(高特權(quán)級(jí))打聽(tīng)一種超級(jí)種子,如果找到的話幫忙拿一點(diǎn)回來(lái),聽(tīng)聞這種超級(jí)種子可讓收成倍增。縣長(zhǎng)說(shuō):好!我認(rèn)識(shí)很多當(dāng)官的,我可以幫你打聽(tīng)一下哪里有,但是有些地方如果需要表示身分的話我只能說(shuō)我是農(nóng)民的代理人。縣長(zhǎng)利用自己的身份很容易找到了種子在哪里---找的時(shí)候沒(méi)有人問(wèn)起他代表誰(shuí)。縣長(zhǎng)問(wèn)種子管理員可不可以給他一點(diǎn),管理員說(shuō)種子不能給農(nóng)民因?yàn)榉N子還在試驗(yàn)階段,我們可以給縣長(zhǎng)讓他們帶回當(dāng)?shù)氐膶<襾?lái)幫忙一起做試驗(yàn),但是一定要縣長(zhǎng)來(lái)申請(qǐng)。那你是誰(shuí)?縣長(zhǎng)說(shuō)我是農(nóng)民的代理人,因?yàn)榭h長(zhǎng)保證他會(huì)這樣回答的(他也不知道那農(nóng)民是不是專家),管理員當(dāng)然不給。縣長(zhǎng)沒(méi)辦法只能告訴農(nóng)民拿不到種子。這件事里面縣長(zhǎng)是以縣長(zhǎng)的身份幫農(nóng)民找到種子,但需要表示身分的時(shí)候他說(shuō)只是農(nóng)民的代理人。這樣做縣長(zhǎng)可以幫人但也不會(huì)給別人利用。(農(nóng)民可能把種子拿回來(lái)賣錢也說(shuō)不定,沒(méi)人知道)
在這里RPL就是縣長(zhǎng)的另一個(gè)身份---農(nóng)民的代理人也就是農(nóng)民---他會(huì)帶在身上,人家沒(méi)有問(wèn)他的時(shí)候他不會(huì)告訴別人,所以別人也就以縣長(zhǎng)的身分來(lái)看待他。當(dāng)查身份的時(shí)候他才告訴你---我是農(nóng)民的代理人。
posted on 2008-10-08 20:28
楊彬彬 閱讀(1815)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
操作系統(tǒng)