视频一区二区三区自拍_千金肉奴隷1985未删减版在线观看_国产成人黄色视频在线播放_少女免费播放片高清在线观看_国产精品v欧美精品v

關(guān)鍵概念

更新時(shí)間:2023.09.18

# 關(guān)鍵概念

API安全機(jī)制簡(jiǎn)介中我們介紹了商戶請(qǐng)求微信支付、微信支付回調(diào)商戶時(shí)保障通信安全的機(jī)制,里面包含了:商戶API證書、平臺(tái)證書、APIv3密鑰等關(guān)鍵概念,接下來我們?cè)敿?xì)介紹一下這些關(guān)鍵概念,以便輔助商戶理解為什么我們需要一個(gè)這樣看起來十分繁瑣的安全機(jī)制。

# 證書

# 證書是什么?

數(shù)字簽名定義了兩種運(yùn)算: 簽名和驗(yàn)簽。使用數(shù)字簽名時(shí),需要通信的雙方都要事先生成公鑰、私鑰,并且完成交換。

但是由于公鑰本身并不含有擁有者的身份信息,使用時(shí)無法確認(rèn)它是真實(shí)有效的。

所以需要證書認(rèn)證機(jī)構(gòu)(簡(jiǎn)稱 CA)在核實(shí)公鑰擁有者的信息后,將公鑰擁有者的身份信息(如商戶號(hào)、公司名稱等),公鑰、簽發(fā)者信息、有效期以及擴(kuò)展信息等進(jìn)行簽名,制作成“證書”。

簡(jiǎn)單理解就是:證書包含公鑰,同時(shí)還包含公鑰所有者、簽發(fā)者、有效期等關(guān)鍵信息,使用者可以驗(yàn)證其真實(shí)性。

# 為什么我們需要它?

單從加簽、驗(yàn)簽的過程來看,確實(shí)可以不需要證書,只要交換好公私鑰就行了。不過前文已經(jīng)提到,公鑰的劣勢(shì)在于無法核實(shí)其真實(shí)性,那么就容易遭到中間人攻擊(man-in-the-middle attack)。

示意圖如下: 圖片

  1. Alice將公鑰:PK_A 傳送給Bob。
  2. Mallory截取了這個(gè)密鑰并將自己的公開密鑰:PK_M 傳送給Bob,并聲稱這是Alice的公鑰。
  3. Bob用“Alice”的公開密鑰(實(shí)際上是Mallory的公開密鑰)加密的消息傳送給Alice時(shí)。
  4. Mallory截取它。并用他的私人密鑰解密消息。
  5. Mallory篡改了明文,再用Alice的公開密鑰:PK_A 重新加密,并將加密后的消息傳送給Alice。
  6. Alice使用自己的私鑰對(duì)消息進(jìn)行解密,得到明文。(實(shí)際已經(jīng)被Mallory篡改)

這種攻擊是完全可行的,因?yàn)锳lice和Bob無法驗(yàn)證他們的互相交談。如果Mallory沒有導(dǎo)致任何值得注意的網(wǎng)絡(luò)延遲,兩人就沒有辦法知道有人在他們中間閱讀傳輸?shù)男畔ⅰ?/p>

有了證書之后,Alice和Bob能夠驗(yàn)證對(duì)方的公鑰所有者、有效期,那么Mallory便無法用自己的公鑰進(jìn)行偽裝,便無法進(jìn)行中間人攻擊。

商戶和微信支付便是例子里的Alice和Bob,Mallory代指所有可能的惡意攻擊者。

# 商戶API證書

商戶API證書,是指由商戶申請(qǐng)的,用來證實(shí)商戶身份的證書。API證書由證書授權(quán)機(jī)構(gòu)Certificate Authority(簡(jiǎn)稱CA)頒發(fā)。證書中包含商戶的商戶號(hào)、公司名稱、公鑰等信息。

商戶可以自行生成證書請(qǐng)求串,也可以下載微信支付證書工具生成證書請(qǐng)求串。提交證書請(qǐng)求串至商戶平臺(tái)后,即可獲得商戶 API 證書文件。

