2017年3月9日 星期四

為何傳統藍牙配對容易遭受攻擊?

傳統藍牙配對(Bluetooth Legacy Paring),最為人垢病之處,是容易遭受駭客攻擊。

其實原理很簡單,大家只要有時間,翻一下Bluetooth Spec,了解一些各種Key的產生方式,就知道如何進行攻擊。當然,這方面的文章,網路上很多,大家可以去看看。在這裡,用我自己的方式,解釋給大家。如果看完後,晃然大悟,那就是對大家有貢獻。若看完了還是不懂,可能是本人表達的不清楚,只好自己想辦法吧。

藍芽配對的流程,從輸入PIN產生Kinit,再產生Kab,即完成配對。配對完的兩個設備,都存放相同的Kab。用下面兩張圖(來自於Multilevel Security Algorithm for Bluetooth Technology)說明。






兩個設備靠近時,要建立安全通訊之前,要先確認對方設備是否曾經被配對過,也就是確認對方是否可信的(Trusted)。如下圖,Device A想要驗證Device B是否可信:


  1. Device A發一個亂數AU_RANDa給Device B。
  2. Device B拿到AU_RANDa,和BD_ADDRa和Kab,計算,得到AU_RANDa。
  3. Device B回傳SRESa'給Device A
  4. Device A自已也會根據AU_RANDa用和Device B同樣的方式(E1),算出SRESa。
  5. Device A比較這兩個值,SRESa與SRESa',若一樣,表示Device B是可信的。
以上是兩個設備的驗證過程。駭客可以利用這一點,暴力破解,去猜PIN。若SRESa與RRESa'值一樣,表示PIN被猜到了。

我將上面3張圖,簡化成下面這張圖,就可以很清楚知道駭客會怎麼做了。


使用者,在做傳統藍牙配對的時候,駭客會用藍牙分析儀去監聽藍牙封包。分析儀是得不到PIN,因為那是使用者自己輸入的。但分析儀可以得到
  • IN_RAND
  • Kinit xor LK_RANDa
  • Kinit xor LK_RANDb
  • 雙方的藍牙位址:BD_ADDRa、BD_ADDRb
分析儀這些這值記錄下來,就可以對6位數字的PIN進行暴力破解了。通常,功能強大的藍牙分析儀,再抓封包的時候,會順便破解一下PIN。這種分析儀,我以Attacker稱之,如下圖:



攻擊步驟:

  1. Attacker監聽兩個設備配對的過程,截取以下值及藍牙地址,記錄在Table裡
    • IN_RAND
    • LK_RANDa xor Kinit
    • LK_RANDb xor Kinit
  2. Attacker不知道Device的PIN,但知道配對時傳遞的一些數據,而且存在Table裡,於是開始爆力破解PIN。
  3. Attacker 發AU_RANDa給Device
  4. Device傳SRESA’給Attacker
  5. Attacker不斷地試PIN,就會一直產生SRESa。直到找到PIN,使得SERSa=SERSa’。因為PIN只有6位數,所以很快可以找到。
  6. 一旦Attacker知道PIN,就可以算出Kinit ==> Kab ==> Kc ==> Kc’。
  7. 之後兩個設備之間通訊是拿Kc’加密。因所以Attacker會順便破解藍牙通訊傳遞的密文。
為何Bluetooth Simple Paring無法採用這種方式?因為配對過程用的是ECC,雙方各有Public Key與Private Key,而且Key的大小是256 bit,很難爆力破解。這涉及到密碼學,以後有空再為大家介紹。

-Count

1 則留言:

  1. 您好,想請問藍牙的public key和private key是怎麼產生的?

    回覆刪除