VOLVO CEM Crack (3) P1/2 CEM Crack
這篇文章介紹如何攻擊P1/2的CEM,盡量深入淺出把 俄羅斯人vtl 的傑作介紹一下。透過10分鐘閱讀,一窺組合語言的奧妙,還有時間差攻擊(timing attack)的奧妙。完整 討論串 也可以慢慢讀 VOLVO P1/P2的CEM密碼是6個0-99的數字,能寫成AA BB CC DD EE FF。CEM使用車用電子大廠日本 瑞薩半導體 的MCU。VTL大叔顯然是箇中高手,找出比對密碼的關鍵程式如下 上面是瑞薩處理器的指令,組合語言。手寫組語是古代人技能,現代人還看祖語叫 苦命人 !簡單翻譯一下:CMP是Compare縮寫,比對兩個數值,輸入數值和正確答案 正確答案放在記憶體位置0xFFE000,正確答案第一位 輸入密碼放在記憶體位置[FB - 7] 比對其實是減法:結果非0代表不同!緊接JNE指令Jump if NOT-EQUAL,如果不同跳到0xFFCAF9。前五組CMP/JNE比對密碼前5個數字。這個結構的弱點是: 猜錯立刻跳走 ,攻擊者能簡單觀測 執行時間 ,判斷猜對或猜錯 下面是具體攻擊手法,AA=10執行時間多了 百萬分之三秒 ,第一個答案出來了 假如正確答案是AA=10,BB=11 AA=0,BB/CC/DD/EE/FF亂數產生,測試1000次,平均執行時間(X+0)us AA=10,BB/CC/DD/EE/FF亂數產生,測試1000次,平均執行時間(X+3)us 繼續攻擊BB,手法一樣,慢慢拷問CEM挖出密碼! AA BB=10 0,CC/DD/EE/FF亂數產生,跑1000次,平均執行時間(Y+0)us AA BB=10 11,CC/DD/EE/FF亂數產生,跑1000次,平均執行時間(Y+3)us 看到這裡還沒關掉網頁的您,已經學會時間差攻擊(timing attack)的精髓了!我把這個攻擊手法介紹給同事,不愧宅宅工程師,眼睛立刻發出光芒! 後記 寫程式比對密碼要有耐心,比完再跳出來,再補上一小段random delay增強安全性。外面的壞人會部署timing attack,不要挖坑給自己跳 上面程式額外的細節:輸入密碼重排過再比。VOLVO還是有額外多補上保護,觀察每道指令裡的數值,並不是連續的-7, -9, -5, -10, -8, -6。如果去看他的 程式碼 ,不同CEM編號打亂的方法還不同 感謝VTL大神,把難懂的組合語言翻譯成C c