T∕TAF 333-2026 基于SIM卡的GBA-U派生密钥API技术要求_第1页
T∕TAF 333-2026 基于SIM卡的GBA-U派生密钥API技术要求_第2页
T∕TAF 333-2026 基于SIM卡的GBA-U派生密钥API技术要求_第3页
T∕TAF 333-2026 基于SIM卡的GBA-U派生密钥API技术要求_第4页
T∕TAF 333-2026 基于SIM卡的GBA-U派生密钥API技术要求_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电信终端产业协会发布1 2 3 3 3 3 4 4 4 13 24 26 27 29 30 312请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。华弘集成电路设计有限责任公司、中国信息通3基于SIM卡的GBA_U派生密钥API技术要求3GPPTS31.102USIM应用特性(Characteris3GPPTS33.220通用认证架构(GAA通用引导(GenericAuthenticationArchitecture4缩略语ADF:应用专用文件(ApplicationDedicatedFile)AID:应用标识符(ApplicationIdentifier)API:应用程序接口(ApplicationProgrammingInterface)BSF:引导服务器功能(BootstrappingServerFunctiCOS:用户卡操作系统(ChipOperationSGBA:通用引导架构(GenericBootstrappingArchiteGBA_U:基于UICC的GBA(GenericBootstrappingArchitectureISIM:IP多媒体服务身份模块(IMServicesNAF:网络应用功能(NetworkApplicationFunctiSIM:移动网络用户身份模块(SubscriberIdentifierUICC:通用集成电路卡(UniversalIntegratedCircuitCar4USIM:通用用户识别模块(UniversalSubscriberIdentityModule)5概述GBA_UAPI在SIM卡中的位置如图1所示,位于SIM卡COS层的USIMAPI中,为基于GBA_U鉴权能力的密钥Ks_int_NAF为基础定义的密码服务接口,可为SIM卡上的应用(即applet)提供数据加解密、数字签名及验证等各类密码运算服务,密钥派生过程参见附录A,其package对应的AID见附录getInstance(bytealgorithm,booleanextgetInstance(bytecipherA使用NAFID以及对应的Ks_int_NAF密钥初5使用init方法指定的NAFID及关联的Ks_int_NAF密钥,对所有输入数据执行加使用GBAUCipher类进行加密/解密操作首先使用getInstance()方法创建实例,再调用init()方法进行初始化操作,指定NAFID以及对应publicstaticGBAUCiphergetInstance(bytealgorithm,booleanexternalAcc若请求的算法不支持,则抛出CryptoException.NO_SUCH_ALGORbooleanexternalAccescipherAlgorithm:加密算法,例如CIPHE6paddingAlgorithm:填充算法,例如PAD_NUL分配CLEAR_ON_AESELECT类型若请求的算法不支持,则抛出CryptoException.NO_SUCH_ALGObyte[]nafID,shortnafIDO——AES-128:使用256位Ks_int_NAF密钥的左侧128个最高——AES-192:使用256位Ks_int_NAF密钥的左侧192个最高——KoreanSEED:使用256位Ks_int_NAF密钥的左侧128个——SM4:使用256位Ks_int_若使用此方法初始化CBC模式的AES、KoreanSEED或SM4算法,初始向量(I为优化性能,当Ks_int_NAF密钥为瞬态密钥时,实现应尽可能使用瞬态空间adfAIDOff:adfAID数组中ADFAID值nafIDOff:nafID数组中NAFID值的起始nafIDLen:NAFID值的字节——GBA_U_BOOTSTRAP_NOT_DONE:Ks_int_NAF不可用(如GBA_U引——GBA_U_NAF_DERIVATION_NOT_DONE:Ks_int_NAF不可用(如GBA_UNAF的派生流);——GBA_U_UNALLOWED_ACCESS:卡应用无权使7——GBA_U_INCORRECT_NAF_ID:若卡应用提供的NAFID未在其访问条件——GBA_U_INCORRECT_ADF_AID:若卡应用提出现下述异常情况时,抛出javacard.security.Cry——CryptoException.ILLEGAL_USE:若theMode参数为——NullPointerException:若adfAID或naf——ArrayIndexOutOfBoundsException:若对adfAID或nafID的检查操作导致访问使用NAFID以及对应的Ks_int_NAF密钥和特定算法初始化GBAUCibyte[]nafID,shortnafIDOff,shortnafIDLen,——SM4:使用256位Ks_int_——AES(CBC模式需要在bArray参数中提供16字节的初始向量(IV);——KoreanSEED(CBC模式需要在bArray参数中提供16字节的初始向量(IV);——SM4(CBC模式需要在bArray参数中提供16字节的初始向量(IV)。CryptoException.ILLEGAL_VALadfAIDOff:adfAID数组中ADFAID值nafIDOff:nafID数组中NAFID值的起始nafIDLen:NAFID值的字节bArray:包含特定算法初始化信息的字节数组。bOff:bArray数组中特定算法的数据的起始偏移量。8——GBA_U_BOOTSTRAP_NOT_DONE:Ks_int_NAF不可用(如GBA_U引——GBA_U_NAF_DERIVATION_NOT_DONE:Ks_int_NAF不可用(如GBA_UNAF的派生流);——GBA_U_UNALLOWED_ACCESS:卡应用无权使——GBA_U_INCORRECT_NAF_ID:若卡应用提供的NAFID未在其访问条件——GBA_U_INCORRECT_ADF_AID:若卡应用提出现下述异常情况时,抛出javacard.security.Cry——CryptoException.ILLEGAL_USE:若theMode参数为——ArrayIndexOutOfBoundsException:若对adfAID或nafID或bArray的检查操作导致访问数组越byte[]nafID,shortnafIDOff,shortn——AES-128:使用256位Ks_int_NAF密钥的左侧128个最高——AES-192:使用256位Ks_int_NAF密钥的左侧192个最高——KoreanSEED:使用256位Ks_int_NAF密钥的左侧128个——SM4:使用256位Ks_int_NAF密钥的左侧128个最高若使用此方法初始化CBC模式的AES、KoreanSEED或SM4算法,初始向量(IV)为优化性能,当Ks_int_NAF密钥为瞬态密钥时,实现应尽可能使用瞬态空间adfAIDOff:adfAID数组中ADFAID值nafIDOff:nafID数组中NAFID值的起始nafIDLen:NAFID值的字节keyLength:密钥长度-密钥的位数。有效的密钥位数长度取决于密钥类型。——GBA_U_BOOTSTRAP_NOT_DONE:Ks_int_NAF不可用(如GBA_U引9——GBA_U_NAF_DERIVATION_NOT_DONE:Ks_int_NAF不可用(如GBA_UNAF的派生流);——GBA_U_UNALLOWED_ACCESS:卡应用无权使——GBA_U_INCORRECT_NAF_ID:若卡应用提供的NAFID未在其访问条件——GBA_U_INCORRECT_ADF_AID:若卡应用提出现下述异常情况时,抛出javacard.security.Cry——NullPointerException:若adfAID或naf——ArrayIndexOutOfBoundsException:若对adfAID或nafID的检查操作导致访问使用NAFID以及对应的Ks_int_NAF密钥和特定算法初始化GBAUCi——SM4:使用256位Ks_int_——AES(CBC模式需要在bArray参数中提供16字节的初始向量(IV);——KoreanSEED(CBC模式需要在bArray参数中提供16字节的初始向量(IV);——SM4(CBC模式需要在bArray参数中提供16字节的初始向量(IV)。CryptoException.ILLEGAL_VALadfAIDOff:adfAID数组中ADFAID值nafIDOff:nafID数组中NAFID值的起始nafIDLen:NAFID值的字节bArray:包含特定算法初始化信息的字节数组。bOff:bArray数组中特定算法的数据的起始偏移量。keyLength:密钥长度-密钥的位数。有效的密钥位数长度取决于密钥类型。——GBA_U_BOOTSTRAP_NOT_DONE:Ks_int_NAF不可用(如GBA_U引——GBA_U_NAF_DERIVATION_NOT_DONE:Ks_int_NAF不可用(如GBA_UNAF的派生流);——GBA_U_UNALLOWED_ACCESS:卡应用无权使用API(访问条件详见——GBA_U_INCORRECT_NAF_ID:若卡应用提供的NAFID未在其访问条件中定义(访问条件详见第7);——GBA_U_INCORRECT_ADF_AID:若卡应用提供的ADFAID不支持GB)出现下述异常情况时,抛出javacard.security.Cry)——NullPointerException:若adfAID或nafID或bAr——ArrayIndexOutOfBoundsException:若对adfAID或nafID或bArray的检查操作导致访问数组越输入更多数据,使用init方法指定的与NAFID及关联的Ks_int_NAF密钥进仅当密码算法所需的所有输入数据不能一次性提供在一个字节数组中时,才应使用此方法。若所有输入数据位于单个字节数组中,建议使用doFinal()方法一次性处理必须调用doFinal方法来完成对通过一次或多次调用update方法缓冲的剩输入数据未按块对齐时,不允许输入与输出缓冲区有任何重叠。例如,若inBuff==outBuff且outOffset<inOffset+inLength,解密操作(ISO9797方法1填充除外):填充加密/解密操作:块对齐要求可能导致输出字节数大于、小于输入长度(),outBuff:输出缓冲区,可与输入缓javacard.security.CryptoEx——CryptoException.UNINITI——CryptoException.INVAL——CryptoException.ILLEGAL_——ArrayIndexOutOfBoundsException:若对inBuff或outBuff的检查导致数组使用init方法指定的NAFID及关联的Ks_int_NAF密钥,对所有输入数据执行调用该方法后,GBAUCipher对象会被重置为上一次通过init()方法初始化时的状态,可立即用于加密或解密更多数据。AES、KoreanSEED和SM4算法使用的初始向量(IV)若输入缓冲区inBuff与输出缓冲区outBuff为同一数组,输出数据区域不得与输入数据区域部分重叠(即输入数据在使用前不能被修改)。例如:若inBuff==outBuff且inOffset<outOffset<inOffset+inLength,可输入数据未按块对齐时,输入与输出缓冲区不允许任何重叠。例如:若inBuff==outBuff且outOffset<inOffset+inLength,可能导致输算法状态与初始向量(IV)说明如下:):——解密操作(ISO9797方法1填充除外):填充字节不——解密操作若抛出ArrayIndexOutOfBoundsException,outBuff可能已outBuff:输出缓冲区,可与输入缓javacard.security.CryptoEx——CryptoException.UNINITIALIZED_KEY:若Ks_int_NAF密钥——CryptoException.INVALID_INIT:若GBAUCipher对象——CryptoException.ILLEGA•此GBAUCipher算法不填充消息且未通——ArrayIndexOutOfBoundsExceppublicabstractbytegetAlgorit返回算法代码,如果该算法不属于预定义算法之一,则publicabstractbytegetCipherAlgorit返回原始算法代码,如果该算法不属于预定义算法之一,则publicabstractbytegetPaddingAlgorit返回填充算法代码,如果该算法不属于预定义算法之一,则GBAUSignature类是签名算法的基类。Signature算法staticfinalbyteALG_HMAC_SM3HMAC消息认证算法ALG_HMAC_SM3,此算法使用SM3作为哈希算法,按照RFC:2104中的步骤publicstaticGBAUSignaturegetInstance(bytealgorithm,booleanexternalAccexternalAccess:若为true,表示该实例可在多个卡应用实例间共享,且当GBAUSignature实例数据分配CLEAR_ON_DESELECT若请求的算法不支持,则抛出CryptoException.NO_SUCH_ALGOR使用所选的消息摘要算法、加密算法和填充算法创cipherAlgorithm,bytepaddingAlgorithm,booleanext在该类中仅使用在GBA_U过程中生成的内部Ks_int_NAF密钥(参见3GPPTS31.10233.220)。Ks_int_NAF密钥为256messageDigestAlgoricipherAlgorithm:指定的加密算法,如SIG_CIPHER_paddingAlgorithm:指定的填充算externalAccess:若为true,表示该实例可在多个卡应用实例间共享,且当GBAUSignature实例数据分配CLEAR_ON_DESELECT若请求的算法不支持,则抛出CryptoException.NO_SUCH_ALGOR使用NAFID以及对应的Ks_int_NAF密钥初始化GBAUSignature对象,该方法适用于不需要初始化参adfAIDLen,byte[]nafID,shortnafIDOff,shortnaadfAIDOff:adfAID数组中ADFAID值nafIDOff:nafID数组中NAFID值的起始nafIDLen:NAFID值的字节——GBA_U_BOOTSTRAP_NOT_DONE:Ks_int_NAF不可用(如GBA_U引——GBA_U_NAF_DERIVATION_NOT_DONE:Ks_int_NAF不可用(如GBA_UNAF的派生流);——GBA_U_UNALLOWED_ACCESS:卡应用无权使用API(访问条件详——GBA_U_INCORRECT_NAF_ID:若卡应用提供的NAFID未在其访问条件中定义(访问条件详见第7);——GBA_U_INCORRECT_ADF_AID:若卡应用提供的ADFAID不支持GBCryptoException.ILLEGAL_USE,对应的——密钥长度与getInstance()函数中定义的算法抛出NullPointerException:若adfAID或na抛出ArrayIndexOutOfBoundsExceptio——检查nafIDOff或nafIDLen时,访问超出nafID数组adfAIDLen,byte[]nafID,shortnafIDOff,shortnafIDLen,shortkeyadfAIDOff:adfAID数组中ADFAID值nafIDOff:nafID数组中NAFID值的起始nafIDLen:NAFID值的字节keyLength:密钥长度-密钥的位数。有效的密钥位数长度取决于密钥类型。——GBA_U_BOOTSTRAP_NOT_DONE:Ks_int_NAF不可用(如GBA_U引——GBA_U_NAF_DERIVATION_NOT_DONE:Ks_int_NAF不可用(如GBA_UNAF的派生流);——GBA_U_UNALLOWED_ACCESS:卡应用无权使用API(访问条件详——GBA_U_INCORRECT_NAF_ID:若卡应用提供的NAFID未在其访问条件中定义(访问条件详见第7——GBA_U_INCORRECT_ADF_AID:若卡应用提抛出NullPointerException:若adfAID或na——检查nafIDOff或nafIDLen时,访问超出nafID数组使用NAFID以及对应的Ks_int_NAF密钥和特定算法初始化GBAUCiadfAIDLen,byte[]nafID,shortnafIDOff,shortnafIDLen,byte[]bArray,shortbOff,shoadfAIDOff:adfAID数组中ADFAID值nafIDOff:nafID数组中NAFID值的起始nafIDLen:NAFID值的字节bArray:包含特定算法初始化信息的字节数组。bOff:bArray数组中特定算法的数据的起始偏移量。——GBA_U_BOOTSTRAP_NOT_DONE:Ks_int_NAF不可用(如GBA_U引——GBA_U_NAF_DERIVATION_NOT_DONE:Ks_int_NAF不可用(如GBA_UNAF的派生流);——GBA_U_UNALLOWED_ACCESS:卡应用无权使用API(访问条件详——GBA_U_INCORRECT_NAF_ID:若卡应用提供的NAFID未在其访问条件中定义(访问条件详见第7);——GBA_U_INCORRECT_ADF_AID:若卡应用提供的ADFAID不支持GBCryptoException.ILLEGAL_USE,对应的——密钥长度与getInstance()函数中定义的算法抛出NullPointerException:若adfAID或na——检查nafIDOff或nafIDLen时,访问超出nafID数组——检查bOff或bLen时,访问超出bArray数组使用NAFID以及对应的Ks_int_NAF密钥和特定算法初始化GBAUCiadfAIDLen,byte[]nafID,shortnafIDOff,shortnafIDLadfAIDOff:adfAID数组中ADFAID值nafIDOff:nafID数组中NAFID值的起始nafIDLen:NAFID值的字节bArray:包含特定算法初始化信息的字节数组。bOff:bArray数组中特定算法的数据的起始偏移量。keyLength:密钥长度-密钥的位数。有效的密钥位数长度取决于密钥类型。——GBA_U_BOOTSTRAP_NOT_DONE:Ks_int_NAF不可用(如GBA_U引——GBA_U_NAF_DERIVATION_NOT_DONE:Ks_int_NAF不可用(如GBA_UNAF的派生流);——GBA_U_UNALLOWED_ACCESS:卡应用无权使用API(访问条件详——GBA_U_INCORRECT_NAF_ID:若卡应用提供的NAFID未在其访问条件中定义(访问条件详见第7);——GBA_U_INCORRECT_ADF_AID:若卡应用提供的ADFAID不支持GBCryptoException.ILLEGAL_USE,对应的NullPointerException:若adfAID或nafID为空。——检查nafIDOff或nafIDLen时,访问超出nafID数组——检查bOff或bLen时,访问超出bArray数组使用init()方法所使用的NAFID关联的Kpublicabstractvoi仅当签名/验签所需的所有输入数据不能一次性提供在若所有输入数据位于单个字节数组中,建议使用sign()或verifyjavacard.security.CryptoEx——CryptoException.UNINITI——CryptoException.INVAL——CryptoException.ILLEGAL_——ArrayIndexOutOfBoundsException:若对inBuff的检查导致数组使用init方法指定的NAFID及关联的Ks_int_NAF密钥,对所有/最后输入数据他消息进行签名使用。在CBC模式下使用AES时所使用的初始向量(IV)将除返回结果,此方法还会将结果设置到内部状态中,如果平台支持的话,可以通过javacardx.security.SensitiveResult类的sigOffset:在sigBuff中开始存——CryptoException.UNINITIALIZED_KEY:若Ks_int_NAF密钥——CryptoException.INVA——ArrayIndexOutOfBoundsException:inOffset或inLength的检查操作导致访问超出inBuff数——ArrayIndexOutOfBoundsException:sigOffset检使用init方法指定的NAFID及关联的Ks_int_NsigBuff,shortsigOffset,他消息进行签名数据验证使用。在CBC模式下使用AES时所使用的初始向量(IV)将sigOffset:在sigBuff中开始存——CryptoException.UNINITIALIZED_KEY:若Ks_int_NAF密钥——CryptoException.INVA•如果GBAUSignature算法未对消息进行填充,且在inBuff中未提供输入数据,也未通过•如果消息值不被GBAUSignat——ArrayIndexOutOfBoundsException:sigOffset检该方法会直接在初始化起始哈希值,而非使用GBAUSignature类所采用的默认值。起始哈希值代表initialDigestOffset,shortinitialDigestLength,byte[]digestedMsgLenBuf,shortdigestedMsgLenOffset,shortdigestedM该方法在底层签名算法在应用加密原语之前未计算出独特的消息摘要值时会抛出异常。AES、HMACinitialDigestOffset:将数据偏移至初始摘要缓冲digestedMsgLenBuf:包含消息第一部分中字节数的字节数组,该部分已先进行哈希处理以获取指开始的字节(共digestedMsgLenLength个字节)——CryptoException.UNINITIALIZED_KEY:若Ks_int_NAF密钥——CryptoException.INVA——返回CryptoException.ILLEGAL•如果消息中先前已进行哈希处理的部分中的字节数为0或者不调用此方法还会将GBAUSignature对象重置为其先前通过调用init()方法初始化时的状态,并可再该方法在底层签名算法在应用加密原语之前未计算出独特的消息摘要值时会抛出异常。AES、HMAC除返回结果外,该方法还会将结果设置到内部状态中,如果平台支持的话,可以使用javacardx.security.SensitiveResult类的hashBuff:用于签名的预计算哈希值的输入缓冲hashOffset:哈希值在缓冲区中的起始位置偏移——CryptoException.UNINITIALIZED_KEY:若Ks_int_NAF密钥——CryptoException.INVA•如果GBAUSignature算法6.2.13verifyPreCom调用此方法还会将GBAUSignature对象重置为其先前通过调用init()方法初始化时的状态,并可再AES和KOREANSEED算法的CBC模式中使用的初始向量(IV)将被重置为0。如果平台支持的话,可以通过SensitihashBuff:用于签名的预计算哈希值的输入缓冲hashOffset:哈希值在缓冲区中的起始位置偏移——CryptoException.UNINITIALIZED_KEY:若Ks_int_NAF密钥——CryptoException.INVA•如果GBAUSignature算法获取签名算法。从javacard.security.Signature类的ALG_*常量中列出的预定义代码,例如ALG_AES_MAC4_NOPAD。publicabstractbytegetAlgoritpublicabstractbytegetCipherAlgoritpublicabstractbytegetPaddingAlgorit6.2.17getMessageDigpublicabstractbytegetMessageDigestAlgor消息摘要算法代码在javacard.security.MessageDigest类中定义;如果所使用的算法并非预定——CryptoException.UNINITIALIZED_KEY:若Ks_int_NAF密钥——CryptoException.INVALID_INIT:若6.3GBAUExceptionGBAUException类定义GBAUCipher和GBAUSignature类在出现异常情况时抛出特定该原因码(=1)用于指示因GBA引导流程(GBA该原因码(=4)用于指示因卡应用请求使用的GBA_U_NAF_DERIVATION_N该原因码(=2)用于指示因GBANAF抛出带有指定原因的GBAUException类的JCREGBA_U_NAF_DERIVATION_NpublicstaticfinalshortGBA_U_NAF_DERIVATI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论