标准解读

《GM/T 0067-2019 基于数字证书的身份鉴别接口规范》是中国国家密码管理局发布的国家标准之一,该标准主要定义了基于数字证书进行身份鉴别的技术要求及其实现方法。它适用于需要通过数字证书来验证用户或系统身份的应用场景,如电子政务、电子商务等领域。

在本标准中,首先明确了数字证书的基本概念及其在身份鉴别过程中的作用。数字证书是由权威第三方机构(CA, Certificate Authority)签发的一种电子文件,用来证明某个实体(个人、组织等)的身份以及其公钥信息的真实性。利用这种机制,通信双方可以在不安全的网络环境中相互确认对方的真实身份,并建立安全连接。

接着,《GM/T 0067-2019》详细规定了使用数字证书进行身份鉴别的具体流程和技术细节。这包括但不限于:如何生成和管理密钥对;如何申请并获得数字证书;如何利用持有的数字证书向服务提供者发起认证请求;以及服务端如何验证客户端提供的证书的有效性等步骤。此外,还特别强调了整个过程中应遵循的安全原则,比如确保私钥的安全存储与传输、定期更新证书等措施以提高系统的整体安全性。

同时,该标准也指出了实施此类身份鉴别方案时可能遇到的一些挑战,比如跨域互认问题、不同平台之间的兼容性问题等,并给出了相应的解决方案建议。


如需获取更多详尽信息,请直接参考下方经官方授权发布的权威标准文档。

....

查看全部

  • 现行
  • 正在执行有效
  • 2019-07-12 颁布
  • 2019-07-12 实施
©正版授权
GM∕T 0067-2019 基于数字证书的身份鉴别接口规范_第1页
GM∕T 0067-2019 基于数字证书的身份鉴别接口规范_第2页
GM∕T 0067-2019 基于数字证书的身份鉴别接口规范_第3页
GM∕T 0067-2019 基于数字证书的身份鉴别接口规范_第4页
免费预览已结束,剩余20页可下载查看

下载本文档

GM∕T 0067-2019 基于数字证书的身份鉴别接口规范-免费下载试读页

文档简介

犐犆犛35.040

犔80

?????????????

犌犕/犜0067—2019

???????????????

犐狀狋犲狉犳犪犮犲狊狆犲犮犻犳犻犮犪狋犻狅狀狊狅犳犪狌狋犺犲狀狋犻犮犪狋犻狅狀犫犪狊犲犱狅狀犱犻犵犻狋犪犾犮犲狉狋犻犳犻犮犪狋犲

20190712??20190712??

?????????

??

??Ⅱ…………………………

1??

1………………………

2???????

1…………………………

3?????

1………………

4???

2……………………

5????

2…………………

5.1??2

…………………

5.2????????2

…………………

5.3????3

……………

6?????????

4……………………

6.1??????4

………………………

6.2?????????6

………………

7???????

6…………………………

7.1???????????????????????????6

………………

7.2??????????7

……………

7.3????7

……………

7.4??????11

………………………

??A(?????)?????????15……………

??B(?????)??????????16…………

????18……………………

犌犕/犜0067—2019

??

????GB/T15843.3—2016《?????????????3??:????????

???》???,????????????????????。

?????????????????。????????????????????。

?????????????????????。

????????????????????????????????。

?????????:??????????、???????????????、??????

???????、????????????、???????????????、????????

??????、??????????、????????????????。

????????:??、???、??、???、???、??、???、???、???。

犌犕/犜0067—2019

???????????????

1??

??????????????????????????????????。

??????????????????????????????、???????????

?????????,????????????????????????。

2???????

??????????????????。??????????,????????????

?,???????????,?????(????????)??????。

GB/T15843.1—2017?????????????1??:??

GB/T15843.3—2016?????????????3??:???????????

3?????

?????????????。

3.1

??????犮犲狉狋犻犳犻犮犪狋犲犪狌狋犺犲狀狋犻犮犪狋犻狅狀狊狔狊狋犲犿

????????、??、??、???????????????????。

3.2

??????犮犲狉狋犻犳犻犮犪狋犲狉犲狏狅犮犪狋犻狅狀犾犻狊狋;犆犚犔

