一文搞懂支付安全體系建設(shè)

0 評論 2447 瀏覽 5 收藏 66 分鐘

“支付安全體系全解析,筑牢電子支付防線。” 在電子支付廣泛普及的當(dāng)下,其安全體系涵蓋哪些關(guān)鍵技術(shù)與環(huán)節(jié)?如何應(yīng)對各類潛在風(fēng)險(xiǎn),確保支付過程安全可靠?

對于支付安全我自認(rèn)比絕大部分支付行業(yè)的同行都專業(yè),當(dāng)年為了做統(tǒng)一密鑰管理和加解密加驗(yàn)簽平臺,啃了好幾本密碼學(xué)和信息安全的大部頭書。但我今天以產(chǎn)品經(jīng)理都能看懂的白話講清楚支付安全體系,不涉及復(fù)雜的數(shù)學(xué)知識。

內(nèi)容有點(diǎn)長,可以考慮使用電腦閱讀,效果會好不少。

1. 前言

在電子支付的萬億級市場中,安全無疑是核心中的核心。大部分人都知道支付安全很重要,但支付安全具體包括哪些方面,面臨的問題,以及有哪些具體技術(shù)或方案來應(yīng)對,包括在支付行業(yè)從業(yè)多年的老支付人,卻未必有全局而清晰的認(rèn)知。

今天嘗試從在線支付面臨的主要安全問題,常見的技術(shù)手段如加密解密、簽名驗(yàn)簽、安全證書等入手,嘗試講清楚支付安全體系。

通過這篇文章,你可以了解到如下內(nèi)容:

  • 在線支付面臨的主要安全問題。
  • 常見的加密解密技術(shù)。
  • 常見的簽名驗(yàn)簽技術(shù)。
  • 安全身份認(rèn)證體系。
  • 常見的安全協(xié)議。
  • 密鑰存儲與統(tǒng)一安全服務(wù)。
  • 工程應(yīng)用中的常見問題。

2. 在線支付面臨的主要安全問題

在線支付面臨的安全問題主要包括:

賬號或密碼等敏感信息被盜用。

用戶的賬號和密碼可能會被黑客獲取,導(dǎo)致個人資金被盜用。這種情況是用戶普遍感知較強(qiáng)的安全問題,常見于密碼泄露導(dǎo)致資金損失的情況。

交易信息被篡改。

這個對于一般用戶感知較少,常見就是支付金額被篡改,比如實(shí)付金額小于應(yīng)付金額,還就是轉(zhuǎn)賬時(shí)的收賬賬號或金額被篡改。

比如在轉(zhuǎn)賬場景下修改收款賬號或金額,當(dāng)轉(zhuǎn)賬請求被黑客截獲,把原收款賬號修改為另一個賬號,再發(fā)給支付平臺。如果支付平臺安全措施不到位,就可能把錢轉(zhuǎn)到一個錯誤的賬號上。

交易信息被抵賴。

這個比較少見。舉個場景,支付平臺請求銀行扣款200元,銀行實(shí)際扣款失敗,但是通知支付平臺成功,支付平臺也通知商戶發(fā)貨了。但是銀行說他們返回給支付平臺是扣款失敗,扣款成功的信息不是銀行發(fā)出來的。這種行為是抵賴。

欺詐交易

包括套現(xiàn)、洗錢等違規(guī)交易,以及因?yàn)橛脩粜畔⑿孤秾?dǎo)致盜刷等。

服務(wù)不可用攻擊。

這個出現(xiàn)的頻次非常高,只是一般人感覺不到。有興趣的同學(xué)可以搜索分布式拒絕服務(wù)DDoS(Distributed Denial of Service),攻擊者通過大量惡意流量占用支付系統(tǒng)的資源,使得合法用戶無法正常訪問支付平臺,從而影響用戶的交易體驗(yàn)甚至造成財(cái)務(wù)損失。

3. 支付安全核心關(guān)注點(diǎn)

 

支付安全是一個很大的范疇,但我們一般只需要重點(diǎn)關(guān)注以下幾個核心點(diǎn)就夠:

敏感信息安全存儲。

對個人和商戶/渠道的敏感信息進(jìn)行安全存儲。

個人敏感信息包括身份證信息、支付卡明文數(shù)據(jù)和密碼等,而商戶/渠道的敏感信息則涉及商戶登錄/操作密碼、渠道證書密鑰等。

交易信息安全傳輸。

確??蛻舳伺c支付系統(tǒng)服務(wù)器之間、商戶系統(tǒng)與支付系統(tǒng)之間、支付系統(tǒng)內(nèi)部服務(wù)器與服務(wù)器之間、支付系統(tǒng)與銀行之間的數(shù)據(jù)傳輸安全。這包括采用加密技術(shù)等措施來保障數(shù)據(jù)傳輸過程中的安全性。

交易信息的防篡改與防抵賴。

確保交易信息的完整性和真實(shí)性,防止交易信息被篡改或者被抵賴。一筆典型的交易,通常涉及到用戶、商戶、支付機(jī)構(gòu)、銀行四方,確保各方發(fā)出的信息沒有被篡改也無法被抵賴。

欺詐交易防范。

識別并防止欺詐交易,包括套現(xiàn)、洗錢等違規(guī)操作,以及通過識別用戶信息泄露和可疑交易來保護(hù)用戶資產(chǎn)的安全。這一方面通常由支付風(fēng)控系統(tǒng)負(fù)責(zé)。

服務(wù)可用性。

防范DDoS攻擊,確保支付系統(tǒng)的穩(wěn)定運(yùn)行和服務(wù)可用性。通過部署防火墻、入侵檢測系統(tǒng)等技術(shù)手段,及時(shí)發(fā)現(xiàn)并應(yīng)對可能的DDoS攻擊,保障支付服務(wù)的正常進(jìn)行。

4. 極簡支付安全大圖

支付安全是一個綜合性的系統(tǒng)工程,除了技術(shù)手段外,還需要建立健全的安全制度和合規(guī)制度,而后兩者通常被大部分人所忽略。

下圖是一個極簡版的支付安全大圖,包含了支付安全需要考慮的核心要點(diǎn)。

說明:

制度是基礎(chǔ)。

哪種場景下需要加密存儲,加密需要使用什么算法,密鑰長度最少需要多少位,哪些場景下需要做簽名驗(yàn)簽,這些都是制度就明確了的。制度通常分為行業(yè)制度和內(nèi)部安全制度。行業(yè)制度通常是國家層面制定的法律法規(guī),比如《網(wǎng)絡(luò)安全法》、《支付業(yè)務(wù)管理辦法》等。內(nèi)部安全制度通常是公司根據(jù)自身的業(yè)務(wù)和能力建立的制度,小公司可能就沒有。

技術(shù)手段主要圍繞四個目標(biāo):

1)敏感數(shù)據(jù)安全存儲。

2)交易安全傳輸。

3)交易的完整性和真實(shí)性。

4)交易的合法性(無欺詐)。

對應(yīng)的技術(shù)手段有:

  • 敏感信息安全存儲:采用加密技術(shù)對個人和商戶/渠道的敏感信息進(jìn)行加密存儲,限制敏感信息的訪問權(quán)限,防止未授權(quán)的訪問和泄露。
  • 交易信息安全傳輸:使用安全套接字層(SSL)或傳輸層安全性協(xié)議(TLS)等加密技術(shù),確保數(shù)據(jù)在傳輸過程中的機(jī)密性和完整性。
  • 交易的完整性和真實(shí)性:采用數(shù)字簽名技術(shù)和身份認(rèn)證技術(shù)確保交易信息的完整性和真實(shí)性,對交易信息進(jìn)行記錄和審計(jì),建立可追溯的交易日志,以應(yīng)對可能出現(xiàn)的交易篡改或抵賴情況。
  • 防范欺詐交易:通過支付風(fēng)控系統(tǒng),及時(shí)識別和阻止可疑交易行為。
  • 服務(wù)可用性:部署流量清洗設(shè)備和入侵檢測系統(tǒng),及時(shí)發(fā)現(xiàn)并阻止惡意流量,確保支付系統(tǒng)的穩(wěn)定運(yùn)行和服務(wù)可用性,抵御DDoS攻擊。

下面詳細(xì)講解各技術(shù)手段。

5. 數(shù)據(jù)安全:加密與解密技術(shù)

加密和解密技術(shù)是數(shù)據(jù)安全的基礎(chǔ),在支付安全技術(shù)的核心技術(shù)之一,無論是支付平臺與銀行之間的通信,還是支付平臺內(nèi)部敏感數(shù)據(jù)的存儲,都需要用到加解密技術(shù)。

