【密碼學時事】三星手機的加密機制有瑕疵

2022/02/24閱讀時間約 4 分鐘
難得看到一般大眾也會想注意的密碼學新聞。在此跟大家分享一下。
首先,有幾位以色列的學者寫了一篇學術論文《Trust Dies in Darkness: Shedding Light on Samsung's TrustZone Keymaster Design》。這標題有點惡毒,通常學界的學者不會寫的這麼兇。一般是資安公司或企業裡的資安團隊才會為了吸引目光這樣搞。
新聞裡先跟大家提了一下TrustZone這個東西。這個我記得是高通(行動裝置晶片設計商。它不專注在生產晶片,而是將製造交給三星與台積電)先提出的,或是高通看到ARM(做晶片架構設計的公司,最近NVIDIA想收購但有壟斷疑慮而被打槍)要提出了,自己就先實作出來。總之高通在ARM定稿前就搞出來了,所以很大程度的影響了業界的標準。這是我的印象。
TrustZone這個東西就是在手機晶片裡面弄一個安全區。裡面是一個(虛擬的)安全環境,它標榜裡面的運算受到高規格的保護,並且只透過HAL提供有限的界面跟外部互動。一般都會將敏感的運算放在TrustZone裡面去做。比如把重要的金鑰放在裡面,或是金鑰放外面用Master Key加密保護那些金鑰,然後再將Master Key放裡面。又比如之前HTC做的區塊鍊手機就是把大部份的敏感運算(比如虛擬貨幣的交易)移到TrustZone裡面做。反正就是認為它安全,就接近無腦的把敏感的運算丟進去。雖然這些年TrustZone偶爾還是有被人找到漏洞啦XD
前面提到,TrustZone這個安全區的運算只能透過有限的界面。這次的問題就在於開放出來的界面可以被利用。場景就是上面提到的,應用程式使用的金鑰放外面,然後用TrustZone裡面的Master Key加密保護。研究人員發現三星透過HAL開放的界面允許指定加密時使用的初始向量(IV, 即Initialization Vector)。導致應用程式的金鑰有外洩的風險。
這裡我簡單帶一下密碼學的一些理論(詳細在付費的文章裡,不過我還沒開放)。
IV出現的目的是讓密文更亂。打個比放,我將明文A加密得到A'。攻擊者看到A',除非破解加密演算法或金鑰,否則很難反推回A。但是,假如攻擊者得知A'是A加密後的結果,那下次攻擊者看到A'的時候,他立刻就知道原文是A了,連破密都不用(只要攻擊者確定加密金鑰是同一把)。
我們用公式來看:
E(M, K) = C
E為加密函式,M為明文(也就是應用程式使用的金鑰),K為Master Key,C為密文。因為M與K是固定的,C當然也是固定的。如果攻擊者是一位有能力要求做加密的人,他想要從C反推M時,就可以生成M1, M2, ..., Mn,然後要求加密,再比對加密的結果是否等於C。這就是選擇明文攻擊
為了避免這個問題,密碼學家加入了IV,讓它進來攪和一下,把加密的結果搞得不一樣。一樣來看公式。底下加入了IV,因此,即使M與K是固定的,當IV不同時,C也會不同:
E(M, IV, K) = C
當然,要讓每次加密的結果不同,就得要讓每一次加密都用不同的IV。否則仍然有機會被攻擊者找到模式。三星透過HAL開放的功能是用來提供給外部應用程式加密的,當然得允許指定明文。而這裡又另外允許指定IV,為選擇明文攻擊又打開了大門(精準的名稱是IV reuse attack)。
按照新聞的內容,三星的Galaxy S8、S9、S10、S20與S21所使用的界面都存在這個問題。比較特別的是三星在S10、S20與S21似乎有看到這個隱憂,對開放的界面做了調整,但是仍被學者找到其他手法挖掘弱點。
其實我猜三星對修復這個問題有所顧慮,所以沒有一股作氣把問題堵起來。因為早期將IV保留給外面輸入,有可能已經產生了一些正常的應用。若是突然把大門關上,那些非惡意在使用該界面的應用程式就掛點了。不過本來就不該這樣設計。所以只能算是三星一步錯步步錯了XD
學者推估市面上有大約一億台手機存在這個漏洞,大概是把三星相關手機的銷量粗暴的加起來。我看S8那麼久了,或許使用者沒有那麼多。
漏洞在去年都報給三星,而且也都解完了。理論上S10、S20和S21有正常在更新手機軟體的話應該就不存在這個問題。
研究的最後面建議TrustZone裡面實作的加密演算法可以用AES-GCM-SIV。這是一種AES-GCM的變形。基本上自帶禦防IV reuse attack的能力。以後有機會可以跟大家小聊一下這個東西。
這個新聞再一次告訴我們密碼學的博大精深就算是製造產品多年的大公司也不一定能好好掌握啊。
J米思
J米思
Hi, I am a writer. Hope you can enjoy my work. The credit of my avatar: https://ac-illust.com/clip-art/22079335/j-alphabet
留言0
查看全部
發表第一個留言支持創作者!