?????????????????????。

3.3

????犮犲狉狋犻犳犻犮犪狋犲狏犪犾犻犱犪狋犻狅狀

????????????????????。

3.4

????犱犻犵犻狋犪犾犮犲狉狋犻犳犻犮犪狋犲

??????,???????(CA)??????????????、????、?????、?

???????????????。??????????、?????????,????????

???????。

3.5

????犻犱犲狀狋犻狋狔狋狅犽犲狀

???????????????,?????????????????????,?????

??????????。

3.6

????犿狌狋狌犪犾狏犲狉犻犳狔

??????????????????。

犌犕/犜0067—2019

3.7

??????狆狌犫犾犻犮犽犲狔犻狀犳狉犪狊狋狉狌犮狋狌狉犲;犘犓犐

?????????????????????,????????、???、????????

?????。

3.8

犛犕2??犛犕2犪犾犵狅狉犻狋犺犿

????????????,??????256??。

3.9

犛犕3??犛犕3犪犾犵狅狉犻狋犺犿

????????,????256??。

4???

???????????。

CA??????(certificateauthority)

CN???(commonname)

CRL??????(certificaterevocationlist)

DN????(distinguishedname)

LDAP

?????????(lightweightdirectoryaccessprotocol)

OID?????(objectidentifier)

PKI????????(publickeyinfrastructure)

5????

5.1??

???????????????????????,????T???B????????,

?????????????????GB/T15843.3—2016。

5.2????????

??????,?????????T???A???????,?????????????

B,????????????????,???????????。

???????A?????????T???,?????,??A???????????

???T??????,?????????????????????(?GB/T15843.1—2017?

??B)????。

????????????????1??。

?1?????????????

犌犕/犜0067—2019

a)??A?????TokenAT(TokenAT???A?????????T

????,???

??GB/T15843.3—2016??5.2.2)?????????T;

b)????????T??????TokenAT????,??????:

1)??A??????,?????、????????、????,?????????

??;

2)??TokenAT。

c)????????T??????A????????B。

????????????????????2??。

?2?????????????

a)??A?????TokenAT(TokenAT?????GB/T15843.3??5.2.2)?????

????T;

b)????????T??????TokenAT????,??????:

1)??A??????,?????,????????、????,????????

??;

2)??TokenAT。

c)????????T?A??T????TokenTA(TokenTA?????GB15843.3—

2016??5.3.2);

d)??????TokenTA????,??A??????:

1)??T??????,?????,????????,???????,??????

????;

2)??TokenTA。

e)????????T??????A????????B。

5.3????

????????????,?????????????????????????????

??????,??????,??????????。

?????,??B??????????A????,??????????RB(?

GB/T15843.1—2017???B)???????????????。??????3??:

犌犕/犜0067—2019

?3????????????

a)??B?A?????RB,????????????Text;

b)A?B??A????TokenAB(TokenAB?????GB/T15843.3—2016?5.3.2);

c)???A????TokenAB?,??B????????T??A???????。

6?????????

6.1??????

6.1.1??????

???????????1??。

?1??????

??????????

SGD_HANDLE

????(????)typedefvoidSGD_HANDLE

SGD_CHAR8???typedefcharSGD_CHAR

SGD_BYTE8??????typedefunsignedcharSGD_BYTE

SGD_INT3232???????typedefintSGD_INT32

SGD_UINT3232???????typedefunsignedintSGD_UINT32

6.1.2????

?????????2??。

犌犕/犜0067—2019

?2????

?????????

#defineSGD_TRUE0x00000001

?????

#defineSGD_FALSE0x00000000

?????

6.1.3??????

???????????3??。

?3??????

???????

?????????

#defineSGD_SM2_10x00020200

SM2????

#defineSGD_SM2_20x00020400

SM2??????

#defineSGD_SM2_30x00020800

SM2????

#defineSGD_ECC_n

0x00080000

?0x80000000

??????????

??????

?????????

#defineSGD_SM30x00000001

SM3??????

??????

?????????

#defineSGD_GET_CERT_VERSION0x00000001

????

