SSL代码签名最佳实践

代码签名就是软件发布者使用全球可信的证书颁发机构CA颁发的代码签名证书对软件代码进行签名,由此来验证软件开发者的真实身份,确保软件代码的完整性和可信任性。然而,攻击者一直试图渗透代码签名,意将恶意软件嵌入可信代码中。由此,为了降低被攻破的风险,本文将介绍8大代码签名最佳实践
image.png
1、安全密钥存储
如果用于签名的私钥被泄露或从组织窃取,它就会被用来对嵌入恶意软件的软件进行签名,这样发布的软件就会被注册为源自该组织的合法软件。由此,私钥应存储在硬件安全模块(HSM)进行保护中,或在静态时加密。根据 CA/Browser (CA/B) 论坛的要求,用于公共信任的密钥必须存储在 HSM 中。
2、执行密钥和签名访问控制
设置策略并执行密钥访问控制,确保只有经过授权的开发人员和用户才能在需要时使用特定密钥签名。在云中生成密钥,以免密钥被共享、丢失或窃取。实施职责分离,即把生成密钥的人和签名的人的职责分开。实施多因素身份验证(MFA),确保访问签名的人确实是本人。取消已离职人员或不再需要访问签名或生成密钥的人员的访问权限。
3、监控和审核密钥签名工作流程
跟踪什么人在什么时间签署了什么,以便对未经授权的签署做出快速反应,并采取适当的补救措施。定期审核与密钥对相关的所有操作,包括生成、证书操作以及分配密钥和签名行动。
比如采用统一数字证书管理系统UCM,申请、管理、部署数字证书,并对包含代码签名证书在内的所有数字证书定期扫描、监控和检测,给予预警通知。
image.png
4、与时俱进,在全公司范围内执行加密标准政策
为了帮助企业在威胁形势中保持领先,行业要求会与时俱进。CA/B论坛的规定要求,自2021年6月1日起,公众信任的代码签名和时间戳证书的最低密钥要求为3072位RSA。组织内的开发人员和用户在生成密钥或签署代码时可能不会意识到这些变化,而企业必须执行行业要求,防止用户使用弱算法或不符合要求的算法、密钥大小或曲线生成密钥或申请证书。
5、在 SDLC 流程中启用自动代码签名
在 SDLC 流程(如 CI/CD 管道)中集成签名并实现签名自动化,从而降低未签名代码或签名不合规的风险。可以设置安全控制自动化,在持续、快速的软件开发过程中构建安全、合规的软件。
6、比较来自不同构建服务器的签名:
在发布之前,对来自不同构建服务器的软件哈希值进行签名和比较,以确定服务器构建之间是否存在任何差异。两个或更多相同构建的法定数量可确保构建中没有包含未知代码,构建是安全的。
7、撤销受损代码签名证书
如果发现密钥泄露或签名了恶意软件,请向证书颁发机构(CA)报告,需要撤销代码签名证书,以使软件失效从而阻止恶意软件进一步传播。
8、为已签名的代码打上时间戳
为已签名的代码打上时间戳,避免代码签名证书过期时软件意外失效的风险。代码签名证书的有效期一般为1~3 年,代码签名证书过期后,已签名软件的有效性也将过期,除非软件在签名时有时间戳。系统会记录时间戳,只要软件还在生产中,就会继续有效。
给代码打上时间戳的另一个原因是尽量减少证书吊销的影响。一旦发现恶意软件,相关证书必须被吊销,而时间戳会将影响降到最低,因为吊销只会影响到吊销日期之后发布的软件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/23127.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【二叉树】Leetcode 637. 二叉树的层平均值【简单】

二叉树的层平均值 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[3.00000,14.50000,11.00000] 解释&#xff1a…

前端 JS 经典:如何实现私有字段

前言:方法有很多,但是我们需要择优选择。 1. 命名规范 我们可以通过命名规范实现私有字段,如:下划线 缺点:没有强约束力,我们用了也就用了 class A {_key 1; }const a new A(); a._key; // 1 2. Sym…

深入探讨5种单例模式

文章目录 一、对比总览详细解释 二、代码1. 饿汉式2. 饱汉式3. 饱汉式-双检锁4. 静态内部类5. 枚举单例 三、性能对比 一、对比总览 以下是不同单例模式实现方式的特性对比表格。表格从线程安全性、延迟加载、实现复杂度、反序列化安全性、防反射攻击性等多个方面进行考量。 …

必应bing国内广告怎样开户投放呢?

企业都在寻找高效、精准的营销渠道以扩大品牌影响力,提升市场占有率,作为全球第二大搜索引擎,微软旗下的必应Bing凭借其卓越的搜索技术和庞大的用户基础,成为了众多企业拓展市场的首选广告平台。在中国,必应Bing广告以…

Day33

