一种SDK安全增强方法与流程

文档序号:25802674发布日期:2021-07-09 12:39阅读:122来源:国知局
一种SDK安全增强方法与流程
一种sdk安全增强方法
技术领域
1.本发明涉及计算机物联网技术领域,具体来说,涉及一种sdk安全增强方法。


背景技术:

2.sdk一般指软件开发工具包。软件开发工具包一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。
3.sdk默认密钥在物联网领域越来越多的sdk用来连接云、安全芯片、可信执行环境等,为了实现安全通信、认证等功能,sdk中会集成密码学算法和对应的密钥,这个密钥我们称之为sdk默认密钥;但是随着物联网攻击的不断升级,sdk默认密钥安全已经成为供应链安全新的隐患,同时安全法规及安全标准的出台,也使得sdk默认密钥的安全合规迫在眉睫。
4.在白盒攻击环境(white

box attack context)中,软件的执行过程对攻击者完全可见,运行在这种环境中的密码软件如果没有对密钥进行特殊的保护,攻击者通过观察或者执行密码软件很容易就可以获得密钥信息。
5.针对白盒攻击环境提出的一种白盒密码技术,其目的是为了在白盒攻击环境里保护密钥,将密钥信息隐藏在密码软件的执行过程中,防止攻击者在白盒攻击环境中抽取出密钥。将指定密钥隐藏到特定密码算法中,这个过程称为白盒密码生成,比如将aes密钥隐藏到aes算法中、将sm4密码隐藏到sm4算法中等;生成的白盒密码是一段可执行程序,以应用程序接口(api)供其他程序调用。
6.目前保护sdk默认密钥主要采用拆分或者混淆的方式,其安全强度低,攻击者可以随意窃取sdk默认密钥,并带来数据安全威胁,威胁个人隐私数据,因此,存在着巨大的安全隐患,目前无法在白盒攻击环境下保证sdk默认密钥安全。


技术实现要素:

7.针对相关技术中的上述技术问题,本发明提出一种sdk安全增强方法,能够克服现有技术方法的上述不足。
8.为实现上述技术目的,本发明的技术方案是这样实现的:一种sdk安全增强方法,包括以下步骤:s1:首先,生成sdk默认密钥对应的白盒密码,以sdk默认密钥为输入,通过白盒密码算法生成白盒密码;s2:然后将所述白盒密码的查找表和密码学api放入sdk中;s3:将sdk中使用sdk默认密钥的密码学api替换成所述白盒密码中的密码学api;s4:最后,重新发布sdk。
9.进一步地,所述白盒密码算法是在白盒攻击环境下保护密钥安全的算法,是通过对密码算法结构进行分割,编码,查表以及仿射变换的操作。
10.进一步地,所述生成的白盒密码是一个隐藏了密钥信息的查找表以及一套密码学
api的密码。
11.进一步地,所述sdk为一个独立sdk模块。
12.进一步地,所述白盒密码算法是生成白盒密码的其中一种方式。
13.本发明的有益效果:通过将白盒密码技术应用到sdk的加解密密钥保护中,保护sdk默认密钥,能在白盒攻击的环境下保证sdk默认密钥的安全,有效降低密钥泄露的风险,提高密钥的管理安全性。
附图说明
14.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
15.图1是根据本发明实施例所述的sdk安全增强方法流程框图。
具体实施方式
16.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围,为了方便理解本发明的上述技术方案,以下通过具体使用方式上对本发明的上述技术方案进行详细说明。
17.如图1所示,根据本发明实施例所述的一种sdk安全增强方法,包括首先需要生成sdk默认密钥对应的白盒密码,以sdk默认密钥为输入, 例如:unsigned char key[16] = {0xe8, 0xc5, 0x50, 0x1b, 0xa4, 0x21, 0x86, 0xc0, 0x8d, 0x65, 0xd8, 0xdb, 0x5f, 0xbc, 0x34, 0x70},以128位密钥长度的白盒密码sm4算法为例,通过所述白盒密码sm4算法生成白盒密码,所述白盒密码sm4算法是能够在白盒攻击环境下保护密钥安全的算法,它是通过对密码算法结构进行分割、编码、查表以及仿射变换等操作,将密钥信息隐藏在查找表中防止攻击者获得密钥信息;最后生成的白盒密码是一个隐藏了密钥信息的查找表以及一套密码学api,主要用于白盒密码集成。
[0018]
所述密码学api为:/*** \param[in] plain_text to be encrypt data.* \param[in] plain_text_len _text to be encrypt data length.* \param[in] iv input iv.* \param[in]iv_len input iv length.* \param[out] cipher_text out buffer used to receive encrypted data.* \param[out] cipher_text_len out data length.*/int ut_pf_wbox_ctr(const unsigned char *plain_text,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
const unsigned int plain_text_len,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
const unsigned char *iv,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
const unsigned int iv_len,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
unsigned char *cipher_text,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
unsigned int *cipher_text_len);。
[0019]
白盒密码生成后需要集成白盒密码,集成白盒密码是将所述白盒密码包括的查找表和密码学api放入sdk中;将sdk中使用sdk默认密钥的密码学api替换成所述白盒密码中的密码学api。
[0020]
最后,在平台上重新发布安全性增强后的sdk。
[0021]
本发明安全增强sdk方法是独立的模块,简单方便集成到sdk中,具有易用性,本发明和硬件平台及操作系统无关,具有很好的移植性,能够明显的提升sdk的安全,为各个行业的供应链安全提供了保障。
[0022]
综上所述,借助于本发明的上述技术方案,通过将白盒密码技术应用到sdk的加解密密钥保护中,保护sdk默认密钥,能在白盒攻击的环境下保证sdk默认密钥的安全,有效降低密钥泄露的风险,提高密钥的管理安全性。
[0023]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1