#defineSGD_GET_CERT_SERIAL0x00000002

?????

#defineSGD_GET_CERT_ISSUER0x00000005

???????

#defineSGD_GET_CERT_ISSUER_CN0x00000021

?????CN

#defineSGD_GET_CERT_ISSUER_O0x00000022

?????O

#defineSGD_GET_CERT_ISSUER_OU0x00000023

?????OU

#defineSGD_GET_CERT_VALID_TIME0x00000006

?????

#defineSGD_GET_CERT_SUBJECT0x00000007

???????

#defineSGD_GET_CERT_SUBJECT_CN0x00000031

???????CN

#defineSGD_GET_CERT_SUBJECT_O0x00000032

???????O

#defineSGD_GET_CERT_SUBJECT_OU0x00000033

???????OU

#defineSGD_GET_CERT_SUBJECT_EMAIL0x00000034

???????EMAIL

#defineSGD_GET_CERT_DER_EXTENSIONS0x00000009

???????

??????

?????????

#defineSGD_CRL_VERIFY0x00000001

CRL????

#defineSGD_OCSP_VERIFY0x00000002

OCSP????

犌犕/犜0067—2019

6.2?????????

?????????????4??。

?4????????

????????(??)??

result4

????

signTime4

??????,???????

???

resultSign256

????

????????:

typedefstructSIF_ITOKEN_VERIFYED_{

SGD_INT32result;

SGD_INT32signTime;

SGD_BYTEresultSign[256];

}SIF_ITOKEN_VERIFYED;

7???????

7.1???????????????????????????

????????????????????????????????????。?????

??????????????????????4??。

?4?????????????????????????

犌犕/犜0067—2019

7.2??????????

7.2.1??

?????????????5??。

?5??????????

???????????????????????????????????,??????

????????????。??????????????????????????????

??。

???????????????,???:???????????。

7.2.2????

?????????????????,?????????????????????、??,

?????????????????????????,??????。???????????

?????????,?????????????、??????????。

??????????????,????????????(SIF_Initialize)????????

???????,??????????????????。?????????,????????

?(SIF_Finalize),????????????,????????????,???????????

?????。

7.2.3??????

????????????????????????(?????????????????

??)。????????????????????????????。

7.3????

7.3.1??????

???????????????,??XML???:

犌犕/犜0067—2019

〈?xmlversion="1.0"encoding="UTF8"?〉

〈msg〉

〈msg_head〉

……

〈/msg_head〉

〈msg_body〉

……

〈/msg_body〉

〈/msg〉

????msg_head?????????,msg_body?????????。

7.3.2???????

?????????:

〈msg_head〉

〈msg_type〉0〈/msg_type〉

〈msg_id〉0100〈/msg_id〉

〈version〉1〈/version〉

〈/msg_head〉

??????????5??:

?5?????????

???????????

msg_type

?????

0———????

1———??????

2———??????

msg_id

??ID

0001———???

0100———????????

1000———????????

1001———????????

Version

?????

7.3.3??????????

a)????????

〈?xmlversion="1.0"encoding="UTF8"?〉

〈msg〉

〈msg_head〉

〈msg_type〉0〈/msg_type〉

〈msg_id〉0100〈/msg_id〉

〈version〉1〈/version〉

〈/msg_head〉

〈msg_body〉

犌犕/犜0067—2019

〈connectid〉????〈/connectid〉

〈/msg_body〉

〈/msg〉

b)????????

〈?xmlversion="1.0"encoding="UTF8"?〉

〈msg〉

〈msg_head〉

〈msg_type〉1or2〈/msg_type〉

〈msg_id〉0100〈/msg_id〉

〈version〉1〈/version〉

〈/msg_head〉

〈msg_body〉

〈connectid〉????〈/connectid〉

〈userinfo〉????〈/userinfo〉

〈error_no〉????〈/error_no〉

〈/msg_body〉

〈/msg〉

7.3.4????????

a)?????

〈?xmlversion="1.0"encoding="UTF8"?〉

〈msg〉

〈msg_head〉

〈msg_type〉0〈/msg_type〉

〈msg_id〉0001〈/msg_id〉

