文章總列表

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執行時間多了百萬分之三秒,第一個答案出來了

  1. 假如正確答案是AA=10,BB=11
  2. AA=0,BB/CC/DD/EE/FF亂數產生,測試1000次,平均執行時間(X+0)us
  3. AA=10,BB/CC/DD/EE/FF亂數產生,測試1000次,平均執行時間(X+3)us

繼續攻擊BB,手法一樣,慢慢拷問CEM挖出密碼!

  1. AA BB=10 0,CC/DD/EE/FF亂數產生,跑1000次,平均執行時間(Y+0)us
  2. AA BB=10 11,CC/DD/EE/FF亂數產生,跑1000次,平均執行時間(Y+3)us

看到這裡還沒關掉網頁的您,已經學會時間差攻擊(timing attack)的精髓了!我把這個攻擊手法介紹給同事,不愧宅宅工程師,眼睛立刻發出光芒!


後記

  1. 寫程式比對密碼要有耐心,比完再跳出來,再補上一小段random delay增強安全性。外面的壞人會部署timing attack,不要挖坑給自己跳

  2. 上面程式額外的細節:輸入密碼重排過再比。VOLVO還是有額外多補上保護,觀察每道指令裡的數值,並不是連續的-7, -9, -5, -10, -8, -6。如果去看他的程式碼,不同CEM編號打亂的方法還不同

  3. 感謝VTL大神,把難懂的組合語言翻譯成C code,讓我能一虧P3奧秘


  4. 上面討論串有2600篇(增加中)裡面討論P1/P2的人更多,有興趣能進去挖寶


應該沒有下一篇了,再挖下去該改行去汽車電子行業工作了


留言

這個網誌中的熱門文章

幼犬書桌椅選擇心得 升降桌 兒童桌椅

STM32 UART + DMA,使用HAL實作TX/RX,以及不定長度接收

CANON G3000 廢墨瓶改裝