偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

我們一起學習RSA-PSS 算法

開發(fā) 前端 算法
2018年發(fā)布的 TLS v1.3(TLS:Transport Layer Security,傳輸安全層協(xié)議,TLS v1.3 對應(yīng) RFC 8446)中,其支持的數(shù)字簽名算法有:RSASSA-PKCS1-v1_5、RSASSA-PSS、ECDSA(Elliptic Curve Digital Signature Algorithm,橢圓曲線簽名算法)、EdDSA(Edwards-Curve Digital Signature Algorithm,愛德華曲線簽名算法)。

 [[400577]]

AS(5):RSA-PSS 算法簡介

2018年發(fā)布的 TLS v1.3(TLS:Transport Layer Security,傳輸安全層協(xié)議,TLS v1.3 對應(yīng) RFC 8446)中,其支持的數(shù)字簽名算法有:RSASSA-PKCS1-v1_5、RSASSA-PSS、ECDSA(Elliptic Curve Digital Signature Algorithm,橢圓曲線簽名算法)、EdDSA(Edwards-Curve Digital Signature Algorithm,愛德華曲線簽名算法)。

這些算法已經(jīng)是標準(或者是事實上的標準),不過從某種意義上說,這些算法也代表著美國簽名算法流派。

除美國外,俄羅斯在1994年發(fā)布數(shù)字簽名算法標準 GOST R 34.10-94,并在2001年發(fā)布橢圓曲線數(shù)字簽名算法標準GOST R34.10- 2001。GOST R34.10-2001在2012年更新為 GOST R34.10-2012。韓國在1998年發(fā)表韓國基于證書的數(shù)字簽名算法 KCDSA 和 EC- KCDA,對應(yīng)標準發(fā)布于[88,89]。德國在 2005 年發(fā)布德國橢圓曲線數(shù)字簽名算法標準 EC- GDSA。中國在 2012 年發(fā)布 SM2 橢圓曲線數(shù)字簽名算法標準,在 2016 年發(fā)布 SM9 標識密碼數(shù)字簽名算法標準。

作為重要的國際標準化組織,ISO/IEC 同樣也發(fā)布了一系列的數(shù)字簽名算法標準:ISO/IEC 9796、ISO/ IEC 14888、ISO/IEC 20008、ISO/IEC 18370、ISO/IEC 23264 等等。

弱水三千,只取一瓢。由于文章主題和篇幅的關(guān)系,本文只介紹 RSASA-PSS 算法。

PSS (Probabilistic Signature Scheme,概率簽名方案)是私鑰簽名的一種填充方式。RSASA(RSA Signature Algorithm,RSA 數(shù)字簽名算法)目前支持兩種算法:RSASSA-PKCS1-v1_5、RSASSA-PSS。由于安全的原因,RSASSA-PKCS1-v1_5 現(xiàn)在的使用場景僅僅是為了兼容(可以參考《童話里都是騙人的》、《夢被批得離離散散》、《蜀道難,難于上青天》),當前主流推薦使用 RSASSA-PSS 算法。

PSS 方案首先由 Bellare和Rogaway 首先提出,PSS 與 OAEP(Optimal Asymmetric Encryption Padding,最優(yōu)非對稱加密填充)非常相像,當然 OAEP也是由這兩位大神提出的(OAEP 請參見《蜀道難,難于上青天》)。

Mihir Bellare是加州大學圣地亞哥分校(UCSD,University of California, San Diego)計算機科學與工程系的教授。Bellare 于1986年在加州理工學院獲得學士學位,1991年在麻省理工學院獲得博士學位。1991年至1995年,Bellare 在IBM擔任研究員 Bellare 是HMAC、RSA-OAEP、RSA-PSS和OCB的聯(lián)合開發(fā)者。Bellare 是 ACM 和 IACR 的研究員。他曾獲得 ACM 巴黎Kanellakis 理論與實踐獎,RSA 會議數(shù)學獎,David 和 Lucille Packard基金會科學與工程獎學金,以及NSF職業(yè)獎( He has received an ACM Paris Kanellakis Theory and Practice Award, an RSA Conference Award in Mathematics, a David and Lucille Packard Foundation Fellowship in Science and Engineering, and an NSF Career award)。

