微時代

技術帖:論移動支付的安全性

2014/6/7 0:22:20 / 來源: / 點擊: 99

微信支付VS支付寶
 
在安全領域有兩個基本的原則:
 
1、 沒有絕對安全,安全是相對的;
2、 所有的簡單、方便都是以犧牲安全程度為代價的,只是看你如何權衡罷了。
 
個人認為,在手機上支付,各種條件尚有欠缺,環境尚不成熟,為時過早。(錢袋、盒子支付、拉卡拉推廣的卡槽式手機支付理論上屬于傳統的POS機支付,不屬于嚴格意義上的手機支付,不屬于這里涵蓋的范圍)
 
 
移動支付的密鑰在哪兒?
 
簡單的用戶名和靜態密碼都是容易被破解或竊取的(無論如何組合數字和字母,多少位),已經不能滿足今天電子支付的安全要求了。所以,銀行目前普遍采用“用戶名+密碼+密鑰”三合一的方式來實現用戶身份的認證。“用戶名和密碼”就是你在銀行開戶時設定的,而“密鑰”是你下載到U盾保存(也由銀行發放)的數字證書或者銀行發放的帶有顯示屏的六位到八位的動態令牌。

 

無論是數字證書還是動態令牌,都是代表你身份的唯一象征,就好比你的指紋是你的唯一標識。對于銀行而言,每一個用戶都具有唯一的數字證書或者動態令牌,反之亦然。
 
用戶的“密鑰”和PC機獨立是電子支付的最基本的要求。如果早期使用過網銀的客戶一定記得,最初數字證書是備份在PC機的硬盤里的,之所以現在要備份到一個獨立的U盾里,就是為了將你的“密鑰”與PC分離。這樣,即使有黑客能夠侵入你的電腦,沒有數字證書或者動態令牌顯示的數字也無法完成資金的轉移。
 
前幾年有一些用戶在電腦支付完忘記拔U盾而被黑客將銀行賬戶的資金轉走,所以,現在的網銀在你退出的時候都會提醒你,“你的U盾還未拔掉,建議您拔掉U盾“(動態令牌不存在這個問題)。

 

 
U盾的操作系統是專有的,很少有人會破解U盾,所以,只要U盾不在PC機上,該PC也就無法與銀行建立一條加密的隧道,你就有了一層很堅固的保障。
 

 

動態令牌的工作原理是簡單地來說就是一種密碼算法。理論上來講,只要有足夠長的時間和良好的設備,任何密碼都可通過窮舉法加以破解,即把所有的密碼組合全試一次。但對于動態令牌的一些算法(如MD5、SHA-1),使用窮舉法尋找它的沖突至少需要進行2^80次運算,這對于我們來說近乎不可能。試想我們使用一臺每秒運算30億次的計算機,運用窮舉法去尋找一個沖突,到找到為止需要花費多少時間呢?大概需要1200萬年以上!
 
目前微信使用的,據我觀察(沒有看到任何介紹),有點類似短信動態令牌方式,即用戶方無需一個動態令牌的實體,服務器端通過短信網關將動態令牌發送下來。所謂動態令牌,就是不斷變動的六位或者八位數字。數字一旦出現,永不重復,這就保證了即使黑客竊取你的密碼,過了密碼的存活周期后,也無法進入系統進行身份認證,所以,動態令牌有時也叫一次性口令,One Time Password,簡稱OTP。動態令牌的存活時間從幾秒鐘到幾個小時可調,根據你實際的應用場景設定,一般為30-60秒更換一次。
 
動態令牌的顯示數字是依靠某種算法運算所得。服務器端運算出來一個結果,并通過短信發送給手機端,然后用戶將這六位數字錄入,傳遞到服務器端進行對比,驗證用戶的身份。這里先不去考慮密碼編制算法的可靠性(是否真的有MD5等那樣堅固,我沒有看到任何資料說微支付密碼采用何種算法,不好評價),僅就短信傳遞密碼,就存在可達性和安全性的問題。

 

根據目前運營商的平均水平,短信的到達率大約在95%左右,但遇到一些特殊情況,如節假日,有可能會發生延遲、丟失的現象。比方說,剛剛過去的雙十一。短信一般不用于關鍵信息(對丟失、時延敏感)的傳遞,也屬于“best effort”盡力而為范疇。
 