我盡量避免加解密技術(shù)背后高深的數(shù)學(xué)知識。

5.1. 什么是加密和解密

在數(shù)字通信中,加密是將明文通過一定的算法和密鑰轉(zhuǎn)換成無法識別的密文的過程。這樣即使數(shù)據(jù)被截獲,未經(jīng)授權(quán)的第三方也無法理解其內(nèi)容。比如把明文“123”轉(zhuǎn)成“aexyeffidfdfwsd”。

解密則是加密的逆向過程,通過一定的算法和密鑰將密文轉(zhuǎn)換成明文的過程。比如把密文“aexyeffidfdfwsd”轉(zhuǎn)成“123”。

5.2. 對稱加密算法

對稱加密是使用相同的密鑰(稱為對稱密鑰)進(jìn)行加密和解密。這意味著發(fā)送方和接收方必須在通信之前共享相同的密鑰。對稱加密算法使用簡單且高效,但密鑰分發(fā)和管理是其主要挑戰(zhàn)之一。

以下是一些常見的對稱加密算法、特點(diǎn)和應(yīng)用場景:

AES(Advanced Encryption Standard,高級加密標(biāo)準(zhǔn)):

特點(diǎn):安全性高,速度快,密鑰長度可變。

應(yīng)用場景:廣泛應(yīng)用于網(wǎng)絡(luò)通信、文件加密、數(shù)據(jù)庫加密等領(lǐng)域。也是支付行業(yè)使用的主流對稱加密算法。

DES(Data Encryption Standard,數(shù)據(jù)加密標(biāo)準(zhǔn)):

特點(diǎn):較為古老,密鑰長度較短(56位),安全性相對較弱。

應(yīng)用場景:曾經(jīng)廣泛應(yīng)用于保護(hù)數(shù)據(jù)傳輸和存儲,但由于密鑰長度較短和安全性較弱,現(xiàn)已基本被AES取代。

3DES(Triple DES,三重?cái)?shù)據(jù)加密標(biāo)準(zhǔn)):

特點(diǎn):通過對數(shù)據(jù)使用三次DES算法加密來增強(qiáng)安全性,但速度較慢。

應(yīng)用場景:曾被廣泛用于替代DES,但由于速度較慢,已經(jīng)基本被AES取代。

RC4(Rivest Cipher 4):

特點(diǎn):速度快,簡單易用。

應(yīng)用場景:曾經(jīng)用于保護(hù)網(wǎng)絡(luò)通信和SSL/TLS協(xié)議中的加密,但由于安全性存在問題,已經(jīng)不推薦使用。

IDEA(International Data Encryption Algorithm):

特點(diǎn):速度快,安全性高。

應(yīng)用場景:曾經(jīng)用于網(wǎng)絡(luò)通信和文件加密,但由于專利限制和更先進(jìn)的算法出現(xiàn),應(yīng)用逐漸減少。

AES目前被認(rèn)為是最安全和最常用的對稱加密算法,推薦在支付行業(yè)使用。密鑰長度建議使用256比特或以上。

有些銀行要求整個報(bào)文進(jìn)行加密,這個時(shí)候一般都是使用AES 256來加密。

5.3. 非對稱加密算法

非對稱加密算法使用一對密鑰(公鑰和私鑰)進(jìn)行加密和解密。這兩個密鑰是相關(guān)聯(lián)的,但不相同。公鑰用于加密數(shù)據(jù),私鑰用于解密數(shù)據(jù),一定不能反過來,因?yàn)楣€大家都有,如果使用私鑰加密,公鑰解密,大家都可以解密,就沒有安全性可言。這種加密方式具有密鑰分離的特點(diǎn),即公鑰可以公開分發(fā),而私鑰則保密保存。

另外,非對稱加密算法也用于簽名驗(yàn)簽,拿私鑰簽名,公鑰驗(yàn)簽(不能反過來)。

以下是一些常見的非對稱加密算法、特點(diǎn)和應(yīng)用場景:

RSA(Rivest-Shamir-Adleman):

特點(diǎn):安全性高,可靠性強(qiáng),廣泛應(yīng)用。

應(yīng)用場景:用于加密通信、數(shù)字簽名、密鑰交換等各種安全領(lǐng)域。支付行業(yè)用得非常多。

DSA(Digital Signature Algorithm):

特點(diǎn):用于數(shù)字簽名,驗(yàn)證速度快。

應(yīng)用場景:主要用于身份驗(yàn)證和數(shù)字簽名,例如在SSL/TLS協(xié)議中用于網(wǎng)站認(rèn)證。

ECC(Elliptic Curve Cryptography):

特點(diǎn):密鑰長度短,安全性高,加密效率高。

應(yīng)用場景:適用于移動設(shè)備和資源受限環(huán)境,例如智能手機(jī)、物聯(lián)網(wǎng)設(shè)備等。

DH(Diffie-Hellman):

特點(diǎn):用于密鑰交換,實(shí)現(xiàn)安全的密鑰協(xié)商。

應(yīng)用場景:用于安全通信中的密鑰協(xié)商,例如SSL/TLS協(xié)議中的密鑰交換階段。

RSA當(dāng)前在支付行業(yè)應(yīng)用最廣泛,ECC則逐漸成為移動設(shè)備和物聯(lián)網(wǎng)設(shè)備中的首選算法,因其在資源受限環(huán)境下的高效性能而備受青睞。RSA推薦密鑰長度為2048比特或以上,ECC推薦密鑰長度為256比特或以上。

5.4. 數(shù)字信封加密算法

數(shù)字信封加密算法組合了對稱加密、非對稱加密、數(shù)字簽名和驗(yàn)簽等多種加密技術(shù),用于在網(wǎng)絡(luò)通信中保護(hù)數(shù)據(jù)的安全性和完整性。傳輸?shù)臄?shù)據(jù)就像放在信封里面,只有收件人才能打開信封查看明文,所以被形象稱為數(shù)字信封加密。

它的原理是使用對稱加密算法對要傳輸?shù)臄?shù)據(jù)進(jìn)行加密,然后再使用接收方的公鑰對對稱密鑰進(jìn)行加密,再使用自己的私鑰進(jìn)行簽名,最后將加密后的對稱密鑰和加密后的數(shù)據(jù)一起發(fā)送給接收方。接收方先使用對方的公鑰進(jìn)行驗(yàn)簽,再使用私鑰解密對稱密鑰,最后使用對稱密鑰解密數(shù)據(jù)。

不過大家日常聽得更多的可能是PGP(Pretty Good Privacy)。PGP是一種加密軟件套件,用于保護(hù)電子通信的安全性和隱私性。它由Philip Zimmermann于1991年創(chuàng)建,并成為了一種標(biāo)準(zhǔn)的加密工具,最開始用于保護(hù)電子郵件,后面被廣泛用于保護(hù)文件傳輸,比如支付平臺和銀行之間的文件。

PGP通常推薦使用RSA 2048和AES 256,前者用于加密對稱密鑰和簽名,后面用于加密大數(shù)據(jù)塊。

下圖是數(shù)字信封加解密算法的完整過程:

現(xiàn)在很多銀行的打款文件要求使用PGP加密,因?yàn)槲募锩嬗锌ㄌ柕让舾袛?shù)據(jù)。

5.5. 加密算法和密鑰長度選擇

在加密應(yīng)用中,算法和密鑰長度對安全性(破解難度)和性能(運(yùn)算快慢)都有重要影響:

安全性:

非對稱加密算法通常比對稱加密算法更安全。比如RSA(非對稱加密)好于AES(對稱加密)。

同類算法,新算法通常比老算法更安全。比如AES和DES都是對稱加密算法,但是AES的安全性優(yōu)于DES。

相同算法,密鑰越長,越安全,因?yàn)槊荑€越長,密鑰空間越大,破解的難度就越大。比如AES 256(密鑰長度)的安全性優(yōu)于AES 128(密鑰長度)。

性能:

對稱加密算法通常比非對稱加密算法運(yùn)算更快。比如AES(對稱加密)好于RSA(非對稱加密)。

相同算法,密鑰越長,運(yùn)算越慢,性能越差。比如AES 256(密鑰長度)就比AES 128(密鑰長度)要慢。因?yàn)槊荑€長度增加了加密操作的復(fù)雜度和計(jì)算量,需要更多的計(jì)算資源和時(shí)間來執(zhí)行加密和解密操作。

因此,在選擇加密算法和密鑰長度時(shí),需要綜合考慮安全性和性能之間的平衡。一般來說,應(yīng)選擇安全性較高的加密算法,并根據(jù)應(yīng)用場景和性能要求選擇適當(dāng)長度的密鑰。

