drf演算法
1. 請問魔方愛好者們,有人研究3階最少步數么怎麼計算呢
魔方還原,又稱「魔方復原」。狹義的還原是指魔方從非原始狀態到原始狀態的過程,即把一個打亂了的魔方還原為六面的各面顏色一致或圖案正確。而廣義的還原,包括中心塊還原、克隆魔方、花樣魔方等特殊還原。
「七步進階法」是一種狹義的還原方法,即:分七步將打亂了的魔方還原為原始狀態——六個面的各面顏色一致。
魔方的基本概念
為了便於描述魔方套路,我們需要熟悉魔方的一些基本概念——面、角、棱、心,面位、到位、歸位。
第一,魔方的六個面:
藍、橙、黃、綠、紅、白色面就是魔方的六個面。
我們將面向操作者的面稱為「前(F)」;其他以此相對應的位置稱為「右(R)、頂(U)、後(B)、左(L)、底(D)」,
旋轉前魔方的藍、橙、黃這三個直接可見的面,和三個不能直接看到的綠、紅、白色面。
第二,魔方的各類方塊:
其中8 個有三面色塊的魔方塊,叫做「角」。
其中12 個有兩面色塊的魔方塊,叫做「棱」。
另外,我們把每面的中間只有一個色塊的魔方塊,叫做「心」。
好了,我們已經初了解了魔方各類方塊——「角」、「棱」、「心」的初步概念。
第三,魔方各方位角的名稱:
很顯然,8 個角處在不同的方位。
我們把在頂面上的 4 個角分別稱為:上左前角(ULF)、上左後角(ULB)、上右後角(URB)和上右前角(URF);
同理,底面的 4 個角分別為:下左前角(DLF)、下左後角(DLB)、下右後角(DRB)和下右前角(DRF)。
第四,魔方各方位棱的名稱:
同樣,12個棱也處在不同的方位。
為了表述方便,我們把頂面上的 4 個棱分別稱為:上前棱(UF)、上左棱(UL)、上後棱(UB)和上右棱(UR);
同理,在底面的四個棱為:下前棱(DF)、下左棱(DL)、下後棱(DB)和下右棱(DR);
中間的四個棱為:前左棱(FL)、前右棱(FR)、後左棱(BL)、後右棱(BR)。
第五,魔方角和棱的面位、到位和歸位:
很顯然,魔方向外的 26 個塊都是可轉動的。
魔方的角與棱,不僅可通過旋扭產生位置的變化,同時還會在旋扭時自轉或自翻,發生方向的變化。
對於圖形魔方來說,「心」因自轉產生了方向的變化,也是還原魔方時要解決的問題。六面色的魔方由於同一面為同一色,因此不用考慮「心」的問題。
如果魔方塊只有一面的顏色與「心」的顏色相同,而其他顏色和方向還不正確的,稱為「面位」。
如果魔方塊只是位置正確但色面方向還不正確的,稱為「到位」。即棱的兩個面或角的三個面的顏色,與對應的面的顏色相同,但由於錯位而沒有一一對齊。
如果魔方塊位置與方向均正確,稱為「歸位」,簡稱「歸」。即棱的兩個面或角的三個面的顏色,均對應中心面的顏色,它是魔方塊還原後的狀態。
「面位」、「到位」與「歸位」的概念可不要搞混了,對魔方還原來說,這三者是有本質區別的。
魔方棱和角的面位、到位與歸位是還原魔方的階段性目標。
七步進階法
底棱歸位 → 底角歸位 → 中棱歸位 → 頂棱面位 → 頂棱歸位 → 頂角面位 → 頂角歸位
2. 為什麼EFS只對NTFS格式文件加密是微軟有技術難題嗎
EFS是Encrypting File System,加密文件系統的縮寫,他可以被應用在windows 2000以上的操作系統且為NTFS5格式的分區上(windows xp home不支持).
EFS 只能對存儲在磁碟上的數據進行加密,是一種安全的本地信息加密服務.EFS使用核心的的文件加密技術在NTFS卷上存儲加密文件.
它可以防止那些未經允許的對敏感數據進行物理訪問的入侵者(偷取筆記本電腦,硬碟等)
EFS是如何工作的
當一個用戶使用EFS去加密文件時,必須存在一個公鑰和一個私鑰,如果用戶沒有,EFS服務自動產生一對。對於初級用戶來說,即使他完全不懂加密,也能加密文件,可以對單個文件進行加密,也可以對一個文件夾進行加密,這樣所有寫入文件夾的文件將自動被加密。
一旦用戶發布命令加密文件或試圖添加一個文件到一個已加密的文件夾中,EFS將進行以下幾步:
第一步:NTFS首先在這個文件所在卷的卷信息目錄下(這個目錄隱藏在根目錄下面)創建一個叫做efs0.log的日誌文件,當拷貝過程中發生錯誤時利用此文件進行恢復。
第二步:然後EFS調用CryptoAPI設備環境.設備環境使用Microsoft Base Cryptographic Provider 1.0 產生密匙,當打開這個設備環境後,EFS產生FEK(File Encryption Key,文件加密密匙).FEK的長度為128位(僅US和Canada),這個文件使用DESX加密演算法進行加密。
第三步: 獲取公有/私有密匙對;如果這個密匙還沒有的話(當EFS第一次被調用時),EFS產生一對新的密匙.EFS使用1024位的RSA演算法去加密FEK.
第四步:EFS為當前用戶創建一個數據解密塊Data Decryptong Field(DDF),在這里存放FEK然後用公有密匙加密FEK.
第五步:如果系統設置了加密的代理,EFS同時會創建一個數據恢復塊Data Recovery Field(DRF),然後把使用恢復代理密匙加密過的FEK放在DRF.每定義一個恢復代理,EFS將會創建一個Data Recovery Agent(DRA).Winxp沒有恢復代理這個功能,所以沒有這一步.,這個區域的目的是為了在用戶解密文件的中可能解密文件不可用。這些用戶叫做恢復代理,恢復代理在EDRP(Encryption Data Recovery Policy,加密數據恢復策略)中定義,它是一個域的安全策略。如果一個域的EDRP沒有設置,本地EDRP被使用。在任一種情況下,在一個加密發生時,EDRP必須存在(因此至少有一個恢復代理被定義)。DRF包含使用RSA加密的FEK和恢復代理的公鑰。如果在EDRP列表中有多個恢復代理,FEK必須用每個恢復代理的公鑰進行加密,因此,必須為個恢復代理創建一個DRF。
第六步:包含加密數據、DDF及所有DRF的加密文件被寫入磁碟。
第七步: 在加密文件所在的文件夾下將會創建一個叫做Efs0.tmp的臨時文件.要加密的內容被拷貝到這個臨時文件,然後原來的文件被加密後的數據覆蓋.在默認的情況下,EFS使用128位的DESX演算法加密文件數據,但是Windows還允許使用更強大的的168位的3DES演算法加密文件,這是FIPS演算法必須打開,因為在默認的情況下它是關閉的.
第八步:在第一步中創建的文本文件和第七步中產生的臨時文件被刪除。
加密過程圖片可參考 http://www.ntfs.com/images/encryption.gif
文件被加密後,只有可以從DDF或是DRF中解密出FEK的用戶才可以訪問文件.這種機制和一般的安全機制不同並意 味著要想訪問文件,除了要有訪問這個文件的權力外還必須擁有被用戶的公有密匙加密過的FEK.只有使用私有密匙解密文件的用戶才可以訪問文件.這樣的話會有一個問題:就是一個可以訪問文件的用戶可把文件加密之後,文件真正的擁有者卻不能訪問文件.解決這個問題的辦法:用戶加密文件的時候只創建一個文件解密塊Data Decryption Field(DDF),但是只後他可以增加附加用戶到密匙隊列.這種情況下,EFS簡單地把FEK用想給其他用戶訪問權的用戶的私有密匙加密.然後用這些用戶的公有密匙加密FEK,新增加的DDF和第一個DDF放在一起(這些新增加的用戶對文件只有訪問的權力).
解密的過程和加密的過程是相反的,參考http://www.ntfs.com/images/decryption.gif
3. 怎麼打開EFS文件
EFS是Encrypting File System,加密文件系統的縮寫,他可以被應用在windows 2000以上的操作系統且為NTFS5格式的分區上(windows xp home不支持).
EFS 只能對存儲在磁碟上的數據進行加密,是一種安全的本地信息加密服務.EFS使用核心的的文件加密技術在NTFS卷上存儲加密文件.
它可以防止那些未經允許的對敏感數據進行物理訪問的入侵者(偷取筆記本電腦,硬碟等)
EFS是如何工作的
當一個用戶使用EFS去加密文件時,必須存在一個公鑰和一個私鑰,如果用戶沒有,EFS服務自動產生一對。對於初級用戶來說,即使他完全不懂加密,也能加密文件,可以對單個文件進行加密,也可以對一個文件夾進行加密,這樣所有寫入文件夾的文件將自動被加密。
一旦用戶發布命令加密文件或試圖添加一個文件到一個已加密的文件夾中,EFS將進行以下幾步:
第一步:NTFS首先在這個文件所在卷的卷信息目錄下(這個目錄隱藏在根目錄下面)創建一個叫做efs0.log的日誌文件,當拷貝過程中發生錯誤時利用此文件進行恢復。
第二步:然後EFS調用CryptoAPI設備環境.設備環境使用Microsoft Base Cryptographic Provider 1.0 產生密匙,當打開這個設備環境後,EFS產生FEK(File Encryption Key,文件加密密匙).FEK的長度為128位(僅US和Canada),這個文件使用DESX加密演算法進行加密。
第三步: 獲取公有/私有密匙對;如果這個密匙還沒有的話(當EFS第一次被調用時),EFS產生一對新的密匙.EFS使用1024位的RSA演算法去加密FEK.
第四步:EFS為當前用戶創建一個數據解密塊Data Decryptong Field(DDF),在這里存放FEK然後用公有密匙加密FEK.
第五步:如果系統設置了加密的代理,EFS同時會創建一個數據恢復塊Data Recovery Field(DRF),然後把使用恢復代理密匙加密過的FEK放在DRF.每定義一個恢復代理,EFS將會創建一個Data Recovery Agent(DRA).Winxp沒有恢復代理這個功能,所以沒有這一步.,這個區域的目的是為了在用戶解密文件的中可能解密文件不可用。這些用戶叫做恢復代理,恢復代理在EDRP(Encryption Data Recovery Policy,加密數據恢復策略)中定義,它是一個域的安全策略。如果一個域的EDRP沒有設置,本地EDRP被使用。在任一種情況下,在一個加密發生時,EDRP必須存在(因此至少有一個恢復代理被定義)。DRF包含使用RSA加密的FEK和恢復代理的公鑰。如果在EDRP列表中有多個恢復代理,FEK必須用每個恢復代理的公鑰進行加密,因此,必須為個恢復代理創建一個DRF。
第六步:包含加密數據、DDF及所有DRF的加密文件被寫入磁碟。
第七步: 在加密文件所在的文件夾下將會創建一個叫做Efs0.tmp的臨時文件.要加密的內容被拷貝到這個臨時文件,然後原來的文件被加密後的數據覆蓋.在默認的情況下,EFS使用128位的DESX演算法加密文件數據,但是Windows還允許使用更強大的的168位的3DES演算法加密文件,這是FIPS演算法必須打開,因為在默認的情況下它是關閉的.
第八步:在第一步中創建的文本文件和第七步中產生的臨時文件被刪除。
加密過程圖片可參考 http://www.ntfs.com/images/encryption.gif
文件被加密後,只有可以從DDF或是DRF中解密出FEK的用戶才可以訪問文件.這種機制和一般的安全機制不同並意 味著要想訪問文件,除了要有訪問這個文件的權力外還必須擁有被用戶的公有密匙加密過的FEK.只有使用私有密匙解密文件的用戶才可以訪問文件.這樣的話會有一個問題:就是一個可以訪問文件的用戶可把文件加密之後,文件真正的擁有者卻不能訪問文件.解決這個問題的辦法:用戶加密文件的時候只創建一個文件解密塊Data Decryption Field(DDF),但是只後他可以增加附加用戶到密匙隊列.這種情況下,EFS簡單地把FEK用想給其他用戶訪問權的用戶的私有密匙加密.然後用這些用戶的公有密匙加密FEK,新增加的DDF和第一個DDF放在一起(這些新增加的用戶對文件只有訪問的權力).
解密的過程和加密的過程是相反的,參考http://www.ntfs.com/images/decryption.gif
首先,系統檢測用戶是否具有被EFS使用的私有密匙.如果有的話,系統將會在讀取EFS屬性,同時在DDF對列中尋找當前用戶的DDF.如果DDF找到的話,用戶私有密匙將會在那裡解密出FEK.使用解密出來的FEK,EFS去解密加密的文件數據.需要注意的是文件從來不會完全被加密,但是有時候會去加密一些特殊的扇區如果上層模塊要求的話.
EFS組成
EFS由EFS服務、EFS驅動、EFS文件系統運行庫(FSRTL)和Win32 API。EFS服務作為一個標准系統服務運行,它是Windows 2000安全子系統的一部分。它與CryptoAPI介面產生鑰匙、DDF和DRF,EFS驅動就象是NTFS的一部分,它呼叫EFS服務請求鑰匙,DDF和DRF作為需要被創建,一個EFS驅動的組成是EFS FSRTL,它定義了EFS驅動程序能作為NTFS的代表而執行的功能。
EFS和NTFS如何共存
EFS可以被認為除NTFS外的第二層防護,為訪問一個被加密的文件,用戶必須有訪問到文件的NTFS許可權。在相關NTFS許可權的用戶能看到文件夾中的文件,但不能打開文件除非有相應的解密鑰匙。同樣,一個用戶有相應的鑰匙但沒有相應的NTFS許可權也不能訪問到文件。所以一個用戶要能打開加密的文件,同時需要NTFS許可權和解密鑰匙。
然而,NTFS許可權可能被大量的方法穿越,包括口令破解程序、用戶在離開前沒有退出系統或系統內部的NTFSDOS。在NT4.0下,游戲結束了――硬碟上所有的數據都可以訪問了。在Windows 2000下,當一個文件用EFS加密後,一個未授權的用戶,即使訪問到磁碟上的文件,但也不能訪問文件上數據,因為沒有授權用戶的私鑰。
EFS 屬性
當NTFS加密文件的時候,它首先會為文件設置加密標志,然後在存儲DDF和DDR的地方為文件創建一個$EFS屬性.這個屬性的屬性ID=0x100,它可以被加長,佔有0.5k到若干k的大小,這個大小是由DDF和DRF的數量決定的.
http://www.ntfs.com/images/efs_header.gif
下面是一個詳細的EFS屬性的例子.
http://www.raid1.cn/efs/pic/attribute/EFS_example.gif
紫色:EFS屬性大小
天藍色:電腦安全標識符和用戶數字.它指定EFS存儲證書的文件夾.為了得到文件
夾的名字,EFS會做一些轉換.
5A56B378 1C365429 A851FF09 D040000 - 存儲在$EFS中的數據.
78B3565A 2954361C 09FF15A8 000004D0 - 轉換後的結果.
2025018970-693384732-167712168-1232 - 轉換成十進制.
S-1-5-21-2025018970-693384732-167712168-1232 - 加上安全標識符前綴.
得到的文件夾就是:
%UserProfile%\ApplicationData\Microsoft\Crypto\RSA\S-1-5-21-2025018970-693384732167712168-1232\
粉紅色:公有密匙特性
黃色:私有密匙全局唯一標識符(同時被當作容器名字).當EFS從CryptoAPI provider中獲取設備環境的時候使用這個名字.如果$EFS屬性只有一個DDF,容器的名字可以從$efs中計算出來.但是當更多的用戶加入這個文件的時候(就會有更多的DDF和DRF),私有密匙全局唯一標識符並不是保存所有的用戶,其它的必須從基於公有密匙存儲特性的證書中恢復.
紅色:加密提供器的名字(Microsoft Base Cryptographic Provider v.1.0)
綠色:用戶的名稱,DDF和DRF的所有者.
藍色:加密後的FEK.通常FEK是128位的,但是被1024位的RSA密匙加密後,長度變成1024位.
4. 文件被許可權限制,怎麼辦
你這個問題很麻煩的,以下資料給你參考一下吧.祝你好運!
EFS是Encrypting File System,加密文件系統的縮寫,他可以被應用在windows 2000以上的操作系統且為NTFS5格式的分區上(windows xp home不支持).
EFS 只能對存儲在磁碟上的數據進行加密,是一種安全的本地信息加密服務.EFS使用核心的的文件加密技術在NTFS卷上存儲加密文件.
它可以防止那些未經允許的對敏感數據進行物理訪問的入侵者(偷取筆記本電腦,硬碟等)
EFS是如何工作的
當一個用戶使用EFS去加密文件時,必須存在一個公鑰和一個私鑰,如果用戶沒有,EFS服務自動產生一對。對於初級用戶來說,即使他完全不懂加密,也能加密文件,可以對單個文件進行加密,也可以對一個文件夾進行加密,這樣所有寫入文件夾的文件將自動被加密。
一旦用戶發布命令加密文件或試圖添加一個文件到一個已加密的文件夾中,EFS將進行以下幾步:
第一步:NTFS首先在這個文件所在卷的卷信息目錄下(這個目錄隱藏在根目錄下面)創建一個叫做efs0.log的日誌文件,當拷貝過程中發生錯誤時利用此文件進行恢復。
第二步:然後EFS調用CryptoAPI設備環境.設備環境使用Microsoft Base Cryptographic Provider 1.0 產生密匙,當打開這個設備環境後,EFS產生FEK(File Encryption Key,文件加密密匙).FEK的長度為128位(僅US和Canada),這個文件使用DESX加密演算法進行加密。
第三步: 獲取公有/私有密匙對;如果這個密匙還沒有的話(當EFS第一次被調用時),EFS產生一對新的密匙.EFS使用1024位的RSA演算法去加密FEK.
第四步:EFS為當前用戶創建一個數據解密塊Data Decryptong Field(DDF),在這里存放FEK然後用公有密匙加密FEK.
第五步:如果系統設置了加密的代理,EFS同時會創建一個數據恢復塊Data Recovery Field(DRF),然後把使用恢復代理密匙加密過的FEK放在DRF.每定義一個恢復代理,EFS將會創建一個Data Recovery Agent(DRA).Winxp沒有恢復代理這個功能,所以沒有這一步.,這個區域的目的是為了在用戶解密文件的中可能解密文件不可用。這些用戶叫做恢復代理,恢復代理在EDRP(Encryption Data Recovery Policy,加密數據恢復策略)中定義,它是一個域的安全策略。如果一個域的EDRP沒有設置,本地EDRP被使用。在任一種情況下,在一個加密發生時,EDRP必須存在(因此至少有一個恢復代理被定義)。DRF包含使用RSA加密的FEK和恢復代理的公鑰。如果在EDRP列表中有多個恢復代理,FEK必須用每個恢復代理的公鑰進行加密,因此,必須為個恢復代理創建一個DRF。
第六步:包含加密數據、DDF及所有DRF的加密文件被寫入磁碟。
第七步: 在加密文件所在的文件夾下將會創建一個叫做Efs0.tmp的臨時文件.要加密的內容被拷貝到這個臨時文件,然後原來的文件被加密後的數據覆蓋.在默認的情況下,EFS使用128位的DESX演算法加密文件數據,但是Windows還允許使用更強大的的168位的3DES演算法加密文件,這是FIPS演算法必須打開,因為在默認的情況下它是關閉的.
第八步:在第一步中創建的文本文件和第七步中產生的臨時文件被刪除。
文件被加密後,只有可以從DDF或是DRF中解密出FEK的用戶才可以訪問文件.這種機制和一般的安全機制不同並意 味著要想訪問文件,除了要有訪問這個文件的權力外還必須擁有被用戶的公有密匙加密過的FEK.只有使用私有密匙解密文件的用戶才可以訪問文件.這樣的話會有一個問題:就是一個可以訪問文件的用戶可把文件加密之後,文件真正的擁有者卻不能訪問文件.解決這個問題的辦法:用戶加密文件的時候只創建一個文件解密塊Data Decryption Field(DDF),但是只後他可以增加附加用戶到密匙隊列.這種情況下,EFS簡單地把FEK用想給其他用戶訪問權的用戶的私有密匙加密.然後用這些用戶的公有密匙加密FEK,新增加的DDF和第一個DDF放在一起(這些新增加的用戶對文件只有訪問的權力).
解密的過程和加密的過程是相反的,參考http://www.ntfs.com/images/decryption.gif
首先,系統檢測用戶是否具有被EFS使用的私有密匙.如果有的話,系統將會在讀取EFS屬性,同時在DDF對列中尋找當前用戶的DDF.如果DDF找到的話,用戶私有密匙將會在那裡解密出FEK.使用解密出來的FEK,EFS去解密加密的文件數據.需要注意的是文件從來不會完全被加密,但是有時候會去加密一些特殊的扇區如果上層模塊要求的話.
EFS組成
EFS由EFS服務、EFS驅動、EFS文件系統運行庫(FSRTL)和Win32 API。EFS服務作為一個標准系統服務運行,它是Windows 2000安全子系統的一部分。它與CryptoAPI介面產生鑰匙、DDF和DRF,EFS驅動就象是NTFS的一部分,它呼叫EFS服務請求鑰匙,DDF和DRF作為需要被創建,一個EFS驅動的組成是EFS FSRTL,它定義了EFS驅動程序能作為NTFS的代表而執行的功能。
EFS和NTFS如何共存
EFS可以被認為除NTFS外的第二層防護,為訪問一個被加密的文件,用戶必須有訪問到文件的NTFS許可權。在相關NTFS許可權的用戶能看到文件夾中的文件,但不能打開文件除非有相應的解密鑰匙。同樣,一個用戶有相應的鑰匙但沒有相應的NTFS許可權也不能訪問到文件。所以一個用戶要能打開加密的文件,同時需要NTFS許可權和解密鑰匙。
然而,NTFS許可權可能被大量的方法穿越,包括口令破解程序、用戶在離開前沒有退出系統或系統內部的NTFSDOS。在NT4.0下,游戲結束了――硬碟上所有的數據都可以訪問了。在Windows 2000下,當一個文件用EFS加密後,一個未授權的用戶,即使訪問到磁碟上的文件,但也不能訪問文件上數據,因為沒有授權用戶的私鑰。
EFS 屬性
當NTFS加密文件的時候,它首先會為文件設置加密標志,然後在存儲DDF和DDR的地方為文件創建一個$EFS屬性.這個屬性的屬性ID=0x100,它可以被加長,佔有0.5k到若干k的大小,這個大小是由DDF和DRF的數量決定的.
http://www.ntfs.com/images/efs_header.gif
下面是一個詳細的EFS屬性的例子.
http://www.raid1.cn/efs/pic/attribute/EFS_example.gif
紫色:EFS屬性大小
天藍色:電腦安全標識符和用戶數字.它指定EFS存儲證書的文件夾.為了得到文件
夾的名字,EFS會做一些轉換.
5A56B378 1C365429 A851FF09 D040000 - 存儲在$EFS中的數據.
78B3565A 2954361C 09FF15A8 000004D0 - 轉換後的結果.
2025018970-693384732-167712168-1232 - 轉換成十進制.
S-1-5-21-2025018970-693384732-167712168-1232 - 加上安全標識符前綴.
得到的文件夾就是:
%UserProfile%\ApplicationData\Microsoft\Crypto\RSA\S-1-5-21-2025018970-693384732167712168-1232\
粉紅色:公有密匙特性
黃色:私有密匙全局唯一標識符(同時被當作容器名字).當EFS從CryptoAPI provider中獲取設備環境的時候使用這個名字.如果$EFS屬性只有一個DDF,容器的名字可以從$efs中計算出來.但是當更多的用戶加入這個文件的時候(就會有更多的DDF和DRF),私有密匙全局唯一標識符並不是保存所有的用戶,其它的必須從基於公有密匙存儲特性的證書中恢復.
紅色:加密提供器的名字(Microsoft Base Cryptographic Provider v.1.0)
綠色:用戶的名稱,DDF和DRF的所有者.
藍色:加密後的FEK.通常FEK是128位的,但是被1024位的RSA密匙加密後,長度變成1024位.
5. NTFS的許可權設置與加密之間的關系
EFS是Encrypting File System,加密文件系統的縮寫,他可以被應用在windows 2000以上的操作系統且為NTFS5格式的分區上(windows xp home不支持).
EFS 只能對存儲在磁碟上的數據進行加密,是一種安全的本地信息加密服務.EFS使用核心的的文件加密技術在NTFS卷上存儲加密文件.
它可以防止那些未經允許的對敏感數據進行物理訪問的入侵者(偷取筆記本電腦,硬碟等)
EFS是如何工作的
當一個用戶使用EFS去加密文件時,必須存在一個公鑰和一個私鑰,如果用戶沒有,EFS服務自動產生一對。對於初級用戶來說,即使他完全不懂加密,也能加密文件,可以對單個文件進行加密,也可以對一個文件夾進行加密,這樣所有寫入文件夾的文件將自動被加密。
一旦用戶發布命令加密文件或試圖添加一個文件到一個已加密的文件夾中,EFS將進行以下幾步:
第一步:NTFS首先在這個文件所在卷的卷信息目錄下(這個目錄隱藏在根目錄下面)創建一個叫做efs0.log的日誌文件,當拷貝過程中發生錯誤時利用此文件進行恢復。
第二步:然後EFS調用CryptoAPI設備環境.設備環境使用Microsoft Base Cryptographic Provider 1.0 產生密匙,當打開這個設備環境後,EFS產生FEK(File Encryption Key,文件加密密匙).FEK的長度為128位(僅US和Canada),這個文件使用DESX加密演算法進行加密。
第三步: 獲取公有/私有密匙對;如果這個密匙還沒有的話(當EFS第一次被調用時),EFS產生一對新的密匙.EFS使用1024位的RSA演算法去加密FEK.
第四步:EFS為當前用戶創建一個數據解密塊Data Decryptong Field(DDF),在這里存放FEK然後用公有密匙加密FEK.
第五步:如果系統設置了加密的代理,EFS同時會創建一個數據恢復塊Data Recovery Field(DRF),然後把使用恢復代理密匙加密過的FEK放在DRF.每定義一個恢復代理,EFS將會創建一個Data Recovery Agent(DRA).Winxp沒有恢復代理這個功能,所以沒有這一步.,這個區域的目的是為了在用戶解密文件的中可能解密文件不可用。這些用戶叫做恢復代理,恢復代理在EDRP(Encryption Data Recovery Policy,加密數據恢復策略)中定義,它是一個域的安全策略。如果一個域的EDRP沒有設置,本地EDRP被使用。在任一種情況下,在一個加密發生時,EDRP必須存在(因此至少有一個恢復代理被定義)。DRF包含使用RSA加密的FEK和恢復代理的公鑰。如果在EDRP列表中有多個恢復代理,FEK必須用每個恢復代理的公鑰進行加密,因此,必須為個恢復代理創建一個DRF。
第六步:包含加密數據、DDF及所有DRF的加密文件被寫入磁碟。
第七步: 在加密文件所在的文件夾下將會創建一個叫做Efs0.tmp的臨時文件.要加密的內容被拷貝到這個臨時文件,然後原來的文件被加密後的數據覆蓋.在默認的情況下,EFS使用128位的DESX演算法加密文件數據,但是Windows還允許使用更強大的的168位的3DES演算法加密文件,這是FIPS演算法必須打開,因為在默認的情況下它是關閉的.
第八步:在第一步中創建的文本文件和第七步中產生的臨時文件被刪除。
加密過程圖片可參考 http://www.ntfs.com/images/encryption.gif" http://www.ntfs.com/images/encryption.gif
文件被加密後,只有可以從DDF或是DRF中解密出FEK的用戶才可以訪問文件.這種機制和一般的安全機制不同並意 味著要想訪問文件,除了要有訪問這個文件的權力外還必須擁有被用戶的公有密匙加密過的FEK.只有使用私有密匙解密文件的用戶才可以訪問文件.這樣的話會有一個問題:就是一個可以訪問文件的用戶可把文件加密之後,文件真正的擁有者卻不能訪問文件.解決這個問題的辦法:用戶加密文件的時候只創建一個文件解密塊Data Decryption Field(DDF),但是只後他可以增加附加用戶到密匙隊列.這種情況下,EFS簡單地把FEK用想給其他用戶訪問權的用戶的私有密匙加密.然後用這些用戶的公有密匙加密FEK,新增加的DDF和第一個DDF放在一起(這些新增加的用戶對文件只有訪問的權力).
解密的過程和加密的過程是相反的,參考http://www.ntfs.com/images/decryption.gif" http://www.ntfs.com/images/decryption.gif
首先,系統檢測用戶是否具有被EFS使用的私有密匙.如果有的話,系統將會在讀取EFS屬性,同時在DDF對列中尋找當前用戶的DDF.如果DDF找到的話,用戶私有密匙將會在那裡解密出FEK.使用解密出來的FEK,EFS去解密加密的文件數據.需要注意的是文件從來不會完全被加密,但是有時候會去加密一些特殊的扇區如果上層模塊要求的話.
EFS組成
EFS由EFS服務、EFS驅動、EFS文件系統運行庫(FSRTL)和Win32 API。EFS服務作為一個標准系統服務運行,它是Windows 2000安全子系統的一部分。它與CryptoAPI介面產生鑰匙、DDF和DRF,EFS驅動就象是NTFS的一部分,它呼叫EFS服務請求鑰匙,DDF和DRF作為需要被創建,一個EFS驅動的組成是EFS FSRTL,它定義了EFS驅動程序能作為NTFS的代表而執行的功能。
EFS和NTFS如何共存
EFS可以被認為除NTFS外的第二層防護,為訪問一個被加密的文件,用戶必須有訪問到文件的NTFS許可權。在相關NTFS許可權的用戶能看到文件夾中的文件,但不能打開文件除非有相應的解密鑰匙。同樣,一個用戶有相應的鑰匙但沒有相應的NTFS許可權也不能訪問到文件。所以一個用戶要能打開加密的文件,同時需要NTFS許可權和解密鑰匙。
然而,NTFS許可權可能被大量的方法穿越,包括口令破解程序、用戶在離開前沒有退出系統或系統內部的NTFSDOS。在NT4.0下,游戲結束了――硬碟上所有的數據都可以訪問了。在Windows 2000下,當一個文件用EFS加密後,一個未授權的用戶,即使訪問到磁碟上的文件,但也不能訪問文件上數據,因為沒有授權用戶的私鑰。
EFS 屬性
當NTFS加密文件的時候,它首先會為文件設置加密標志,然後在存儲DDF和DDR的地方為文件創建一個$EFS屬性.這個屬性的屬性ID=0x100,它可以被加長,佔有0.5k到若干k的大小,這個大小是由DDF和DRF的數量決定的.
http://www.ntfs.com/images/efs_header.gif" http://www.ntfs.com/images/efs_header.gif
下面是一個詳細的EFS屬性的例子.
http://www.raid1.cn/efs/pic/attribute/EFS_example.gif" http://www.raid1.cn/efs/pic/attribute/EFS_example.gif
紫色:EFS屬性大小
天藍色:電腦安全標識符和用戶數字.它指定EFS存儲證書的文件夾.為了得到文件
夾的名字,EFS會做一些轉換.
5A56B378 1C365429 A851FF09 D040000 - 存儲在$EFS中的數據.
78B3565A 2954361C 09FF15A8 000004D0 - 轉換後的結果.
2025018970-693384732-167712168-1232 - 轉換成十進制.
S-1-5-21-2025018970-693384732-167712168-1232 - 加上安全標識符前綴.
得到的文件夾就是:
%UserProfile%\ApplicationData\Microsoft\Crypto\RSA\S-1-5-21-2025018970-693384732167712168-1232\
粉紅色:公有密匙特性
黃色:私有密匙全局唯一標識符(同時被當作容器名字).當EFS從CryptoAPI provider中獲取設備環境的時候使用這個名字.如果$EFS屬性只有一個DDF,容器的名字可以從$efs中計算出來.但是當更多的用戶加入這個文件的時候(就會有更多的DDF和DRF),私有密匙全局唯一標識符並不是保存所有的用戶,其它的必須從基於公有密匙存儲特性的證書中恢復.
紅色:加密提供器的名字(Microsoft Base Cryptographic Provider v.1.0)
綠色:用戶的名稱,DDF和DRF的所有者.
藍色:加密後的FEK.通常FEK是128位的,但是被1024位的RSA密匙加密後,長度變成1024位.
6. 單片機pid演算法控制步進電機的電路圖和程序
//P1.1(T0):Count They Distance
//P0.4:Tx
//P0.5:Rx
#include <C8051F310.h> //SFR declarations
#include <stdio.h> //Standard I/O definition file
#include <math.h> //Math library file
#include <Intrins.h>
#include <absacc.h>
unsigned int j,i;
char a=0;
unsigned int t=0;
//sbit led=P0^2;
//P0.0(PWM0):給定左輪速度.
sbit vls=P0^4; //P0.4(GPIO):給定左輪方向.
sbit vlf=P0^6; //P0.6(T0) :反饋左輪速度.
sbit dlf=P1^0; //P1.0(GPIO):反饋左輪方向.
//P0.2(PWM0):給定右輪速度.
sbit vrs=P0^5; //P0.5(GPIO):給定右輪方向.
sbit vrf=P0^7; //P0.7(T0) :反饋右輪速度.
sbit drf=P1^1; //P1.1(GPIO):反饋右輪方向.
int ol; //左輪給定值
int len;
int len_1,len_2;
int lyn_1,lyn_2;
int vl1,vl2; //反饋左輪速度值(取樣周期內的方波數)
int lfz; //運算後賦給PWM的值
int lyn,lynn;
int lun=0,lun_1=0; //偏差校正值 即校正PWM輸出
int lunp,luni,lund; //PID 校正值
int or; //右輪給定值
int ren;
int ren_1,ren_2;
int ryn_1,ryn_2;
int vr1,vr2; //反饋右輪速度值(取樣周期內的方波數)
int rfz; //運算後賦給PWM的值
int ryn,rynn;
int run=0,run_1=0; //偏差校正值 即校正PWM輸出
int runp,runi,rund; //PID 校正值
float kp=2.0; //比例系數1.8
float kd=0.2; //微分系數0.4
float lki; //積分系數
void pio_init(void);
void sys_init(void);
void t01_init(void);
void TIME3_INT(void);
void PID(void);
void interrupt_init(void);
void delay(unsigned int x);
void pwm1_1(void);
void main(void)
{
PCA0MD &= ~0x40; //關閉
pio_init(); //P11為測距輸入端
sys_init();
t01_init();
pwm1_1();
TIME3_INT();
interrupt_init();
vls=1;vrs=0;
while(1)
{
ol=50;
or=50;
delay(1000);
ol=100;
or=100;
delay(1000);
ol=-50;
or=50;
delay(1000);
}
}
void PID(void)
{
/****************左輪PID調節******************/
if(dlf==1)
{
lyn=(vl2*256+vl1); //dlf是左輪反饋方向,0表示向前 vl=TL0
}
else
{
lyn=-(vl2*256+vl1); //dlf=1表示是向後退,速度應該為負值
}
len=ol-lyn; //誤差=給定速度-反饋速度(取樣周期內的方波數)
if(abs(len)<8)//30
{
lki=1.4; //ki值的確定1.4
}
else
{
lki=0.05; //積分系數:如果 | 給定值-反饋值 | 太大
} //則就可以不引入積分,或者引入的很小0.05
lunp=kp*(len-len_1); //比例校正
luni=lki*len; //積分校正
lund=kd*(len-2*len_1+len_2); //微分校正
lun=lunp+luni+lund+lun_1; //總校正
/*************新舊數據更新*************************/
len_2=len_1;
len_1=len; //len:當前取樣周期內出現的速度偏差;len_1:上次取樣周期內出現的速度偏差
lun_1=lun; //lun:當前取樣周期內得出的PWM校正值;lun_1:上次取樣周期內得出的PWM校正值
/*************新舊數據更新*************************/
if(lun>255)
{
lun=255; //正速度
}
if(lun<-255)
{
lun=-255; //負速度
}
if(lun<0)
{
vls=1;
PCA0CPH0=-lun;
}
if(lun>=0)
{
vls=0;
PCA0CPH0=lun;
}
/****************右輪PID調節******************/
if(drf==0)
{
ryn=(vr2*256+vr1); //drf是右輪反饋方向,0表示向前 vl=TL0
}
else
{
ryn=-(vr2*256+vr1); //dlf=1表示是向後退,速度應該為負值
}
ren=or-ryn; //誤差=給定速度-反饋速度(取樣周期內的方波數)
if(abs(ren)<8)//30
{
lki=1.4; //ki值的確定1.4
}
else
{
lki=0.05; //積分系數:如果 | 給定值-反饋值 | 太大
} //則就可以不引入積分,或者引入的很小0.05
runp=kp*(ren-ren_1); //比例校正
runi=lki*ren; //積分校正
rund=kd*(ren-2*ren_1+ren_2); //微分校正
run=runp+runi+rund+run_1; //總校正
/*************新舊數據更新*************************/
ren_2=ren_1;
ren_1=ren; //len:當前取樣周期內出現的速度偏差;len_1:上次取樣周期內出現的速度偏差
run_1=run; //lun:當前取樣周期內得出的PWM校正值;lun_1:上次取樣周期內得出的PWM校正值
/*************新舊數據更新*************************/
if(run>255)
{
run=255; //正速度
}
if(run<-255)
{
run=-255; //負速度
}
if(run<0)
{
vrs=1;
PCA0CPH1=-run;
}
if(run>=0)
{
vrs=0;
PCA0CPH1=run;
}
//因為這里的PCA0CPH0越大,對應的電機速度越小,所以要255來減一下
}
void pio_init(void)
{
XBR0=0x00; //0000 0001
XBR1=0x72; //0111 0010 時能弱上拉 T0T1連接到腳口P06、P07 CEX0、CEX1連接到腳口P00、P01
P0MDIN=0xff; //模擬(0);數字(1) 1111 0011
P0MDOUT=0xc3;//開漏(0);推挽(1) 1111 1111
P0SKIP=0x3c; //0011 1100
P1MDIN=0xff; //1111 1111
P1MDOUT=0xfc;//
P1SKIP=0x00; //1111 1111
}
void sys_init(void) //12MHz
{
OSCICL=0x43;
OSCICN=0xc2;
CLKSEL=0x00;
}
void pwm1_1(void) //PWM的初始化
{
PCA0MD=0x08; //PCA時鍾為12分頻
PCA0CPL0=200; //左輪
PCA0CPM0=0x42; //設置左輪為8位PWM輸出
PCA0CPH0=200;
PCA0CPL1=200; //平衡校正
PCA0CPM1=0x42; //設置為8位PWM輸出
PCA0CPH1=200;
PCA0CN=0x40; //允許PCA工作
}
void t01_init(void)
{
TCON=0x50; //計數器1、2允許
TMOD=0x55; //定時器1、2採用16位計數功能
CKCON=0x00;
TH1=0x00; //用於採集左輪的速度
TL1=0x00;
TH0=0x00; //用於採集右輪的速度
TL0=0x00;
}
void TIME3_INT(void)
{
TMR3CN = 0x00; //定時器3為16位自動重載
CKCON &= ~0x40;
TMR3RLL = 0xff;
TMR3RLH = 0xd7;
TMR3L = 0xff;
TMR3H = 0xd7;
TMR3CN |= 0x04;
}
void T3_ISR() interrupt 14 //定時器3中斷服務程序
{
//led=~led;
EA=0;
TCON &=~0x50; //關閉計數器0、1
vl1=TL0; //取左輪速度值
vl2=TH0;
vr1=TL1; //取右輪速度值
vr2=TH1;
TH1=0x00;
TL1=0x00;
TH0=0x00;
TL0=0x00;
PID(); //PID處理
TMR3CN &=~0x80; //清中斷標志位
TCON |=0x50; //重新開計數器0、1
EA=1;
}
void interrupt_init(void)
{ IE=0x80;
IP=0x00;
EIE1|=0x80;
EIP1|=0x80;
}
void delay(unsigned int m) //延時程序
{
for(i=0;i<2000;i++)
{
for(j=0;j<m;j++){_nop_(); _nop_();}
}
}
7. 電腦文件加密,重做系統後加密文件不能用了
看看吧,希望對你有幫助 EFS是Encrypting File System,加密文件系統的縮寫,他可以被應用在windows 2000以上的操作系統且為NTFS5格式的分區上(windows xp home不支持). EFS 只能對存儲在磁碟上的數據進行加密,是一種安全的本地信息加密服務.EFS使用核心的的文件加密技術在NTFS卷上存儲加密文件. 它可以防止那些未經允許的對敏感數據進行物理訪問的入侵者(偷取筆記本電腦,硬碟等) EFS是如何工作的 當一個用戶使用EFS去加密文件時,必須存在一個公鑰和一個私鑰,如果用戶沒有,EFS服務自動產生一對。對於初級用戶來說,即使他完全不懂加密,也能加密文件,可以對單個文件進行加密,也可以對一個文件夾進行加密,這樣所有寫入文件夾的文件將自動被加密。 一旦用戶發布命令加密文件或試圖添加一個文件到一個已加密的文件夾中,EFS將進行以下幾步: 第一步:NTFS首先在這個文件所在卷的卷信息目錄下(這個目錄隱藏在根目錄下面)創建一個叫做efs0.log的日誌文件,當拷貝過程中發生錯誤時利用此文件進行恢復。 第二步:然後EFS調用CryptoAPI設備環境.設備環境使用Microsoft Base Cryptographic Provider 1.0 產生密匙,當打開這個設備環境後,EFS產生FEK(File Encryption Key,文件加密密匙).FEK的長度為128位(僅US和Canada),這個文件使用DESX加密演算法進行加密。 第三步: 獲取公有/私有密匙對;如果這個密匙還沒有的話(當EFS第一次被調用時),EFS產生一對新的密匙.EFS使用1024位的RSA演算法去加密FEK. 第四步:EFS為當前用戶創建一個數據解密塊Data Decryptong Field(DDF),在這里存放FEK然後用公有密匙加密FEK. 第五步:如果系統設置了加密的代理,EFS同時會創建一個數據恢復塊Data Recovery Field(DRF),然後把使用恢復代理密匙加密過的FEK放在DRF.每定義一個恢復代理,EFS將會創建一個Data Recovery Agent(DRA).Winxp沒有恢復代理這個功能,所以沒有這一步.,這個區域的目的是為了在用戶解密文件的中可能解密文件不可用。這些用戶叫做恢復代理,恢復代理在EDRP(Encryption Data Recovery Policy,加密數據恢復策略)中定義,它是一個域的安全策略。如果一個域的EDRP沒有設置,本地EDRP被使用。在任一種情況下,在一個加密發生時,EDRP必須存在(因此至少有一個恢復代理被定義)。DRF包含使用RSA加密的FEK和恢復代理的公鑰。如果在EDRP列表中有多個恢復代理,FEK必須用每個恢復代理的公鑰進行加密,因此,必須為個恢復代理創建一個DRF。 第六步:包含加密數據、DDF及所有DRF的加密文件被寫入磁碟。 第七步: 在加密文件所在的文件夾下將會創建一個叫做Efs0.tmp的臨時文件.要加密的內容被拷貝到這個臨時文件,然後原來的文件被加密後的數據覆蓋.在默認的情況下,EFS使用128位的DESX演算法加密文件數據,但是Windows還允許使用更強大的的168位的3DES演算法加密文件,這是FIPS演算法必須打開,因為在默認的情況下它是關閉的. 第八步:在第一步中創建的文本文件和第七步中產生的臨時文件被刪除。 加密過程圖片可參考 http://www.ntfs.com/images/encryption.gif 文件被加密後,只有可以從DDF或是DRF中解密出FEK的用戶才可以訪問文件.這種機制和一般的安全機制不同並意 味著要想訪問文件,除了要有訪問這個文件的權力外還必須擁有被用戶的公有密匙加密過的FEK.只有使用私有密匙解密文件的用戶才可以訪問文件.這樣的話會有一個問題:就是一個可以訪問文件的用戶可把文件加密之後,文件真正的擁有者卻不能訪問文件.解決這個問題的辦法:用戶加密文件的時候只創建一個文件解密塊Data Decryption Field(DDF),但是只後他可以增加附加用戶到密匙隊列.這種情況下,EFS簡單地把FEK用想給其他用戶訪問權的用戶的私有密匙加密.然後
8. 我已經完成魔方六面還原的大部分,僅剩兩個角沒完成。誰能幫幫我,用怎樣
只翻轉兩個角塊。
2.(FD'F'R'D'R)U2(R'DRFDF')U2
3.(FD'F'R'D'R)U(R'DRFDF')U'
4.U2(R'DRFDF')U(FD'F'R'D'R)U
對公式進行大致說明。把六個面分別用不同的符號表示。將面向操作者的面稱為「前(F)」;其他以此相對應的位置稱為「右(R)、頂(U)、後(B)、左(L)、底(D)」。當所轉動的那一面面向自己,順時針轉動90度時用字母表示,逆時針轉動90度時用字母加'表示。當轉動180度時,符號後加2。如:順時針轉動右面90度,記作R;逆時針轉動右面90度,記作R';轉動右面180度,記作R2或R'2(結果是一樣的)。
http://bbs.mf8.com.cn/viewthread.php?tid=18828
9. 我想學學股票的技術指標
技術指標很多 .. [技術分析法] ·理論常識
道氏股價波動理論 波浪理論
成長周期理論 股票價值理論
信心理論 隨機漫步理論
亞當理論 黃金分割率理論
相反理論 證券市場分析論
·K線
·量價關系分析
·常用技術分析
OX圖 移動平均線 MACD
相對強弱指數 騰落指數
漲跌比率 超買超賣線
OBV線 隨機指數(KD線)
乖離率 心理線 動向指數
人氣指標(AR)與意願指標(BR)
動量指標 震盪量指標
威廉指數 成交量比率
動量指標 震盪量指標
均量線指標 拋物線轉向
·圖形分析
常用技術分析
1.OX圖 2.移動平均線 3.MACD 4.相對強弱指數(RSI) 5.騰落指數(ADL)
6. 漲跌比率(ADR) 7.超買超賣線(OBOS) 8.OBV線 9.隨機指數(KD線) 10.乖離率(BIAS)
11.動向指數(DMI) 12.心理線(PSY) 13.人氣指標 14.動量指標(MTM) 15.震盪量指標(OSC)
16.威廉指數(%R) 17.成交量比率(VR) 18.均量線 19.拋物線轉向(SAR) 20. 逆勢操作系統
21.成交筆數 22.指數點成交值 23.寶塔線 24.逆時鍾曲線
所謂股價的技術分析,是相對於基本分析而言的。正如上一部分所述,基本分析法著重於對一般經濟情況以及各個公司的經營管理狀況、行業動態等因素進行分析,以此來研究股票的價值,衡量股價的高低。而技術分析則是透過圖表或技術指標的記錄,研究市場過去及現在的行為反應,以推測未來價格的變動趨勢。其依據的技術指標的主要內容是由股價、成交量或漲跌指數等數據計算而得的,我們也由此可知——技術分析只關心證券市場本身的變化,而不考慮會對其產生某種影響的經濟方面、政治方面的等各種外部的因素。
股價技術分析和基本分析都認為股價是由供求關系所決定。基本分析主要是根據對影響供需關系種種因素的分析來預測股價走勢,而技術分析則是根據股價本身的變化來預測股價走勢。技術分析的基本觀點是:所有股票的實際供需量及其背後起引導作用的種種因素,包括股票市場上每個人對未來的希望、擔心、恐懼等等,都集中反映在股票的價格和交易量上。
有疑問可以繼續詢問..
10. EFS指什麼
EFS是Encrypting File System,加密文件系統的縮寫,他可以被應用在windows 2000以上的操作系統且為NTFS5格式的分區上(windows xp home不支持).
EFS 只能對存儲在磁碟上的數據進行加密,是一種安全的本地信息加密服務.EFS使用核心的的文件加密技術在NTFS卷上存儲加密文件.
它可以防止那些未經允許的對敏感數據進行物理訪問的入侵者(偷取筆記本電腦,硬碟等)
EFS是如何工作的
當一個用戶使用EFS去加密文件時,必須存在一個公鑰和一個私鑰,如果用戶沒有,EFS服務自動產生一對。對於初級用戶來說,即使他完全不懂加密,也能加密文件,可以對單個文件進行加密,也可以對一個文件夾進行加密,這樣所有寫入文件夾的文件將自動被加密。
一旦用戶發布命令加密文件或試圖添加一個文件到一個已加密的文件夾中,EFS將進行以下幾步:
第一步:NTFS首先在這個文件所在卷的卷信息目錄下(這個目錄隱藏在根目錄下面)創建一個叫做efs0.log的日誌文件,當拷貝過程中發生錯誤時利用此文件進行恢復。
第二步:然後EFS調用CryptoAPI設備環境.設備環境使用Microsoft Base Cryptographic Provider 1.0 產生密匙,當打開這個設備環境後,EFS產生FEK(File Encryption Key,文件加密密匙).FEK的長度為128位(僅US和Canada),這個文件使用DESX加密演算法進行加密。
第三步: 獲取公有/私有密匙對;如果這個密匙還沒有的話(當EFS第一次被調用時),EFS產生一對新的密匙.EFS使用1024位的RSA演算法去加密FEK.
第四步:EFS為當前用戶創建一個數據解密塊Data Decryptong Field(DDF),在這里存放FEK然後用公有密匙加密FEK.
第五步:如果系統設置了加密的代理,EFS同時會創建一個數據恢復塊Data Recovery Field(DRF),然後把使用恢復代理密匙加密過的FEK放在DRF.每定義一個恢復代理,EFS將會創建一個Data Recovery Agent(DRA).Winxp沒有恢復代理這個功能,所以沒有這一步.,這個區域的目的是為了在用戶解密文件的中可能解密文件不可用。這些用戶叫做恢復代理,恢復代理在EDRP(Encryption Data Recovery Policy,加密數據恢復策略)中定義,它是一個域的安全策略。如果一個域的EDRP沒有設置,本地EDRP被使用。在任一種情況下,在一個加密發生時,EDRP必須存在(因此至少有一個恢復代理被定義)。DRF包含使用RSA加密的FEK和恢復代理的公鑰。如果在EDRP列表中有多個恢復代理,FEK必須用每個恢復代理的公鑰進行加密,因此,必須為個恢復代理創建一個DRF。
第六步:包含加密數據、DDF及所有DRF的加密文件被寫入磁碟。
第七步: 在加密文件所在的文件夾下將會創建一個叫做Efs0.tmp的臨時文件.要加密的內容被拷貝到這個臨時文件,然後原來的文件被加密後的數據覆蓋.在默認的情況下,EFS使用128位的DESX演算法加密文件數據,但是Windows還允許使用更強大的的168位的3DES演算法加密文件,這是FIPS演算法必須打開,因為在默認的情況下它是關閉的.
第八步:在第一步中創建的文本文件和第七步中產生的臨時文件被刪除。
加密過程圖片可參考 http://www.ntfs.com/images/encryption.gif
文件被加密後,只有可以從DDF或是DRF中解密出FEK的用戶才可以訪問文件.這種機制和一般的安全機制不同並意 味著要想訪問文件,除了要有訪問這個文件的權力外還必須擁有被用戶的公有密匙加密過的FEK.只有使用私有密匙解密文件的用戶才可以訪問文件.這樣的話會有一個問題:就是一個可以訪問文件的用戶可把文件加密之後,文件真正的擁有者卻不能訪問文件.解決這個問題的辦法:用戶加密文件的時候只創建一個文件解密塊Data Decryption Field(DDF),但是只後他可以增加附加用戶到密匙隊列.這種情況下,EFS簡單地把FEK用想給其他用戶訪問權的用戶的私有密匙加密.然後用這些用戶的公有密匙加密FEK,新增加的DDF和第一個DDF放在一起(這些新增加的用戶對文件只有訪問的權力).
解密的過程和加密的過程是相反的,參考http://www.ntfs.com/images/decryption.gif
首先,系統檢測用戶是否具有被EFS使用的私有密匙.如果有的話,系統將會在讀取EFS屬性,同時在DDF對列中尋找當前用戶的DDF.如果DDF找到的話,用戶私有密匙將會在那裡解密出FEK.使用解密出來的FEK,EFS去解密加密的文件數據.需要注意的是文件從來不會完全被加密,但是有時候會去加密一些特殊的扇區如果上層模塊要求的話.
EFS組成
EFS由EFS服務、EFS驅動、EFS文件系統運行庫(FSRTL)和Win32 API。EFS服務作為一個標准系統服務運行,它是Windows 2000安全子系統的一部分。它與CryptoAPI介面產生鑰匙、DDF和DRF,EFS驅動就象是NTFS的一部分,它呼叫EFS服務請求鑰匙,DDF和DRF作為需要被創建,一個EFS驅動的組成是EFS FSRTL,它定義了EFS驅動程序能作為NTFS的代表而執行的功能。
EFS和NTFS如何共存
EFS可以被認為除NTFS外的第二層防護,為訪問一個被加密的文件,用戶必須有訪問到文件的NTFS許可權。在相關NTFS許可權的用戶能看到文件夾中的文件,但不能打開文件除非有相應的解密鑰匙。同樣,一個用戶有相應的鑰匙但沒有相應的NTFS許可權也不能訪問到文件。所以一個用戶要能打開加密的文件,同時需要NTFS許可權和解密鑰匙。
然而,NTFS許可權可能被大量的方法穿越,包括口令破解程序、用戶在離開前沒有退出系統或系統內部的NTFSDOS。在NT4.0下,游戲結束了――硬碟上所有的數據都可以訪問了。在Windows 2000下,當一個文件用EFS加密後,一個未授權的用戶,即使訪問到磁碟上的文件,但也不能訪問文件上數據,因為沒有授權用戶的私鑰。
EFS 屬性
當NTFS加密文件的時候,它首先會為文件設置加密標志,然後在存儲DDF和DDR的地方為文件創建一個$EFS屬性.這個屬性的屬性ID=0x100,它可以被加長,佔有0.5k到若干k的大小,這個大小是由DDF和DRF的數量決定的.
http://www.ntfs.com/images/efs_header.gif
下面是一個詳細的EFS屬性的例子.
http://www.raid1.cn/efs/pic/attribute/EFS_example.gif
紫色:EFS屬性大小
天藍色:電腦安全標識符和用戶數字.它指定EFS存儲證書的文件夾.為了得到文件
夾的名字,EFS會做一些轉換.
5A56B378 1C365429 A851FF09 D040000 - 存儲在$EFS中的數據.
78B3565A 2954361C 09FF15A8 000004D0 - 轉換後的結果.
2025018970-693384732-167712168-1232 - 轉換成十進制.
S-1-5-21-2025018970-693384732-167712168-1232 - 加上安全標識符前綴.
得到的文件夾就是:
%UserProfile%\ApplicationData\Microsoft\Crypto\RSA\S-1-5-21-2025018970-693384732167712168-1232\
粉紅色:公有密匙特性
黃色:私有密匙全局唯一標識符(同時被當作容器名字).當EFS從CryptoAPI provider中獲取設備環境的時候使用這個名字.如果$EFS屬性只有一個DDF,容器的名字可以從$efs中計算出來.但是當更多的用戶加入這個文件的時候(就會有更多的DDF和DRF),私有密匙全局唯一標識符並不是保存所有的用戶,其它的必須從基於公有密匙存儲特性的證書中恢復.
紅色:加密提供器的名字(Microsoft Base Cryptographic Provider v.1.0)
綠色:用戶的名稱,DDF和DRF的所有者.
藍色:加密後的FEK.通常FEK是128位的,但是被1024位的RSA密匙加密後,長度變成1024位.