推 mmonkeyboyy: ....我資質太差 我看不懂這篇在寫啥.... 02/12 12:35
→ freef1y3: 那為什麼intel會有spectre跟meltdown漏洞呢? 02/12 20:21
→ freef1y3: 1. intel沒使用到VLSI的設計技術 02/12 20:22
→ freef1y3: 2. VLSI設計技術只找得出木馬找不出漏洞 02/12 20:22
→ freef1y3: 3. intel故意放的只是被發現只好宣稱漏洞 02/12 20:23
intel 當然是會使用 VLSI 的 CAD tool 造IC.
VLSI tool 是照 function block 要求造出 跟該功能相同作用 的電路.
如果是跟時間有關的功能方塊, 那就是個 time-dependent function.
F(G) 跟 G(F) 未必就是相同的. 串接的功能方塊跟並接的功能方塊也未必作用相同.
=======================================================================
這是 https://blog.trendmicro.com.tw/?p=53915 對 INTEL 漏洞的說明:
今日的處理器設計都具備「預測執行」功能,也就是說,它會「預測」接下來將要執行的
工作,然後預先將這些工作排入序列,藉此提高資料處理效率,進而提升應用程式/軟體
的執行速度。這是業界用來讓處理器效能最佳化的一項技巧,但現在這項技巧卻可能遭到
駭客利用,經由這項漏洞來存取一些正常情況下受到隔離保護的資料。
==============
最早期的類似問題是 8086 或 80x86 cpu 的 instruction pre-fetch.
DEBUG 程式下的 single step trace 用到 INT 3 指令的立即替代, 但 pre-fetch
piple line 已將記憶體的指令拿進 prefetch queue, 因此修改不到緊跟的6 byte
instruction 內容. 後來, 這個架構上的失誤到 80586 才解掉.
meltdown 是類似上述 "先取" 進 cache 的問題, 所以可以透過預取的 cache 內容
掃出 核心記憶體先存放的 password.
VLSI 的 CAD 製造 tool 並沒有這種 查核記憶體 執行前後指令時的"一致性"偵防
設計.
※ 編輯: ggg12345 (36.230.28.84), 02/13/2019 01:09:57
推 jjsakurai: 推 真專業 02/14 01:41
→ mmonkeyboyy: 那裡專業了 ....? 02/14 04:34
→ freef1y3: cache不也是用一堆邏輯閘兜出來的 為何tool就找不到bug 02/14 09:27
→ freef1y3: 那我是不是也可能用邏輯閘兜出其他tool找不到的bug? 02/14 09:28
一般的 hardware cache 是高速的 multiport memory. memory 需要做 access control
但為了 平行處理先做, 從memory讀出, cache 與 memory 不會同時做, memory 內容會
先搬進 cache. 所以, meltdown 的 bug 就是掃cache可以掃到其他user的password.
prefetch queue 跟 cache 都是同一份memory內容出現在先讀進的cache.
現在的 CAD tool 只check 每份 記憶體電路 的正確性, 不可能查出cache跟memory內容
一致與鎖定. 這跟 prefetch queue 一樣是設計時的失誤.
→ freef1y3: 所以設計失誤tool也找不出來 那怎能宣稱一定能找出木馬 02/14 20:21
→ freef1y3: 這種資安的研究幾乎都是heuristic 02/14 20:24
→ freef1y3: 很少有人宣稱一定能怎樣 事實上FANCI那篇論文也說不能 02/14 20:25
→ freef1y3: 保證所有後門都能找出 02/14 20:25
木馬是多出來的實體物, 當然是能被窮舉找出.
cache 對 memory 並不是多出來的 block, 在使用上兩者有必然的前後順序相依關係.
如同必須按一定前後次序處理的事物, 硬是要改變前後次序或同時執行, 造成的結果
必然未必相同, 不可能讓因果顛倒. 這才是 cache hardware 設計失誤的原因.
※ 編輯: ggg12345 (36.230.28.84), 02/14/2019 20:56:56
→ freef1y3: 當然他的實驗找出了所有後門 但是他用的benchmark本來就 02/14 20:36
→ freef1y3: 都有後門 我always回報有後門 在這個benchmark看來效果 02/14 20:38
→ freef1y3: 也很好 重點是沒後門的情況他有多少機率會誤報有後門 02/14 20:38
→ freef1y3: 而且在有可能誤報的情況下真有CAD tool會採用這技術? 02/14 20:40
假設在有電路邏輯圖之下, 邏輯電路圖之外的方塊就會被查核出來, 這跟用機率判定
一個功能方塊是否所需, 是因為這判斷無法被確認只能配分比重.
假設打開一個VLSI封蓋, 多層的電路圖可能躲在另一層之下. 每層的電路導通的電路
方塊都有金屬鍍線, 因此每個 gate 電路都能被識別. VLSI 的電路模擬器會產生每
個裝置電路的結果, 可以知道是否產生所要的功能. VLSI tool 主要是產出每層化學
物的作用與遮蔽區. Mask 與 導線決定出整個電路, 每個步驟與化學處理過程產生每
個元件. 不在原始的邏輯電路圖裡, 就不會被產生出來.
→ freef1y3: 再者是攻防技術本來就是此消彼長 你今天提出個偵測技術 02/14 20:54
→ freef1y3: 明天就會有人想出方法繞過你的偵測技術 02/14 20:54
→ freef1y3: 就像是有了data execution prevention後就有人想出了 02/14 20:56
→ freef1y3: return oriented programming 02/14 20:56
DEP 主要是將指令與被處理的資料分開. 避免誤進非指令區執行.
這是將每個記憶體區做標記, 使用前先check.
→ freef1y3: 除非你的偵測技術是理論上sound and complete 02/14 20:59
→ freef1y3: 但是有修過計算理論的人都知道這是不可能的事 02/14 21:01
→ freef1y3: 木馬為何一定要是多出來的? 你可以查查ROP 02/14 21:11
→ freef1y3: 這個攻擊手段是用現存的程式片段就可以達到任何惡意功能 02/14 21:12
→ freef1y3: 當然這是軟體的技術 但是你也不能證明硬體沒有類似手段 02/14 21:15
→ freef1y3: 再者 窮舉法是說刪掉一些Gate看會不會影響本來的功能嗎? 02/14 21:15
→ freef1y3: 但是刪了一些Gate當然會影響到輸出 怎麼確定刪之前 02/14 21:20
→ freef1y3: 的輸出是對的 還是刪之後才是對的? 02/14 21:20
→ freef1y3: 這需要你硬體spec可以精細描述到每個clock時的每個訊號 02/14 21:28
→ freef1y3: 就算你真有這種spec 窮舉還是需要指數時間 實際上不可行 02/14 21:32
今天的 VLSI 都是電腦按指定的程序做這些既定的步驟做出來的. 而負責設計電路
的也都是跑模擬器將電路結果做測試出來, 只是現在做系統軟體的會在硬體設計時
就預先參與, 照構想的系統設計就預先組建軟體把功能的途徑都找出來.
→ freef1y3: 最後 如果"木馬是多出來的"這假設不成立了 上面都是白搭 02/14 21:34
→ mmonkeyboyy: 樓上你認真了... 02/14 22:02
※ 編輯: ggg12345 (220.137.130.129), 02/15/2019 12:17:00
推 xyz168: 通篇都自己的假設...證明在哪裡... 02/18 01:14
→ xyz168: 不是自圓其說就叫研究... 02/18 01:14