當(dāng)前支付行業(yè)推薦的算法和密鑰長度如下:

  • 算法選擇:對稱加密算法(如AES)適用于對大量數(shù)據(jù)進(jìn)行快速加密和解密,而非對稱加密算法(如RSA)適用于密鑰交換和數(shù)字簽名等場景。
  • 密鑰長度選擇:AES建議選擇256比特或以上。RSA建議選擇2048比特或以上。5.6. 常見加密解密算法推薦

前面我們介紹了對稱加密和非對稱加密算法,兩者有不同的使用場景,在支付行業(yè)推薦的算法如下:

  • AES:當(dāng)前最廣泛使用的對稱加密算法,速度快,適用于高速加密大量數(shù)據(jù)。密鑰長度推薦256比特或以上。
  • RSA:廣泛使用的非對稱加密算法,安全性比AES更高,但是加密速度慢,適用于小量數(shù)據(jù)或做為數(shù)字簽名使用。密鑰長度推薦2048比特或以上。

在一些場景里面,需要同時(shí)組合使用AES和RSA,比如大數(shù)據(jù)加密使用AES,AES密鑰通過RSA加密后傳輸,并通過RSA進(jìn)行簽名,這樣既解決了安全性,又解決了加密速度的問題。

特別強(qiáng)調(diào)一點(diǎn):千萬千萬不要自己去發(fā)明一種【私有的】,【自己認(rèn)為很安全】的算法,并應(yīng)用到生產(chǎn)環(huán)境。因?yàn)闃I(yè)界推薦的這些算法的安全性是經(jīng)過大量數(shù)字家和計(jì)算機(jī)科學(xué)家論證過的,也經(jīng)過工業(yè)界持續(xù)地驗(yàn)證。

除了上面推薦的AES和RSA,各個國家基于特殊安全考慮,還有一些特別的加密算法,這些算法同樣經(jīng)過大量數(shù)字家和計(jì)算機(jī)科學(xué)家論證過,但是有一定的使用門檻,有興趣的同學(xué)可以去找加密機(jī)廠家的資料了解。

5.7. 典型應(yīng)用場景

支付系統(tǒng)做為一個安全系數(shù)非常高的系統(tǒng),加解密技術(shù)在里面起到了極其重要的作用。

通常以下幾個核心應(yīng)用場景都會用到加解密技術(shù):

1)傳輸加密;

2)存儲加密。

傳輸加密:保護(hù)交易數(shù)據(jù)在互聯(lián)網(wǎng)上傳輸過程中的安全,防止數(shù)據(jù)被竊聽或篡改。

具體的實(shí)現(xiàn)通常有兩種:

1)通道加密:比如使用HTTPS,或者VPN、專線等,實(shí)現(xiàn)數(shù)據(jù)傳輸端到端的加密。

2)報(bào)文數(shù)據(jù)加密:部分字段單獨(dú)加密,比如把卡號等關(guān)鍵信息進(jìn)行加密后再發(fā)出去。整體報(bào)文單獨(dú)加密,先組裝業(yè)務(wù)報(bào)文,然后對整個報(bào)文加密再發(fā)出去。

存儲加密:對敏感數(shù)據(jù)比如信用卡信息、用戶身份證信息、密碼等需要進(jìn)行加密后存儲到數(shù)據(jù)庫中,以防止數(shù)據(jù)泄露。

具體的實(shí)現(xiàn)通常也會分兩種:

1)直接加密:原始信息直接加密。通常用于信用卡、身體證等常規(guī)數(shù)據(jù)的加密。

2)加鹽值(SALT)后再加密:原始信息先加上鹽值,然后再進(jìn)行加密。通常用于密碼管理。所謂鹽值,就是一串隨機(jī)生成的字符串,比如:329713kud3s,9ds9jd9sj3es。

5.8. 登錄與支付密碼的特殊處理

登錄和支付密碼的傳輸和存儲都比較特殊,值得單獨(dú)說一說。

5.8.1. 登錄與支付密碼傳輸?shù)奶厥馓幚?/strong>

登錄和支付密碼都是用戶輸入,如何保證在輸入時(shí)不被盜取?如何保證傳輸?shù)陌踩裕?/p>

輸入時(shí)一般會有安全控件,直接獲取輸入,其它應(yīng)用無法在輸入盜取。然后使用公鑰加密,傳輸?shù)胶蠖撕?,再使用私鑰解密,再進(jìn)行轉(zhuǎn)加密,最后保存到數(shù)據(jù)庫,或和數(shù)據(jù)庫的密碼對比判斷。

5.8.2. 登錄與支付密碼存儲的特殊處理

上一章節(jié)里,提到登錄或支付密碼需要加上鹽值后,再進(jìn)行加密存儲。那為什么密碼管理需要使用鹽值?為了提高密碼安全性。

防止彩虹表攻擊。彩虹表是一種預(yù)先計(jì)算出來的哈希值數(shù)據(jù)集,攻擊者可以使用它來查找和破譯未加鹽的密碼。通過為每個用戶加鹽,即使是相同的密碼,由于鹽值不同,加密后的密文也是不一樣的。

保護(hù)相同密碼的用戶。如果多個用戶使用了相同的密碼,沒有鹽值情況下,一個被破解后,就能找到使用相同密碼的其它用戶。每個用戶不同的鹽值,確保生成的密文不同。

增加破解難度。尤其是密碼較弱時(shí),顯著增加攻擊者難度。

在實(shí)現(xiàn)時(shí),需要留意加鹽策略:

  • 隨機(jī)和唯一:每個用戶都是隨機(jī)和唯一的。
  • 存儲鹽值:每個用戶的密碼和鹽值都需要配對存儲。因?yàn)樵诩用苊荑€更新時(shí),需要使用鹽值一起先解密再重新加密。
  • 鹽值足夠長:增加復(fù)雜性,推薦至少128位。

5.9. PCI認(rèn)證

如果要保存用戶的卡明文數(shù)據(jù)(比如用戶名和卡號),就一定要經(jīng)過PCI(Payment Card Industry)認(rèn)證,在PCI認(rèn)證范圍內(nèi)的域叫PCI域。

PCI安全標(biāo)準(zhǔn)(PCI DSS)是由PCI安全標(biāo)準(zhǔn)委員會(PCI SSC)制定和管理的一組安全標(biāo)準(zhǔn),旨在保護(hù)持卡人數(shù)據(jù)的安全性和機(jī)密性。

簡單地說,PC規(guī)定了一個單獨(dú)的區(qū)域(簡稱PCI域),可以處理用戶的卡明文數(shù)據(jù),包括加密后存儲,或使用明文,這個區(qū)域的網(wǎng)絡(luò)安全部署、數(shù)據(jù)訪問控制、數(shù)據(jù)加密、日志打印、安全策略等全部都有由PCI DSS規(guī)定,并定期接受相關(guān)認(rèn)證組織的審查。

特別注意的是,PCI標(biāo)準(zhǔn)要求所有的域都不能打印用戶敏感信息,所有的域都不能存儲明文用戶敏感信息,比如卡只能打印前6后4,只有PCI域范圍內(nèi)的應(yīng)用才能使用卡明文數(shù)據(jù)。5.10. 加解密在工程應(yīng)用中的常見問題

  • 密鑰管理不規(guī)范:把密鑰加密后保存在數(shù)據(jù)庫,但是加密密鑰用的密鑰是123456。
  • 算法選擇不合適:大批量數(shù)據(jù)選擇使用速度極慢的非對稱的RSA算法。
  • 兼容性算法不對:尤其是模式、填充方式是直接影響加解密結(jié)果的。比如AES下面仍然細(xì)分為:ECB,CBC,CFB,OFB,CTR,GCM等模式,以及PKCS7/PKCS5填充,零填充等填充方式。具體的可以找密碼學(xué)相關(guān)資料參考。
  • 異想天開地使用自己創(chuàng)造的私有算法:以為很安全,其實(shí)太傻太天真。
  • 管理機(jī)制不完善:沒有制定嚴(yán)格的規(guī)范,或有規(guī)范執(zhí)行不嚴(yán)重,導(dǎo)致密鑰能被輕易訪問。

6. 防篡改與防抵賴:簽名與驗(yàn)簽技術(shù)

防篡改與防抵賴一般也稱為數(shù)據(jù)的完整性和真實(shí)性驗(yàn)證問題,通常使用簽名驗(yàn)簽技術(shù)解決。

6.1. 什么是簽名與驗(yàn)簽