詳情見:什么是 API 證書?如何獲取 API 證書? (opens new window)

# 商戶API私鑰

商戶申請(qǐng)商戶 API 證書時(shí),證書工具會(huì)生成商戶私鑰,并保存在本地證書文件夾的文件 apiclient_key.pem 中。私鑰也可通過工具從商戶的 p12 證書中導(dǎo)出。請(qǐng)妥善保管好商戶私鑰文件。

我們?cè)購(gòu)?fù)習(xí)一下商戶API證書和商戶API私鑰的用途:

  1. 商戶請(qǐng)求微信支付時(shí),使用商戶API私鑰對(duì)請(qǐng)求簽名,微信支付使用商戶API證書公鑰對(duì)收到的請(qǐng)求進(jìn)行驗(yàn)簽,以驗(yàn)證商戶身份。
  2. 微信支付對(duì)商戶請(qǐng)求做出應(yīng)答時(shí),如有敏感字段,使用商戶API證書公鑰進(jìn)行加密,商戶收到應(yīng)答后,使用商戶API私鑰進(jìn)行解密。

# 微信支付平臺(tái)證書

微信支付平臺(tái)證書是由 微信支付 負(fù)責(zé)申請(qǐng)和管理的,該證書包含了微信支付平臺(tái)的身份標(biāo)識(shí)和公鑰信息。

每位商戶都會(huì)分配到一個(gè)或多個(gè)微信支付平臺(tái)證書。在處理接口響應(yīng)或回調(diào)通知時(shí),商戶需要根據(jù)證書序列號(hào)選擇對(duì)應(yīng)的平臺(tái)證書,并使用其中的公鑰進(jìn)行簽名驗(yàn)證。

商戶可通過調(diào)用 獲取平臺(tái)證書列表 接口,獲取當(dāng)前可用的微信支付平臺(tái)證書。

# 微信支付平臺(tái)私鑰

微信支付平臺(tái)證書公鑰所對(duì)應(yīng)的私鑰由微信支付所有,在微信支付保管。

我們?cè)購(gòu)?fù)習(xí)一下微信支付平臺(tái)證書和微信支付平臺(tái)私鑰的用途:

  1. 商戶請(qǐng)求微信支付時(shí),如有敏感字段,使用微信支付平臺(tái)證書公鑰進(jìn)行加密,微信支付使用平臺(tái)私鑰進(jìn)行解密。
  2. 微信支付對(duì)商戶請(qǐng)求做出應(yīng)答時(shí),使用微信支付平臺(tái)私鑰對(duì)應(yīng)答簽名,商戶收到應(yīng)答后,使用微信支付平臺(tái)證書公鑰進(jìn)行驗(yàn)簽,以驗(yàn)證微信支付身份。
  3. 微信支付回調(diào)商戶時(shí),使用微信支付平臺(tái)私鑰對(duì)請(qǐng)求簽名,商戶收到請(qǐng)求后,使用微信支付平臺(tái)公鑰進(jìn)行驗(yàn)簽,以驗(yàn)證微信支付身份。

# API v3密鑰

為了保證安全性,微信支付在 回調(diào)商戶 和 平臺(tái)證書下載接口 中,對(duì)關(guān)鍵信息進(jìn)行了AES-256-GCM加密。API v3密鑰是加密時(shí)使用的對(duì)稱密鑰。詳見:API v3密鑰

注意回調(diào)商戶和平臺(tái)證書下載接口的加密方式略有不同:

  1. 在回調(diào)商戶的場(chǎng)景,微信支付使用API v3密鑰對(duì)整個(gè)請(qǐng)求進(jìn)行加密。
  2. 在下載平臺(tái)證書場(chǎng)景,微信支付使用API v3密鑰對(duì)應(yīng)答中的單個(gè)平臺(tái)證書內(nèi)容進(jìn)行加密,而非對(duì)整個(gè)應(yīng)答進(jìn)行加密。
反饋
咨詢
目錄