蘋果在剛剛舉行的全球開發者大會(WWDC 2019)中發布了新的「CryptoKit」框架。通過該框架,軟件開發者可以在蘋果即將發布的新系統 iOS 13,m
蘋果在剛剛舉行的全球開發者大會(WWDC 2019)中發布了新的「CryptoKit」框架。通過該框架,軟件開發者可以在蘋果即將發布的新系統 iOS 13,macOS 10.15 和 tvOS 13 中,安全和高效的執行特定的加密算法。
這個消息讓幣圈的朋友興奮了一下子。
眾所周知,加密算法是區塊鏈技術得以實現的重要根基,所以這件事在加密貨幣社區也引起了不小的反響,甚至有夸張的言論說蘋果可能會開發加密貨幣錢包。但事實上,CryptoKit 和密碼學有關,意味著未來可能會支持越來越多的算法和提供更多的硬件加密方案,但這與密碼貨幣關系不大。
被幣安收購的Trust錢包的創始人 Viktor Radchenko 在蘋果發布 CryptoKit 后評論:
離把你的手機變成一個硬件錢包僅有幾步之遙了。
但另一名區塊鏈開發者Ronald Mannak卻潑了一盆冷水:
CryptoKit 是一個「密碼學」的框架,但并不是「加密貨幣」的框架。 CryptoKit 的發布并不能暗示蘋果正在改變對加密貨幣的態度。
蘋果之前已經有了一個密碼學框架「CommonCrypto」,但 CryptoKit 更強大一些。CryptoKit 是一個對 Swift 編程語言更友好的框架,并且包含了更多的哈希算法,比如說眾望所歸的 SHA256。
CryptoKit 的功能并不一定需要「Secure Enclave」協處理器(目前在售的 iOS 設備和部分 Mac 支持)。
與 CommonCrypto 框架類似,如果設備未集成 Secure Enclave,CryptoKit 就會回退并使用蘋果設備內置的「鑰匙串 | Keychain」功能處理加密算法作為替代。
從目前的開發文檔中可以看到 Secure Enclave 僅支持 secp256r1 (也叫 prime256) 這一種橢圓曲線,并不是比特幣、以太坊和其他區塊鏈常用的 secp256k1。除非以后硬件升級,否則你的 iPhone 是不可能變成一臺硬件錢包的。
再者,就算 CryptoKit 支持區塊鏈常用的 secp256k1,那通過 CryptoKit 生成的私鑰也是沒辦法被 Secure Enclave 的外部所讀取的。你可以(通過 CryptoKit)使用這個私鑰生成公鑰或者執行消息簽名,但你永遠無法獲得私鑰本身。所以也就沒辦法備份這個私鑰,這個限制可能會非常不方便錢包的使用場景。
對 Swift 開發者而言 CryptoKit 是一個很好的新功能,但這并不是加密貨幣社區所想要的那種翻天覆地的變化。
在 CryptoKit 中,蘋果加入了一些常用的加密算法。在開發文檔中,蘋果是這樣介紹的:
使用 CryptoKit 執行常用的加密算法:
計算和對比安全摘要
使用「非對稱」加密算法創建和對比數字簽名,或執行交換公鑰的操作
除了可以在內存中儲存密鑰,也可以在「Secure Enclave」中儲存并管理私鑰
創建「對稱」密鑰,并執行消息的驗證或加密等功能
相比底層接口,更推薦使用 CryptoKit 框架。CryptoKit 可以替開發者管理指針,自動處理那些可以讓 App 更安全的任務,比如在內存釋放期間覆蓋敏感數據
再仔細看文檔中所支持的加密算法,大多是由美國國家標準技術研究所 (NIST) 發布的通用和標準的加密算法。
包含:
AES-GCM 對稱加密算法
ChaCha20-Poly1305 對稱加密算法
HMAC 消息認證算法
第二代安全哈希算法 SHA-2 系列,包含 SHA-512,SHA-384,SHA-256
非對稱加密算法(又稱公鑰加密算法),包含 Curve25519,P-521,P-384,P-256 這四種橢圓曲線
而且開發者可以調用 Secure Enclave 自帶的 P-256 算法進行硬件加解密。
Secure Enclave(安全區域)是 Apple A7(初次集成在 iPhone 5S 中,用以保證「觸控 ID」的安全性)或更高版本 A 系列處理器中集成的協處理器,它為數據保護密鑰管理提供所有加密操作,即使在內核遭到入侵的情況下,也可維護數據保護的完整性。而且在 Secure Enclave 內部生成的密鑰使用真正的硬件隨機數生成器。
雖然比特幣使用了許多和密碼學相關的算法,但最重要的至少會包含這兩個:SHA-256,secp256k1。
SHA-256 是第二代安全哈希算法,比特幣也在不止一處使用了該算法,比如在計算工作量證明的時候 (PoW)
secp256k1 是非對稱加密算法中的一種橢圓曲線,比特幣的私鑰可以通過該算法生成對應的公鑰
非常可惜的是,Secure Enclave 支持的 P-256 的橢圓曲線是 secp256r1,而不是比特幣采用的 secp256k1。這也就意味著無法將現有的蘋果設備變成一臺硬件錢包。就算還是可以在蘋果設備上開發軟件錢包,但也是用不到這個 CryptoKit 框架的,需要開發者自己實現或者使用第三方代碼庫。
CryptoKit 還處于 Beta 階段,而且這也是蘋果發布的第一個版本而已,所以這僅僅只是一個開始。
蘋果專門獨立出一個框架用以處理密碼學相關的算法,是一個值得肯定并會影響深遠的決策,未來可能會支持越來越多的算法和提供更多的硬件加密方案。但以現階段的細節來看,對區塊鏈技術的普及還是比較有限的。
有意思的是,CryptoKit 和 CryptoKitties(迷戀貓,一個曾經最熱門的基于以太坊的收集類游戲)相比只多了最后的 ties 這四個字母,也許這也是為什么 CryptoKit 和幣圈有關系的理由。(撰文:潘致雄)
關鍵詞: 蘋果 CryptoKit框架 硬件加密