簽名驗(yàn)簽是數(shù)字加密領(lǐng)域的兩個基本概念。

  1. 簽名:發(fā)送者將數(shù)據(jù)通過特定算法和密鑰轉(zhuǎn)換成一串唯一的密文串,也稱之為數(shù)字簽名,和報(bào)文信息一起發(fā)給接收方。
  2. 驗(yàn)簽:接收者根據(jù)接收的數(shù)據(jù)、數(shù)字簽名進(jìn)行驗(yàn)證,確認(rèn)數(shù)據(jù)的完整性,以證明數(shù)據(jù)未被篡改,且確實(shí)來自聲稱的發(fā)送方。如果驗(yàn)簽成功,就可以確信數(shù)據(jù)是完好且合法的。

下面是一個極簡的簽名驗(yàn)簽數(shù)學(xué)公式。

假設(shè)被簽名的數(shù)據(jù)(m),簽名串(Σ),散列函數(shù)(H),私鑰(Pr),公鑰(Pu),加密算法(S),解密算法(S^),判斷相等(eq)。

簡化后的數(shù)學(xué)公式如下:

簽名:Σ=S[H(m), Pr]。

驗(yàn)簽:f(v)=[H(m) eq S^(Σ, Pu)]。

流程如下:

簽名流程:

  1. 散列消息:對消息(m)應(yīng)用散列函數(shù)(H)生成散列值(h)。
  2. 加密散列值:使用發(fā)送方的私鑰 ( Pr ) 對散列值 ( h ) 進(jìn)行加密,生成簽名 ( Σ )。 Σ = S(h, Pr)
  3. 把數(shù)字簽名(Σ)和原始消息(m)一起發(fā)給接收方。

驗(yàn)簽流程:

  1. 散列收到的消息:使用同樣的散列函數(shù) ( H ) 對消息 ( m ) 生成散列值 ( h’ )。 ?h’ = H(m)
  2. 解密簽名:使用發(fā)送方的公鑰 ( Pu ) 對簽名 (Σ ) 進(jìn)行解密,得到散列值 ( h )。 h = S^(Σ, Pu)
  3. 比較散列值:比較解密得到的散列值 ( h ) 與直接對消息 ( m ) 散列得到的 ( h’ ) 是否一致。 驗(yàn)證成功條件: h = h’ 。
  4. 如果兩個散列值相等,那么驗(yàn)簽成功,消息(m)被認(rèn)為是完整的,且確實(shí)來自聲稱的發(fā)送方。如果不一致,就是驗(yàn)簽失敗,消息可能被篡改,或者簽名是偽造的。
  5. 現(xiàn)實(shí)中的算法會復(fù)雜非常多,比如RSA,ECDSA等,還涉及到填充方案,隨機(jī)數(shù)生成,數(shù)據(jù)編碼等。

6.2. 支付系統(tǒng)為什么一定要做簽名驗(yàn)簽

銀行怎么判斷扣款請求是從確定的支付平臺發(fā)出來的,且數(shù)據(jù)沒有被篡改?商戶不承認(rèn)發(fā)送過某筆交易怎么辦?這都是簽名驗(yàn)簽技術(shù)的功勞。

簽名驗(yàn)簽主要解決3個問題:

  1. 身份驗(yàn)證:確認(rèn)支付信息是由真正的發(fā)送方發(fā)出,防止冒名頂替。
  2. 如果無法做身份驗(yàn)證,支付寶就無法知道針對你的賬戶扣款99塊的請求是真實(shí)由你樓下小賣部發(fā)出去的,還是我冒充去扣的款。
  3. 完整性校驗(yàn):確認(rèn)支付信息在傳輸過程中未被篡改,每一筆交易都是完整、準(zhǔn)確的。

如果無法校驗(yàn)完整性,那么我在公共場景安裝一個免費(fèi)WIFI,然后截獲你的微信轉(zhuǎn)賬請求,把接收者修改成我的賬號,再轉(zhuǎn)發(fā)給微信,微信就有可能會把錢轉(zhuǎn)到我的賬號里。

防抵賴性:避免任何一方否則曾經(jīng)進(jìn)行過的交易,提供法律證據(jù)支持。

比如微信支付調(diào)用銀行扣款100塊,銀行返回成功,商戶也給用戶發(fā)貨了,幾天后銀行說這筆扣款成功的消息不是他們返回的,他們沒有扣款。而簽名驗(yàn)簽就能讓銀行無法抵賴。

流程:

  1. 雙方先交換密鑰,可以通過線下郵件交換,也可以通過線上自助平臺交換。
  2. 請求方發(fā)出交易報(bào)文前使用自己的私鑰進(jìn)行簽名,接收方接收報(bào)文后先進(jìn)行驗(yàn)簽,驗(yàn)簽通過后再進(jìn)行業(yè)務(wù)處理。
  3. 接收方處理完業(yè)務(wù),返回前使用自己的私鑰進(jìn)行簽名,請求方接收返回報(bào)文后先進(jìn)行驗(yàn)簽,驗(yàn)簽通過后再進(jìn)行業(yè)務(wù)處理。

6.3. 常見數(shù)字簽名算法及推薦算法

常見的數(shù)字簽名算法包括:

  • RSA(Rivest-Shamir-Adleman):RSA是一種基于大素?cái)?shù)因子分解難題的非對稱加密算法,被廣泛應(yīng)用于數(shù)字簽名和密鑰交換等領(lǐng)域。
  • DSA(Digital Signature Algorithm):DSA是一種基于離散對數(shù)問題的數(shù)字簽名算法,主要用于數(shù)字簽名領(lǐng)域。
  • ECDSA(Elliptic Curve Digital Signature Algorithm):ECDSA是一種基于橢圓曲線離散對數(shù)問題的數(shù)字簽名算法,具有比RSA更短的密鑰長度和更高的安全性。
  • EdDSA(Edwards-curve Digital Signature Algorithm):EdDSA是一種基于扭曲愛德華斯曲線的數(shù)字簽名算法,具有高效性和安全性,被廣泛用于加密貨幣等領(lǐng)域。

目前主流的數(shù)字簽名算法是RSA和ECDSA。RSA推出較早,且安全性足夠,現(xiàn)在使用非常廣泛。而ECDSA由于其較短的密鑰長度和更高的安全性,逐漸成為新興的數(shù)字簽名算法,特別適用于資源受限環(huán)境和移動設(shè)備等場景。

在支付場景來說,RSA使用最為廣泛,密鑰長度推薦2048比特。RSA1024以前使用得多,但因?yàn)槊荑€長度較短,安全性不足,也已經(jīng)不再推薦使用。

6.4. 一些與防篡改有關(guān)的技術(shù)

6.4.1. 數(shù)字摘要

數(shù)據(jù)摘要是一種通過對數(shù)據(jù)進(jìn)行計(jì)算(也稱為哈希、摘要、散列計(jì)算),生成固定長度的唯一數(shù)據(jù)串(通常稱為摘要或哈希值),用于驗(yàn)證數(shù)據(jù)的完整性和一致性的技術(shù)。數(shù)據(jù)摘要通常用于驗(yàn)證數(shù)據(jù)在傳輸或存儲過程中是否發(fā)生了更改。

上面有個缺陷,就是在傳輸過程中,報(bào)文被黑客截獲,然后把100萬字的文章和摘要報(bào)文全部替換,服務(wù)端發(fā)現(xiàn)不了的。這個缺陷在下面的HMAC算法中會解決。

常見的數(shù)據(jù)摘要算法包括:

  • MD5(Message Digest Algorithm 5): MD5是一種常用的哈希算法,產(chǎn)生128位的哈希值。然而,由于MD5存在嚴(yán)重的安全性缺陷,已經(jīng)不推薦用于安全性要求較高的場景。
  • SHA-1(Secure Hash Algorithm 1): SHA-1是一種較為安全的哈希算法,產(chǎn)生160位的哈希值。然而,由于SHA-1也存在一些安全性問題,如碰撞攻擊,因此在一些安全性要求較高的場景中也不推薦使用。
  • SHA-256、SHA-384、SHA-512: 這些是SHA-1的后續(xù)版本,分別產(chǎn)生256位、384位和512位的哈希值。它們提供了更高的安全性,通常被用于對安全性要求較高的數(shù)據(jù)進(jìn)行摘要。
  • RIPEMD(RACE Integrity Primitives Evaluation Message Digest): RIPEMD系列是一組與MD4和MD5相似的哈希算法,產(chǎn)生128位、160位、256位和320位的哈希值。雖然不如SHA系列算法流行,但在某些場景下仍然有用。
  • BLAKE、Keccak、Whirlpool等: 這些是一些新興的哈希算法,設(shè)計(jì)更加安全和高效,被廣泛用于密碼學(xué)和區(qū)塊鏈等領(lǐng)域。

