作者:大(dà)檔家時間:2020-08-11
信息安全技術 安全電(diàn)子簽章密碼技術規範 (GB/T 38540-2020)
信息安全技術 安全電(diàn)子簽章密碼技術規範
1範圍
本标準規定了采用密碼技術實現電(diàn)子印章和電(diàn)子簽章的數據結構定義,以及相應的生(shēng)成與驗證流程。
本标準适用于電(diàn)子印章系統的開(kāi)發和使用,也可用于指導該類系統的檢測。
2規範性引用文件
下(xià)列文件對于本文件的應用是必不可少的。凡是注日期的引用文件,僅注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改單)适用于本文件。
GB/T 20518 信息安全技術 公鑰基礎設施 數字證書(shū)格式
GB/T 20520 信息安全技術 公鑰基礎設施 時間戳規範
GB/T 32905信息安全技術 SM3密碼雜(zá)湊算法
GB/T 32918(所有部分(fēn)) 信息安全技術 SM2 橢圓曲線公鑰密碼算法GB/T 33560 信息安全技術 密碼應用标識規範
GB/T 35276 信息安全技術 SM2密碼算法使用規範
3術語和定義
下(xià)列術語和定義适用于本文件
3.1
電(diàn)子印章 electronic seal
一(yī)種由電(diàn)子印章制章者數字簽名的安全數據。
注:包括電(diàn)子印章所有者信息和圖形化内容的數據,用于安全簽署電(diàn)子文件。
3.2
電(diàn)子簽章 electronic seal signature
使用電(diàn)子印章簽署電(diàn)子文件的過程。
注:電(diàn)子簽章可實現與紙(zhǐ)質文件蓋章操作相似的可視效果,可保障數據來源的真實性、數據完整性以及簽名人行爲.的不可否認性
3.3
原文 original data
需要進行電(diàn)子簽章或數字簽名處理的電(diàn)子文件。
3.4
電(diàn)子簽章數據 electronic seal signature data
電(diàn)子簽章過程産生(shēng)的包含電(diàn)子印章、原文信息和數字簽名等信息的數據。
3.5
電(diàn)子印章系統 electronic seal system
電(diàn)子印章管理系統和電(diàn)子簽章軟件的統稱。
注1:電(diàn)子印章管理系統具有電(diàn)子印章制作與管理、安全審計等功能。
注2:電(diàn)子簽章軟件是對電(diàn)子文件加蓋電(diàn)子印章或添加數字簽名的軟件。
3.6
制章者 electronic seal maker
電(diàn)子印章系統中(zhōng)具有電(diàn)子印章制作和管理權限的機構。
注:電(diàn)子印章中(zhōng)的圖像和相關信息應經制章者進行數字簽名,電(diàn)子印章中(zhōng)的制章者證書(shū)應是該機構的單位證書(shū)。
3.7
簽章者 electronic seal signer
電(diàn)子印章的所有者,是具備電(diàn)子印章法定使用權限的實體(tǐ)。
3.8
SM2算法SM2 algorithm
由GB/T 32918定義的一(yī)種橢圓曲線密碼算法。
3.9
SM3算法SM3 algorithm
由GB/T 32905定義的一(yī)種雜(zá)湊算法。
4縮略語
下(xià)列縮略語适用于本文件。
ASN.1:抽象語法記法( Abstract Syntax Notation One)
BMP:位圖( Bitmap)
DER:非典型編碼規則( Distinguished Encoding Rules)
GIF:圖形交換格式( Graphics Interchange Format)
JPG:聯合圖像專家組的文件格式( Joint Photographic Experts Group)
OID:對象标識符( Object Identifier)
PKI:公鑰基礎設施( Public Key Infrastructure)
SVG:可縮放(fàng)的矢量圖形( Scalable Vector Graphics)
5概述
安全電(diàn)子簽章是通過采用PKI公鑰密碼技術,将數字圖像處理技術與電(diàn)子簽名技術進行結合,以電(diàn)子形式對加蓋印章圖像數據的電(diàn)子文檔進行數字簽名,以确保文檔來源的真實性以及文檔的完整性,防止對文檔未經授權的篡改,并确保簽章行爲的不可否認性。
爲了确保電(diàn)子印章的完整性、不可僞造性,以及合法用戶才能使用,需要定義一(yī)個安全的電(diàn)子印章數據格式。通過數字簽名,将印章圖像數據與簽章者等印章屬性進行安全綁定,形成安全電(diàn)子印章。在使用印章過程中(zhōng),應對電(diàn)子印章進行安全性驗證。
在使用電(diàn)子印章對各種文檔進行電(diàn)子簽章過程中(zhōng),簽章者通過數字簽名對文檔數據進行簽章處理,從而達到與傳統紙(zhǐ)質文件蓋章操作相同的可視化效果,同時又(yòu)利用數字簽名技術保障了文檔數據的真實性、完整性以及簽章者行爲的不可否認性。
6電(diàn)子印章
6.1數據格式
6.1.1印章數據結構
電(diàn)子印章由印章信息、制章者證書(shū)、簽名算法标識、簽名值等部分(fēn)組成,其數據結構如圖1所示。
6.1.2印章信息
6.1.2.1數據結構
印章信息 eSealInfo由印章頭、印章标識、印章屬性、印章圖像數據、自定義數據等部分(fēn)組成,其數據結構如圖2所示。
6.1.2.2印章頭
印章頭由頭标識、版本号和廠商(shāng)标識等組成,其數據結構如圖3所示。
其中(zhōng):
ID:固定值“ES”。
version:電(diàn)子印章數據結構版本号,本标準設定數值爲4,代表當前版本爲v4。
Vid:電(diàn)子印章廠商(shāng)标識,在互聯互通時,用于識别不同的軟件廠商(shāng)實現。
6.1.2.3印章标識
esID:區分(fēn)電(diàn)子印章的唯一(yī)标識編碼,用于查找和索引其他信息。
6.1.2.4印章屬性
印章屬性由印章類型、印章名稱、簽章者證書(shū)信息類型、簽章者證書(shū)信息列表、制作時間、有效期起始時間、有效期終止時間等部分(fēn)組成,其結構如圖4所示。
6.1.2.5印章圖像數據
印章圖像數據由圖像類型、圖像數據、圖像顯示寬度和圖像顯示高度等部分(fēn)組成,其數據結構如圖5所示。
6.1.2.6 自定義數據
自定義數據包含一(yī)系列自定義屬性字段,可用于支持電(diàn)子印章擴展特性,其ASN.1定義爲:
6.1.3制章者證書(shū)
cert:對電(diàn)子印章進行簽名的制章者的數字證書(shū),應符合GB/T 20518中(zhōng) Certificate定義,按DER編碼格式存放(fàng)。
6.1.4簽名算法标識
signAlgID:代表簽名算法OID标識,應符合GB/T 33560的規定。
示例:基于SM2算法和SM3算法的簽名OID爲1.2.156.10197.1.501。
6.1.5簽名值
signedValue:制章者對電(diàn)子印章格式中(zhōng)印章信息域SES_ SealInfo,按 SEQUENCE方式組成的信内容進行數字簽名所得的結果。
如果簽名算法使用SM2,應符合GB/T 35276的規定。
6.2電(diàn)子印章生(shēng)成流程
電(diàn)子印章生(shēng)成流程如下(xià):
a)按6.1.2定義的數據格式,将印章頭、印章标識、印章屬性、印章圖像數據、自定義數據等數據按 SEQUENCE方式組成印章信息;
b)根據簽名算法标識 signAlgID,對上述步驟a)的印章信息域進行數字簽名運算,形成簽名值;
c)将上述步驟a)和b)的數據以及制章者證書(shū)、簽名算法标識組成6.1.1定義的電(diàn)子印章數據格式。
6.3電(diàn)子印章驗證流程
電(diàn)子印章驗證流程如下(xià):
a)驗證電(diàn)子印章數據格式的正确性
按照電(diàn)子印章格式解析電(diàn)子印章,驗證是否符合6.1定義的電(diàn)子印章數據格式。
如果電(diàn)子印章數據格式不正确,則驗證失敗,返回錯誤代碼并退出驗證流程。
b)驗證電(diàn)子印章簽名值是否正确
根據印章信息、制章者證書(shū)、簽名算法标識來驗證電(diàn)子印章中(zhōng)的簽名值是否正确。
如果電(diàn)子印章簽名驗證失敗,返回錯誤代碼并退出驗證流程。
c)驗證電(diàn)子印章制章者證書(shū)的有效性
驗證制章者證書(shū)的有效性,驗證項至少包括:制章者證書(shū)信任鏈驗證、制章者證書(shū)有效期驗證、制章者證書(shū)是否被撤銷、密鑰用法是否正确。
如果制章者證書(shū)驗證失敗,返回錯誤代碼并退出驗證流程。
d)驗證電(diàn)子印章的有效期
根據印章屬性中(zhōng)的印章有效期起始時間和有效期終止時間,驗證電(diàn)子印章是否過期。
如果電(diàn)子印章已過期,則驗證失敗,返回錯誤代碼并退出驗證流程。
如果上述步驟都驗證成功,則電(diàn)子印章驗證正确有效,可正常退出驗證流程。
7電(diàn)子簽章
7.1數據格式
7.1.1簽章數據結構
電(diàn)子簽章數據由簽章信息、簽章者證書(shū)、簽名算法标識、簽名值、時間戳等組成。
電(diàn)子簽章數據結構如圖6所示。
7.1.2簽章信息
簽章信息由版本号、電(diàn)子印章、簽章時間、原文雜(zá)湊值、原文屬性、自定義數據等組成,結構如圖7所示。
其中(zhōng):
version:電(diàn)子簽章版本号,該版本号與電(diàn)子印章版本号保持一(yī)緻。
eseal:生(shēng)成電(diàn)子簽章使用的電(diàn)子印章。
timeInfo:電(diàn)子簽章對應的時間,可以是 Generalizedtime時間。
dataHash:待簽名原文的雜(zá)湊值。
propertyInfo:原文數據的屬性,如文檔ID、日期、段落、原文内容的字節數、指示信息、簽名保護範圍等,此部分(fēn)受簽名保護, propertyInfo的具體(tǐ)結構可自行定義,但至少應包含簽名保護範圍。
extDatas:廠商(shāng)自定義數據。
7.1.3簽章者證書(shū)
cert:簽章者的數字證書(shū),應符合GB/ T 20518的規定,按DER編碼格式存放(fàng)。
7.1.4簽名算法标識
signatureAlgID:簽名算法标識,應符合GB/ T 33560的規定,應與簽章者證書(shū)中(zhōng)的算法聲明保持一(yī)緻。
示例:基于SM2算法和SM3算法的數字簽名OID爲1.2.156.10197.1.501。
7.1.5簽名值
signature:簽章者對簽章信息TBS_Sign進行數字簽名的結果;注意簽名過程中(zhōng)的原文雜(zá)湊所采用的算法應與簽名算法保持協調,如果簽名算法是SM2,則雜(zá)湊算法應采用SM3算法。如果簽名算法使用SM2,應符合GB/T35276的規定。
7.1.6時間戳
timeStamp:對簽名值的時間戳,應符合GB/T 20520的規定,時間戳格式按DER編碼存放(fàng)。
7.2電(diàn)子簽章生(shēng)成流程
電(diàn)子簽章生(shēng)成流程如下(xià):
a)準備電(diàn)子印章,并驗證電(diàn)子印章的正确性和有效性,具體(tǐ)步驟如下(xià):
1)驗證電(diàn)子印章。按照6.3驗證電(diàn)子印章的正确性和有效性。
2)選擇拟進行電(diàn)子簽章的簽章者證書(shū),并驗證該證書(shū)的有效性。驗證項至少包括:證書(shū)信任鏈、證書(shū)有效期驗證、證書(shū)是否被撤銷、密鑰用法是否正确。
3)根據電(diàn)子印章中(zhōng)的簽章者證書(shū)列表類型,提取電(diàn)子印章中(zhōng)的簽章者證書(shū)信息列表,并用來判斷步驟2)選擇的簽章者證書(shū)是否在列表中(zhōng)。如果證書(shū)信息類型值爲1,則直接比對證書(shū);如果值爲2,則計算步驟2)中(zhōng)的證書(shū)的雜(zá)湊再進行比對:
——如果拟簽章者在電(diàn)子印章的簽章者列表中(zhōng),則進行後續流程;
——如果比對失敗,返回錯誤代碼并退出簽章流程。根據錯誤代碼進一(yī)步判斷,如果比對失敗是因爲簽章者證書(shū)執行更新、重簽發等操作而導緻,程序應提示重新制作印章。
b)對原文進行電(diàn)子簽章,具體(tǐ)步驟如下(xià):
1)按照 propertyInfo中(zhōng)的簽名保護範圍來準備待簽名原文;
2)将待簽名原文數據進行雜(zá)湊運算,形成原文雜(zá)湊值;
3)按照7.1.2電(diàn)子簽章數據格式組成簽章信息;
4)簽章者對簽章信息進行數字簽名,生(shēng)成簽名值;
5)如果需要加蓋時間戳,則利用上述簽名值産生(shēng)相應的時間戳;
6)将步驟3)、4)、5)以及簽章者信息、簽名算法标識組成7.1.1定義的電(diàn)子簽章數據。
7.3電(diàn)子簽章驗證流程
電(diàn)子簽章驗證流程如下(xià):
a)驗證電(diàn)子簽章數據格式的正确性
1)根據7.1數據格式來解析電(diàn)子簽章數據。
2)若解析失敗,則返回錯誤代碼并退出驗證流程。
3)按照6.3流程來驗證上述電(diàn)子簽章中(zhōng)的電(diàn)子印章的正确性。
4)如果電(diàn)子簽章或電(diàn)子印章數據格式不正确,則返回錯誤代碼并退出驗證流程。
b)驗證電(diàn)子簽章簽名值是否正确
1)根據步驟a)解析所得的簽章信息、簽章者證書(shū)和簽名算法标識,驗證電(diàn)子簽章簽名值。
2)如果簽名值驗證失敗,則返回錯誤代碼并退出驗證流程。
c)驗證簽章者證書(shū)與電(diàn)子印章的匹配性
1)提取電(diàn)子印章中(zhōng)的簽章者證書(shū)信息類型與簽章者證書(shū)信息列表。
2)如果上述簽章者證書(shū)信息類型值爲1,則需要比對數字證書(shū)。将步驟a)解析所得的簽章者證書(shū)與電(diàn)子印章中(zhōng)簽章者證書(shū)信息列表内的證書(shū)逐一(yī)作二進制比對,若均比對失敗,則返回錯誤代碼并退出驗證流程。
3)如果上述簽章者證書(shū)信息類型值爲2,則需要比對證書(shū)的雜(zá)湊值。先計算步驟a)解析所得的簽章者證書(shū)的雜(zá)湊值,再與電(diàn)子印章中(zhōng)簽章者證書(shū)信息列表内的雜(zá)湊值逐一(yī)作比對,若均比對失敗,則返回錯誤代碼并退出驗證流程。
d)驗證電(diàn)子印章的有效性
1)從簽章信息中(zhōng)提取電(diàn)子印章,按照6.3電(diàn)子印章驗證流程驗證印章的有效性,若驗證失敗,需結合簽章信息中(zhōng)的簽章時間綜合判斷。
2)若電(diàn)子印章失效因制章者證書(shū)失效導緻,且在簽章時間點上制章者證書(shū)也是無效的,則應記錄爲提示信息。
3)若電(diàn)子印章失效因過期或被撤銷所導緻,且在簽章時間不在電(diàn)子印章有效期内,或當時電(diàn)子印章不在正常狀态,則返回錯誤代碼并退出驗證流程。
4)驗證簽章時刻,電(diàn)子印章是否處于正常狀态,如不處于正常狀态,則返回錯誤代碼并退出驗證流程。
e)驗證簽章者證書(shū)有效性
1)從電(diàn)子簽章數據獲得簽章者證書(shū),驗證簽章者證書(shū)有效性,驗證項至少包括:證書(shū)信任鏈驗證、證書(shū)有效期驗證、證書(shū)是否被撤銷、密鑰用法是否正确。
2)若簽章者證書(shū)有效性驗證失敗且是由于證書(shū)信任鏈驗證或密鑰用法不正确導緻的,則返回錯誤代碼并退出驗證流程。
3)若簽章者
2021-09-13
2021-09-13
2020-11-30
2020-11-27
2020-11-26