而且,短信雖然在傳遞中,報文是加密的,但依然容易被攔截且破解。這樣,也會造成動態密碼的泄露。所以,主流的動態令牌形式是一個獨立于任何設備(無論PC還是手機)的硬件設備,也像U盾一樣(很多銀行、證券公司采用),只是多一個顯示數字的屏幕。
 
動態令牌一旦激活,在使用過程中將不會再與服務器發生通訊,用戶不可能通過空中截取。
 

 

動態令牌內部是靠一個小CPU按照與服務器同樣的算法分別運算著。每一時刻,服務器跟動態令牌的數字都是一致的,所以,無論何時需要身份的認證,無需通訊,動態令牌跟服務器的數字也會保持正確。
 
無論是數字證書,還是動態令牌,移動支付的需要一個分離的“密鑰”,才能稱得上安全。目前我看到的多數解決方案在這方面都有欠缺,是皇帝的新裝?
 
 
手機本身的安全無法保證
 
智能手機的快速普及,使今天的手機已經與昨天的手機不可同日而語。但是在帶給人方便的同時,也將PC端帶給大家的問題復制過來了。手機上的各種漏洞層出不窮,尤其是基于開放的安卓系統的手機,在方便的同時,也方便了別人竊取你的信息。任何一個應用,都可以采集你的諸多私密信息。蘋果手機由于采用封閉系統,要略好一點,但也不是沒有漏洞,只要有心可為,還是有空子可鉆。在這一樣環境里,完成支付,真的有點“裸奔”的感覺。
 
雖然現在有了手機版的360安全衛士,安全管家等等,但并沒有一個真正的行業標準規定大家該如何做,只是一個建議。而多數網民對此更是一無所知,即使看到了建議也不會像PC端那樣從容應對。
 
 
之前的手機應用,大多屬于非關鍵類業務,即使有些信息泄露也無傷大雅。但如果真的用來支付等直接跟錢打交道的業務,個人認為還是為時過早。
 
綜合上述兩個方面,老李還是認為先別急著在手機上玩支付,等手機的安全體系完成再說吧。而且,從另一方面,各家移動支付的玩家們也在完善自己的解決方案,老李從運營商們的手機支付規范中,都看到了明確的“密鑰”分發的環節,說明這一問題已經引起了足夠的重視。假以時日,這并不是一個不可解決的問題,只是目前,尚不成熟。
 
 
手機支付的出路
 
前面分析了目前的手機支付存在的問題,如果單純考慮用移動端本身來解決這一問題,個人認為必須有比較完善的密鑰發放和管理機制才能算是一個完整的解決方案。
 
按照目前可以看見的產品(包括已經面市和在研發中),大概分為三大類。第一類是NFC近場支付,這也是個人最看好的未來的一種支付方式;第二類是通過外接設備來完成密鑰的保存;第三類是將支付風險轉化到PC端。
 
三大類中,后兩類相對比較成熟,設備和支付方案都有比較嚴格的金融機構審核。從本質意義上來說,后兩種方案其實還是傳統支付方案的延續,只是換了個手機終端的形式而已。NFC方案目前還屬于發展中的一個方案,由于配套的終端識別設備(POS機部署或者傳統POS機改造)以及終端標準(13.56M&2.4G)的待定,尚需時日。
 
3.1、NFC近場支付
 
NFC是Near Field Communication縮寫,即近距離無線通訊技術。是一種非接觸式識別和互聯技術,可以在移動設備、消費類電子產品、PC 和智能控件工具間進行近距離無線通信。
 
NFC以其快捷便利安全迅速得到大眾的喜愛。在日本,DOCOMO大約在六七年前就推出了FeliCa移動支付業務,擁有NFC功能的手機用戶,可以通過手機在全國的am/pm連鎖店購物。

NFC目前的工作頻段只要有13.56M和2.4G兩種。這也是銀聯與中國移動之所以遲遲未能達成一致的主要原因。因為銀聯傾向的標準是前者,而移動傾向的標準是后者。2012年6月兩家最終簽訂合作協議說明雙方可能在這一方面達成了某種妥協。

從形式上,NFC目前主要的也可以分成拖尾式和RFID-SIM卡方式。
 
拖尾式就是無需更換手機,將射頻功能部分集成于雙界面SIM/UIM卡中,射頻部分天線直接與SIM/UIM卡高速管腳相連。射頻天線可以采用拖尾的方式與SIM/UIM卡相連,也可定制于手機中。
 