Phillip Rogaway 是美國加州大學戴維斯分校(UCD,University of California, Davis)計算機科學系的教授。Rogaway 本科畢業(yè)于加州大學伯克利分校(UCB,University of California, Berkeley),并于1991年到麻省理工計算理論小組攻讀博士學位(MIT s Theory of Computation group )。博士畢業(yè)之后,Rogaway 到 IBM 擔任安全架構(gòu)師,然后于1994年到 UCD 工作。Rogaway 獲得過 Levchin 獎(2016),PET 獎(2015),IACR 研究員(2012),ACM巴黎 Kanellakis 獎(2009),RSA 數(shù)學獎(2003)(Levchin prize (2016), PET Award (2015), IACR Fellow (2012), ACM Paris Kanellakis Award (2009), RSA Award in Mathematics (2003))。

[[400578]]

圖1 Bellare(左)和 Rogaway(右)

RSA 數(shù)字簽名算法(RSASA)的本質(zhì),仍然是 RSA 加密/解密算法,如圖2所示。

圖2 RSA 數(shù)字簽名算法示意

從圖2可以看到,RSSSA 分為兩步。

1)將待簽名的 M 進行 Hash,從而得到 H

2)將 H 進行 RSA 私鑰加密

既然是 RSA 加密,就繞不開 RSA 那個致命問題——能夠非常簡單地被選擇密文攻擊所破解(具體請參見《童話里都是騙人的》),于是也就引發(fā)了 RSA 填充算法。

RSASSA-PKCS1-v1_5 采用的就是 RSA_PKCS1_PADDING_v1_5 填充算法,而 RSASSA-PSS 的填充算法則與 RSA_PKCS1_OAEP_PADDING 填充算法比較相像。下面我們就介紹 RSASSA-PSS 算法。

一、RSASSA-PSS 的填充算法

RSASSA-PSS 算法本質(zhì)就是在 RSA 算法的基礎(chǔ)上疊加上一種填充算法(為了便于表述,這種填充算法也可以稱為 RSA-PSS 填充算法,或者 RSA-PSS 編碼),如圖3所示。

圖3 RSA-PSS 數(shù)字簽名算法示意

圖3中,在 Hash 之后,在 RSA 之前,RSASA-PSS 算法插入了一個 RSA-PSS 填充算法。RSA-PSS 的具體算法,如圖4所示。

 

圖4 RSA-PSS 填充算法示意

圖4中,RSA-PSS 填充算法,分為四步。下面我們分別講述這四步。

1.1 M 轉(zhuǎn)換成 M1

通過圖4可以看到,

M1 = p1 || mHash || salt

p1 就是8字節(jié)的0。

mHash = Hash(M),M 是待簽名的消息,Hash 算法當前的選擇是 SHA-1。SHA-1 的輸出是20個字節(jié),所以 mHash 的長度

hLen = 20

salt(鹽值)就是一個偽隨機數(shù),它的長度(記為 sLen)一般等于 hLen,當前的選擇就是

sLen = hLen

1.2 構(gòu)建 DB

DB(Data Block)的構(gòu)建方式為,

DB = p2 || salt

p2 的值等于若干個字節(jié)的 0x00 后面跟著1字節(jié)的 0x01。這若干個字節(jié)記為 xLen,則 xLen 等于,

xLen = emLen - sLen - hLen - 2

其中,emLen 是圖4中 EM 的長度

salt 的值等于1.1節(jié)所描述的 salt 的值。特別強調(diào),兩者必須相等,否則無法驗證數(shù)字簽名(具體請參見下面第三節(jié):RSASSA-PSS 的數(shù)字簽名驗證)

1.3 MGF

MGF(Mask Generation Function,掩碼生成函數(shù))的相關(guān)介紹,請參見《蜀道難,難于上青天》,這里就不再重復(fù)。另外,RSA-PSS 所采用的 MGF 函數(shù)的輸出,也是 MGF1。

對于圖4而言,MGF 所對應(yīng)的輸入和輸出分別是

mask = MGF1(mgfSeed, maskLen, hash)

其中,

mgfSeed = Hash(M1),Hash 函數(shù)選擇 SHA-1

