趣说产品安全设计的十大经典原则,看一遍就再难忘记!

全设计原则在产品和系统的开发中占据着至关重要的地位。这些原则强调了从一开始就将安全性融入到设计过程中的重要性,而不是作为事后补救措施。通过遵循这些原则,开发者能够创建更加健壮和安全的产品,有效减少潜在的安全漏洞和威胁。接下来博主通过一些有趣案例带大家轻松理解这些原则!

1. 安全设计原则介绍

安全设计原则是指那些在安静业界实践中已经证明是成功的抽象概念的集合,设计师可以运用这种基本的设计原则来进行与开发语言、平台无关的架构设计,保护整个计算机系统避免受到从研发到运营过程中的各种安全故障。

自从1974年麻省理工学院的Jerry Saltzer教授提出了安全设计的八大原则,快50年过去了,后人在其基础上又扩展了2条,共计10条。如果你恰好是架构师、系统工程师或是开发组长,那这十大原则一定要熟记于心!

2. 安全设计十大经典原则

2.1. 最小化权限原则(Least Privilege)

指的是每个用户或程序都应该使用满足其工作需求的最少权限(即知其所需,Need to Know)。这样可以减少潜在的安全风险和攻击面。

在物理安全领域,“最小化权限”意味着员工只能进入他们工作所需的区域。例如,生产线上的工人只被允许进入生产区域,而不是研发实验室

明朝锦衣卫的权力控制

以明朝皇帝直属的特务机构锦衣卫为例,由于其特殊的地位和职责,锦衣卫拥有很大的权力,为了防止其滥用权力,锦衣卫内部有明确的分工。

不同部门负责不同的任务,如监察、缉捕、审讯等,每个部门只拥有完成其职责所需的最低权限。比如南镇抚司管军匠以及本卫的内部监察。北镇抚司管刑狱,狱情可以直接奏报皇帝,不通过锦衣卫上层官员。

2.2. 失败-默认安全原则(Fail-safe Defaults)

访问策略应该基于允许(如白名单策略)而非拒绝(如黑名单策略),即默认情况下不允许访问,保护机制仅用来识别允许访问的场景。这个原则实际包含如下两个子原则:失败安全、默认安全。

2.2.1. 失败安全原则

任何一个复杂系统都应该有一个处理失败后的应急安全机制。

生化危机中的蜂巢系统

比如在《生化危机》第1部电影中,位于浣熊市地下的蜂巢的一名工作人员被病毒感染后,病毒迅速传播,导致蜂巢内的人员相继感染并变成丧尸,蜂巢为防止T病毒泄露而启动了自毁程序。这是为了防止病毒扩散到外界,确保其不被公众知晓。

2.2.2. 默认安全原则

系统在初始状态下,默认配置应该是安全的,通过使用最少的系统服务来提供最大的安全性,只有经过明确授权之后才能降低安全级别。比如产品应该默认打开密码复杂度策略,即不允许用户使用不符合密码复杂度策略的密码。

碟中谍4:幽灵协议

《碟中谍4》是一部动作冒险电影,讲述了特工团队执行高风险任务的故事。在电影中,主角伊桑·亨特和他的团队需要进入一家高度安全的银行内部窃取重要文件。这家银行采用了最先进的生物识别技术和复杂的访问控制系统,只有经过正式授权的员工才能进入银行的各个区域。

银行安全机制如下:

  • 默认状态:银行的门禁系统默认是关闭的,只有在通过指纹、虹膜扫描或其他形式的身份验证后,才允许进入。这意味着除非经过正式授权,否则任何人都无法进入银行。
  • 授权过程:银行员工需要通过多层身份验证,才能获得访问权限。即使对于银行员工来说,进入特定区域也需要经过进一步的身份验证。这确保了只有在经过明确授权的情况下,才能降低安全级别并进入受保护的区域。

这种设计不仅保护了银行资产的安全,还确保了在未经授权的情况下,任何人都无法轻易进入银行内部,这种设计就是应用了“默认安全”原则。

安全 VS 用户体验

不过在许多场景中,安全和产品的体验经常会发生冲突,这时应当选择安全优先,在安全的前提下,可以允许通过手动关闭安全配置或策略来提升产品体验。

2.3. 经济适用原则(Economy of Mechanism)

保持系统的设计和实现尽可能简单:

  • 软件设计越复杂,代码中出现Bug的概率就越高;
  • 删除不需要的冗余代码和功能模块,减少系统的攻击面;
  • 设计可以重复使用的组件减少代码冗余。

《速度与激情7》是一部著名的动作电影,其中有很多涉及高科技和高成本安全措施的场景。然而,在某些场景中,我们可以看到经济适用原则的应用。