當(dāng)前在支付行業(yè)推薦的摘要算法是SHA256。

需要說明的是,數(shù)字簽名需要用到數(shù)字摘要算法,但是數(shù)字摘要算法不能替代數(shù)字簽名。因?yàn)閿?shù)字摘要只能證明數(shù)據(jù)是否完整,無法證明數(shù)據(jù)一定是某個人或某個機(jī)構(gòu)發(fā)出來的。但是在國外很多支付機(jī)構(gòu),仍然使用MD5或SHA256這種摘要算法來代替驗(yàn)名驗(yàn)簽。

6.4.2. HMAC算法

HMAC(Hash-based Message Authentication Code)是一種基于哈希函數(shù)(摘要)和密鑰的消息認(rèn)證碼算法,通常用于驗(yàn)證消息的完整性和真實(shí)性。

HMAC算法結(jié)合了哈希函數(shù)和密鑰,通過對消息進(jìn)行哈希運(yùn)算,并使用密鑰進(jìn)行加密,生成一個唯一的摘要。這個摘要就是消息的認(rèn)證碼,用于驗(yàn)證消息的完整性和真實(shí)性。

HMAC因?yàn)槭褂谜惴ê蛯ΨQ加密,運(yùn)算簡單而快速,所以許多場景下,HMAC是一種簡單而有效的選擇,也被用作消息的完整性保護(hù)和身份驗(yàn)證。所以在支付場景下,也經(jīng)常用于簽名驗(yàn)簽。

但需要說明的是,HMAC解決了純摘要算法的部分問題,但仍不是嚴(yán)格意義上的數(shù)字簽名算法,因?yàn)镠MAC使用的是雙方都擁有的對稱密鑰,無法證明消息一定是對方發(fā)出的,因?yàn)橐灿锌赡苁悄撤絺卧斓摹?/p>

6.4.3. 數(shù)字時(shí)間戳

數(shù)字時(shí)間戳是一種用于確定特定事件發(fā)生時(shí)間的數(shù)字簽名或哈希值,通常由數(shù)字時(shí)間戳服務(wù)(DTS:digital time-stamp service)頒發(fā)。數(shù)字時(shí)間戳將特定事件的時(shí)間信息與數(shù)字簽名或哈希值綁定在一起,以確保該事件在特定時(shí)間之前已經(jīng)存在,從而防止后續(xù)的篡改或偽造。

比如兩個科學(xué)家都聲稱自己先于對方完成了某個證明或?qū)嶒?yàn),如果雙方把相關(guān)的材料通過數(shù)字時(shí)間戳服務(wù)進(jìn)行了數(shù)字時(shí)間戳簽名,那么就可以輕而易舉解決這個問題。

數(shù)字時(shí)間戳的應(yīng)用場景主要在文件證明,電子郵件,數(shù)字證書等,比如法律文件、合同、知識產(chǎn)權(quán)、證書等,以證明在某個時(shí)間之前就存在了這份文件。

不過在支付系統(tǒng)中,目前比較少使用數(shù)字時(shí)間戳。

6.4.4. 雙重?cái)?shù)字簽名

雙重?cái)?shù)字簽名是安全電子交易協(xié)議 (Secure Electronic Transaction, 簡稱SET協(xié)議)中引入一個概念。因?yàn)镾ET協(xié)議過于復(fù)雜,且互聯(lián)網(wǎng)出現(xiàn)了新的更簡便的安全協(xié)議,比如SSL(Secure Sockets Layer)/TLS(Transport Layer Security)/HTTPS(Hypertext Transfer Protocol Secure),SET實(shí)際沒有大規(guī)模應(yīng)用。所在當(dāng)代支付系統(tǒng)中,目前比較少見雙重?cái)?shù)字簽名。

雙重?cái)?shù)字簽名原理有點(diǎn)繞,我嘗試講清楚:

說明:

  • 用戶、商戶、銀行分別向CA機(jī)構(gòu)申請證書,這個在圖中已經(jīng)省略。
  • 用戶選購后,先把訂單信息生成摘要,然后把支付信息也生成摘要,把兩個摘要拼接起出新的摘要,最后使用自己私鑰簽名,也就是雙重簽名信息。
  • 用戶把“訂單信息 + 支付信息摘要 + 雙重簽名串”發(fā)給商戶,商戶根據(jù)訂單信息生成摘要,并與支付信息摘要拼接后,拿用戶的公鑰進(jìn)行驗(yàn)簽。
  • 用戶把“支付信息密文 + 商戶信息摘要 + 雙重簽名串”發(fā)給銀行(也可以通過商戶發(fā)給銀行),銀行先使用自己的私鑰解密出支付信息明文,生成摘要,再與訂單信息摘要拼接后,拿用戶的公鑰進(jìn)行驗(yàn)簽。
  • 上述過程中,商戶不知道用戶的支付信息,比如卡號等,銀行不知道用戶的訂單信息,比如買了什么,但是商戶和銀行能判斷對方是真實(shí)的。

7. 身份合法性判斷:身份認(rèn)證技術(shù)

在互聯(lián)網(wǎng)支付中,怎么證明你是你?這就是身份認(rèn)證技術(shù)。下面講的證書、CA、PKI等都相對比較專業(yè)的概念,這里只做入門介紹,有興趣的同學(xué)可以找專業(yè)的文章深入學(xué)習(xí),基本每個模塊都可以寫一本書。

7.1. 什么是身份認(rèn)證

在支付安全領(lǐng)域,身份認(rèn)證就是確認(rèn)支付交易的參與者是否是其聲稱的身份。簡單地說,就是證明你是你。這個功能最重要的當(dāng)然是保護(hù)用戶賬戶安全,減少欺詐交易或盜刷,以及遵守合規(guī)要求。

7.2. 常見的身份認(rèn)證方法

身份認(rèn)證通常分為個人身份認(rèn)證和企業(yè)/機(jī)構(gòu)身份認(rèn)證。

常見的個人身份認(rèn)證方法包括以下幾種:

  • 用戶名和密碼認(rèn)證。這沒什么好說的,最常見的身份認(rèn)證方式,但安全性相對較低,容易受到密碼猜測、密碼泄露等攻擊。
  • 多因素認(rèn)證(MFA)。就是要求用戶同時(shí)使用2種方式驗(yàn)證身份,包括密碼、短信驗(yàn)證碼、指紋識別、人臉識別、硬件令牌等。一般是后臺風(fēng)控識別有風(fēng)險(xiǎn)時(shí),才會這樣。也經(jīng)常叫風(fēng)控挑戰(zhàn)。
  • 生物特征認(rèn)證。使用個體的生物特征(如指紋、虹膜、聲紋、人臉等)來進(jìn)行身份驗(yàn)證。這種認(rèn)證方式通常需要專門的硬件設(shè)備來捕獲生物特征,并使用算法進(jìn)行比對。
  • 單點(diǎn)登錄(SSO)與Oauth。用戶只需在一個系統(tǒng)登錄,就可以授權(quán)訪問其它系統(tǒng)。比如大家可以使用微信或支付寶來登錄微博、小紅書等。
  • 數(shù)字證書。由CA機(jī)構(gòu)頒發(fā)個人數(shù)字證書,這個比較少見。

當(dāng)涉及到企業(yè)或機(jī)構(gòu)之間的身份認(rèn)證時(shí),常見的方法包括使用數(shù)字證書和雙向TLS認(rèn)證(也稱為客戶端證書認(rèn)證)。數(shù)字證書可參考下一章節(jié)“數(shù)字證書”的說明,雙向TLS認(rèn)證可參考“TLS”章節(jié)的說明。

7.3. 數(shù)字證書

數(shù)字證書(Digital Certificate)是一種用于在網(wǎng)絡(luò)通信中進(jìn)行身份驗(yàn)證和數(shù)據(jù)加密的安全技術(shù)。它是由一家被稱為證書頒發(fā)機(jī)構(gòu)(Certificate Authority,CA)的可信任實(shí)體頒發(fā)的電子文檔,用于證明某個實(shí)體(如網(wǎng)站、個人或組織)的身份和公鑰。

數(shù)字證書包含以下主要信息:

  • 公鑰: 數(shù)字證書中包含了一個實(shí)體的公鑰,用于加密和解密通信數(shù)據(jù)。
  • 持有者信息: 數(shù)字證書中包含了證書持有者的身份信息,如姓名、電子郵件地址等。
  • 頒發(fā)者信息: 數(shù)字證書中包含了頒發(fā)該證書的證書頒發(fā)機(jī)構(gòu)的信息,包括機(jī)構(gòu)名稱、聯(lián)系方式等。
  • 有效期限: 數(shù)字證書中包含了證書的有效期限,即證書的生效日期和失效日期。
  • 數(shù)字簽名: 數(shù)字證書中包含了頒發(fā)者對證書內(nèi)容的數(shù)字簽名,用于驗(yàn)證證書的真實(shí)性和完整性。