maskLen = emLen - hLen - 1

hash 函數(shù)選擇 SHA-1

1.4 構(gòu)建 EM

EM(Encoded Message)的值等于,

EM = maskedDB || H || bc

其中,

maskedDB = DB xor mask

H = Hash(M1)

bc = 0xBC

其中,bc 的長度是1個字節(jié),H 的長度是 hLen,maskedDB 的長度(記為 mdbLen)為

mdbLen = emLen - hLen - 1

其中,emLen 的長度就是 EM 的長度。由于接下來要對 EM 進行 RSA 加密計算,所以 EM 的長度滿足 RSA 的要求即可。

二、RSASA-PSS 的簽名算法

經(jīng)過 RSA-PSS 填充以后,接下來的簽名算法,就比較簡單了,

EM = RSA-PSS(M)

S = RSAEP(EM)

RSA 算法,請參見《RSA 基本算法》、《RSA 的計算方法》,這里不再重復(fù)。

三、RSASA-PSS 的簽名驗證

RSASA-PSS 簽名驗證,分為如下幾個步驟。

3.1 解密

RSASA-PSS 的簽名驗證,首先是解密,

EM = RSADP(S)

也即,拿到簽名 S 以后,運行 RSA 解密算法,得到解密后的信息 EM。

3.2 分割 EM

得到 EM 以后,接下來就是分割和驗證,

maskedDB, H, bc = Split(EM)

最右一個字節(jié)是 bc,然后從 bc 往左數(shù) hLen 個字節(jié)是 H,然后剩下的是 maskedDB。

如果最右一個字節(jié)不是 0xBC,則簽名驗證停止(該數(shù)字簽名是非法的)。

3.3 計算 salt

得到 H 以后,就可以計算 mask,

mask = MGF1(H, maskLen, hash)

因為,

maskedDB = DB xor mask

所以,

DB = maskedDB xor mask

得到 DB 以后,就可以對其分割

p2, salt = Split(DB)

其中,salt 是 DB 的最右 sLen 個字節(jié),剩下的是 p2。

如果 p2 的值不等于若干個字節(jié)的 0x00 后面跟著1字節(jié)的 0x01,那么驗證停止(該數(shù)字簽名是非法的)。

3.4 校驗 Hash

通過所接收到的 M,計算 Hash

mHash = Hash(M)

然后構(gòu)建 M1

M1 = p1 || mHash || salt

其中,salt 就是 3.3 步所計算出的 salt

再然后,計算 M1 的 Hash

H1 = Hash(M1)

比較 H1 與 H,如果兩者相等,則簽名驗證通過。如果不相等,則簽名非法。

其中,H 就是3.2步所得到的哈希值。

經(jīng)過以上四步以后,就完成了 RSASA-PSS 的數(shù)字簽名驗證。

責任編輯:武曉燕 來源: 網(wǎng)事如煙云
相關(guān)推薦

2014-02-25 08:59:14

2021-05-19 10:37:16

WebFlux 前置工具

2022-02-14 10:16:22

Axios接口HTTP

2023-05-08 07:32:03

BFSDFS路徑

2021-11-26 09:44:42

鏈表節(jié)點定位

2022-12-01 09:59:57

內(nèi)核觀測性方法

2023-03-28 07:32:37

2023-03-26 12:45:52

Linux內(nèi)核頭文件

2023-10-10 08:00:07

2024-08-29 09:18:55

2022-08-30 13:48:16

LinuxMySQL內(nèi)存

2021-10-11 10:25:33

排列nums數(shù)組

2021-03-18 00:04:13

C# 類型數(shù)據(jù)

2022-03-31 18:59:43

數(shù)據(jù)庫InnoDBMySQL

2023-08-10 08:28:46

網(wǎng)絡(luò)編程通信

2021-08-27 07:06:09

DubboDocker技術(shù)

2021-01-12 05:08:49

DHCP協(xié)議模型

2022-10-18 07:33:57

Maven構(gòu)建工具

2023-08-04 08:20:56

DockerfileDocker工具

2023-06-30 08:18:51

敏捷開發(fā)模式
點贊
收藏

51CTO技術(shù)棧公眾號