图片来源于网络

在电影中,主角们需要潜入一个高度安全的地下车库,盗取几辆豪车。这个地下车库配备了先进的监控系统、门禁系统和警报系统。然而,主角们并没有使用昂贵的高科技设备,而是利用一些低成本的方法来完成任务。

  • 低成本监控规避:主角们使用了一些简单的手段,比如遮挡摄像头、制造噪音干扰监控等,这些方法成本低廉但效果显著。
  • 利用已有资源:主角们利用了车库本身的安全系统,比如通过破解车库的门禁系统密码,而不是去购买昂贵的新设备。
  • 分阶段实施:他们将任务分为几个小步骤,每一步都尽量减少对昂贵设备的依赖,而是依靠团队成员的专业技能和协作来完成任务。

通过这种方式,主角们成功地进入了车库(安全控制系统),并盗走了几辆豪车,而没有花费大量资金购买昂贵的安全设备。

2.4. 权限分离原则(Separation of Privilege)

一种保护机制应该需要至少两把"钥匙",从而避免个人权力滥用,导致受保护的对象容易被非法获取。

比如阿里的PolarDB-X数据库支持三权分立模式,改进了传统数据库运维由DBA行使特权的独立控制体系,使得数据库管理员DBA、安全管理员DSA(Department Security Administrator)和审计管理员DAA(Data Audit Administrator)三者的权责更加清晰。其中:

  • 数据库管理员(DBA):只具备DDL(Data Definition Language)权限。
  • 安全管理员(DSA):只具备管理角色(Role)或用户(User)以及为其他账号授予权限的权限。
  • 审计管理员(DAA):只具备查看审计日志的权限。

另一个典型的例子来自唐朝的“三省六部制”。唐朝的中央政府采用了三省六部制来实现行政权力的分权和制衡,从而提高政府运作的效率和安全性。

三省六部

2.5. 完全仲裁原则(Complete Mediation)

对于每个对象的每次访问都必须经过安全检查,即主体试图访问客体时,系统每次都会校验主体是否拥有此权限。

2.6. 心理可承受原则(Psychological Acceptability)

一般涉及人机交互的安全机制可能会降低用户体验,增加用户的额外负担,但这种负担必须是最小的且是合理的。

注:如果系统安全配置方法过于复杂,系统管理员可能无意配置了一个错误选项反而也会让系统变得不安全。

比如携程的用户登录就应用到了心理可承受原则,用户在第一次输入账户和密码正确时直接可以登录平台,但如果多次输入错误就会弹出拼图验证界面。毫无疑问,如果第一次用户信息填写正确的情况下,让用户多做一次拼图验证会降低平台使用体验。

携程登录界面

2.7. 开放设计原则(Open Design)

多数人可能认为只要产品的实现细节不公开就是安全的,最典型的例子就是不少公司或个人自研了私有的加密算法,他们认为只要算法不公开,加密的数据就是安全的,但实际应用中存在如下问题:

  • 攻击者可以通过网络抓包或二进制逆向加密算法进行破解;
  • 对公司不满的员工故意公开算法;
  • 算法源码被恶意软件窃取。

以上任意一种条件满足,此算法就不在安全了。此外,即便以上条件均不满足,私有的加密算法也容易被客户质疑,认为是故意设计的存在缺陷的算法,甚至会认为是预留的后门。

公开的密码算法

正确的做法是使用业界成熟的加密算法。封闭的算法安全性依赖于算法本身的保密,而业界成熟的公开加密算法的安全性依赖于数学难题(如大数的质因数分解)和密钥管理。

注:虽然密码算法要遵循开放设计原则,但密钥却不能随意泄露。

安全性不应该依赖于机制设计与实现的保密性,应当使产品的设计经受充分的检验。

2.8. 最小公共化原则(Least Common Mechanism)

尽量避免多个对象共享同一资源,任意一个对象的潜在问题都会影响到其他对象。

在阿波罗计划中,NASA 设计了多个航天器和模块,其中包括指令舱、服务舱和登月舱。为了确保宇航员的安全,NASA 在设计这些模块时严格遵循了“最小公共化原则”。

为了避免一个模块的故障影响到其他模块,NASA 尽量减少了各个模块之间的直接连接和依赖。例如,指令舱和服务舱在大部分时间内是分离的,只有在关键操作(如发射和返回)时才短暂连接。

2.9. 纵深防御原则(Defense in Depth)

纵深防御体本质是多层防御,使得入侵者必须突破层层堡垒才能接触到核心数据资产。防守方建立起纵深防御体系后,攻击方的入侵难度和入侵成本将大幅度提高,通常远未到终点时就会被发现,这就使得防守方有充足的时间响应和处置,从以前相对被动的地位转为相对主动。

