一种智能卡安全通讯的方法

文档序号:7550891阅读:222来源:国知局
专利名称:一种智能卡安全通讯的方法
技术领域
本发明涉及信息安全领域,特别涉及一种智能卡安全通讯的方法。
背景技术
随着通信技术的迅猛发展,信息网络得到广泛应用,同时计算机网络犯罪也不断出现。人们采用身份识别和加密技术对信息网络内的数据进行保护,并广泛使用智能卡产品作为用户身份识别的标识工具。安全、有效地利用智能卡对网络中传输的数据实现实时力口、解密处理,从而保证用户在安全、快捷、方便的前提下享受信息网络提供的服务。对于信息安全通信领域涉及到的安全层面,目前使用的技术并不完善,不能够避免通讯数据被监听或截取的问题。

发明内容
为解决现有技术中存在的问题,本发明提出了一种智能卡安全通讯的方法。本发明采取的技术方案是:一种智能卡安全通讯的方法,包括,S1:智能卡上电;S2:设置安全标识和安全变量;S3:等待接收命令,并判断收到的命令的类型;如是第一命令,则将认证方法标识设置为外部认证标识或相互认证标识,然后将证书认证标识置位,获取RSA公钥引用和RSA私钥引用,将安全环境管理标识置位,返回
S3;如是第二命令,则判断是否同时满足所述安全环境管理标识置位和所述证书认证标识置位,是则验证证书,将证书验证标识置位,返回S3 ;否则报错,返回S2 ;如是第三命令,则判断所述证书验证标识是否置位,是则向卡外设备发送证书,然后返回S3;否则报错,返回S2;如是第四命令,则执行S4 ;如是第五命令,则执行S5 ;如是第六命令,则执行S6 ;如是第七命令,则执行S7 ;如是其他命令,则判断该命令是否符合预设条件,是,则根据安全级别和会话密钥对命令进行验证,验证成功后执行相应操作,然后返回S3 ;否则报错;S4:判断是否同时满足所述安全环境管理标识未置位和所述证书认证标识置位,是则报错,返回S2 ;否则,用所述RSA公钥引用所引用的公钥对所述第四命令解密,得到解密结果,从所述解密结果中获取安全级别TLV结构,保存安全级别,建立会话密钥,保存所述会话密钥,设置签名信息,将会话密钥建立标识置位,返回S3 ;S5:判断是否满足所述会话密钥建立标识置位,是则生成第一随机数,保存第一随机数,并将其发送给卡外设备,然后将获取随机数标识置位,返回S3 ;否则报错,返回S2 ;S6:判断所述获取随机数标识是否置位,否则报错,返回步骤S2 ;是则构造包含所述安全级别TLV结构、所述会话密钥、所述第一随机数的第一数据块,用第一算法对所述第一数据块进行计算,得到第一计算结果,构造包含所述第一计算结果和第一算法的第二数据块,从所述第六命令中读取卡外设备的签名结果,用所述RSA公钥引用所引用的公钥、所述第二数据块对其进行验证,如果验证成功则将外部认证标识置位,判断认证方法标识是否为外部认证标识,是则将相互认证标识置位,返回S3,否则返回S3 ;如果验证未成功,则报错,返回S2;S7:从第七命令中获取第二随机数,保存第二随机数,判断是否同时满足所述认证方法标识为所述外部认证标识并且所述外部认证标识置位,是则构造包含所述会话密钥和所述第二随机数的第三数据块,用第一算法对所述第三数据块进行计算,得到第二计算结果,构造包含所述第二计算结果和第一算法的第四数据块,用所述RSA私钥引用所引用的私钥加密所述第四数据块,得到的加密结果为第一签名结果,将所述第一签名结果发送给卡外设备,将相互认证标识置位,清除所述第一随机数和所述第二随机数,然后返回S3 ;否则返回S2。所述设置安全标识,具体包括,安全环境管理标识复位,会话安全标识设置为没有安全级别,证书验证标识复位,获取随机数标识复位,会话密钥建立标识复位,外部认证标识复位,相互认证标识复位;所述设置安全变量,具体包括,RSA公钥引用设置为默认的RSA公钥引用;RSA私钥引用设置为默认的RSA私钥引用;第一会话密钥、第二会话密钥、第三会话密钥、第四会话密钥、第五会话密钥分别设置为默认值。所述将认证方法标识设置为外部认证标识或相互认证标识,具体包括,根据第一命令的第一预设字节的取值设置认证方法标识,当第一命令的第一预设字节的取值为第一预设值时,将认证方法标识设置为外部认证标识;当第一命令的第一预设字节的取值为第二预设值时,将认证方法标识设置为相互认证标识;所述将证书认证标识置位,具体包括,根据第一命令的第三预设字节的取值设置证书认证标识,当第三预设字节的取值等于第三预设值时,将证书认证标识复位;当第三预设字节的取值等于第四预设值时,将证书认证标识置位;所述获取RSA公钥引用和RSA私钥引用,具体包括,步骤al:判断第一命令的数据域中的第一个TLV结构是否符合第一预设结构;是则执行步骤a2 ;否则报错,然后返回S2 ;步骤a2:判断所述数据域中是否存在符合第二预设结构的TLV结构;是则获取并保存RSA公钥引用;否则报错,然后返回S2 ;步骤a3:判断所述数据域中是否存在符合第三预设结构的TLV结构;是则获取并保存RSA私钥引用;否则报错,然后返回S2。所述获取并保存RSA公钥引用,具体包括,根据第二预设结构的取值获取并保存RSA公钥引用,当第二预设结构的取值为第一结构值时,则获取第一结构值的最后两个字节,并将其保存为RSA公钥引用;当第二预设结构的取值为第二结构值时,则卡片使用默认的RSA公钥引用;所述获取并保存RSA私钥引用,具体包括,根据第三预设结构的取值获取RSA私钥引用,当第三预设结构的取值为第三结构值时,则获取第三结构值的最后两个字节,并将其保存为RSA私钥引用;当第三预设结构的取值为第四结构值时,则卡片使用默认的RSA私钥引用。
所述判断是否同时满足所述安全环境管理标识置位和所述证书认证标识置位之后包括:判断所述第二命令是否符合第一条件,是则用所述RSA公钥引用所引用的公钥验证证书,判断是否存在需要验证的证书,存在,则返回S2,不存在,则将证书验证标识置位,返回S3;否则报错,返回S2。所述第二命令符合第一条件,具体包括,所述第二命令的指定部分的取值等于第五预设值;所述判断是否存在需要验证的证书,具体包括,根据第二命令第一字节的第五位的取值判断是否存在需要验证的证书;如果第二命令第一字节的第五位的取值为第九预设值,则不存在需要验证的证书,如果第二命令第一字节的第五位的取值不为第九预设值,则存在需要验证的证书。所述用所述RSA公钥引用所引用的公钥对第四命令解密之前还包括,判断是否满足第四命令数据域长度等于所述RSA公钥引用所引用的公钥的模长,是则用所述RSA公钥引用所引用的公钥对第四命令解密;否则报错,返回S3 ;所述保存安全级别之后所述建立会话密钥之前,还包括,判断是否能建立会话密钥,是则建立会话密钥,否则报错,返回S3。所述判断是否能建立会话密钥,具体包括,判断是否同时满足控制引用模板的总标签的取值等于第七预设值和控制引用模板中存在第一 TLV结构,并且存在与第一预设长度相等的第二 TLV结构,是则能建立会话密钥;否则不能建立会话密钥;所述第七预设值为第一标签或第二标签;所述建立会话密钥具体包括,根据控制引用模板的总标签的取值建立相应的会话密钥,当控制引用模板的总标签的取值为第一标签时,如果TAG为95的TLV结构中的Value的取值为第一数值,则建立第一会话密钥;如果TAG为95的TLV结构中的Value的取值为第二数值,则建立第二会话密钥;如果TAG为95的TLV结构中的Value的取值为第三数值,则建立第一会话密钥、
第二会话密钥;当控制引用模板的总标签的取值为第二标签时,如果TAG为95的TLV结构中的Value的取值为第一数值,则建立第三会话密钥;如果TAG为95的TLV结构中的Value的取值为第二数值,则建立第四会话密钥;如果TAG为95的TLV结构中的Value的取值为第三数值,则建立第三会话密钥、第四会话密钥;如果TAG为95的TLV结构中的Value的取值为第四数值,则建立第五会话密钥;所述保存所述会话密钥之后设置签名信息之前,还包括,判断是否需要设置签名信息,是则设置签名,否则报错返回S2。所述判断是否能建立会话密钥,具体为,判断是否同时满足控制引用模板的总标签的取值等于第七预设值和所述控制引用模板中存在第一 TLV结构,并且存在长度与第一预设长度相等的第二 TLV结构,是则能建立会话密钥,否则不能建立会话密钥;所述判断是否需要设置签名信息,具体为,判断控制引用模板中是否存在TAG的取值等于第八预设值,并且长度等于第二预设长度的第三TLV结构,是则需要设置签名信息;否则不需要设置签名信息。所述S4-S7 替换为,S4’ -S7’,S4’:报错,返回 S2;S5’:判断是否满足所述安全环境管理标识未置位和所述证书认证标识置位,是则报错,返回S2 ;否则生成第一随机数,保存第一随机数,并将其发送给卡外设备,然后将获取随机数标识置位,返回S3 ;S6’:判断是否同时满足所述获取随机数标识置位和成功验证用所述RSA公钥引用所引用的公钥对第六命令的数据域进行解密得到的解密结果;否则报错,返回S2 ;是则从所述解密结果中获取安全级别,生成卡片保密数据,判断所述解密结果的控制引用模板是否符合预设要求,如果符合预设要求,则获取并保存卡外设备保密数据,根据所述卡片保密数据和所述卡外设备保密数据生成会话密钥,根据所述卡外设备保密数据的指定字节和所述卡片保密数据的指定字节生成签名信息,将会话密钥建立标识置位,将获取随机数标识置位;如果不符合预设要求,则报错,返回S2 ;S7’:从第七命令中获取第二随机数,保存第二随机数,判断是否同时满足所述会话密钥建立标识置位和所述获取随机数标识置位,否则返回S2 ;是则从第七命令中获取第七命令数据域,构造包含所述卡片保密数据、第七命令数据域的第三数据块,用第一算法对所述第三数据块进行计算,计算的结果为第二计算结果,构造包含所述卡片保密数据、所述第二计算结果的第四数据块,用所述RSA私钥引用所引用的私钥加密所述第四数据块,得到的加密结果为第一签名结果,将所述第一签名结果发送给卡外设备,将相互认证标识置位,清除所述第一随机数和所述第二随机数,然后返回S3。所述根据所述卡片保密数据和所述卡外设备保密数据生成会话密钥,具体包括,所述卡外设备保密数据与所述卡片保密数据异或运算,得到异或运算结果,然后根据需要生成的会话密钥类型设置相应的计数值,将异或运算结果与所述计数值顺序拼接,拼接结果用第一算法计算,得到第三计算结果,获取所述第三计算结果中的预设字节数据,将其保存为会话密钥。本发明实施例提供的技术方案有益效果为:采用本发明的方法,能够为卡片提供一定保障的安全通信机制,通过发起一个会话,通讯双方互相认证,确定对方身份的合法性和通讯数据的完整性,并为后续的通讯提供安全约束,从而提高了通讯的安全性。