在網(wǎng)絡(luò)通信中,當(dāng)客戶端與服務(wù)器建立安全連接時(shí),服務(wù)器會向客戶端發(fā)送自己的數(shù)字證書??蛻舳耸盏椒?wù)器的數(shù)字證書后,會使用證書中的公鑰來驗(yàn)證服務(wù)器的身份和證書的真實(shí)性。如果驗(yàn)證通過,客戶端就可以使用服務(wù)器的公鑰加密通信數(shù)據(jù),并將加密后的數(shù)據(jù)發(fā)送給服務(wù)器。

比如你訪問以https開頭的網(wǎng)站,瀏覽器就會驗(yàn)證網(wǎng)站服務(wù)商的證書。

在支付系統(tǒng)中,某些銀行在對接時(shí)會要求雙向證書認(rèn)證。

7.4. 數(shù)字證書頒發(fā)機(jī)構(gòu)CA

我們憑什么相信一個證書是可信的呢?那就是由CA來證明。那我們憑什么相信一個CA機(jī)構(gòu)?通常由政府或大型組織聯(lián)盟來做信用背書。

在數(shù)字證書領(lǐng)域,CA指的是Certificate Authority(證書頒發(fā)機(jī)構(gòu))。CA是一種可信的第三方機(jī)構(gòu),負(fù)責(zé)頒發(fā)、管理和驗(yàn)證數(shù)字證書,以確保數(shù)字證書的合法性和可信度。

CA的主要職責(zé)包括:

  • 頒發(fā)數(shù)字證書: CA頒發(fā)數(shù)字證書給證書申請者,并確保證書的有效性和真實(shí)性。在頒發(fā)數(shù)字證書之前,CA會對證書申請者進(jìn)行身份驗(yàn)證,以確保其身份的合法性。
  • 證書管理: CA負(fù)責(zé)管理已頒發(fā)的數(shù)字證書,包括證書的更新、吊銷和查找等操作。CA會定期檢查數(shù)字證書的有效性,并對已過期或失效的證書進(jìn)行吊銷操作。
  • 證書驗(yàn)證: CA提供數(shù)字證書的驗(yàn)證服務(wù),用于驗(yàn)證數(shù)字證書的真實(shí)性和完整性。通過驗(yàn)證數(shù)字證書的簽名和證書鏈,可以確保數(shù)字證書的合法性,并確認(rèn)證書持有者的身份。
  • 信任鏈管理: CA維護(hù)一個信任鏈,用于建立數(shù)字證書的信任關(guān)系。信任鏈包括根證書、中間證書和終端證書,每個證書都由上級證書簽名,直至根證書,確保數(shù)字證書的信任可靠性。

常見的CA包括全球性的CA,如VeriSign、GeoTrust、DigiCert等,以及國家或地區(qū)性的CA,如中國電子認(rèn)證服務(wù)(CFCA)、中國互聯(lián)網(wǎng)絡(luò)信息中心(CNNIC)等。這些CA都遵循國際標(biāo)準(zhǔn)和行業(yè)規(guī)范,提供可信賴的數(shù)字證書服務(wù),用于保障網(wǎng)絡(luò)通信的安全和可信度。

上面有提到一個信任鏈管理,這個是一個很重要的概念。頂級的證書機(jī)構(gòu)不可能為所有用戶提供服務(wù),但是它可以為下級機(jī)構(gòu)簽發(fā)證書,然后由下級機(jī)構(gòu)再給終端用戶簽發(fā)證書。如果驗(yàn)證證書有效性,只需要依次驗(yàn)證簽發(fā)的CA機(jī)構(gòu)即可。

7.5. PKI

上面提到的數(shù)字證書的理論基礎(chǔ)就是公鑰基礎(chǔ)設(shè)施(Public Key Infrastructure,簡稱PKI),是一種用于管理和驗(yàn)證公鑰的框架和體系結(jié)構(gòu)。PKI提供了一套標(biāo)準(zhǔn)化的方法,用于生成、存儲、分發(fā)和撤銷公鑰,以確保安全的網(wǎng)絡(luò)通信和身份驗(yàn)證。

PKI體系結(jié)構(gòu)包括以下主要組件:

  • 數(shù)字證書: PKI使用數(shù)字證書來證明實(shí)體的身份,其中包含了實(shí)體的公鑰以及其他相關(guān)信息,如證書的頒發(fā)者、有效期等。數(shù)字證書由證書頒發(fā)機(jī)構(gòu)(CA)頒發(fā),并通過數(shù)字簽名保證其真實(shí)性和完整性。
  • 證書頒發(fā)機(jī)構(gòu)(CA): CA是負(fù)責(zé)頒發(fā)、管理和驗(yàn)證數(shù)字證書的可信機(jī)構(gòu)。CA通過數(shù)字簽名對數(shù)字證書進(jìn)行簽名,以證明證書的真實(shí)性,并提供證書撤銷服務(wù)(CRL或OCSP)來吊銷已失效的證書。
  • 注冊機(jī)構(gòu)(RA): RA是CA的輔助機(jī)構(gòu),負(fù)責(zé)用戶身份驗(yàn)證和數(shù)字證書的申請?zhí)幚?。RA通常收集用戶的身份信息,并將其提交給CA進(jìn)行審批和頒發(fā)數(shù)字證書。
  • 證書存儲庫: 證書存儲庫用于存儲和管理已頒發(fā)的數(shù)字證書,以便用戶和應(yīng)用程序檢索和驗(yàn)證證書。
  • 密鑰管理: PKI提供了密鑰生成、分發(fā)和管理的功能,包括公鑰和私鑰的生成、存儲和交換。

PKI通過數(shù)字證書和公鑰加密技術(shù),實(shí)現(xiàn)了安全的身份驗(yàn)證、數(shù)據(jù)加密和數(shù)字簽名等功能,是保障網(wǎng)絡(luò)通信安全的重要基礎(chǔ)設(shè)施。也是支付安全體系的重要基礎(chǔ)設(shè)施。

證書、CA、PKI等都是基于公私鑰理論之上,有興趣的同學(xué)可以去深入了解一下公私鑰理論及背后的數(shù)字知識。

8. 數(shù)據(jù)傳輸安全:常見的傳輸安全協(xié)議

在互聯(lián)網(wǎng)上,所有的數(shù)據(jù)都通過網(wǎng)絡(luò)傳輸,在線支付的安全也繞不開數(shù)據(jù)傳輸安全。這里簡單介紹一下各種常見的安全協(xié)議。

所有數(shù)據(jù)全部經(jīng)過加密后再傳輸比較麻煩,能不能簡單一點(diǎn),我們直接把傳輸?shù)墓艿肋M(jìn)行加密,然后傳輸明文數(shù)據(jù)?答案當(dāng)然沒有問題,比如SSL,TLS,HTTPS,VPN,專線等都是這個范疇。

這部分內(nèi)容大部分都是安全工程師關(guān)注的范圍,大家只需要了解即可。

8.1. SSL

SSL(Secure Sockets Layer,安全套接層)是一種用于保護(hù)網(wǎng)絡(luò)通信安全的協(xié)議。它最初由網(wǎng)景公司(Netscape)開發(fā),并于1994年首次發(fā)布。SSL協(xié)議通過在應(yīng)用層和傳輸層之間建立安全通道,提供了加密、完整性驗(yàn)證和身份認(rèn)證等功能,用于保護(hù)網(wǎng)絡(luò)通信的安全性。

SSL協(xié)議的主要功能包括:

  • 加密通信: SSL協(xié)議使用加密算法對通信數(shù)據(jù)進(jìn)行加密,以防止被竊聽者竊取敏感信息。它支持多種加密算法,包括對稱加密算法(如DES、3DES、AES)和非對稱加密算法(如RSA、Diffie-Hellman)等。
  • 完整性驗(yàn)證: SSL協(xié)議使用消息認(rèn)證碼(MAC)或數(shù)字簽名來驗(yàn)證通信數(shù)據(jù)的完整性,以防止數(shù)據(jù)被篡改。接收方可以通過驗(yàn)證MAC或數(shù)字簽名來確保收到的數(shù)據(jù)未被篡改。
  • 身份認(rèn)證: SSL協(xié)議支持服務(wù)器和客戶端之間的身份認(rèn)證,以確保通信雙方的身份是合法的。服務(wù)器通常會提供數(shù)字證書來證明其身份,客戶端可以使用證書來驗(yàn)證服務(wù)器的身份。SSL還支持雙向身份認(rèn)證,即客戶端和服務(wù)器都可以進(jìn)行身份認(rèn)證。
  • 會話管理: SSL協(xié)議支持會話復(fù)用,以減少握手過程的開銷和提高通信效率。

