本发明涉及操作系统,具体涉及一种应用软件与特定国产操作系统安全运行方法。
背景技术:
1、在一些私有保密领域,比如政府,银行,军事装备等场景下开发的应用软件,由于设计私密性,安全保密性等问题,这些应用软件只允许在特定的国产操作系统上运行,非特定的操作系统无法运行这些应用软件,保证了这些应用软件不被非法者通过反向编译、软件运行行为分析等方式破解后进行攻击目的。
2、现有的一些技术方案是应用软件读取特定国产操作系统版本文件,比如/etc/os-release,判断是否为特定国产操作系统,如果是特定的国产操作系统则运行应用软件,否则该应用软件禁止运行。这种方案有一个非常明显的缺点,就是第三方操作系统也可以伪造该文件,添加特定国产操作系统版本的标志,以此让应用软件运行。
3、另一些技术方案是对/etc/os-release文件进行数字签名,然后增加一个验证签名的动态库接口,这种方案也有两个明显的漏洞:
4、一个漏洞是第三方操作系统拷贝已经签名过的/etc/os-release文件到其操作系统上,这样,应用软件也能使用公钥证书通过对/etc/os-release文件验证签名,也能破解应用软件而运行;另一个漏洞是,替换掉验证签名的动态库接口,伪造相同接口且返回值总是true,这样也能破解掉应用软件在非特定国产操作系统上运行。
技术实现思路
1、本发明的主要目的是提供一种应用软件与特定国产操作系统安全运行方法,本发明运用一套基于内核安全存储操作系统证书的机制,保证应用软件运行的操作系统是指定的特定国产操作系统,且是真实可信的,不是被篡改的特定国产操作系统,同时保证应用软件安装到非特定国产操作系统不能被正确运行。
2、为了完成上述目的,本发明提供了一种应用软件与特定国产操作系统安全运行方法,包括以下步骤:
3、s1:在安装特定国产操作系统时,通过镜像中自带的os私钥对当前的操作系统的硬件环境的唯一序列号sn进行哈希得到第一序列号;特定国产操作系统对第一序列号进行私钥签名得到snsignvalue;记录第一序列号及snsignvalue;
4、s2:将应用软件运行在当前的操作系统中,应用软件使用自带的操作系统证书对签名值snsignvalue进行验证签名,如果验证签名通过,则执行步骤s3,如果验证签名未通过,则退出应用程序;
5、s3:应用软件验证签名通过后,获取哈希过的第一序列号;
6、s4:应用软件获取当前运行的操作系统的硬件换件的唯一序列号sn,通过哈希得到第二序列号;
7、s5:将步骤s3中第一序列号与步骤s4中的第二序列号进行对比后执行步骤s6;
8、s6:如果比对一致,则应用软件继续运行,如果不一致,则关闭应用软件。
9、优选的,步骤s1中的snsignvalue保存在文件系统下,路径为/etc//etc/os-sign-value.sign。
10、本发明的有益效果为:
11、不可抵赖性:使用特定国产操作系统的私钥签名,公钥证书验证签名,保证签发者不可抵赖。
12、签名文件安全性:签名文件与系统sn绑定,签名文件被盗用在其他系统也不能使用。
13、静态库不能被替换伪造: 应用软件的验证签名相关接口使用静态库的方式,在编译阶段就将接口嵌入应用软件,防止动态库方式的库名和接口被伪造和篡改。
1.应用软件与特定国产操作系统安全运行方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的应用软件与特定国产操作系统安全运行方法,其特征在于,步骤s1中的snsignvalue保存在文件系统下,路径为/etc//etc/os-sign-value.sign。