〈version〉1〈/version〉

〈/msg_head〉

〈msg_body/〉

〈/msg_body〉

〈/msg〉

b)?????

〈?xmlversion="1.0"encoding="UTF8"?〉

〈msg〉

〈msg_head〉

〈msg_type〉1or2〈/msg_type〉

〈msg_id〉0001〈/msg_id〉

〈version〉1〈/version〉

〈/msg_head〉

〈msg_body〉

〈error_no〉????〈/error_no〉

〈/msg_body〉

〈/msg〉

c)????????

犌犕/犜0067—2019

〈?xmlversion="1.0"encoding="UTF8"?〉

〈msg〉

〈msg_head〉

〈msg_type〉0〈/msg_type〉

〈msg_id〉1000〈/msg_id〉

〈version〉1〈/version〉

〈/msg_head〉

〈msg_body〉

〈userseed〉????(Base64??)〈/userseed〉

〈cert〉??????????(Base64??)〈/cert〉

〈/msg_body〉

〈/msg〉

d)????????

〈?xmlversion="1.0"encoding="UTF8"?〉

〈msg〉

〈msg_head〉

〈msg_type〉1or2〈/msg_type〉

〈msg_id〉1000〈/msg_id〉

〈version〉1〈/version〉

〈/msg_head〉

〈msg_body〉

〈usertoken〉???????(Base64??)〈/usertoken〉

〈error_no〉????〈/error_no〉

〈/msg_body〉

〈/msg〉

7.3.5????????

a)????????

〈?xmlversion="1.0"encoding="UTF8"?〉

〈msg〉

〈msg_head〉

〈msg_type〉0〈/msg_type〉

〈msg_id〉1001〈/msg_id〉

〈version〉1〈/version〉

〈/msg_head〉

〈msg_body〉

〈usertoken〉???????(Base64??)〈/usertoken〉

〈randmess〉?????????????(Base64??)〈/randmess〉

〈cert〉??????????(Base64??)〈/cert〉

〈/msg_body〉

〈/msg〉

b)????????

〈?xmlversion="1.0"encoding="UTF8"?〉

01

犌犕/犜0067—2019

〈msg〉

〈msg_head〉

〈msg_type〉1or2〈/msg_type〉

〈msg_id〉1001〈/msg_id〉

〈version〉1〈/version〉

〈/msg_head〉

〈msg_body〉

〈result〉????〈/result〉

〈resultsign〉???????“????+????”???(Base64??)〈/resultsign〉

〈error_no〉????〈/error_no〉

〈/msg_body〉

〈/msg〉

7.4??????

7.4.1??

????????????,??????????A??????:

a)???:SIF_Initialize

b)??:SIF_Finalize

c)??????:SIF_GetVersion

d)?????????????:SIF_GenRandom

e)??????:SIF_GenUserToken

f)??????:SIF_VerifyUserToken

g)??????????:SIF_VerifyResult

h)??????:SIF_GetUserInfo

7.4.2?????

??:SGD_

INT32SIF_Initialize(SGD_CHARpucIpAddr,

SGD_INTiPort,SGD_VOIDphHandle);

??:?????????,??????????

??:pucIpAddr[in]?????????,???NULL,??????

???

iPort[in]

?????????

phHandle[out]???????????,???NULL

???:0??

?0??,??????

?:?????????????。

????????????????,??????????????????。

7.4.3????

??:SGD_INT32SIF_Finalize(SGD_HANDLEhHandle);

??:

????????,????????

??:hHandle[in]

??????????

???:0??

?0??,??????

11

犌犕/犜0067—2019

?:???????????。

7.4.4????????

??:

SGD_INT32SIF_GetVersion(SGD_HANDLEhHandle,

SGD_UINT32puiVersion,

SGD_UINT32puiProvider);

??:

????????

??:hHandle[in]

??????????

pVersion[out]?????

pProvider[out]????????

???:0??

?0??,??????

7.4.5?????????????

??:

SGD_INT32SIF_GenRandom(SGD_HANDLEhHandle,

SGD_INT32uiRandLen,

SGD_BYTEpbRand);

??:

???????????,???????????

??:hHandle[in]

