2016-10-19 19 views
0

我對英特爾SGX飛地測量有疑問。通過SignTool source code(以及手冊中的高級描述)來判斷,似乎測量涉及加載飛地文件(ELF或PE)。但加載的結果在不同的平臺上有所不同,對吧?我想知道是否可以從飛地二進制重現一致的飛地測量。英特爾新加坡交易所:從飛地二進制重現飛地測量

特別是,我正在考慮以下情況:假設我想向我的用戶分發enclave.signed.so,並且我只想提供來自該特定飛地的請求。我想我不能簡單地將我的平臺上的本地測量結果與用戶的測量結果進行比較(可以包含在他們的證明中)。我該怎麼做呢?

本質上,這個問題歸結爲如何密碼鏈接二進制和測量?似乎有一個悖論:假設我有飛地二進制文件,我可以測量它的唯一方法就是加載它。但是,加載過程是而不是可信(由OS完成)!我如何確保我得到的測量結果確實適用於特定的二進制文件?我一定誤解了一些事情,因爲這對於新交所的全部有效性來說似乎至關重要。請糾正我。

謝謝!

回答

0

你是對的,要建立「真正的」飛地測量,你需要一個值得信賴的系統。

飛地的測量是由處理器完成的。它用每個飛地創建步驟/指令來排列測量值。 specification相當詳細地解釋了這種排列。例如ECREATE的僞代碼包含有關測量場此語句:

(* Initialize hash updates etc*) 
Initialize enclave’s MRENCLAVE update counter; 
(* Add 「ECREATE」 string and SECS fields to MRENCLAVE *) 
TMPUPDATEFIELD[63:0] = 0045544145524345H; // 「ECREATE」 
TMPUPDATEFIELD[95:64] = DS:TMP_SECS.SSAFRAMESIZE; 
TMPUPDATEFIELD[159:96] = DS:TMP_SECS.SIZE; 
TMPUPDATEFIELD[511:160] = 0; 
SHA256UPDATE(DS:TMP_SECS.MRENCLAVE, TMPUPDATEFIELD) 
INC enclave’s MRENCLAVE update counter; 

假設論文描述是詳盡的和人知道,其中所述創建步驟由驅動程序執行的順序,應該能夠計算一個飛地的測量不加載它。因此,你可以計算飛地的價值。但是,如何計算這個飛地的測量?