来源:https://www.tonghaoinfo.com/news/211.html

但是,纵深防御机制设计得过于复杂时,也增加了系统的复杂性,从而导致为了解决某些安全问题而引入了其它的安全问题。

2.10. 保护最薄弱环节原则(Protecting the weakest link)

护最薄弱环节是指在安全设计中,系统的安全性往往是由其最薄弱的环节决定。以下介绍一个案例说明这一原则。

凯文.米特尼克(Kevin Mitnick)是美国著名的黑客,他在20世纪80年代-90年代通过社会工程和技术手段进行了一系列高调的黑客攻击,最终被捕入狱。在一次著名攻击中,他成功入侵了一家大型公司的内网,这次攻击中就反向应用了“保护最薄弱环节原则”。

黑客教父Kevin Mitnick

尽管这家大型公司拥有强大的技术防御措施(IPS等),但尼克知道公司员工很可能是其最薄弱的环节,便通过电话伪装成公司的IT支持人员,与一名普通员工取得联系,声称需要进行紧急系统维护,并要求这名员工提供他的用户名和密码。由于这名员工缺乏安全意识,便把敏感信息提供了出去。尼克通过此用户名和密码成功绕过了公司的所有技术防御措施,窃取了大量敏感数据,并进一步的扩大了攻击范围。

注:基于此原则,企业应该考虑将安全预算花费在保护最严重问题和高危漏洞上,将钱花在刀刃上。

如果你对安全设计感兴趣,推荐你阅读:

  • 软件安全的未来之路:构建默认安全的软件
  • 安全设计 | 安全设计不得马虎!微软STRIDE威胁建模方法可快速发现应用安全隐患
  • 安全设计 | Microsoft 威胁建模工具Threat Modeling Tool安装及使用详解(含样例)

参考链接

  • https://nob.cs.ucdavis.edu/classes/ecs153-2000-04/design.html
  • https://doc.polardbx.com/dev-guide/topics/triple-authority-introduction.html
  • https://www.tonghaoinfo.com/news/211.html

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

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

相关文章

【回溯】力扣 77.组合

一、题目 二、思路 采用回溯算法,注意点: 递归出口:已经选够 k k k 个数参数传递:由于不可以重复选择相同的数字,因此每选一个数就会使得可选择的范围对应缩小。不妨设定选择的顺序是从 1 1 1 到 n n n 依次进行选…

疯狂Spring Boot讲义[推荐1]

《疯狂Spring Boot讲义》是2021年电子工业出版社出版的图书,作者是李刚 《疯狂Spring Boot终极讲义》不是一本介绍类似于PathVariable、MatrixVariable、RequestBody、ResponseBody这些基础注解的图书,它是真正讲解Spring Boot的图书。Spring Boot的核心…

『 Linux 』网络传输层 - TCP(二)

文章目录 TCP六个标志位TCP的连接三次握手 四次挥手为什么是三次握手和四次挥手 重传机制 TCP六个标志位 在TCP协议报文的报头中存在一个用于标志TCP报文类型的标志位(不考虑保留标志位),这些标志位以比特位选项的方式存在,即对应标志位为0则表示为假,对应标志位为1则为真; SYN…

LeetCode --- 421周赛

题目列表 3334. 数组的最大因子得分 3335. 字符串转换后的长度 I 3336. 最大公约数相等的子序列数量 3337. 字符串转换后的长度 II 一、数组的最大因子得分 数据范围足够小,可以用暴力枚举移除的数字,得到答案,时间复杂度为O(n^2)&#…

动态规划-回文串问题——5.最长回文子串

1.题目解析 题目来源:5.最长回文子串——力扣 测试用例 2.算法原理 1.状态表示 判断回文子串需要知道该回文子串的首尾下标,所以需要一个二维数组且数据类型为bool类型来存储每个子字符串是否为回文子串, 即dp[i][j]:以第i个位置为起始&a…

微积分复习笔记 Calculus Volume 1 - 4.4 The Mean Value Theorem

4.4 The Mean Value Theorem - Calculus Volume 1 | OpenStax

docker engine stopped

1)环境:win 10 2)docker安装时已经已经安装了虚拟机 3)启用网络适配器 4)启用docker服务(依赖服务LanmanServer) 5)全都弄好了,docker还是打不开,没办法了&a…

【VM实战】VMware迁移到VirtualBox

VMware 虚拟机开机卸载VMware Tools 调整虚拟磁盘 对于Windows 10及以上的虚拟机,一般VMware默认都会选Nvme固态硬盘。在导出前必须将其改为SATA,否则VirtualBox导入会报Appliance Import错误 (E_INVALIDARG 0x80070057) 先删掉当前盘的挂载&#xff…

