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

關(guān)鍵概念

更新時(shí)間:2023.09.15

# 關(guān)鍵概念

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

# 證書(shū)

# 證書(shū)是什么?

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

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

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

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

# 為什么我們需要它?

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

示意圖如下: 圖片

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

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

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

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

# 商戶API證書(shū)

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

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

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

# 商戶API私鑰

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

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

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

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

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

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

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

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

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

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

  1. 商戶請(qǐng)求微信支付時(shí),如有敏感字段,使用微信支付平臺(tái)證書(shū)公鑰進(jìn)行加密,微信支付使用平臺(tái)私鑰進(jìn)行解密。
  2. 微信支付對(duì)商戶請(qǐng)求做出應(yīng)答時(shí),使用微信支付平臺(tái)私鑰對(duì)應(yīng)答簽名,商戶收到應(yīng)答后,使用微信支付平臺(tái)證書(shū)公鑰進(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)證書(shū)下載接口 中,對(duì)關(guān)鍵信息進(jìn)行了AES-256-GCM加密。API v3密鑰是加密時(shí)使用的對(duì)稱(chēng)密鑰。詳見(jiàn):API v3密鑰

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

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