Day33 SQL-续 数据类型 tinyint、int、unsigned、float、double、decimal、char、varchar、BLOB、LONGBLOB、TEXT、LONGTEXT、date、time、datetime、timestamp、year # 数据类型# 整数类型 ------------------------------------------------------------- # tinyint - 1字节…

vuInhub靶场实战系列-DC-6实战

免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关。 目录 免责声明前言一、环境配置二、信息收集2.1 主机发现2.1.1 nmap扫描存活主机2.1.2 arp-scan扫描存活主机 2.2 端口扫描2.3 指纹识别2.3.1 尝试指纹识别2.3.…

【LC刷题】DAY01:704. 二分查找、27. 移除元素

【LC刷题】DAY01:704. 二分查找、27. 移除元素 文章目录 【LC刷题】DAY01:704. 二分查找、27. 移除元素704. 二分查找 [link](https://leetcode.cn/problems/binary-search/description/)第一思路:优化思路 27. 移除元素 [link](https://leet…

解决Mac无法上网/网络异常的方法,重置网络

解放方法 1、前往文件夹:/Library/Preferences/SystemConfiguration 2 、在弹窗中输入上边的地址 3 、把文件夹中除了下图未选中的文件全部删掉,删除时需要输入密码 4 、重启mac 电脑就搞定了。

python的一种集成开发工具:PyCharm开发工具

一. 简介 本文简单了解两种 python语言所使用的 集成开发环境: PyCharm、vscode。 python语言学习中,可以任意选中这两个集成开发环境的一种就可以。本文先来简单学习 PyCharm开发工具安装与使用。 二. python的一种集成开发工具:PyChar…

【LeetCode】40. 组合总和 II

组合总和 II 题目描述: 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意:解集不能包含重复的组合。 示例…

数据更新后Ant Design Table组件界面未刷新怎么解决?

在使用Ant Design的Table组件时,我们时常需要动态更新表格数据以满足应用需求。然而,有时即使数据已经更新,界面却没有进行相应的刷新。这种情况可能由多种因素导致,其中之一就是关于key属性的使用问题。本文将重点讨论key属性在解…

Nginx的https功能

一.HTTPS功能简介 Web网站的登录页面都是使用https加密传输的,加密数据以保障数据的安全,HTTPS能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议,HTTPS其实…

Springboot框架开发与实用篇之热部署 2024详解

开发与实用 手动启动热部署 热部署(Hot Deployment)指的是在应用程序正在运行的情况下,对其进行更新或修改并将这些变更应用到正在运行的应用程序中的过程。通常情况下,传统的部署方式需要停止应用程序、部署更新,然…

基于51单片机的智能晾衣架设计资料

第三章:硬件单元电路 经过上述分析明确了本次设计的主要目标,为了实现晾衣自身能够完成对外界数据的采集与分析,集成控制环节我们采用了ATMEL公司生产的AT89C52单片机,与市面上的其他嵌入式控制单元相比较在体积与功耗方面都相当出色。此次设计主要突破在于设计合理的控制电…

最短路问题

最短路问题是图论里非常经典的一个考点 接下来着重讲述五种求最短路的算法:朴素版dijkstra算法、堆优化版的dijkstra算法、bellman-ford算法、spfa算法、floyd算法 总体思维导图: 总体思路: 最短路分为两大类 { 在以下给出的时间复杂度中n…

学习笔记——路由网络基础——静态路由(static)

三、静态路由(static) 1、静态路由 (1)定义 静态路由(Static):由管理员手动配置和维护的路由。静态路由配置简单,被广泛应用于网络中。此外还可以实现负载均衡和路由备份。 静态路由默认优先级为60,如果想在多条静态路由中让某条路由优选…

网络运维:现代IT架构的守护者

网络运维:现代IT架构的守护者 在数字化浪潮席卷全球的今天,网络运维已不再是简单的技术术语,而是每一个追求高效、稳定运营的企业和组织必须重视的关键环节。本文将探讨网络运维的重要性,以及它在现代IT架构中所扮演的不可或缺的…

YOLOX源码之 Label Assignment

网络结构没什么好讲的,backbone、neck、head组成,backbone采用的cspdarknet,neck采用的pafpn,head是decoupled head结构。这里主要讲一下label assignment的具体实现,yolox中采用了simota,是ota的简化版本。…

uniapp小程序开发 | 从零实现一款影视类app (后台接口实现,go-zero微服务的使用)

uniapp小程序开发实战系列,完整介绍从零实现一款影视类小程序。包含小程序前端和后台接口的全部完整实现。系列连载中,喜欢的可以点击收藏。 该篇着重介绍获取轮播图后台接口和获取正在热映电影的两个后台接口的实现。 后台服务使用golang,…

MySQL—多表查询—自连接

一、引言 自连接,顾名思义就是自己连接自己。 自连接的语法结构: 表 A 别名 A join 表 A 别名 B ON 条件 ...; 注意: 1、这种语法有一个关键字:join 2、自连接查询可以是内连接的语法,可以是外连接的语法&#xff08…