SSL協(xié)議最初廣泛應(yīng)用于Web瀏覽器和Web服務(wù)器之間的安全通信,用于保護(hù)網(wǎng)頁傳輸?shù)拿舾行畔?,如用戶名、密碼和信用卡信息等。隨著SSL協(xié)議的發(fā)展和演進(jìn),它逐漸被TLS協(xié)議所取代,但人們通常仍將TLS協(xié)議統(tǒng)稱為SSL。

8.2. TSL

TLS(Transport Layer Security,傳輸層安全)協(xié)議是一種用于保護(hù)網(wǎng)絡(luò)通信安全的協(xié)議。它建立在SSL(Secure Sockets Layer,安全套接層)協(xié)議的基礎(chǔ)上,并在SSL的基礎(chǔ)上進(jìn)行了改進(jìn)和擴(kuò)展。TLS協(xié)議提供了數(shù)據(jù)的加密、完整性驗(yàn)證和身份認(rèn)證等功能,用于保護(hù)網(wǎng)絡(luò)通信的安全性。

TLS協(xié)議的主要功能和SSL一致,這里不重復(fù)說明。另外,隨著網(wǎng)絡(luò)安全威脅的不斷增加,TLS協(xié)議也在不斷發(fā)展和完善,以提供更強(qiáng)大的安全保護(hù)機(jī)制。

8.3. HTTPS

HTTPS(Hypertext Transfer Protocol Secure)是一種用于安全傳輸超文本的通信協(xié)議。它是在HTTP協(xié)議的基礎(chǔ)上加入了SSL/TLS協(xié)議進(jìn)行數(shù)據(jù)加密和身份驗(yàn)證,用于保護(hù)網(wǎng)絡(luò)通信的安全性。

HTTPS協(xié)議的工作原理如下:

  • 建立安全連接: 客戶端向服務(wù)器發(fā)送連接請求時(shí),服務(wù)器會返回自己的數(shù)字證書,證明自己的身份和公鑰??蛻舳耸盏椒?wù)器的數(shù)字證書后,會驗(yàn)證證書的真實(shí)性和有效性。
  • 協(xié)商加密算法: 客戶端和服務(wù)器在建立連接時(shí)會協(xié)商使用的加密算法和密鑰長度,以確保通信數(shù)據(jù)的機(jī)密性和安全性。
  • 數(shù)據(jù)加密傳輸: 客戶端使用服務(wù)器的公鑰加密通信數(shù)據(jù),并將加密后的數(shù)據(jù)發(fā)送給服務(wù)器。服務(wù)器收到加密數(shù)據(jù)后,使用自己的私鑰解密數(shù)據(jù)。
  • 身份驗(yàn)證: 在建立連接時(shí),服務(wù)器發(fā)送的數(shù)字證書可以用于驗(yàn)證服務(wù)器的身份。如果證書驗(yàn)證通過,客戶端就可以信任服務(wù)器,并繼續(xù)進(jìn)行安全通信。

簡單地理解,就是HTTP全部是明文傳輸,HTTPS構(gòu)建在SSL/TSL之上,所有傳輸?shù)臄?shù)據(jù)是經(jīng)過加密的。

除了HTTPS之外,還有其它一些傳輸協(xié)議是構(gòu)建在SSL/TSL之上的,比如文件傳輸協(xié)議FTP是明文傳輸,SFTP也是基于SSL/TSL之上的加密傳輸。

8.4. VPN與專線

VPN(Virtual Private Network)和專線(Dedicated Line)都是用于建立安全、可靠的網(wǎng)絡(luò)連接的技術(shù),但它們之間存在一些區(qū)別。

VPN:

VPN是通過公共網(wǎng)絡(luò)(如互聯(lián)網(wǎng))建立的虛擬私有網(wǎng)絡(luò),用于安全地連接遠(yuǎn)程地點(diǎn)或用戶到企業(yè)內(nèi)部網(wǎng)絡(luò)。

VPN使用加密和隧道技術(shù),將數(shù)據(jù)在公共網(wǎng)絡(luò)上進(jìn)行加密和傳輸,以確保通信的安全性和隱私性。

VPN通常依賴于軟件或硬件設(shè)備(如VPN服務(wù)器、VPN客戶端和VPN路由器)來建立和管理安全連接。

專線:

專線是一種物理連接,通常由電信提供商提供,用于在兩個或多個地點(diǎn)之間建立私有的、專用的網(wǎng)絡(luò)連接。

專線可以是光纖、電纜或其他物理媒介,通常具有固定的帶寬和可靠的連接質(zhì)量。

專線不依賴于公共網(wǎng)絡(luò),因此通常具有更高的安全性和穩(wěn)定性,適用于需要高可靠性和低延遲的應(yīng)用場景。

簡單地說,VPN更靈活和成本更低,適用于遠(yuǎn)程訪問、移動辦公和跨地域連接等場景。專線則很貴,更適用于需要高帶寬、低延遲和高安全性的應(yīng)用,如數(shù)據(jù)中心互連、企業(yè)網(wǎng)絡(luò)內(nèi)部連接等。

像支付寶與銀聯(lián)、網(wǎng)聯(lián)就是通過專線連接。以前一些大支付公司和大銀行直連時(shí),一般也是通過專線連接,而一些小銀行因?yàn)槌杀究紤]就會選擇VPN,甚至直接公網(wǎng)走h(yuǎn)ttps解決。

9. SET協(xié)議:過于復(fù)雜的設(shè)計(jì)

需要終端用戶參與的產(chǎn)品,一定是越簡單越好,否則一定會被時(shí)代淘汰,比如SET協(xié)議。

SET(Secure Electronic Transaction)協(xié)議是由Visa和MasterCard等信用卡組織于1996年提出,并得到了IBM、Microsoft等大公司支持,旨在提供更安全、更可信的在線支付體驗(yàn)。

SET協(xié)議的設(shè)計(jì)目標(biāo)是解決傳統(tǒng)網(wǎng)絡(luò)上的信用卡交易存在的安全隱患,如信用卡號被竊取、篡改、重放攻擊等問題。為了實(shí)現(xiàn)這一目標(biāo),SET協(xié)議引入了許多安全機(jī)制和加密技術(shù),包括數(shù)字證書、數(shù)字簽名、對稱加密和公鑰加密等。

SET協(xié)議的主要特點(diǎn)包括:

  • 雙重身份認(rèn)證: SET協(xié)議要求商家和消費(fèi)者之間進(jìn)行雙重身份認(rèn)證,以確保雙方的身份是合法的。商家需要向信用卡機(jī)構(gòu)提供數(shù)字證書以證明其身份,而消費(fèi)者需要使用數(shù)字證書和PIN碼來驗(yàn)證其身份。
  • 加密通信: SET協(xié)議使用加密算法對通信數(shù)據(jù)進(jìn)行加密,以防止被竊聽者竊取敏感信息。它采用了對稱加密和公鑰加密相結(jié)合的方式,保護(hù)交易數(shù)據(jù)的安全性。
  • 數(shù)字簽名: SET協(xié)議使用數(shù)字簽名來驗(yàn)證交易的完整性和真實(shí)性,防止交易數(shù)據(jù)被篡改。商家在向消費(fèi)者發(fā)送訂單信息時(shí)使用自己的私鑰進(jìn)行簽名,消費(fèi)者在確認(rèn)訂單時(shí)可以驗(yàn)證商家的簽名以確保訂單的真實(shí)性。
  • 安全證書管理: SET協(xié)議使用數(shù)字證書來驗(yàn)證交易參與者的身份,確保其合法性和可信度。商家和消費(fèi)者都需要持有有效的數(shù)字證書,并通過信任的證書頒發(fā)機(jī)構(gòu)(CA)進(jìn)行驗(yàn)證。

如前面所說,盡管SET協(xié)議的起點(diǎn)很高,不但有Visa和MasterCard兩大卡組聯(lián)手推出,還得到IBM、微軟等巨頭支持,在安全性方面具有較高水平,但由于其復(fù)雜性和高成本,仍然敗走麥城,并沒有得到廣泛采用,而是被后來出現(xiàn)的其他安全支付解決方案(如SSL/TLS協(xié)議和3D Secure)所取代。當(dāng)然,它在在線支付安全技術(shù)的發(fā)展過程中仍起到了重要的推動作用,為后續(xù)安全支付標(biāo)準(zhǔn)的制定和實(shí)現(xiàn)奠定了基礎(chǔ)。

