离线状态下的容器镜像签名验证方法、系统、设备及介质
文献发布时间:2024-04-18 20:01:55
技术领域
本申请涉及容器镜像签名验证技术领域,尤其涉及一种离线状态下的容器镜像签名验证方法、系统、设备及介质。
背景技术
容器是当今IT运维的关键部分,是应用的箱子。容器镜像是容器的模板,容器是容器镜像的运行实例,容器运行时根据容器镜像创建容器。镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数。
容器镜像的安全与可靠是云原生环境稳定运行最基本的保障。容器镜像的签名和验签功能可避免中间人攻击和非法镜像的更新及运行,进而实现镜像从分发到部署的全链路一致性,保证云原生开发环境和生产环境业务运行的一致性。
容器镜像的创建者可以对镜像做数字签名,数字签名将保存在容器镜像中。通过在部署前对容器镜像进行签名验证可以确保只部署经过可信授权方进行过签名的容器镜像,降低在生产环境中运行意外或恶意代码的风险。
但是,现有的容器镜像签名和签名验证机制都是基于公有云的经验,即只有“在线环境”中才能保证这套机制的有效性。而离线环境(即开发环境和生产环境完全不联网时),由于存在着公、私钥被篡改和伪造的可能性,使用现有技术对签名进行验证其实是没有意义的。
发明内容
针对现有技术的上述不足,本申请提供一种离线状态下的容器镜像签名验证方法、系统、设备及介质,以解决现有的方案无法判断在开发环境和生产环境下容器镜像签名的密钥是否被篡改的问题。
第一方面,本申请提供了一种离线状态下的容器镜像签名验证方法,方法包括:在开发环境中获取到从第一镜像仓库下载容器镜像的操作时,通过镜像操作工具获取当前操作用户的第一用户身份密码和下载的容器镜像对应的第一公钥计算码,并下发至离线动态密码生成工具;通过离线动态密码生成工具,将第一用户身份密码、第一公钥计算码、当前时间戳和预设动态密码有效时长,导入预设生成规则,生成第一动态验证密码,并写入离线动态密码验证工具中;在生产环境中获取到将容器镜像推送到第二镜像仓库的操作时,通过镜像操作工具获取当前操作用户的第二用户身份密码和推送的容器镜像对应的第二公钥计算码,并下发至离线动态密码验证工具;通过离线动态密码验证工具,将第二用户身份密码、第二公钥计算码、当前时间戳和预设动态密码有效时长,导入预设生成规则,生成第二动态验证密码;进行第二动态验证密码与第一动态验证密码的比对,在比对成功后,获取推送的容器镜像的公钥,以将公钥导入推送的容器镜像,进行容器镜像签名验证,以在验证成功后,将推送的容器镜像推送至第二镜像仓库中。
进一步地,通过镜像操作工具获取当前操作用户的第一用户身份密码和下载的容器镜像对应的第一公钥计算码,具体包括:通过镜像操作工具获取下载的容器镜像对应的公钥;调用预设处理规则,将公钥转换为第一公钥计算码;通过镜像操作工具获取当前操作用户的第二用户身份密码和推送的容器镜像对应的第二公钥计算码,具体包括:通过镜像操作工具获取推送的容器镜像对应的公钥;调用预设处理规则,将公钥转换为第二公钥计算码。
进一步地,将第一用户身份密码、第一公钥计算码、当前时间戳和预设动态密码有效时长,导入预设生成规则,生成第一动态验证密码,具体包括:通过预设生成规则:第一动态验证密码=字符转数字(SM3(SM3(第一公钥计算码),第一用户身份密码,(当前时间戳+预设动态密码有效时长)))%1000000,生成第一动态验证密码;将第二用户身份密码、第二公钥计算码、当前时间戳和预设动态密码有效时长,导入预设生成规则,生成第二动态验证密码,具体包括:通过预设生成规则:第二动态验证密码=字符转数字(SM3(SM3(第二公钥计算码),第二用户身份密码,(当前时间戳+预设动态密码有效时长)))%1000000,生成第二动态验证密码。
进一步地,获取推送的容器镜像的公钥,具体包括:确定推送的容器镜像的公钥类型,在公钥类型为项目统一类型时,从操作服务器的固定路径导入公钥;在公钥类型为独立类型时,从离线动态密码验证工具中导入;其中,离线动态密码验证工具中预存了公钥类型为独立类型的容器镜像的公钥。
第二方面,本申请提供了一种离线状态下的容器镜像签名验证系统,系统包括:镜像操作工具,用于在开发环境中获取到从第一镜像仓库下载容器镜像的操作时,获取当前操作用户的第一用户身份密码和下载的容器镜像对应的第一公钥计算码,并下发至离线动态密码生成工具;在生产环境中获取到将容器镜像推送到第二镜像仓库的操作时,获取当前操作用户的第二用户身份密码和推送的容器镜像对应的第二公钥计算码,并下发至离线动态密码验证工具;离线动态密码生成工具,用于将第一用户身份密码、第一公钥计算码、当前时间戳和预设动态密码有效时长,导入预设生成规则,生成第一动态验证密码,并写入离线动态密码验证工具中;将第二用户身份密码、第二公钥计算码、当前时间戳和预设动态密码有效时长,导入预设生成规则,生成第二动态验证密码,并发送至离线动态密码验证工具中;离线动态密码验证工具,用于进行第二动态验证密码与第一动态验证密码的比对,在比对成功后,获取推送的容器镜像的公钥,以将公钥导入推送的容器镜像,进行容器镜像签名验证,以在验证成功后,将推送的容器镜像推送至第二镜像仓库中。
进一步地,镜像操作工具包括公钥计算码生成单元,用于获取下载的容器镜像对应的公钥;调用预设处理规则,将公钥转换为第一公钥计算码;获取推送的容器镜像对应的公钥;调用预设处理规则,将公钥转换为第二公钥计算码。
进一步地,离线动态密码生成工具包括第一密码生成单元,用于通过预设生成规则:第一动态验证密码=字符转数字(SM3(SM3(第一公钥计算码),第一用户身份密码,(当前时间戳+预设动态密码有效时长)))%1000000,生成第一动态验证密码;离线动态密码验证工具包括第二密码生成单元;用于通过预设生成规则:第二动态验证密码=字符转数字(SM3(SM3(第二公钥计算码),第二用户身份密码,(当前时间戳+预设动态密码有效时长)))%1000000,生成第二动态验证密码。
进一步地,离线动态密码验证工具包括公钥获取单元,用于确定推送的容器镜像的公钥类型,在公钥类型为项目统一类型时,从操作服务器的固定路径导入公钥;在公钥类型为独立类型时,从离线动态密码验证工具中导入;其中,离线动态密码验证工具中预存了公钥类型为独立类型的容器镜像的公钥。
第三方面,本申请提供了一种离线状态下的容器镜像签名验证设备,设备包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被执行时,使得处理器执行如上述任一项的一种离线状态下的容器镜像签名验证方法。
第四方面,本申请提供了一种非易失性计算机存储介质,其上存储有计算机指令,计算机指令在被执行时实现如上述任一项的一种离线状态下的容器镜像签名验证方法。
本领域技术人员能够理解的是,本申请至少具有如下有益效果:
本申请通过对离线环境(开发环境、生产环境)的容器镜像签名设置了第一动态验证密码和第二动态验证密码的生成-验证流程,其中,第一动态验证密码和第二动态验证密码的生成过程涉及公钥计算码,即涉及公钥计算码的比对,解决了开发与生产环境网络不具备互通条件且生产环境属于完全独立的安全内网场景下,公私钥对无法判断是否被篡改的问题;另外,公钥计算码并不是公钥本身,避免了计算过程中公钥被篡改的风险;同时第一动态验证密码和第二动态验证密码在生成过程中需要用户身份密码的上传,实现了操作人员身份的获取,解决了在发现容器镜像数据被篡改后,调查的源头问题。本申请提高了潜在的中间人攻击事件的处理效率,将云原生运行环境的安全性延伸到了完全离线场景。
附图说明
下面参照附图来描述本公开的部分实施例,附图中:
图1是本申请实施例提供的一种离线状态下的容器镜像签名验证方法流程图。
图2是本申请实施例提供的一种离线状态下的容器镜像签名验证系统内部结构示意图。
图3是本申请实施例提供的一种离线状态下的容器镜像签名验证设备内部结构示意图。
具体实施方式
本领域技术人员应当理解的是,下文所描述的实施例仅仅是本公开的优选实施例,并不表示本公开仅能通过该优选实施例实现,该优选实施例仅仅是用于解释本公开的技术原理,并非用于限制本公开的保护范围。基于本公开提供的优选实施例,本领域普通技术人员在没有付出创造性劳动的情况下所获得的其它所有实施例,仍应落入到本公开的保护范围之内。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
下面通过附图对本申请实施例提出的技术方案进行详细的说明。
本申请实施例提供了一种离线状态下的容器镜像签名验证方法,如图1所示,本申请实施例提供的方法,主要包括以下步骤:
步骤110、在开发环境中获取到从第一镜像仓库下载容器镜像的操作时,通过镜像操作工具获取当前操作用户的第一用户身份密码和下载的容器镜像对应的第一公钥计算码,并下发至离线动态密码生成工具。
需要说明的是,镜像操作工具可以为任意可行的能够进行用户身份密码获取、公钥计算码获取以及数据下发的设备或装置等。
第一镜像仓库为存储容器镜像的数据库,能够支持存储容器镜像的签名数据。获取操作的方法可以通过任意可行的操作检测程序进行,本申请此不做限定。
其中,通过镜像操作工具获取当前操作用户的第一用户身份密码和下载的容器镜像对应的第一公钥计算码的方法可以具体为:
通过镜像操作工具获取下载的容器镜像对应的公钥;调用预设处理规则,将公钥转换为第一公钥计算码。
需要补充说明的是,预设处理规则可以为任意可行的能够隐藏公钥具体内容,并能够获得稳定、唯一且能参与计算的识别码(第一公钥计算码)的规则。
上述,获取下载的容器镜像对应的公钥的方法可以具体为:确定下载的容器镜像的公钥类型,在公钥类型为项目统一类型时,从操作服务器的固定路径导入公钥;在公钥类型为独立类型时,从离线动态密码验证工具中导入;其中,离线动态密码验证工具中预存了公钥类型为独立类型的容器镜像的公钥。
补充说明的是,容器镜像的公钥类型已经提前预设好,本领域技术人员可以直接确定具体公钥类型。
步骤120、通过离线动态密码生成工具,将第一用户身份密码、第一公钥计算码、当前时间戳和预设动态密码有效时长,导入预设生成规则,生成第一动态验证密码,并写入离线动态密码验证工具中。
需要说明的是,离线动态密码生成工具可以为任意可行的能够获取镜像操作工具下发的数据、生成动态验证密码(第一动态验证密码和第二动态验证密码)以及能够写入数据至离线动态密码验证工具的设备或装置等。
作为示例地,将第一用户身份密码、第一公钥计算码、当前时间戳和预设动态密码有效时长,导入预设生成规则,生成第一动态验证密码,具体可以为:通过预设生成规则:第一动态验证密码=字符转数字(SM3(SM3(第一公钥计算码),第一用户身份密码,(当前时间戳+预设动态密码有效时长)))%1000000,生成第一动态验证密码。
需要补充说明的是,SM3为标准密码散列函数。
本领域技术人员可以理解的是,通过此步骤可以保证生产环境的动态验证密码生成过程和开发环境一致,从而保证生产环境运行的容器镜像和开发环境发布时是一致的。后期发现有不一致,则可以从镜像下载人员(用户身份密码)入手排查。
步骤130、在生产环境中获取到将容器镜像推送到第二镜像仓库的操作时,通过镜像操作工具获取当前操作用户的第二用户身份密码和推送的容器镜像对应的第二公钥计算码,并下发至离线动态密码验证工具。
需要说明的是,通过镜像操作工具获取当前操作用户的第二用户身份密码和推送的容器镜像对应的第二公钥计算码,具体可以为:
通过镜像操作工具获取推送的容器镜像对应的公钥;调用预设处理规则,将公钥转换为第二公钥计算码。
上述,获取推送的容器镜像对应的公钥可以具体为:确定推送的容器镜像的公钥类型,在公钥类型为项目统一类型时,从操作服务器的固定路径导入公钥;在公钥类型为独立类型时,从离线动态密码验证工具中导入;其中,离线动态密码验证工具中预存了公钥类型为独立类型的容器镜像的公钥。
补充说明的是,容器镜像的公钥类型已经提前预设好,本领域技术人员可以直接确定具体公钥类型。
步骤140、通过离线动态密码验证工具,将第二用户身份密码、第二公钥计算码、当前时间戳和预设动态密码有效时长,导入预设生成规则,生成第二动态验证密码;进行第二动态验证密码与第一动态验证密码的比对,在比对成功后,获取推送的容器镜像的公钥,以将公钥导入推送的容器镜像,进行容器镜像签名验证,以在验证成功后,将推送的容器镜像推送至第二镜像仓库中。
需要说明的是,离线动态密码验证工具可以为任意可行的能够生成第二动态验证密码、进行第二动态验证密码与第一动态验证密码的比对、进行容器镜像签名验证以及能够将推送的容器镜像推送至第二镜像仓库的设备或装置等。第二镜像仓库只接收为离线动态密码验证工具推送的容器镜像的数据库。
上述,将第二用户身份密码、第二公钥计算码、当前时间戳和预设动态密码有效时长,导入预设生成规则,生成第二动态验证密码,具体可以为:
通过预设生成规则:第二动态验证密码=字符转数字(SM3(SM3(第二公钥计算码),第二用户身份密码,(当前时间戳+预设动态密码有效时长)))%1000000,生成第二动态验证密码。
上述,将公钥导入推送的容器镜像,进行容器镜像签名验证的方法可由现有方法或技术实现,本申请对此不做限定。
上述,获取推送的容器镜像的公钥,可以具体为:
确定推送的容器镜像的公钥类型,在公钥类型为项目统一类型时,从操作服务器的固定路径导入公钥;在公钥类型为独立类型时,从离线动态密码验证工具中导入;其中,离线动态密码验证工具中预存了公钥类型为独立类型的容器镜像的公钥。
除此之外,图2为本申请实施例提供的一种离线状态下的容器镜像签名验证系统。如图2所示,本申请实施例提供的系统,主要包括:
系统通过镜像操作工具210在开发环境中获取到从第一镜像仓库220下载容器镜像的操作时,获取当前操作用户的第一用户身份密码和下载的容器镜像对应的第一公钥计算码,并下发至离线动态密码生成工具230;在生产环境中获取到将容器镜像推送到第二镜像仓库250的操作时,获取当前操作用户的第二用户身份密码和推送的容器镜像对应的第二公钥计算码,并下发至离线动态密码验证工具240。
系统获取第一公钥计算码和第二公钥计算码的方案可以具体为:
镜像操作工具210中的公钥计算码生成单元211,获取下载的容器镜像对应的公钥;调用预设处理规则,将公钥转换为第一公钥计算码;获取推送的容器镜像对应的公钥;调用预设处理规则,将公钥转换为第二公钥计算码。
系统通过离线动态密码生成工具230将第一用户身份密码、第一公钥计算码、当前时间戳和预设动态密码有效时长,导入预设生成规则,生成第一动态验证密码,并写入离线动态密码验证工具240中;将第二用户身份密码、第二公钥计算码、当前时间戳和预设动态密码有效时长,导入预设生成规则,生成第二动态验证密码,并发送至离线动态密码验证工具240中。
其中,离线动态密码生成工具230包括第一密码生成单元231,
用于通过预设生成规则:第一动态验证密码=字符转数字(SM3(SM3(第一公钥计算码),第一用户身份密码,(当前时间戳+预设动态密码有效时长)))%1000000,生成第一动态验证密码;
系统中的离线动态密码验证工具240将第二用户身份密码、第二公钥计算码、当前时间戳和预设动态密码有效时长,导入预设生成规则,生成第二动态验证密码;进行第二动态验证密码与第一动态验证密码的比对,在比对成功后,获取推送的容器镜像的公钥,以将公钥导入推送的容器镜像,进行容器镜像签名验证,以在验证成功后,将推送的容器镜像推送至第二镜像仓库250中。
其中,系统将第二用户身份密码、第二公钥计算码、当前时间戳和预设动态密码有效时长,导入预设生成规则,生成第二动态验证密码的过程可以具体为:
离线动态密码验证工具240中的第二密码生成单元241;通过预设生成规则:第二动态验证密码=字符转数字(SM3(SM3(第二公钥计算码),第二用户身份密码,(当前时间戳+预设动态密码有效时长)))%1000000,生成第二动态验证密码。
其中,系统获取推送的容器镜像的公钥的过程可以具体为:
通过离线动态密码验证工具240中的公钥获取单元242确定推送的容器镜像的公钥类型,在公钥类型为项目统一类型时,从操作服务器的固定路径导入公钥;在公钥类型为独立类型时,从离线动态密码验证工具240中导入;其中,离线动态密码验证工具240中预存了公钥类型为独立类型的容器镜像的公钥。
以上为本申请中的方法实施例,基于同样的发明构思,本申请实施例还提供了一种离线状态下的容器镜像签名验证设备。如图3所示,该设备包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被执行时,使得处理器执行如上述实施例中的一种离线状态下的容器镜像签名验证方法。
具体地,服务器端在开发环境中获取到从第一镜像仓库下载容器镜像的操作时,通过镜像操作工具获取当前操作用户的第一用户身份密码和下载的容器镜像对应的第一公钥计算码,并下发至离线动态密码生成工具;通过离线动态密码生成工具,将第一用户身份密码、第一公钥计算码、当前时间戳和预设动态密码有效时长,导入预设生成规则,生成第一动态验证密码,并写入离线动态密码验证工具中;在生产环境中获取到将容器镜像推送到第二镜像仓库的操作时,通过镜像操作工具获取当前操作用户的第二用户身份密码和推送的容器镜像对应的第二公钥计算码,并下发至离线动态密码验证工具;通过离线动态密码验证工具,将第二用户身份密码、第二公钥计算码、当前时间戳和预设动态密码有效时长,导入预设生成规则,生成第二动态验证密码;进行第二动态验证密码与第一动态验证密码的比对,在比对成功后,获取推送的容器镜像的公钥,以将公钥导入推送的容器镜像,进行容器镜像签名验证,以在验证成功后,将推送的容器镜像推送至第二镜像仓库中。
除此之外,本申请实施例还提供了一种非易失性计算机存储介质,其上存储有可执行指令,在该可执行指令被执行时,实现如上述的一种离线状态下的容器镜像签名验证方法。
至此,已经结合前文的多个实施例描述了本公开的技术方案,但是,本领域技术人员容易理解的是,本公开的保护范围并不仅限于这些具体实施例。在不偏离本公开技术原理的前提下,本领域技术人员可以对上述各个实施例中的技术方案进行拆分和组合,也可以对相关技术特征作出等同的更改或替换,凡在本公开的技术构思和/或技术原理之内所做的任何更改、等同替换、改进等都将落入本公开的保护范围之内。
- 一种基于时间相关基线的异常行为检测方法、装置及设备
- 一种基于产品漏洞修复时间的告警方法及相关设备
- 一种基于事件时间和水位线的告警压制方法和相关装置