某本书上的一张序列图评点

贝贝 2019-8-24 10:56 潘老师,这个图是不是不太对。插卡,输入密码并不是ATM的职责? UMLChina潘加宇: 这种图用建模思维一挤压,脓包太多了。 问题一、几个生命线上的实例,抽象级别不一致。 ATM用户--系统&#xff0…

Docker | 校园网上docker pull或者docker run失败的一种解决方法

场景 需要从仓库拉取镜像 无论使用命令docker pull 还是 docker run 但是总是显示如下的错误: 解决方法 查看虚拟机网络连接方式 Linux上检查校园网是否登录 有界面 无界面 只是命令行操作的Linux 关于Linux服务器端更新命令apt update没有效果问题总结(校园网认证)

推荐一款功能强大的AI实时变声器:FliFlik Voice Changer

FliFlik VoiCE Changer是一款专注于声音变换与音频处理的创新软件,旨在满足从日常娱乐、游戏直播到播客制作、专业音频编辑的多种应用场景需求。无论是想在游戏中变换声音逗乐队友,还是在播客中塑造个性化的音效,这款软件都能提供灵活而强大的…

YOLOv8改进,YOLOv8改进损失函数采用SlideLoss来处理样本不平衡问题,助力涨点

摘要 作者提出了一种基于 YOLOv5 改进的实时人脸检测模型,称为YOLO-FaceV2。设计了一个感受野增强模块(RFE)来提升小尺度人脸的感受野,并引入了 NWD 损失,以弥补 IoU 在小目标位置偏差上的敏感性。针对人脸遮挡问题,提出了 SEAM 注意力模块,并引入了排斥损失进行优化。…

【django】django RESTFramework前后端分离框架快速入门

目录 一、搭建项目开发环境 1.1 pycharm创建项目 1.2 修改配置settings.py 1.3 新增 static与staticfiles文件夹 1.4 生成数据表 1.5 创建超级用户 1.6 启动项目 二、安装REST_Framework 2.1 安装 2.2 配置settings 2.3 重新执行生成数据库脚本 三、修改路由 四、s…

【微服务】Java 对接飞书多维表格使用详解

目录 一、前言 二、前置操作 2.1 开通企业飞书账户 2.2 确保账户具备多维表操作权限 2.3 创建一张测试用的多维表 2.4 获取飞书开放平台文档 2.5 获取Java SDK 三、应用App相关操作 3.1 创建应用过程 3.2 应用发布过程 3.3 应用添加操作权限 四、多维表应用授权操作…

二维legendre多项式

Legendre 多项式常用来表征方形波前的畸变。 目录 一维legendre多项式正交性自正交性 二维Legendre多项式正交性证明 可视化二维 Legendre 多项式解释 Legendre拟合方法1MATLAB 实现解释方法21. 定义一维 Legendre 多项式函数2. 生成二维 Legendre 多项式矩阵3. 计算 Legendre…

台式电脑如何改ip地址:全面解析与实操指南

有时候,由于IP地址冲突、网络安全、隐私保护或特定应用需求,我们可能需要更改台式电脑的IP地址。然而,对于不熟悉网络设置的用户来说,这一过程可能显得复杂而陌生。本文将通过全面解析与实操指南,帮助大家轻松掌握台式…

【私聊记录】最近在忙什么啊?听说你在学人工智能?

小舒:哎,你最近在忙什么啊? 小元:我在学习人工智能呢。 小舒:人工智能?难不难学啊? 小元:不难,找到正确的学习姿势就不难了! 小舒:那你为什么想学…

电动越野车行业全面深入分析

电动越野摩托车是将电动技术与越野性能相结合的一类摩托车,采用电力驱动,具有环保、节能、低噪音等优点,同时保留了越野摩托车的强劲动力和适应复杂地形的能力。电动越野摩托车通常配备高性能电动机和电池组,可提供强劲的动力输出…

ctfshow--xss靶场web327-web333(一命速通不了的靶场)

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 web327 打开页面是一个写信页面。 这里题目暗示不明显。 这里是要给admin写信&#xff0c;让他触发我们的xss。(不看解析不知道有个admin用户) payload: <svg οnlοadwindow.location.hrefhttp://xss平台地址…

法律文件智能识别:免费OCR平台优化数字化管理

一、系统概述 在法律行业&#xff0c;纸质文件的数字化需求日益迫切&#xff0c;合同、判决书、协议等文件的管理成为法律部门的一大难题。传统手动输入不仅耗时&#xff0c;且易出错。思通数科的OCR识别平台应运而生&#xff0c;以其开源、免费的特性为法律文档管理提供了智能…