??????????

uiRandLen[in]?????

pbRand[out]????

???:0??

?0??,??????

?:???????????????,?????????16~64??。

7.4.6??????

??:

SGD_INT32SIF_GenUserToken(SGD_HANDLEhHandle,

SGD_BYTEpbRandMess,

SGD_INT32uiRandMessLen,

SGD_BYTEpbCertificate,

SGD_INT32uiCertificateLen,

SGD_BYTEpbIdentityToken,

SGD_INT32puiIdentityTokenlen);

??:

??????????????????????????

??:hHandle[in]

??????????

pbRandMess[in]????。??????SIF_GenRandom??,?

???????????????????

uiRandMessLen[in]

???????

pbCertificate[in]Base64?????

uiCertificateLen[in]Base64???????

pbIdentityToken[out]???????,???Base64??

puiIdentityTokenlen[in,out]???????????????????,???

???????????

???:0??

?0??,??????

21

犌犕/犜0067—2019

7.4.7??????

??:

SGD_INT32SIF_VerifyUserToken(SGD_HANDLEhHandle,

SGD_BYTEpbRandMess,

SGD_INT32uiRandMessLen,

SGD_BYTEpbIdentityToken,

SGD_INT32uiIdentityTokenlen,

SGD_BYTEpbCertificate,

SGD_INT32uiCertificateLen,

SGD_INT32iVerifymode,

SIF_ITOKEN_VERIFYEDpstResult);

??:

??????????,??????????????

??:hHandle[in]

??????????

pbRandMess[in]????

uiRandMessLen[in]

???????

pbIdentityToken[in]???????,???Base64??

uiIdentityTokenlen[in]Base64?????????????

pbCertificate[in]Base64?????

uiCertificateLen[in]Base64???????

iVerifymode[in]????,?????????????????

??

pstResult[out]??????

???:0??

?0??,??????

7.4.8??????????

??:

SGD_INT32SIF_VerifyResult(SGD_HANDLEhHandle,

SIF_ITOKEN_VERIFYEDpstResult,

SGD_BYTEpbCertificate,

SGD_INT32uiCertificateLen);

??:

???????,?????????????

??:hHandle[in]

??????????

pstResult[in]??????

pbCertificate[in]Base64?????

uiCertificateLen[in]Base64???????

???:0??

?0??,??????

7.4.9??????

??:

SGD_INT32SIF_GetUserInfo(SGD_CHARpcIpAddr,

SGD_INT32iPort,

SGD_INT32iConnect,

SGD_CHARpbUserInfo,

SGD_INT32puiUserInfoLen);

31

犌犕/犜0067—2019

??:

???????

??:pcIpAddr[in]

?????????

iPort[in]

?????????

iConnect[in]???????

pbUserInfo[out]?????????????DN???

puiUserInfoLen[in,out]????????????DN????????

?,???????????DN???

???:0??

?0??,??????

?:????????????。

41

犌犕/犜0067—2019

??犃

(?????)

?????????

???????????A.1??。

?犃.1?????????

??????

?????????

#defineSIR_OK0X00000000

??

#defineSIR_UnknownErr0X05000001

????

#defineSIR_NotInitialize0X05000002

????

#defineSIR_NotConnection0X05000003

???????

#defineSIR_MemoryErr0X05000004

?????????

#defineSIR_TimeoutErr0X05000005

????

#defineSIR_VersionErr0X05000006

????

#defineSIR_NotSupport0X05000007

?????

#defineSIR_TrustCertNotFound0X05000100

???????

#defineSIR_CRLNotFound0X05000101

????CRL

#defineSIR_OCSPConnectErr0X05000002

??

温馨提示

  • 1. 本站所提供的标准文本仅供个人学习、研究之用,未经授权,严禁复制、发行、汇编、翻译或网络传播等,侵权必究。
  • 2. 本站所提供的标准均为PDF格式电子版文本(可阅读打印),因数字商品的特殊性,一经售出,不提供退换货服务。
  • 3. 标准文档要求电子版与印刷版保持一致,所以下载的文档中可能包含空白页,非文档质量问题。

评论

0/150

提交评论