图1-1、1-2、1_3为本发明实施例一提供的一种智能卡安全通讯的方法流程图。
具体实施例方式本发明实施例基于智能卡中安全通道的管理提供了一种智能卡安全通讯的方法,下面结合附图对本发明实施例进行详细介绍。实施例一参见图1-1、1-2和1-3,实施例一提供了一种智能卡安全通讯的方法,具体包括:步骤101:智能卡上电;步骤102:设置安全标识和安全变量;
本实施例中,设置安全标识具体包括,将安全环境管理标识设置为未完成标识,将会话安全标识的初始状态设置为没有安全级别,将证书验证完成标识设置为未完成标识,将获取随机数标识设置为未完成标识,将会话密钥标识设置为未建立标识,将外部认证标识设置为未完成标识,将相互认证标识设置为未完成标识;本实施例中,设置安全变量具体包括,将RSA公钥引用设置为PKV1,PKIl ;将RSA私钥引用设置为SKV1, SKIl ;将第一会话密钥、第二会话密钥、第三会话密钥、第四会话密钥、第五会话密钥设置为初始值,初始值可以为16个字节的‘00’,将签名信息设置为初始值,初始值可以为8个字节的‘00’,优选的,第一会话密钥为CMAC会话密钥,第二会话密钥为RMAC会话密钥,第三会话密钥为CENC会话密钥,第四会话密钥为RENC会话密钥,第五会话密钥为DEK会话密钥。步骤103:等待接收命令;本实施例中,命令包括:第一命令、第二命令、第三命令、第四命令、第五命令、第六命令、第七命令及其他命令。优选的,第一命令为安全环境管理命令,第二命令为执行安全操作证书验证命令,第三命令为获取证书命令,第四命令为执行安全操作解密命令,第五命令为获取随机数命令,第六命令为外部认证命令,第七命令为内部认证命令。步骤104:判断接收到的命令类型;本实施例中,根据命令的第二至第四个字节的取值判断命令类型,具体包括:如果命令的第二至第四个字节的取值为2281A4或22C1A4或2281B6或22C1B6,则该命令是第一命令,执行步骤105 ;如果命令的第二至第四个字节的取值为2A00AE或2A00BE,则该命令是第二命令,执行步骤113 ;如果命令的第二至第四个字节的取值为CA7F21或CB7F21则该命令是第三命令,执行步骤116 ;如果命令的第二至第四个字节的取值为2A8084,则该命令是第四命令,执行步骤118 ;如果命令的第二至第四个字节的取值为840000,则该命令是第五命令,执行步骤128 ;如果命令的第二至第四个字节的取值为820000,则该命令是第六命令,执行步骤131 ;如果命令的第二至第四个字节的取值为880000,则该命令是第七命令,执行步骤140 ;如果为其他的命令则执行步骤146。步骤105:判断第一命令的第三个字节的取值;如果等于第一预设值,则执行步骤106 ;如果等于第二预设值,则执行步骤107。本实施例中,优选的,第一预设值为81,第二预设值为Cl ;步骤106:将认证方法标识设置为外部认证标识,然后执行步骤108 ;步骤107:将认证方法标识设置为相互认证标识;步骤108:判断第一命令的第四个字节的取值;
如果等于第三预设值,则执行步骤109 ;如果等于第四预设值,则执行步骤110 ;本实施例中,优选的,第三预设值为A4,第四预设值为B6。步骤109:将证书认证标识设置为不需要认证标识,然后执行步骤111 ;步骤110:将证书认证标识设置为需要认证标识; 步骤111:获取RSA公钥引用和RSA私钥引用,判断是否成功获取RSA公钥引用和RSA私钥引用;是,执行步骤112 ;否,输出错误信息,然后返回步骤102。本实施例中,获取RSA公钥引用和RSA私钥引用具体操作包括:步骤al:判断第一命令的数据域中的第一个TLV结构是否符合第一预设结构;是,执行步骤a2 ;否,输出错误信息,然后返回步骤102。其中,第一预设结构可以为80021002 ;步骤a2:判断数据域中是否存在符合第二预设结构的TLV结构;是,获取RSA公钥引用;否,输出错误信息,然后返回步骤102。第二预设结构可以为8302N1N2或8300。当第二预设结构为8302N1N2时,则获取N1、N2,并将其保存为RSA公钥引用;其中NI表示RSA公钥密钥版本号,N2表示RSA公钥密钥索引号。当第二预设结构为8300时,则卡片使用默认的RSA公钥引用PKV1,PKIl ;其中PKVl表示默认的RSA公钥密钥版本号,PKIl表示默认的公钥密钥索引号。步骤a3:判断数据域中是否存在符合第三预设结构的TLV结构;是,获取RSA私钥引用;否,输出错误信息,然后返回步骤102。第三预设结构可以为8402N3N4或8400。当第三预设结构为8402N3N4时,则获取N3、N4,并将其保存为RSA私钥引用;其中N3表示私钥密钥版本号,N4表示私钥密钥索引号。当第三预设结构为8400时,则卡片使用默认的RSA私钥引用SKV1,SKIl ;其中SKVl表示默认的私钥密钥版本号,SKIl表示默认的私钥密钥索引号。步骤112:将安全环境管理标识设置为完成标识,然后返回步骤103 ;如果接收到第二命令,则执行步骤113至步骤115。步骤113:判断第二命令是否符合第一预设条件;是,执行步骤114 ;否,输出错误信息,然后返回步骤102。本实施例中,具体的可以判断第二命令是否同时满足以下条件:I)安全环境管理标识为完成标识;2)证书认证标识为需要认证标识;3)第二命令指定部分的取值等于第五预设值,其中,第二命令的指定部分为TLV结构的TAG (证书标签)部分,第五预设值可以为7F21 ;4)成功用RSA公钥引用所引用的公钥验证证书。如果同时满足上述所有条件,则确定第二命令符合第一预设条件;否则,确定第二命令不符合第一预设条件。步骤114:判断是否存在需要验证的证书;是,返回步骤103 ;否,执行步骤115。
本实施例中,根据第二命令第一字节的第五位的取值判断是否存在需要验证的证书。如果第二命令第一字节第五位的取值不等于0,则表示存在需要验证的证书。如果第二命令第一字节第五位的取值等于0,则表示不存在需要验证的证书。步骤115:将证书验证标识设置为完成标识,然后返回步骤103 ;如果接收到第三命令,则执行步骤116至步骤117。步骤116:判断证书验证标识是否为完成标识;是,执行步骤117 ;否,输出错误信息,然后返回步骤102。步骤117:向卡外设备发送证书,然后返回步骤103 ;本实施例中,具体向卡外设备发送保存在卡内安全域中的证书。如图1-2所示,如果接收到第四命令,则执行步骤118至步骤127。步骤118:判断安全环境管理标识是否为完成标识;是,执行步骤120 ;否,执行步骤119。步骤119:判断证书认证标识是否为需要认证标识;是,输出错误信息,然后返回步骤102 ;否,执行步骤120。步骤120:判断第四命令是否符合第三预设条件;是,执行步骤121 ;否,输出错误信息,然后返回步骤103。本实施例中,如果第四命令的数据域长度等于RSA公钥引用所引用的公钥的模长,则第四命令符合第三预设条件。否则,第四命令不符合第三预设条件。步骤121:用RSA公钥引用所引用的公钥对第四命令解密;本实施例中,具体的用RSA公钥引用所引用的公钥对第四命令的数据域采用预设的方式进行解密。步骤122:判断是否成功得到解密结果;是,执行步骤123 ;否,输出错误信息,然后返回步骤103。本实施例中,如果解密结果的第一至第二个字节的取值等于第六预设值,则得到正确的解密结果。优选的,第六预设值为0002。步骤123:判断是否成功获取安全级别的TLV结构;是,执行步骤125 ;否,输出错误信息,然后返回步骤103。本实施例中,从解密结果中获取安全级别TLV结构,根据安全级别的TLV结构的前两个字节的取值判断是否成功获取安全级别的TLV。如果安全级别的TLV结构的前两个字节的取值为D301,则表示成功读取获取安全级别TLV结构;否则,未成功获取安全级别的TLV结构。步骤124:保存安全级别,判断是否能建立会话密钥;是,执行步骤125 ;否,输出错误信息,然后返回步骤103。本实施例中,将安全级别TLV结构的第三个字节的取值保存为安全级别。如果CRT控制引用模板的总标签的取值等于第七预设值,控制引用模板中存在第一 TLV结构,并且存在与第一预设长度相等的第二 TLV结构,则能建立会话密钥;否则,不能建立会话密钥。优选的,第七预设值为B4或B8,第一 TLV结构为TAG的取值等于95的TLV结构,第二 TLV结构为TAG的取值等于Dl的TLV结构,第一预设长度为16。
步骤125:建立会话密钥,并保存会话密钥;本实施例中,根据CRT控制引用模板的总标签的取值建立相应的会话密钥;当CRT控制引用模板的总标签的取值为B4时,如果TAG为95的TLV结构中的Value的取值为10,则建立Dl为TAG的TLV结构数据的第一会话密钥;如果TAG为95的TLV结构中的Value的取值为20,则建立Dl为TAG的TLV结构数据的第二会话密钥;如果TAG为95的TLV结构中的Value的取值为30,则建立Dl为TAG的TLV结构
数据的第一会话密钥、第二会话密钥。如果TAG为95的TLV结构中的Value的的取值满足以上条件之一的,则为成功执行操作,否则为未成功执行操作。当CRT控制引用模板的总标签的取值为B8时,如果TAG为95的TLV结构中的Value的取值为10,则建立Dl为TAG的TLV结构数据的第三会话密钥;如果TAG为95的TLV结构中的Value的取值为20,则建立Dl为TAG的TLV结构数据的第四会话密钥;如果TAG为95的TLV结构中的Value的取值为30,则建立Dl为TAG的TLV结构数据的第三会话密钥、第四会话密钥;如果TAG为95的TLV结构中的Value的取值为CO,则建立Dl为TAG的TLV结构
数据的第五会话密钥。步骤126:判断是否需要设置签名信息;是,执行步骤127 ;否,输出错误信息,然后返回步骤102。本实施例中,如果CRT控制引用模板中存在TAG的取值等于91并且长度等于第二预设长度的第三TLV结构,则需要设置签名信息。优选的,第二预设长度为8。步骤127:设置签名信息,将会话密钥建立标识设置为完成标识,然后返回步骤103 ;本实施例中,将签名信息设置为八个字节的数据,优选的可以为‘0000000000000000,。如果接收到第五命令,则执行步骤128至步骤130。步骤128:判断第五命令是否符合第四预设条件;是,执行步骤129 ;否,输出错误信息,然后返回步骤102。本实施例中,如果会话密钥建立标识为完成标识,则确定第五命令符合第四预设条件;否则,确定第五命令不符合第四预设条件。步骤129:生成第一随机数,保存第一随机数,并将其发送给卡外设备;本实施例中,优选的,第一随机数可以为16个字节的随机数;步骤130:将获取随机数标识设置为完成标识,然后返回步骤103。如果接收到第六命令,则执行步骤131至步骤139。步骤131:判断获取随机数标识是否为完成标识;是,执行步骤132 ;否,输出错误信息,然后返回步骤102。步骤132:构造包含安全级别TLV结构、会话密钥和第一随机数的第一数据块;
步骤133:用第一算法对第一数据块运算,得到第一计算结果;本实施例中,优选的,第一算法可以为SHAl算法。步骤134:构造包含第一计算结果和第一算法的第二数据块;步骤135:从第六命令中读取卡外设备的签名结果,并用RSA公钥引用所引用的公钥和第二数据块对其进行验证;步骤136:判断验证是否成功;是,执行步骤137 ;否,输出错误信息,然后返回步骤102。步骤137:将外部认证标识设置为完成标识;步骤138:判断认证方法标识是否为外部认证标识;是,执行步骤139 ;否,返回步骤103。步骤139:将相互认证标识设置为完成标识,然后返回步骤103 ;如图1-3所示,如果接收到第七命令,则执行步骤140至步骤145。步骤140:从第七命令中读取第二随机数,保存第二随机数,判断第七命令是否符合第五预设条件;是,执行步骤141 ;否,输出错误信息,返回步骤102。本实施例中,读取第七命令的前16个字节为第二随机数。判断第七命令是否同时满足以下条件:I)认证方法标识为外部认证标识;2)外部认证标识为完成标识;如果同时满足上述所有条件,则确定第七命令符合第五预设条件;否则,确定第七命令不符合第五预设条件。步骤141:构造包含会话密钥和第二随机数的第三数据块;步骤142:用第一算法对第三数据块运算,得到第二计算结果;步骤143:构造包含第二计算结果和第一算法的第四数据块;步骤144:用RSA私钥引用所引用的私钥对第四数据块加密,得到第一签名结果,并将其发送给卡外设备;步骤145:将相互认证标识设置为完成标识,清除第一随机数、第二随机数,然后返回步骤103 ;如果为其他命令则执行如下操作:步骤146:判断命令是否符合第六预设条件;是,执行步骤147 ;否,执行相应操作后返回步骤103。本实施例中,如果命令的第一字节的第三位的取值等于预设值,则确定符合第六预设条件;否则,不符合第六预设条件,预设值优选为O。步骤147:判断互相认证标识是否为完成标识;是,执行步骤148 ;否,输出错误信息。步骤148:获取安全级别,并判断如果安全级别指示存在命令消息验证码并且需要数据域加密,则执行步骤149 ;如果安全级别指示只存在命令消息验证码,则执行步骤153 ;如果安全级别指示既不需要数据域加密也不存在命令消息验证码,则执行相应操作,然后返回步骤103 ;
步骤149:从命令中获取命令消息验证码,根据安全级别获取第一会话密钥和第三会话密钥,用第一会话密钥的指定部分对签名信息加密,得到第一加密信息;本实施例中,从命令的指定TLV结构中获取命令消息验证码。第一会话密钥的指定部分为第一会话密钥的前8个字节。步骤150:构造包含第一会话密钥、第一加密信息及命令的第一指定部分的第一数据,作为第一指定算法输入,完成第一数据签名,得到第一数据签名结果;本实施例中,命令的第一指定部分为指定TLV结构之前以及指定TLV结构中的数据。优选的,第一指定算法为IS09797M2_ALG3。步骤151:判断第一数据签名结果是否等于命令消息验证码;是,执行步骤152 ;否,输出错误信息。步骤152:签名信息作为一个整数自增1,修改命令的第二指定部分,用第三会话密钥采用第二指定算法对命令的第三指定部分解密,然后执行相应操作,返回步骤103 ;本实施例中,第二指定部分为命令的数据域长度值。优选的,第二指定算法为IS09797M2。例如,对命令的数据域中87L01XX中的数据解密。步骤153:从命令中获取命令消息验证码,根据安全级别获取第一会话密钥,用第一会话密钥的指定部分对签名信息加密,得到第二加密信息;步骤154:构造包含第一会话密钥、第二加密信息及命令的第一指定部分的第二数据,作为第一指定算法的输入,完成对第二数据签名,得到第二数据签名结果;步骤155:判断第二数据签名结果是否等于命令消息验证码;是,执行步骤156 ;否,输出错误信息。步骤156:签名信息作为一个整数自增1,修改命令的第二指定部分,然后执行相应操作。需要说明的是,本发明实施方式中,将步骤118-步骤127替换为:输出错误信息,然后返回步骤102 ;步骤128替换为步骤128’,步骤131-步骤134替换为步骤131’-步骤134’,将步骤135-步骤139替换为:将会话密钥建立标识和获取随机数标识均设为完成标识,然后返回步骤103 ;步骤140-步骤141替换为步骤140’ -步骤141’,步骤143替换为步骤143’ ;步骤128’:判断安全环境管理标识和证书认证标识,如果安全环境管理标识为未完成标识,并且证书认证标识为需要认证标识,则报错,否则执行步骤129至步骤130 ;步骤131’:判断第六命令是否符合预设条件;具体的可以判断是否满足以下条件:获取随机数标识为完成标识,成功验证用RSA公钥所引用的公钥对第六命令的数据域进行解密得到的解密结果;是,继续执行;否则报错返回步骤102。步骤132’:从解密结果中获取安全级别,生成卡片保密数据,其中,卡片保密数据可以为32字节的随机数。步骤133’:判断解密结果的CRT控制引用模板,如果符合预设要求,其中,预设要求为CRT的总TAG为0xB4或0xB8,下一个TLV是9501XX,存在TLV是80LXX,其中L的取值为O或1,存在TLV是D1LXX,其中L的取值为0,存在TLV是91LXX,其中,L的取值为O ;继续执行;否则,输出错误信息,然后返回步骤102。步骤134’:获取并保存卡外设备保密数据,根据卡片保密数据和卡外设备保密数据生成会话密钥,将卡外设备保密数据、卡片保密数据的前4个字节拼接,拼接结果保存为签名信息。本实施例中,根据卡片保密数据和卡外设备保密数据生成会话密钥具体包括,卡外设备保密数据与卡片保密数据异或运算,得到异或运算结果,然后根据需要生成的会话密钥类型设置32个字节的计数值,将异或运算结果与计数值顺序拼接,拼接结果作SHAl计算,得到第三计算结果,获取第三计算结果的前16个字节,将其保存为会话密钥。当计数值设置为I时,对应生成的会话密钥为第一会话密钥;当计数值设置为2时,对应生成的会话密钥为第二会话密钥;当计数值设置为3时,对应生成的会话密钥为第三会话密钥;当计数值设置为4时,对应生成的会话密钥为第四会话密钥;当计数值设置为5时,对应生成的会话密钥为第五会话密钥;步骤140’:判断是否满足会话密钥建立标识为完成标识和获取随机数标识为完成标识,是,继续执行;否,报错,返回步骤102。步骤141’:从第七命令中获取第七命令数据域,构造包含卡片保密数据、第七命令数据域的第三数据块,然后执行步骤142 ;步骤143’:构造包含卡片保密数据、第二计算结果的第四数据块,然后执行步骤144-步骤145。以上实施方式同样可以实现本发明的发明目的。以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种智能卡安全通讯的方法,其特征在于,包括, S1:智能卡上电; 52:设置安全标识和安全变量; 53:等待接收命令,并判断收到的命令的类型; 如是第一命令,则将认证方法标识设置为外部认证标识或相互认证标识,然后将证书认证标识置位,获取RSA公钥引用和RSA私钥引用,将安全环境管理标识置位,返回S3 ; 如是第二命令,则判断是否同时满足所述安全环境管理标识置位和所述证书认证标识置位,是则验证证书,将证书验证标识置位,返回S3 ;否则报错,返回S2 ; 如是第三命令,则判断所述证书验证标识是否置位,是则向卡外设备发送证书,然后返回S3;否则报错,返回S2; 如是第四命令,则执行S4 ;如是第五命令,则执行S5 ;如是第六命令,则执行S6 ;如是第七命令,则执行S7 ; 如是其他命令,则判断该命令是否符合预设条件,是,则根据安全级别和会话密钥对命令进行验证,验证成功后执行相应操作,然后返回S3 ;否则报错; 54:判断是否同时满足所述安全环境管理标识未置位和所述证书认证标识置位,是则报错,返回S2 ;否则,用所述RSA公钥引用所引用的公钥对所述第四命令解密,得到解密结果,从所述解密结果中获取安全级别TLV结构,保存安全级别,建立会话密钥,保存所述会话密钥,设置签名信息,将会话密钥建立标识置位,返回S3 ; 55:判断是否满足所述会话密钥建立标识置位,是则生成第一随机数,保存第一随机数,并将其发送给卡外设备,然后将获取随机数标识置位,返回S3 ;否则报错,返回S2 ; 56:判断所述获取随机数标识是否置位,否则报错,返回步骤S2 ;是则构造包含所述安全级别TLV结构、所述会话密钥、所述第一随机数的第一数据块,用第一算法对所述第一数据块进行计算,得到第一计算结果,构造包含所述第一计算结果和第一算法的第二数据块,从所述第六命令中读取卡外设备的签名结果,用所述RSA公钥引用所引用的公钥、所述第二数据块对其进行验证,如果验证成功则将外部认证标识置位,判断认证方法标识是否为外部认证标识,是则将相互认证标识置位,返回S3,否则返回S3 ;如果验证未成功,则报错,返回S2 ; 57:从第七命令中获取第二随机数,保存第二随机数,判断是否同时满足所述认证方法标识为所述外部认证标识并且所述外部认证标识置位,是则构造包含所述会话密钥和所述第二随机数的第三数据块,用第一算法对所述第三数据块进行计算,得到第二计算结果,构造包含所述第二计算结果和第一算法的第四数据块,用所述RSA私钥引用所引用的私钥加密所述第四数据块,得到的加密结果为第一签名结果,将所述第一签名结果发送给卡外设备,将相互认证标识置位,清除所述第一随机数和所述第二随机数,然后返回S3 ;否则返回S2。
2.按权利要求1所述的方法,其特征在于, 所述设置安全标识,具体包括,安全环境管理标识复位,会话安全标识设置为没有安全级别,证书验证标识复位,获取随机数标识复位,会话密钥建立标识复位,外部认证标识复位,相互认证标识复位;所述设置安全变量,具体包括,RSA公钥引用设置为默认的RSA公钥引用;RSA私钥引用设置为默认的RSA私钥引用;第一会话密钥、第二会话密钥、第三会话密钥、第四会话密钥、第五会话密钥分别设置为默认值。
3.按权利要求1所述的方法,其特征在于, 所述将认证方法标识设置为外部认证标识或相互认证标识,具体包括,根据第一命令的第一预设字节的取值设置认证方法标识,当第一命令的第一预设字节的取值为第一预设值时,将认证方法标识设置为外部认证标识;当第一命令的第一预设字节的取值为第二预设值时,将认证方法标识设置为相互认证标识; 所述将证书认证标识置位,具体包括,根据第一命令的第三预设字节的取值设置证书认证标识,当第三预设字节的取值等于第三预设值时,将证书认证标识复位;当第三预设字节的取值等于第四预设值时,将证书认证标识置位; 所述获取RSA公钥引用和RSA私钥引用,具体包括, 步骤al:判断第一命令的数据域中的第一个TLV结构是否符合第一预设结构; 是则执行步骤a2 ;否则报错,然后返回S2 ; 步骤a2:判断所述数据域中是否存在符合第二预设结构的TLV结构; 是则获取并保存RSA公钥引用;否则报错,然后返回S2 ; 步骤a3:判断所述数据域中是否存在符合第三预设结构的TLV结构; 是则获取并保存RSA私钥引用;否则报错,然后返回S2。
4.按权利要求3所述的方法,其特征在于, 所述获取并保存RSA公钥引用,具体包括,根据第二预设结构的取值获取并保存RSA公钥引用,当第二预设结构的取值为第一结构值时,则获取第一结构值的最后两个字节,并将其保存为RSA公钥引用;当第二预设结构的取值为第二结构值时,则卡片使用默认的RSA公钥引用; 所述获取并保存RSA私钥引用,具体包括,根据第三预设结构的取值获取RSA私钥引用,当第三预设结构的取值为第三结构值时,则获取第三结构值的最后两个字节,并将其保存为RSA私钥引用;当第三预设结构的取值为第四结构值时,则卡片使用默认的RSA私钥引用。
5.按权利要求1所述的方法,其特征在于, 所述判断是否同时满足所述安全环境管理标识置位和所述证书认证标识置位之后包括:判断所述第二命令是否符合第一条件,是则用所述RSA公钥引用所引用的公钥验证证书,判断是否存在需要验证的证书,存在,则返回S2,不存在,则将证书验证标识置位,返回S3;否则报错,返回S2。
6.按权利要求5所述的方法,其特征在于, 所述第二命令符合第一条件,具体包括,所述第二命令的指定部分的取值等于第五预设值; 所述判断是否存在需要验证的证书,具体包括,根据第二命令第一字节的第五位的取值判断是否存在需要验证的证书;如果第二命令第一字节的第五位的取值为第九预设值,则不存在需要验证的证书,如果第二命令第一字节的第五位的取值不为第九预设值,则存在需要验证的证书。
7.按权利要求1所述的方法,其特征在于, 所述用所述RSA公钥引用所引用的公钥对第四命令解密之前还包括,判断是否满足第四命令数据域长度等于所述RSA公钥引用所引用的公钥的模长,是则用所述RSA公钥引用所引用的公钥对第四命令解密;否则报错,返回S3 ; 所述保存安全级别之后所述建立会话密钥之前,还包括,判断是否能建立会话密钥,是则建立会话密钥,否则报错,返回S3。
8.按权利要求7所述的方法,其特征在于,所述判断是否能建立会话密钥,具体包括, 判断是否同时满足控制引用模板的总标签的取值等于第七预设值和控制引用模板中存在第一 TLV结构,并且存在与第一预设长度相等的第二 TLV结构,是则能建立会话密钥;否则不能建立会话密钥;所述第七预设值为第一标签或第二标签; 所述建立会话密钥具体包括,根据控制引用模板的总标签的取值建立相应的会话密钥,当控制引用模板的总标签的取值为第一标签时, 如果TAG为95的TLV结构中的Value的取值为第一数值,则建立第一会话密钥; 如果TAG为95的TLV结构中的Value的取值为第二数值,则建立第二会话密钥; 如果TAG为95的TLV结构中的Value的取值为第三数值,则建立第一会话密钥、第二会话密钥; 当控制引用模板的总标签的取值为第二标签时, 如果TAG为95的TLV结构中的Value的取值为第一数值,则建立第三会话密钥; 如果TAG为95的TLV结构中的Value的取值为第二数值,则建立第四会话密钥; 如果TAG为95的TLV结构中的Value的取值为第三数值,则建立第三会话密钥、第四会话密钥; 如果TAG为95的TLV结构中的Value的取值为第四数值,则建立第五会话密钥; 所述保存所述会话密钥之后设置签名信息之前,还包括, 判断是否需要设置签名信息,是则设置签名,否则报错返回S2。
9.按权利要求8所述的方法,其特征在于, 所述判断是否能建立会话密钥,具体为, 判断是否同时满足控制引用模板的总标签的取值等于第七预设值和所述控制引用模板中存在第一 TLV结构,并且存在长度与第一预设长度相等的第二 TLV结构,是则能建立会话密钥,否则不能建立会话密钥; 所述判断是否需要设置签名信息,具体为, 判断控制引用模板中是否存在TAG的取值等于第八预设值,并且长度等于第二预设长度的第三TLV结构,是则需要设置签名信息;否则不需要设置签名信息。
10.按权利要求1所述的方法,其特征在于,所述S4-S7替换为,S4’-S7’, S4’:报错,返回S2; S5’:判断是否满足所述安全环境管理标识未置位和所述证书认证标识置位,是则报错,返回S2 ;否则生成第一随机数,保存第一随机数,并将其发送给卡外设备,然后将获取随机数标识置位,返回S3; S6’:判断是否同时满足所述获取随机数标识置位和成功验证用所述RSA公钥引用所引用的公钥对第六命令的数据域进 行解密得到的解密结果;否则报错,返回S2 ;是则从所述解密结果中获取安全级别,生成卡片保密数据,判断所述解密结果的控制引用模板是否符合预设要求,如果符合预设要求,则获取并保存卡外设备保密数据,根据所述卡片保密数据和所述卡外设备保密数据生成会话密钥,根据所述卡外设备保密数据的指定字节和所述卡片保密数据的指定字节生成签名信息,将会话密钥建立标识置位,将获取随机数标识置位;如果不符合预设要求,则报错,返回S2 ; S7’:从第七命令中获取第二随机数,保存第二随机数,判断是否同时满足所述会话密钥建立标识置位和所述获取随机数标识置位,否则返回S2 ;是则从第七命令中获取第七命令数据域,构造包含所述卡片保密数据、第七命令数据域的第三数据块,用第一算法对所述第三数据块进行计算,计算的结果为第二计算结果,构造包含所述卡片保密数据、所述第二计算结果的第四数据块,用所述RSA私钥引用所引用的私钥加密所述第四数据块,得到的加密结果为第一签名结果,将所述第一签名结果发送给卡外设备,将相互认证标识置位,清除所述第一随机数和所述第二随机数,然后返回S3。
11.按权利要求10所述的方法,其特征在于, 所述根据所述卡片保密数据和所述卡外设备保密数据生成会话密钥,具体包括,所述卡外设备保密数据与所述卡片保密数据异或运算,得到异或运算结果,然后根据需要生成的会话密钥类型设置相应的计数值,将异或运算结果与所述计数值顺序拼接,拼接结果用第一算法计算, 得到第三计算结果,获取所述第三计算结果中的预设字节数据,将其保存为会话密钥。
全文摘要
本发明公开一种智能卡安全通讯的方法,涉及信息安全领域。可解决通讯数据被监听或截取的问题。采用本发明的方法,能够为卡片提供一定保障的安全通信机制,通过发起一个会话,通讯双方互相认证,确定对方身份的合法性和通讯数据的完整性,并为后续的通讯提供安全约束,从而提高了通讯的安全性。
文档编号H04L9/08GK103095460SQ20131002354
公开日2013年5月8日 申请日期2013年1月22日 优先权日2013年1月22日
发明者陆舟, 于华章 申请人:飞天诚信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1