国密算法在国际旅行证件中的应用探讨
2020-07-22李景华葛利军
李景华 葛利军
1.公安部第一研究所 2.北京市微技术研究所
引言
密码算法是保障信息安全的核心技术。长期以来,我国政府、金融、银行、公安等多个重点行业领域都是沿用3DES、RSA等国际通用的密码算法体系及相关标准。然而,“棱镜门”事件的爆发意味着这些国外密码算法并不安全,继续使用国外密码算法将会带来巨大的安全隐患。我国自2010年起相继发布了SM1、SM2、SM3、SM4、SM7、SM9、祖冲之算法等多种国密算法标准和规范,目前大多数国密算法在国内金融、银行等多个行业得到深入广泛的应用。2018年,国密算法SM2、SM3和SM9先后被纳入ISO/IEC国际标准并正式发布,标志着我国密码算法国际标准体系已基本成型。
国际旅行证件是公民出入国(境)和在国(境)外旅行时用于证明其国籍和身份的重要证件,其重要性不言而喻。开展国密算法在国际旅行证件应用中的研究,实现出入境领域密码算法的“自主可控”,已成为国际旅行证件应用发展的必然趋势。
一、技术规范要求
为确保国际旅行证件的全球互用性,国际民航组织(ICAO,International Civil Aviation Organization)发布了Doc 9303技术规范,要求世界各国参照规范进行实施。Doc 9303规范对国际旅行证件在物理防伪、生物特征、数字安全等多方面均提出了明确的技术要求,其中数字安全技术主要通过安全机制、密码算法和协议来保证证件芯片及芯片内电子数据的安全。
Doc 9303规范建议的安全机制包括基本访问控制、口令认证连接确立、主动认证、芯片认证、被动认证等七种,主要用于防止证件芯片被非法访问和防止隐私泄露、防止芯片被替换、防电子数据被伪造或变造等。这七种安全机制中,仅被动认证属于Doc 9303规范强制要求,其他安全机制均属于可选要求。
Doc 9303规范建议安全机制采用的密码算法全部都是国际上成熟通用的商用密码算法。这些密码算法分为四类:(1)对称密码算法:3DES、AES;(2)非对称密码算法:RSA、ECDSA、DSA;(3)摘要算法:SHA-224、SHA-256、SHA-384、SHA-512;(4)密钥交换协议:DH、ECDH。
不难发现,Doc 9303规范在安全机制及密码算法的实现方面保留了足够的灵活性,允许用户根据自身的安全需求选择一种或多种安全机制实现,每一种安全机制可以从建议的多种密码算法中选择一种实现。还可以看到,国密算法目前并不在最新的Doc 9303规范建议的密码算法之列。但是,随着我国国际地位的提高和我国密码算法国际标准体系的逐渐完善,国密算法应用于国际旅行证件已不再遥不可及。
二、可行性分析
国密算法应用于国际旅行证件,即采用国密算法取代Doc 9303建议的国际密码算法,取决于两个条件:(1)国密算法在功能上与Doc 9303建议的国际算法相同;(2)国密算法在安全强度上不低于Doc 9303建议的国际通用密码算法。
(一)国际旅行证件中可选用的国密算法
我国目前发布的国密算法主要包括SSF33、SM1、SM2、SM3、SM4、SM7、SM9和祖冲之算法等。鉴于国际旅行证件应用必须选用公开的密码算法,因此,未公开的密码算法SSF33、SM1、SM7不能选用。SM9算法是一种基于标识的非对称密码算法,与Doc 9303建议选用的传统的RSA、ECDSA等非对称密码算法不同,故不能选用;祖冲之算法属于对称密码算法中的序列密码算法,与Doc 9303建议选用对称分组密码算法的要求不一致,不能选用。因此,未来在国际旅行证件应用中可能选用的国密算法只有SM2、SM3和SM4三种算法。
(二)国密算法与国际算法的比较
下面将从对称密码算法、非对称密码算法、摘要算法和密钥交换协议四方面对国密算法和ICAO建议的国际通用算法进行比较,探讨未来在国际旅行证件应用中采用国密算法的可行性。
1.对称密码算法的比较
Doc 9303建议选用的对称密码算法仅包含分组密码算法,因此,这里仅就国密的分组密码算法SM4与Doc 9303建议的分组密码算法3DES、AES进行比较。
对SM4、3DES和AES三种分组密码算法在密钥长度、分组长度、循环次数和算法结构四个方面进行了比较,见表1。
?
(1)SM4算法是我国自主设计的对称分组密码算法。SM4算法的分组长度为128比特,密钥长度为128比特,加密算法与密钥扩展算法都采用32轮非线性迭代结构,每次迭代由一个轮函数给出,其中的轮函数由一个非线性变换和线性变换复合而成。
(2)3DES算法,即三重DES算法,是美国推出的一种过渡加密标准。3DES是DES的一种安全变形,通过增加密钥长度提升了算法的安全性。在Doc 9303规范中, 3DES算法采用双密钥模式,分组长度为128比特,密钥长度为112比特。
(3)AES算法是美国2001年发布的高级加密标准,分组长度为128位,密钥长度可以有128位、192位、256位三种,计算轮数与密钥长度有关,分别是10、12、14轮。
从算法功能来说,SM4、3DES、AES算法均属于对称分组密码算法,分组长度一致,都用于实现数据的加密解密运算和消息验证码运算,保证数据的机密性和完整性。从安全性来说,SM4算法比3DES算法的密钥长度长,且在计算过程中增加了非线性变换,因此理论上SM4算法的安全性要高于3DES算法;SM4与AES算法都采用了非线性变换,但AES算法的密钥长度更长,理论上AES算法安全性更高。
目前,SM4算法已经过我国专业密码机构的充分分析测试,可以抵抗差分攻击、线性攻击等现有攻击,证明SM4算法是安全的。显然,利用SM4算法替换Doc 9303规范建议的3DES算法是可行的。
2.非对称密码算法的比较
Doc 9303建议的非对称密码算法包括RSA、ECDSA和DSA三种国际通用的公钥密码算法。其中RSA和ECDSA算法使用最为广泛,本文仅将这两种算法与国密SM2算法进行比较。SM2与RSA、ECDSA算法在理论基础、计算复杂度和密钥长度、安全性等几方面的对比情况,详见表2。
?
(1)RSA算法是美国1977年提出的公钥密码算法,是最早的公钥密码算法之一,在全球范围被广泛使用。RSA算法的安全性取决于大整数因子分解的难度。随着计算机运算速度的提高和分布式计算的发展,1024位RSA算法已经被证实存在被破解的风险。Doc 9303规范建议RSA算法选用大于2048位的密钥长度。
(2)ECDSA算法是1985年提出的椭圆曲线公钥密码算法,其安全性取决于椭圆曲线离散对数计算的难度。与RSA算法相比,ECDSA算法具有抗攻击性强、CPU占用少、内容使用少、网络消耗低、加密速度快等特点。ECDSA可以用较少的计算能力提供比RSA算法更高的安全强度,而所需的密钥长度却远比RSA算法短。
(3)SM2算法是我国自主设计的椭圆曲线公钥密码算法,基于国际标准的椭圆曲线密码理论进行自主研发设计,具备椭圆曲线算法的加密速度快、安全性高等性能特点。就安全性而言,SM2和ECDSA算法的安全性都取决于椭圆曲线离散对数问题,二者的安全性属于同一级别,但SM2算法在数字签名方面与ECDSA略有不同,它采取了更为安全的机制,提高了计算复杂度,因此,SM2算法的安全性要高于ECDSA算法。
从算法功能来说,SM2与RSA、ECDSA均可实现数字签名与验证、非对称加密与解密等运算。从安全性来说,SM2的安全性高于RSA和ECDSA。因此,利用SM2算法替换RSA算法或ECDSA算法是可行的。
3.摘要算法的比较
摘要算法,也称杂凑算法、哈希算法,在信息安全领域中用于计算消息的摘要、校验消息的完整性,通常配合数字签名算法使用。对于摘要算法而言,无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。一般认为,摘要长度越长,摘要算法的安全性越高。Doc 9303最新规范建议的摘要算法包含SHA-224、SHA-256、SHA-384、SHA-512四种。这些摘要算法是美国发布的摘要算法标准,用于取代目前已被破解的MD5和SHA-1算法。
鉴于SHA-256的摘要长度与国密算法SM3的摘要长度一致,因此,这里仅比较SM3与SHA-256。SHA-256算法输入消息的最大长度不超过2^64比特,分组长度为512位,摘要长度为256位。SM3算法是我国自主设计的摘要算法,在SHA-256基础上改进实现,消息分组长度为512位,摘要长度为256位。SM3算法的压缩函数与SHA-256的压缩函数具有相似的结构,但SM3设计更复杂,因而SM3具有更高的安全性。
从算法功能来说,SM3与SHA-256均属于摘要算法,摘要长度均为256位。从安全强度来说,SM3算法高于SHA-256。显然,用SM3算法替换SHA-256算法是可行的。
4.密钥交换协议的比较
密钥交换协议,是指两个用户通过交互的信息传递、用各自的私钥和对方的公钥来商定双方共享的秘密密钥的过程。密钥交换协议主要用于密钥管理和协商。
Doc 9303规范建议的密钥交换协议包括DH和ECDH两种协议。DH协议是1976年Diffie和Hellman提出的一种通信双方通过公开信道安全交换共享密钥的密钥交换算法,它可以有效地解决对称密码体制中的密钥分发问题。DH协议的安全性依赖于计算离散对数的困难程度。将ECC算法和DH协议结合使用,就是ECDH协议,其难度依赖于椭圆曲线的离散对数问题。
SM2密钥交换协议是一种ECDH协议。GM/T 0003.3-2012《SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议》规范对SM2密钥交换协议进行了明确规定。SM2密钥交换协议与ECDH协议功能相同,但复杂性更高,计算量更大,理论上更安全。因此,用SM2密钥交换协议替换ECDH协议是可行的。
综上所述,通过对称密码算法、非对称密码算法、摘要算法和密钥交换协议四个方面的对比,可以得出结论:国密算法SM2、SM3、SM4至少可以分别替换Doc 9303建议的几类国际通用密码算法中的一种。但是,也要注意到,由于国密算法尚未实现广泛兼容,在主流浏览器、操作系统等终端环境中不受信任,因此在实际应用中,基于国密算法实现的产品在易用性和通用性方面要劣于国际通用算法产品。
三、应用实现探讨
将国密算法应用于国际旅行证件,可以实现国际旅行证件领域密码算法的“自主可控”,提高我国签发的国际旅行证件及系统的安全性。但是,由于我国出入境管理体制较为复杂,旅行证件不仅包括用于国际旅行的电子护照,也包括港、澳、台地区使用的区域性旅行证件。鉴于不同旅行证件的使用场合不同,其管理和业务需求也会有所不同。研发新一代基于国密算法的旅行证件及应用系统时,需要重点解决以下三个关键问题:
(一)国际旅行证件签发的国际互用性问题
国际旅行证件的首要前提是具备良好的国际互用性。目前,国密算法SM2、SM3虽已被ISO/IEC纳入国际标准,但仍未被Doc 9303规范推荐采用,因此,近期我国签发的国际旅行证件只能继续选用Doc 9303规范建议的国际通用算法和协议实现。未来,一旦SM2、SM3和SM4全都被纳入国际标准并被国际民航组织Doc 9303规范推荐采用,国际旅行证件应用系统可迅速针对国密算法进行升级改造,实现国际旅行证件的“密码算法”自主可控。
(二)国际旅行证件查验的国际互用性问题
Doc 9303规范对于安全机制及密码算法和协议的选择预留了足够的灵活性,因此,为了查验所有符合Doc 9303规范的国际旅行证件,边检查验系统应支持Doc 9303建议的所有安全机制及密码算法。
(三)国际旅行证件查验的向下兼容性问题
新一代支持国密算法的国际旅行证件应用系统应具备向下兼容性,既要支持新一代国密算法证件的制发、查验,也要支持以往的基于国际算法证件的查验。
四、结语
国产密码是实现自主可控的关键。随着我国密码法的发布,应用系统从国际通用算法向国密算法升级改造的浪潮将马上到来。因此,有必要尽快研究基于国密算法的国际旅行证件及应用系统,实现出入境领域密码算法的自主可控。