10. 網(wǎng)絡(luò)流量安全:防火墻與入侵檢測

網(wǎng)絡(luò)安全和入侵檢測是保護(hù)計(jì)算機(jī)網(wǎng)絡(luò)和系統(tǒng)安全的重要組成部分,它們涉及各種技術(shù)和工具,包括防火墻、入侵檢測系統(tǒng)(IDS)、入侵防御系統(tǒng)(IPS)、漏洞掃描器等。

這些內(nèi)容通常歸屬于網(wǎng)絡(luò)工程師、系統(tǒng)工程師、及安全工程師的工作范圍,下面只做一個簡單介紹:

  • 防火墻(Firewall): 防火墻是一種網(wǎng)絡(luò)安全設(shè)備,用于監(jiān)控和控制網(wǎng)絡(luò)流量,阻止未經(jīng)授權(quán)的訪問和惡意流量進(jìn)入網(wǎng)絡(luò)。它可以根據(jù)預(yù)先定義的安全策略過濾和阻止來自Internet或內(nèi)部網(wǎng)絡(luò)的流量,從而保護(hù)網(wǎng)絡(luò)免受攻擊和入侵。
  • 入侵檢測系統(tǒng)(IDS): 入侵檢測系統(tǒng)是一種監(jiān)視網(wǎng)絡(luò)流量和系統(tǒng)活動的安全設(shè)備,用于檢測和警報(bào)可能的安全威脅和入侵行為。IDS可以根據(jù)事先定義的規(guī)則或行為模式檢測異常活動,并生成警報(bào)或采取措施來應(yīng)對潛在的威脅。
  • 入侵防御系統(tǒng)(IPS): 入侵防御系統(tǒng)是一種進(jìn)一步加強(qiáng)網(wǎng)絡(luò)安全的設(shè)備,它不僅能夠檢測和警報(bào)安全威脅,還可以主動阻止和防御入侵行為。IPS可以根據(jù)IDS的警報(bào)自動采取措施,如阻止惡意流量、更新防火墻規(guī)則等,以加強(qiáng)網(wǎng)絡(luò)的安全性。
  • 漏洞掃描器(Vulnerability Scanner): 漏洞掃描器是一種用于檢測計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)中存在的安全漏洞和弱點(diǎn)的工具。它可以自動掃描系統(tǒng)和網(wǎng)絡(luò),發(fā)現(xiàn)潛在的漏洞,并提供建議和修復(fù)措施,以減少系統(tǒng)受到攻擊的風(fēng)險(xiǎn)。

這些工具更多的是從數(shù)據(jù)包的維度來處理安全問題。數(shù)據(jù)包處理完成之后,才會組裝成業(yè)務(wù)數(shù)據(jù),才能被用于加解密、簽名驗(yàn)簽等。

11. 防欺詐交易:支付風(fēng)控

支付風(fēng)控是針對支付系統(tǒng)中的風(fēng)險(xiǎn)進(jìn)行管理和控制的一種措施,旨在降低欺詐交易和財(cái)務(wù)損失的風(fēng)險(xiǎn)。

風(fēng)控系統(tǒng)最核心最寶貴的資源是風(fēng)控策略,因?yàn)槿绻酪患抑Ц豆镜娘L(fēng)控策略,就意味著可以想辦法繞過支付系統(tǒng)的風(fēng)控系統(tǒng),進(jìn)行欺詐交易。所以一般來說,研發(fā)風(fēng)控系統(tǒng)的研發(fā)工程師往往不知道風(fēng)控策略是怎么配置的。

下圖是一個極簡的風(fēng)控系統(tǒng)架構(gòu)圖。

雖然風(fēng)控的策略是高度機(jī)密,但是有些公開的策略,大家可以了解一下,比如說下面這些就屬于行為異常,大概率會被風(fēng)控:

你一直在中國小額支付,突然在國外支付2萬。

平時(shí)一直使用IPHONE(風(fēng)控會保存你的設(shè)備詳細(xì)信息),突然使用Android機(jī)器支付2000塊。

一般都是10天買件商品,實(shí)然10分鐘內(nèi)支付50筆。

現(xiàn)代的風(fēng)控系統(tǒng)不僅僅是策略,還有很多機(jī)器學(xué)習(xí)算法。但總的來說,仍然圍繞:當(dāng)次支付行為,歷史交易數(shù)據(jù),配置的規(guī)則策略,規(guī)則引擎,機(jī)器學(xué)習(xí)等展開。

12. 進(jìn)階擴(kuò)展:統(tǒng)一密鑰存儲與安全服務(wù)

12.1. 為什么需要統(tǒng)一安全存儲密鑰

明文數(shù)據(jù)被加密存儲,安全了,那加密明文數(shù)據(jù)的密鑰怎么辦?

加密密鑰有多重要呢?有一個公式是這樣的:密鑰的價(jià)值 = 密文的價(jià)值。比如你加密存儲的密文價(jià)值10億,那對應(yīng)的密鑰價(jià)值也有10億。

密鑰的管理涉及4個方面:密鑰存儲、更新、備份和恢復(fù)、廢止和銷毀。如果想要管好這些密鑰,就需要建設(shè)一個統(tǒng)一的密鑰存儲服務(wù),否則密鑰很容易被泄露。

密鑰存儲:

安全存儲環(huán)境:密鑰保存在特殊的安全環(huán)境中,包括服務(wù)器、網(wǎng)絡(luò)環(huán)境、硬件加密機(jī)等。

最小權(quán)限原則:管理密鑰的人越少越好。

密鑰分為主密鑰和工作密鑰,其中工作密鑰用來加解密普通的業(yè)務(wù)數(shù)據(jù),而主密鑰用來加解密工作密鑰。

一般來說主密鑰應(yīng)該存儲在專門的硬件安全模塊(HSM)中,俗稱:硬件加密機(jī),安全性極高。但是相對來說性能有限,且價(jià)格昂貴,管理復(fù)雜。

工作密鑰一般由主密鑰加密后保存在DB中,在需要的時(shí)候調(diào)用主密鑰解密后,緩存在內(nèi)存中,然后再去加解密普通的業(yè)務(wù)數(shù)據(jù)。

密鑰更新機(jī)制:

需要定期更新,減少被破解的風(fēng)險(xiǎn)。

自動定時(shí)更新,減少人為失誤。

版本控制和回滾:要有版本號,要能快速回滾。

12.2. 統(tǒng)一密鑰平臺系統(tǒng)架構(gòu)

說明:

需要使用硬件加密機(jī)HSM生成并保存主密鑰。

工作密鑰被主密鑰加密后,保存到DB中。

各應(yīng)用調(diào)用密鑰管理系統(tǒng)進(jìn)行加密解密、簽名驗(yàn)簽,保證密鑰不被業(yè)務(wù)應(yīng)用讀取,減少泄露風(fēng)險(xiǎn)。

13. 結(jié)束語

支付安全是一個很龐大且非常專業(yè)的領(lǐng)域,隨便拿一個加解密或簽名驗(yàn)簽算法就可以寫一本厚厚的書,但對于我們大部分人來說,不需要掌握密碼學(xué)專家或?qū)I(yè)安全工程師那么多知識,文章中介紹的知識點(diǎn)已經(jīng)足以超過90%的支付行業(yè)從業(yè)人員對支付安全的理解。

如果一定要濃縮一下精華,只需要記住下面6點(diǎn):

  1. 大數(shù)據(jù)塊加解密:使用對稱加密算法AES,密鑰長度256比特,簡稱AES256。
  2. 小數(shù)據(jù)塊及簽名驗(yàn)簽:使用非對稱加密算法RSA,密鑰長度2048,簡稱RSA2048。
  3. 摘要算法:使用SHA256。且摘要算法不推薦用于需要簽名驗(yàn)簽的場景。
  4. 個人登錄/支付密碼:一定要加鹽值進(jìn)行混淆。
  5. 網(wǎng)絡(luò)傳輸和文件傳輸:需要使用HTTPS和SFP提高數(shù)據(jù)傳輸安全性。
  6. 整體的安全性,需要同時(shí)用到對稱加密、非對稱加密,數(shù)字簽名,數(shù)字證書等。

本文由人人都是產(chǎn)品經(jīng)理作者【隱墨星辰】,微信公眾號:【隱墨星辰】,原創(chuàng)/授權(quán) 發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自Unsplash,基于 CC0 協(xié)議。

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!