拖尾式的好處是無需更換手機,只需更換SIM卡,符合移動運營商在SIM/UIM卡加載安全及移動支付應用的要求。天線采用SIM/UIM卡拖尾方式對手機外觀要求較高,不是每款手機都適合采用此方式。
 
RFID-SIM方案采用將射頻單元(包括射頻模塊、天線)直接集成到有源SIM/UIM卡上的方式工作,工作頻率為2.4GHz。目前,中國移動主要采用的是此方案。

 

 
無論是拖尾式,還是RFID-SIM卡模式,密鑰都可以保存在獨立的電子錢包存儲器里。所有的SIM卡應用,必須通過一種只有SIM卡廠商才有的編譯器編譯方可,所以外人很難破解,里面的密鑰是安全的。(老李曾經做過一款SIM應用,編譯過程非常復雜,不是外界常用的系統,而且SIM卡廠商基本都不對非運營商之外的第三方提供服務。)
 
 
3.2、在外接設備中集成密鑰
 
目前,主流的圍繞手機(包括SIM卡)外接的移動支付方案也有三種。一種是以錢袋、拉卡拉、盒子支付為代表的從手機音頻口外接刷卡槽方案;還有一種是在手機的SIM卡上貼片方案;第三種是在手機的SD卡中保存數字證書(銀聯曾考慮過此方案)。
 
外接卡槽式

 

這一種方式可以將一個外接的刷卡槽插入手機的音頻接口,從而使手機變成了一個移動POS機。它只利用了手機的通訊和運算功能,而密鑰可以保存在卡槽設備里。除了需要刷卡的時候插入終端外,其他時間卡槽和手機終端是分離狀態的。這樣就保證了密鑰和手機終端分離的目的,從而達到手機支付安全的目的。
 
手機貼片式
 
這種方式主要圍繞原有的SIM卡進行改造。在原來的SIM卡基礎上,貼上一個小貼片,貼片與SIM卡可以合二為一,插入原來的SIM卡槽。手機貼片模式的支付完成,是通過SIM卡應用菜單實現的。在每個人的手機里,都有一個SIM卡應用的菜單。用戶開卡(貼片模式完成后,需要拿專用的POS機來完成開卡激活,與運營商無關,是服務提供商的服務范圍)。
 
理論上來講,貼片式的貼片也是跟手機分離的,密鑰也可以保存在貼片里。而且,貼片的激活機制也需要通過POS機非常復雜但專業的流程實現。所以,貼片式的支付也是安全的。
 
SD卡模式

 

中國銀聯也曾考慮過SD卡模式,即在手機的SD卡中保存數字證書,也就是密鑰。用戶現需要安裝保存在SD卡中的客戶端程序,然后需要開卡激活該客戶端,即下載保存數字證書(密鑰)。然后就可以通過客戶端中的相關操作完成支付了。
 
上面三種模式,是目前手機支付領域比較主流的三種外接設備的工作方式。個人比較傾向卡槽方案,一不改變人的使用習慣,也無需綁定、更換信用卡;貼片方式開卡流程非常復雜,需要有專人用專用的POS機激活,不利于大面積推廣;SD卡模式的加密是個問題,如果把密鑰保存在SD卡中,不太可能有用戶只在使用支付的時候才換上專用的SD卡,如果長期攜帶會有安全隱患(就如同U盾在PC機上長連接一樣)。
 
 
3.3、轉化到PC端解決
 
第三種解決方案是目前支付寶模式。因為用戶可以并不直接在移動端關聯銀行卡。而通過支付寶賬戶做了一層緩沖。用戶完全可以通過PC端的操作來完成從銀行賬戶到支付寶的關聯乃至轉賬,再通過PC端與移動端一致的支付寶賬戶完成購買商品的支付。這樣即便有風險,也只是支付寶移動端賬戶的風險,而不是你銀行卡所有資金的風險。而在PC端完成支付已經是非常成熟的業務了。當然也有的用戶喜歡在移動端來完成支付寶到銀行卡的關聯,個人建議不要這么做。
 
如果今天非要用手機完成支付的話,那么個人認為后兩種方案還是可取的。第一種NFC近場支付,需要等待整個體系的建立完成,如標準、POS機設備等。
 
其他的解決方案,個人認為尚不完善,其安全性有待考察。

相關熱詞搜索:微信支付移動支付支付寶銀聯

上一篇:微信開發者們需要看清的微信生態和“企鵝帝國”
下一篇:放眼未來 必須掌握的十大移動技術

分享到: 0
辉柏嘉和酷喜乐