书签 分享 收藏 举报 版权申诉 / 21

一种应用编程接口API保护方法和保护装置.pdf

  • 上传人:1**
  • 文档编号:6007750
  • 上传时间:2019-04-02
  • 格式:PDF
  • 页数:21
  • 大小:1.24MB
  • 摘要
    申请专利号:

    CN201610797722.3

    申请日:

    2016.08.31

    公开号:

    CN106372497A

    公开日:

    2017.02.01

    当前法律状态:

    实审

    有效性:

    审中

    法律详情:

    实质审查的生效IPC(主分类):G06F 21/52申请日:20160831|||公开

    IPC分类号:

    G06F21/52(2013.01)I

    主分类号:

    G06F21/52

    申请人:

    北京深思数盾科技股份有限公司

    发明人:

    孙吉平; 张伟双; 杨磊

    地址:

    100094 北京市海淀区西北旺东路10号院东区5号楼5层510

    优先权:

    专利代理机构:

    北京金信知识产权代理有限公司 11225

    代理人:

    黄威;邓玉婷

    PDF完整版下载: PDF下载
    内容摘要

    本发明提供了一种应用编程接口API保护方法和保护装置,所述方法包括以下步骤:S1:在应用程序侧接收第一访问请求,所述第一访问请求包括应用程序请求的接口函数的信息;S2:基于该第一访问请求调用所述第一访问请求对应的接口函数,并在运行所述接口函数时向系统内核发送经第一密钥加密处理的第二访问请求,所述第二访问请求包括执行所述接口函数所需的内核数据;S3:接收从系统内核返回的经第二密钥加密处理的包括所述内核数据的返回信息。本发明具有更强的防破译性能,且安全性更高。

    权利要求书

    1.一种应用编程接口API保护方法,其特征在于,所述方法包括以下步骤:
    S1:在应用程序侧接收第一访问请求,所述第一访问请求包括应用程序请求的接口函
    数的信息;
    S2:基于该第一访问请求调用所述第一访问请求对应的接口函数,并在运行所述接口
    函数时向系统内核发送经第一密钥加密处理的第二访问请求,所述第二访问请求包括执行
    所述接口函数所需的内核数据;
    S3:接收从系统内核返回的经第二密钥加密处理的包括所述内核数据的返回信息。
    2.根据权利要求1所述的应用编程接口API保护方法,其特征在于,所述经第二密钥加
    密处理的包括所述内核数据的返回信息在系统内核侧通过以下步骤生成:
    A1:接收所述第二访问请求;
    A2:从所述第二访问请求中解密出关于所述内核数据的信息;
    A3:读取所述内核数据,利用第二密钥对包括所述内核数据的返回信息执行加密处理。
    3.根据权利要求1所述的应用编程接口API保护方法,其特征在于,所述第一密钥和第
    二密钥为经应用程序侧和系统内核侧之间的密钥协商获得的对称密钥。
    4.根据权利要求3所述的应用编程接口API保护方法,其特征在于,其中,生成所述第一
    密钥的方法包括:
    S11:在应用程序侧生成第一验证消息,其中所述第一验证消息包括表示当前时间的第
    一时间和利用预存的通信密钥加密处理的随机生成的第一随机数和预设的通信标识;
    S12:将经加密处理第一验证消息发送至系统内核侧;
    S13:接收来自所述系统内核侧的第二验证消息,并利用第一随机数对所述第二验证消
    息进行解密,如果解密成功,执行步骤S14,如果解密失败则结束;
    S14:获取所述第二验证消息中的第二随机数作为所述第一密钥。
    5.根据权利要求4所述的应用编程接口API保护方法,其特征在于,其中,生成所述第一
    验证消息的方法包括:
    S111:获取表示当前的时间的第一时间,并生成所述第一随机数;
    S112:利用预设算法对所述第一时间进行处理,以生成所述通信密钥;
    S113:利用所述通信密钥对所述第一随机数和预设的通信标识进行加密处理;
    S114:将所述第一时间和步骤S113中获得的加密后的数据组合生成所述第一验证消
    息。
    6.根据权利要求4所述的应用编程接口API保护方法,其特征在于,生成所述第二密钥
    的方法包括:
    A11:在系统内核侧接收所述第一验证消息,利用预设算法从所述第一验证消息中解析
    出所述通信密钥;
    A12:利用所述通信密钥解密出所述第一验证消息中的所述第一随机数和预设的通信
    标识;
    A13:验证所述通信标识,若验证成功则执行步骤A14,若验证失败则结束;
    A14:生成作为第二加密密钥的第二随机数,并利用第一验证消息中的第一随机数对所
    述第二随机数加密生成所述第二验证消息。
    7.根据权利要求4所述的应用编程接口API保护方法,其特征在于,生成所述第二密钥
    的方法包括:
    A11:在系统内核侧接收所述第一验证消息,利用预设算法从所述第一验证消息中解析
    出所述通信密钥;
    A12:利用所述通信密钥解密出所述第一验证消息中的所述第一随机数和预设的通信
    标识;
    A13:验证所述通信标识,若验证成功则执行步骤A141,若验证失败则结束;
    A141:生成作为第二加密密钥的第二随机数,并利用第一验证消息中的第一随机数对
    所述第二随机数加密;
    A142:利用系统内核侧的私钥对A141中经加密的第二随机数进行签名并加载时间戳生
    成第二验证消息;
    所述步骤S13进一步配置为:接收所述第二验证消息,并利用预存的公钥验证所述签
    名,如果验证成功则利用第一随机数对所述第二验证消息进行解密,如果解密失败则结束。
    8.根据权利要求6或7所述的应用编程接口API保护方法,其特征在于,步骤A11还进一
    步包括:
    A111:接收所述第一验证消息,并获取其中的第一时间;
    A112:获取当前的第二时间,比较所述第一时间和第二时间,如果所述第一时间和第二
    时间之间的差值小于第一预设时间,则执行步骤A113,否则退出程序;
    A113:利用预设算法从所述第一验证消息中解析出所述通信密钥。
    9.根据权利要求7所述的应用编程接口API保护方法,其特征在于,所述步骤S13进一步
    包括:
    S131:接收所述第二验证消息,并获取所述时间戳中的第三时间;
    S132:比较所述第一时间和第三时间,如果第一时间和第三时间之间的差值小于第二
    预设时间,则执行步骤S133,否则结束,所述第二预设时间大于第一预设时间;
    S133:利用第一随机数对所述第二验证消息进行解密,如果解密失败则结束。
    10.根据权利要求5-7中的任一项所述的应用编程接口API保护方法,其特征在于,所述
    预设算法包括哈希算法。
    11.根据权利要求1所述的应用编程接口API保护方法,其特征在于,还包括步骤S0:对
    API接口函数执行代码自定义处理。
    12.一种应用编程接口API保护装置,其特征在于,所述装置包括:
    中间驱动部件,其包括位于应用程序侧的第一驱动件和位于系统内核侧的第二驱动
    件,其中,
    所述第一驱动件内存储有API接口函数,并且其接收第一访问请求,所述第一访问请求
    包括应用程序请求的接口函数的信息;
    并且,所述第一驱动部件配置为基于该第一访问请求调用所述第一访问请求对应的接
    口函数,并在运行所述接口函数时向所述第二驱动件发送经加密处理的第二访问请求,所
    述第二访问请求包括执行所述接口函数所需的内核数据;
    所述第二驱动件配置为接收所述第二访问请求后,从系统内核中读取所述内核数据,
    利用第二密钥对包括所述内核数据的返回信息进行加密,并将经加密处理的返回信息返回
    至所述第一驱动件。
    13.根据权利要求12所述的应用编程接口API保护装置,其特征在于,所述第一驱动件
    包括:
    接口函数存储部,其内存储有API接口函数;
    第一数据处理部,其配置为接收所述第一访问请求,并调用所述第一访问请求所请求
    的接口函数,根据所述接口函数所需的内核数据生成所述第二访问请求,并将所述第二访
    问请求发送至所述第二驱动件。
    14.根据权利要求12所述的应用编程接口API保护装置,其特征在于,所述第一驱动件
    包括第一密钥协商部,其包括:
    第一验证单元,其配置为在密钥协商时生成第一验证消息,并将所述第一验证消息发
    送至所述第二驱动件,其中所述第一验证消息包括表示当前时间的第一时间和利用预存的
    通信密钥加密处理的随机生成的第一随机数和预设的通信标识;
    第一加解密单元,其配置为利用所述第一随机数对所述第二驱动件返回的第二验证消
    息进行解密,获取所述第二验证消息中的第二随机数作为所述第一密钥。
    15.根据权利要求14所述的应用编程接口API保护装置,其中,所述第一验证单元配置
    为通过预设算法对所述第一时间进行处理以生成所述通信密钥,并将第一时间和利用所述
    通信密钥对所述第一随机数和预设的通信标识进行加密处理后的数据信息组合生成所述
    第一验证消息。
    16.根据权利要求12所述的应用编程接口API保护装置,其特征在于,所述第二驱动件
    包括:
    第二数据处理部,其配置为接收所述第二访问请求,并从所述系统内核中读取所述第
    二访问请求所对应的内核数据,并将利用第二密钥加密处理后的包括内核数据的返回消息
    返回给所述第一驱动件。
    17.根据权利要求16所述的应用编程接口API保护装置,其特征在于,所述第二驱动件
    进一步包括第二密钥协商部,其包括:
    第二验证单元,其配置为利用预设算法从所述第一验证消息中解析出所述通信密钥,
    并利用所述通信密钥解密出所述第一验证消息中的所述第一随机数和通信标识,利用预存
    的标识信息验证所述通信标识,若验证成功则随机生成第二随机数,并将经加密的包括所
    述第二随机数的第二验证消息发送给第一驱动件;
    第二加解密单元,其获取所述第二验证单元生成的第二随机数作为第二密钥,并利用
    第一验证消息中的第一随机数对所述第二随机数加密生成所述第二验证消息。
    18.根据权利要求16所述的应用编程接口API保护装置,其特征在于,所述第二驱动件
    进一步包括第二密钥协商部,其包括:
    第二验证单元,其配置为利用预设算法从所述第一验证消息中解析出所述通信密钥,
    并利用所述通信密钥解密出所述第一验证消息中的所述第一随机数和通信标识,利用预存
    的标识信息验证所述通信标识,若验证成功则随机生成第二随机数,利用其内预存的私钥
    对经加密的第二随机数进行签名并加载时间戳生成第二验证消息;
    第二加解密单元,其获取所述第二验证单元生成的第二随机数作为第二密钥,并利用
    第一验证消息中的第一随机数对所述第二随机数加密,
    并且所述第一驱动件进一步配置为:接收所述第二验证消息,并利用其内存储的公钥
    验证所述签名,如果验证成功则利用第一随机数对所述第二验证消息进行解密,如果解密
    成功,获取所述第二验证消息中的第二随机数作为密钥协商的第一密钥。
    19.根据权利要求17或18所述的应用编程接口API保护装置,其特征在于,所述第一验
    证消息包括第一时间,所述第二验证单元进一步配置为:在所述第一验证消息中的第一时
    间与当前的第二时间之间的差值小于第一预设时间时利用预设算法从所述第一验证消息
    中解析出所述通信密钥。
    20.根据权利要求18所述的API保护装置,其特征在于,所述第一验证消息包括第一时
    间,所述第一驱动件进一步配置为当加载在所述第二验证消息中的时间戳的第三时间与所
    述第一时间之间的差值小于第二预设时间时,利用第一随机数对所述第二验证消息进行解
    密,获取所述第二验证消息中的第二随机数作为密钥协商的第一密钥。

    说明书

    一种应用编程接口API保护方法和保护装置

    技术领域

    本发明涉及API保护领域,特别涉及一种应用编程接口API保护方法和保护装置。

    背景技术

    现有的应用程序在访问动态链接库中的接口函数API时,可以通过断点调试和对
    应用程序进行逆向分析的方式,分析出接口函数的具体逻辑信息或者应用程序的具体信
    息,安全性较差。而且,无论软件中如何对动态链接库进行保护,包括使用外壳代码混淆虚
    拟化等,都不能很好的隐藏外部调用,毕竟系统接口是统一的。

    发明内容

    本发明提供了一种能够加强对于接口函数的安全防护的应用编程接口API保护方
    法和保护装置。

    为了解决上述技术问题,本发明提供了如下的技术方案:

    一种应用编程接口API保护方法,所述方法包括以下步骤:

    S1:在应用程序侧接收第一访问请求,所述第一访问请求包括应用程序请求的接
    口函数的信息;

    S2:基于该第一访问请求调用所述第一访问请求对应的接口函数,并在运行所述
    接口函数时向系统内核发送经第一密钥加密处理的第二访问请求,所述第二访问请求包括
    执行所述接口函数所需的内核数据;

    S3:接收从系统内核返回的经第二密钥加密处理的包括所述内核数据的返回信
    息。

    其中,所述经第二密钥加密处理的包括所述内核数据的返回信息在系统内核侧通
    过以下步骤生成:

    A1:接收所述第二访问请求;

    A2:从所述第二访问请求中解密出关于所述内核数据的信息;

    A3:读取所述内核数据,利用第二密钥对包括所述内核数据的返回信息执行加密
    处理。

    其中,所述第一密钥和第二密钥为经应用程序侧和系统内核侧之间的密钥协商获
    得的对称密钥。

    其中,生成所述第一密钥的方法包括:

    S11:在应用程序侧生成第一验证消息,其中所述第一验证消息包括表示当前时间
    的第一时间和利用预存的通信密钥加密处理的随机生成的第一随机数和预设的通信标识;

    S12:将经加密处理第一验证消息发送至系统内核侧;

    S13:接收来自所述系统内核侧的第二验证消息,并利用第一随机数对所述第二验
    证消息进行解密,如果解密成功,执行步骤S14,如果解密失败则结束;

    S14:获取所述第二验证消息中的第二随机数作为所述第一密钥。

    其中,生成所述第一验证消息的方法包括:

    S111:获取表示当前的时间的第一时间,并生成所述第一随机数;

    S112:利用预设算法对所述第一时间进行处理,以生成所述通信密钥;

    S113:利用所述通信密钥对所述第一随机数和预设的通信标识进行加密处理;

    S114:将所述第一时间和步骤S113中获得的加密后的数据组合生成所述第一验证
    消息。

    其中,生成所述第二密钥的方法包括:

    A11:在系统内核侧接收所述第一验证消息,利用预设算法从所述第一验证消息中
    解析出所述通信密钥;

    A12:利用所述通信密钥解密出所述第一验证消息中的所述第一随机数和预设的
    通信标识;

    A13:验证所述通信标识,若验证成功则执行步骤A14,若验证失败则结束;

    A14:生成作为第二加密密钥的第二随机数,并利用第一验证消息中的第一随机数
    对所述第二随机数加密生成所述第二验证消息。

    其中,生成所述第二密钥的方法包括:

    A11:在系统内核侧接收所述第一验证消息,利用预设算法从所述第一验证消息中
    解析出所述通信密钥;

    A12:利用所述通信密钥解密出所述第一验证消息中的所述第一随机数和预设的
    通信标识;

    A13:验证所述通信标识,若验证成功则执行步骤A141,若验证失败则结束;

    A141:生成作为第二加密密钥的第二随机数,并利用第一验证消息中的第一随机
    数对所述第二随机数加密;

    A142:利用系统内核侧的私钥对A141中经加密的第二随机数进行签名并加载时间
    戳生成第二验证消息;

    所述步骤S13进一步配置为:接收所述第二验证消息,并利用预存的公钥验证所述
    签名,如果验证成功则利用第一随机数对所述第二验证消息进行解密,如果解密失败则结
    束。

    其中,步骤A11还进一步包括:

    A111:接收所述第一验证消息,并获取其中的第一时间;

    A112:获取当前的第二时间,比较所述第一时间和第二时间,如果所述第一时间和
    第二时间之间的差值小于第一预设时间,则执行步骤A113,否则退出程序;

    A113:利用预设算法从所述第一验证消息中解析出所述通信密钥。

    其中,所述步骤S13进一步包括:

    S131:接收所述第二验证消息,并获取所述时间戳中的第三时间;

    S132:比较所述第一时间和第三时间,如果第一时间和第三时间之间的差值小于
    第二预设时间,则执行步骤S133,否则结束,所述第二预设时间大于第一预设时间;

    S133:利用第一随机数对所述第二验证消息进行解密,如果解密失败则结束。

    其中,其特征在于,所述预设算法包括哈希算法。

    其中,还包括步骤S0:对API接口函数执行代码自定义处理。

    本发明还提供了一种应用编程接口API保护装置,所述装置包括:

    中间驱动部件,其包括位于应用程序侧的第一驱动件和位于系统内核侧的第二驱
    动件,其中,

    所述第一驱动件内存储有API接口函数,并且其接收第一访问请求,所述第一访问
    请求包括应用程序请求的接口函数的信息;

    并且,所述第一驱动部件配置为基于该第一访问请求调用所述第一访问请求对应
    的接口函数,并在运行所述接口函数时向所述第二驱动件发送经加密处理的第二访问请
    求,所述第二访问请求包括执行所述接口函数所需的内核数据;

    所述第二驱动件配置为接收所述第二访问请求后,从系统内核中读取所述内核数
    据,利用第二密钥对包括所述内核数据的返回信息进行加密,并将经加密处理的返回信息
    返回至所述第一驱动件。

    其中,所述第一驱动件包括:

    接口函数存储部,其内存储有API接口函数;

    第一数据处理部,其配置为接收所述第一访问请求,并调用所述第一访问请求所
    请求的接口函数,根据所述接口函数所需的内核数据生成所述第二访问请求,并将所述第
    二访问请求发送至所述第二驱动件。

    其中,所述第一驱动件包括第一密钥协商部,其包括:

    第一验证单元,其配置为在密钥协商时生成第一验证消息,并将所述第一验证消
    息发送至所述第二驱动件,其中所述第一验证消息包括表示当前时间的第一时间和利用预
    存的通信密钥加密处理的随机生成的第一随机数和预设的通信标识;

    第一加解密单元,其配置为利用所述第一随机数对所述第二驱动件返回的第二验
    证消息进行解密,获取所述第二验证消息中的第二随机数作为所述第一密钥。

    其中,所述第一验证单元配置为通过预设算法对所述第一时间进行处理以生成所
    述通信密钥,并将第一时间和利用所述通信密钥对所述第一随机数和预设的通信标识进行
    加密处理后的数据信息组合生成所述第一验证消息。

    其中,所述第二驱动件包括:

    第二数据处理部,其配置为接收所述第二访问请求,并从所述系统内核中读取所
    述第二访问请求所对应的内核数据,并将利用第二密钥加密处理后的包括内核数据的返回
    消息返回给所述第一驱动件。

    其中,所述第二驱动件进一步包括第二密钥协商部,其包括:

    第二验证单元,其配置为利用预设算法从所述第一验证消息中解析出所述通信密
    钥,并利用所述通信密钥解密出所述第一验证消息中的所述第一随机数和通信标识,利用
    预存的标识信息验证所述通信标识,若验证成功则随机生成第二随机数,并将经加密的包
    括所述第二随机数的第二验证消息发送给第一驱动件;

    第二加解密单元,其获取所述第二验证单元生成的第二随机数作为第二密钥,并
    利用第一验证消息中的第一随机数对所述第二随机数加密生成所述第二验证消息。

    其中,所述第二驱动件进一步包括第二密钥协商部,其包括:

    第二验证单元,其配置为利用预设算法从所述第一验证消息中解析出所述通信密
    钥,并利用所述通信密钥解密出所述第一验证消息中的所述第一随机数和通信标识,利用
    预存的标识信息验证所述通信标识,若验证成功则随机生成第二随机数,利用其内预存的
    私钥对经加密的第二随机数进行签名并加载时间戳生成第二验证消息;

    第二加解密单元,其获取所述第二验证单元生成的第二随机数作为第二密钥,并
    利用第一验证消息中的第一随机数对所述第二随机数加密,

    并且所述第一驱动件进一步配置为:接收所述第二验证消息,并利用其内存储的
    公钥验证所述签名,如果验证成功则利用第一随机数对所述第二验证消息进行解密,如果
    解密成功,获取所述第二验证消息中的第二随机数作为密钥协商的第一密钥。

    其中,所述第一验证消息包括第一时间,所述第二验证单元进一步配置为:在所述
    第一验证消息中的第一时间与当前的第二时间之间的差值小于第一预设时间时利用预设
    算法从所述第一验证消息中解析出所述通信密钥。

    其中,所述第一验证消息包括第一时间,所述第一驱动件进一步配置为当加载在
    所述第二验证消息中的时间戳的第三时间与所述第一时间之间的差值小于第二预设时间
    时,利用第一随机数对所述第二验证消息进行解密,获取所述第二验证消息中的第二随机
    数作为密钥协商的第一密钥。

    与现有技术相比,本发明的有益效果在于,

    本发明根据在应用程序侧接收对于接口函数的第一访问请求生成对应的对于系
    统内核侧的访问请求,以获取所需的内核数据,其中,在数据的交互过程中的数据信息都需
    要经过加密处理,提高了安全防护等级。

    附图说明

    图1为本发明实施例中的一种应用编程接口API保护方法的流程图;

    图2为本发明实施例中在内核侧生成经第二密钥加密处理的包括所述内核数据的
    返回信息的方法流程图;

    图3为发明本实施例中在应用程序侧生成第一密钥的方法的流程图;

    图4为本发明实施例中生成第一验证消息的方法的流程图;

    图5为发明实施例中在系统内核侧生成第二密钥的方法流程图;

    图6为发明另一实施例中在系统内核侧生成第二密钥的方法流程图;

    图7为本发明实施例中的一种应用编程接口API保护装置原理结构框图;

    图8为本发明实施例中的第一驱动件的示例性结构图;

    图9为本发明实施例中的第二驱动件的示例性结构图。

    附图标记说明

    100-第一驱动件 200-第二驱动件

    101-接口函数存储部 102-第一数据处理部

    103-第一验证单元 104-第一加解密单元

    201-第二数据处理部 202-第二验证单元

    203-第二加解密单元

    具体实施方式

    下面,结合附图对本发明的具体实施例进行更加详细的说明,但不作为本发明的
    限定。

    如图1所示,为本发明实施例中的一种应用编程接口API保护方法的流程图,其中,
    该方法包括以下步骤:

    S1:在应用程序侧接收第一访问请求,所述第一访问请求包括应用程序请求的接
    口函数的信息;

    本实施例中,在应用程序侧,在执行对应的应用程序且需要访问API接口函数时,
    会生成对应的第一访问请求,该第一访问请求中可以包括应用程序请求的接口函数的信
    息,如函数名、参数、参数类型和返回值,返回值类型等,还可以包括调用该接口函数的应用
    程序的信息,如应用程序的名称、地址等信息。本实施例中作为API接口函数的函数库可以
    是静态链接库也可以是位于应用程序侧的驱动件,或应用层自定义的驱动件。

    S2:基于该第一访问请求调用第一访问请求对应的接口函数,并在运行该接口函
    数时向系统内核发送经第一密钥加密处理的第二访问请求,第二访问请求包括执行接口函
    数所需的内核数据;

    本实施例中,在发送对应的第二访问请求时,会对该第二访问请求进行加密处理,
    以增加数据的安全性。

    S3:接收从系统内核返回的经第二密钥加密处理的包括所述内核数据的返回信
    息。

    在系统内核侧,可以根据第二访问请求获取其所需要的内核数据,并在对包括该
    内核数据的返回信息进行加密处理之后返回给应用程序侧,从而在应用程序侧可以将应用
    程序请求的数据返回至应用程序。本实施例中,应用程序侧的第一密钥和系统内核侧的第
    二密钥可以通过密钥协商获得,而且两侧的密钥可以相同。

    另外,优选的,在步骤S1之前还包括步骤S0:对API接口函数执行代码自定义处理;
    该自定义处理即可以包括对API接口函数进行自定义,并且可以执行模糊化操作,或者加密
    处理等,以增加API接口函数的破译难度。

    具体的,如图2所示为本发明实施例中在内核侧生成经第二密钥加密处理的包括
    所述内核数据的返回信息的方法流程图。其中可以包括以下步骤:

    A1:接收所述第二访问请求;

    A2:从第二访问请求中解密出关于内核数据的信息;

    A3:从系统内核中读取内核数据,利用第二密钥对包括所述内核数据的返回信息
    执行加密处理。

    本实施例中的内核数据可以包括当前的时间、程序运行的进程、系统运行的时间,
    以及其他例如硬件、硬盘中的数据等,也可以是其他内核中能够获取的数据,但不限于此。

    下面,对于系统内核和应用程序侧进行密钥协商的过程进行详细的说明,如图3所
    示,为发明本实施例中在应用程序侧生成第一密钥的方法的流程图。其中,包括以下步骤:

    S11:在应用程序侧生成第一验证消息,其中该第一验证消息包括表示当前时间的
    第一时间和利用预存的通信密钥加密处理的随机生成的第一随机数和预设的通信标识;

    其中,在应用程序侧和系统内核侧分别对应存储有相同的通信标识,以用于在密
    钥协商过程中的身份验证。

    另外,如图4所示,为本发明实施例中生成第一验证消息的方法的流程图,其中可
    以包括:

    S111:获取表示当前的时间的第一时间,并生成所述第一随机数;

    S112:利用预设算法对所述第一时间进行处理,以生成所述通信密钥;本实施例中
    的预设算法可以是哈希算法;

    S113:利用所述通信密钥对所述第一随机数和预设的通信标识进行加密处理;

    S114:将所述第一时间和步骤S113中获得的加密后的数据组合生成所述第一验证
    消息。

    通过上述配置,即可以生成第一验证消息,后续对该第一验证消息继续处理,具体
    包括:

    S12:将经加密处理第一验证消息发送至系统内核侧;

    也就是说,在将第一验证消息发送至系统内核侧时,需要对第一验证消息进行加
    密,以防止恶意获取该验证消息;

    S13:接收来自系统内核侧的第二验证消息,并利用第一随机数对第二验证消息进
    行解密,如果解密成功,执行步骤S14,如果解密失败则结束;

    S14:获取所述第二验证消息中的第二随机数作为所述第一密钥。

    本实施例中,在密钥协商的过程中,系统内核侧会对应用程序侧发来的第一验证
    消息进行验证,并且在验证成功时或生成第二验证消息,并发送至应用程序侧进行进一步
    的验证,如果应用程序侧可以利用第一随机数解密出第二验证消息,则验证成功,获取其中
    的第一随机数作为第一密钥使用,如果解密不成功,则结束验证,优选会向系统内核侧发送
    验证失败消息,以进行下一次协商。

    具体的,如图5所示,为发明实施例中在系统内核侧生成第二密钥的方法流程图;
    其中可以包括:

    A11:在系统内核侧接收来自应用程序侧第一验证消息,利用预设算法从第一验证
    消息中解析出其中的通信密钥;对应的,该预设算法也是哈希算法;

    A12:利用通信密钥解密出第一验证消息中的第一随机数和预设的通信标识;

    A13:验证所述通信标识,若验证成功则执行步骤A14,若验证失败则结束;

    本实施例中,通过在系统内核侧存储的标识信息验证该通信标识,如果两者一致,
    则验证成功,如果不一致,则可以生成错误消息返回应用程序侧,并退出验证程序。

    A14:生成作为第二加密密钥的第二随机数,并利用第一验证消息中的第一随机数
    对随机生成的第二随机数加密从而生成第二验证消息。

    需要说明得是,本实施例中的第一随机数和第二随机数都是随机生成的,并且可
    以是实时随机生成,可以增强破译难度。

    另外,在如图6所示的另一实施例中在系统内核侧生成第二密钥的方法流程图;其
    中可以包括:

    A11:在系统内核侧接收所述第一验证消息,利用预设算法从所述第一验证消息中
    解析出所述通信密钥;

    A12:利用所述通信密钥解密出所述第一验证消息中的所述第一随机数和预设的
    通信标识;

    A13:验证所述通信标识,若验证成功则执行步骤A141,若验证失败则结束;

    A141:生成作为第二加密密钥的第二随机数,并利用第一验证消息中的第一随机
    数对所述第二随机数加密;

    A142:利用系统内核侧的私钥对A141中经加密的第二随机数进行签名并加载时间
    戳生成第二验证消息;

    所述步骤S13进一步配置为:接收所述第二验证消息,并利用预存的公钥验证所述
    签名,如果验证成功则利用第一随机数对所述第二验证消息进行解密,如果解密失败则结
    束。

    也就是说,在系统内核侧可以利用其私钥对数据进行签名以及加载时间戳,而在
    应用程序侧可以利用存储的对应的公钥验证签名是否有效,并获取其中的时间戳进行验
    证。

    对于系统内核侧,其可以在接收第一验证消息时,对第一验证消息发送的时间等
    信息进行验证,即步骤A11还可以包括以下步骤:

    A111:接收所述第一验证消息,并获取其中的第一时间;

    A112:获取当前的第二时间,比较所述第一时间和第二时间,如果所述第一时间和
    第二时间之间的差值小于第一预设时间,则执行步骤A113,否则退出程序;

    A113:利用预设算法从所述第一验证消息中解析出所述通信密钥。

    即如果接收第一验证消息的时间和生成第一验证消息的时间之间的间隔大于第
    一预设时间,则可以判断该第一验证消息为无效,此时可以向应用程序侧返回错误消息。

    同时,在应用程序侧接收到第二验证消息时,也可以对第二验证消息的发送时间
    进行验证,即步骤S13还可以包括以下步骤:

    S131:接收所述第二验证消息,并获取其中包括的时间戳中的第三时间;

    S132:第一验证消息中的第一时间和该第三时间,如果第一时间和第三时间之间
    的差值小于第二预设时间,则执行步骤S133,否则结束,其中第二预设时间大于第一预设时
    间,第一预设时间和第二预设时间可以是根据需求由用户自行设置;

    S133:利用第一随机数对所述第二验证消息进行解密,如果解密失败则结束。

    同样的,在接收的第二验证消息中的时间戳的第三时间与第一验证消息中的第一
    时间之间的时间差大于第二预设时间时,即可以表示第二验证消息为无效,此时可以向系
    统内核侧返回错误消息。

    综上,本发明实施例提供的应用编程接口API保护方法,去除了原本应用程序运行
    时对库和系统库的调用,直接和内核组件交互,极大程度的降低了设置调试断点并且破译
    函数的可能性。

    另外,本发明实施例还提供了一种应用编程接口API保护装置。

    如图7所示,为本发明实施例中的一种应用编程接口API保护装置原理结构框图,
    其中,该装置可以包括:中间驱动部件,其可以包括位于应用程序侧的第一驱动件100和位
    于系统内核侧的第二驱动件200,其中,第一驱动件100内存储有API接口函数,该API接口函
    数可以是系统中更新的动态链接库,也可以是自定义处理的接口函数库。该自定义处理即
    可以包括对API接口函数进行自定义,并且可以执行模糊化操作,或者加密处理等,以增加
    API接口函数的破译难度。

    另外,第一驱动件100可以接收应用程序侧的应用程序的第一访问请求,该第一访
    问请求中可以包括应用程序请求的接口函数的信息,如函数名、参数、参数类型和返回值,
    返回值类型等,还可以包括调用该接口函数的应用程序的信息,如应用程序的名称、地址等
    信息。

    并且,第一驱动部件100还可以配置成基于该第一访问请求调用第一访问请求对
    应的接口函数,并在运行接口函数时向系统内核侧的第二驱动件200发送经加密处理的第
    二访问请求,第二访问请求包括执行所述接口函数所需的内核数据。

    同时,第二驱动件200可以配置为接收第二访问请求后,可以从系统内核中读取对
    应的内核数据,利用第二密钥对包括该内核数据的返回信息进行加密,并将经加密处理的
    返回信息返回至第一驱动件100。即在发送对应的第二访问请求时,需要对该第二访问请求
    进行加密处理,以进一步增加数据的安全性。本实施例中,应用程序侧的第一密钥和系统内
    核侧的第二密钥可以通过密钥协商获得,而且两侧的密钥可以相同。

    本实施例中的内核数据可以包括当前的时间、程序运行的进程、系统运行的时间,
    以及其他例如硬件、硬盘中的数据等,也可以是其他内核中能够获取的数据,但不限于此。

    具体的,如图8所示,为本发明实施例中的第一驱动件的原理结构图,其中可以包
    括:接口函数存储部101、第一数据处理部102,以及第一密钥协商部。

    其中,接口函数存储部101可以存储API接口函数;即接口函数存储部101可以构造
    成动态链接库或者其他自定义的接口函数库。

    第一数据处理部102可以接收应用程序侧应用程序生成的第一访问请求,并调用
    该第一访问请求所请求的接口函数,根据接口函数所需的内核数据生成第二访问请求,并
    将该第二访问请求经加密后发送至所述第二驱动件200。

    另外,第一密钥协商部可以包括:第一验证单元103和第一加解密单元104;其中,
    第一验证单元101可以配置为在与第二驱动件200进行密钥协商时生成第一验证消息,并将
    生成的第一验证消息发送至所述第二驱动件200进行验证和处理。

    本实施例中的第一验证消息中可以包括表示当前时间的第一时间和利用预存的
    通信密钥加密处理的随机生成的第一随机数和预设的通信标识。在应用程序侧的第一驱动
    件100和系统内核侧的第二驱动件200中分别对应存储有相同的通信标识,以用于在密钥协
    商过程中的身份验证。

    第一加解密单元102可以配置为利用第一验证消息中的第一随机数对第二驱动件
    200返回的第二验证消息进行解密,并获取第二验证消息中的第二随机数作为第一密钥。

    另外,第一验证单元103还可以通过预设算法对第一时间进行处理以生成上述通
    信密钥,并将第一时间和利用该通信密钥对第一随机数和预设的通信标识进行加密处理后
    的数据信息组合生成第一验证消息。

    本实施例中的第一验证单元103和第一加解密单元104可以相互通信以共享数据,
    另外其可以构造成与接口函数存储部101和第一数据处理部102独立的结构配置,也可以分
    别与第一数据处理部102连接,以根据第一数据处理部102的控制执行相应的功能配置。

    另外,如图8所示为本发明实施例中的第二驱动件的原理结构图,其中,第二驱动
    件200可以包括:第二数据处理部201和第二密钥协商部。其中在一实施例中,第二密钥协商
    部可以包括第二验证单元102和第二加解密单元103。

    其中,第二数据处理部201可以接收来自第一验证单元103的第二访问请求,并可
    以从系统内核中读取第二访问请求所对应的内核数据,利用其内存储的第二密钥对包括内
    核数据的返回消息进行加密,并将该加密处理后的返回消息返回给第一驱动件100。具体
    的,第二数据处理部201可以将返回消息发送给第一加解密单元104,也可以发送至第一数
    据处理部102,以传送给第一加解密单元104,对于系统内核侧传输的数据,第一驱动件100
    中的各部件可以共享,对于应用程序侧传输的数据,第二驱动件200中的各部件也可以共
    享。

    另外,第二验证单元202可以利用预设算法从第一验证消息中解析出其中的通信
    密钥,并利用该通信密钥解密出第一验证消息中的第一随机数和通信标识,利用预存的标
    识信息验证通信标识,若验证成功则随机生成第二随机数,并将经加密的包括第二随机数
    的第二验证消息发送给第一驱动件100,如验证不成功,则生成错误信息返回至第一驱动件
    100。

    进一步的,由于第一验证消息中可以包括表示生成第一验证消息的第一时间,则
    第二验证单元可以在判断为第一验证消息中的第一时间与当前的第二时间之间的差值小
    于第一预设时间时,利用预设算法从第一验证消息中解析出通信密钥,并利用该通信密钥
    解密出第一验证消息中的所述第一随机数和通信标识,利用预存的标识信息验证通信标
    识,若验证成功则随机生成第二随机数,并将经加密的包括第二随机数的第二验证消息发
    送给第一驱动件100,如验证不成功,则生成错误信息返回至第一驱动件100。

    第二加解密单元103可以获取第二验证单元102生成的第二随机数作为第二密钥,
    并利用第一验证消息中的第一随机数对该第二随机数加密生成上述第二验证消息。

    在另一实施例中,第二验证单元102可以配置为利用预设算法从第一验证消息中
    解析出通信密钥,并利用该通信密钥解密出第一验证消息中的第一随机数和通信标识,利
    用预存的标识信息验证该通信标识,若验证成功则随机生成第二随机数,利用其内预存的
    私钥对经加密的第二随机数进行签名并加载时间戳生成第二验证消息。

    同时第二加解密单元103可以获取所述第二验证单元生成的第二随机数作为第二
    密钥,并利用第一验证消息中的第一随机数对第二随机数加密。

    并且对应的,第一驱动件100中的第一加解密单元104可以进一步配置为:接收该
    返回的第二验证消息,并利用其内存储的公钥验证第二验证消息中的签名,如果验证成功
    则利用第一随机数对第二验证消息进行解密,如果解密成功,获取第二验证消息中的第二
    随机数作为密钥协商的第一密钥。

    同样的,第一驱动件100中的第一加解密单元104还可以进一步配置为当加载在第
    二验证消息中的时间戳的第三时间与第一时间之间的差值小于第二预设时间时,利用第一
    随机数对第二验证消息进行解密,获取第二验证消息中的第二随机数作为密钥协商的第一
    密钥。

    通过上述配置,即可以实现第一驱动件100和第二驱动件200之间的密钥协商,并
    获取对应的第一密钥和第二密钥。从而在后续的数据传输和验证过程中进一步保证数据的
    安全性和提高破译的难度。

    以上实施例仅为本发明的示例性实施例,不用于限制本发明,本发明的保护范围
    由权利要求书限定。本领域技术人员可以在本发明的实质和保护范围内,对本发明做出各
    种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。

    关 键  词:
    一种 应用 编程 接口 API 保护 方法 保护装置
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:一种应用编程接口API保护方法和保护装置.pdf
    链接地址:https://www.zhuanlichaxun.net/p-6007750.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1