文摘,原文地址:https://msdn.microsoft.com/zh-cn/magazine/cc163519.aspx

威胁建模的本质:尽管通常我们无法证明给定的设计是安全的,但我们可以从自己的错误中汲取教训并避免犯同样的错误。



    首先需要知道什么样的设计是“安全的”,安全设计原则:

        开放设计——假设攻击者具有源代码和规格。

        故障安全预设值——出故障时自动关闭,无单点故障。

        最低权限——只分配所需的权限。

        机制经济性——保持简单、易懂的特性。

        分离权限——不允许根据单一条件执行操作。

        总体调节——每次检查所有内容。

        最低公用机制——注意保护共享资源。

        心理可接受性——他们将使用它吗?



    更进一步,设计完的系统应具有哪些安全相关的属性?

        机密性——数据只应限具有权限的人员访问。

        完整性——数据和系统资源只限适当的人员以适当的方式进行更改。

        可用性——系统在需要时一切就绪,可以正常操作。

        身份验证——建立用户身份(或者接受匿名用户)。

        授权——明确允许或拒绝用户访问资源。

        认可——用户无法在执行某操作后否认执行了此操作。



    使用STRIDE方法来进行威胁建模,确保应用具有这些安全属性。STRIDE是指:

        Spoofing(假冒) 对应 身份验证。

        Tampering(篡改) 对应 完整性。

        Repudiation(否认) 对应 认可。

        Information Disclosure(信息泄露) 对应 机密性。

        Denial of Service(拒绝服务) 对应 可用性。

        Elevation of Privilege(提升权限) 对应 授权。

使用数据流关系图(DFD)来辅助STRIDE分析,将系统分解成部件,并证明每个部件都不易受相关威胁攻击。DFD正确是确保威胁模型正确的关键所在。FDF包含如下元素:

        数据流:通过网络连接,命名管道,RPC通道等移动的数据。

        数据存储:表示文件,数据库,注册表项以及类似项。

        进程:计算机运行的计算或程序。

        交互方:系统的端点,例如人,web服务器和服务器。

        信任边界:表示可信元素与不可信元素之间的边界。

在应用STRIDE进行威胁建模分析时,需要注意的问题点:

        1、客户可能从来不会明确提出某些安全性的要求,因此,设计人员必须找到问题描述中内在的安全性要求。

        2、不仅必须从一个攻击者的角度来看待风险问题,还必须“同时”从所有的攻击者的角度来全盘考虑安全问题。

        3、DFD是否切合实际的常规判断依据:

            第一,数据不是凭空臆造的,确保对于每个数据存储,都有读取者或写入者。

            第二,注意数据传输过程的灵魂作用,确保始终有一个进程读取和写入数据。

            第三,将单个信任边界内的相似元素收缩为单个元素,以便于建模。

            第四,注意信任边界任一侧的建模细节,尝试显示更详细的信息。

       4、信任边界的真正定义——不相信另一端的任何事物。

5、你根本想象不到其他人为何需要你的数据,你只需认为有人需要你的数据。

       6、你与客户相距越远,就越难以知道客户对于不同风险的承受程度。不要对客户的情形或风险承受程度做过多的假设。

       7、攻击者可能是内部人员,而不是外部人员。他们可能具有合法的访问权限,可以访问数据库以完成自己的工作。

       8、针对每个威胁和DFD中的每个元素进行分析:针对所有数据流和数据存储解决了篡改、信息泄露和拒绝服务威胁;针对所有进程解决了所有STRIDE威胁;针对所有交互方解决了假冒和否认威胁;并解决了影响信任边界的独特威胁。

       9、STRIDE模型很好的一点在于,它能让你洞察你所需的抑制措施的本质。

       10、使用预构建的威胁树可以确保不会忽略已知的攻击。



    总结:对于任何挑战,一个好的策略是将问题分解成若干更易于解决的小问题。关键一点是找到适合你的方法,较早将其应用于设计中,记住任何组件都可能失败,并进行必要的研究,以确保你已考虑了已知的攻击模式

文摘:威胁建模(STRIDE方法)的更多相关文章

  1. 【安全测试】安全测试威胁建模设计方法STRIDE

    背景 目前安全测试一般都存在如下问题: 安全测试人员不懂业务,业务测试人员不懂安全,安全测试设计出现遗漏是无法避免的 安全测试点繁多复杂,单点分析会导致风险暴露,不安全 目前的状态: TR2阶段测试人 ...

  2. STRIDE威胁建模

    一.什么是威胁建模 简单的来说,威胁建模就是通过结构化的方法,系统的识别.评估产品的安全风险和威胁,并针对这些风险.威胁制定消减措施的一个过程. 威胁建模是一个非常有用的工具,它的核心是“像攻击者一样 ...

  3. SDL 威胁建模工具入门 threat modeling tool

    http://msdn.microsoft.com/zh-cn/magazine/dd347831.aspx threat modeling tool 威胁建模工具 minifuzz 文件模糊工具 c ...

  4. 三维建模:方法之CSG与B-Rep比较

    源自于百度百科:实体造型--- 三维模型特征表示方法: 计算机中表示三维形体的模型,按照几何特点进行分类,大体上可以分为三种:线框模型.表面模型和实体模型.如果按照表示物体的方法进行分类,实体模型基本 ...

  5. 【网络安全】——客户端安全(浏览器安全、XSS、CSRF、Clickjacking)

    ​ 近在学习网络安全相关的知识,于是先从业内一本系统讲Web安全的书<白帽子讲Web安全>系统学习Web安全的相关知识.在此整理书中的知识层次,不求详尽,只求自己对整个Web安全梗概有所了 ...

  6. 应急响应-PDCERF模型 (转)

    目录 应急响应流程 防御模型 SDL 应急响应流程 很多人认为应急响应就是脸上被黑的机器去查查什么情况,是不是被中了botnet病毒.是不是被人中了rootkit等,是不是被挂了webshell等.应 ...

  7. hive建模方法

    转自:https://www.jianshu.com/p/8378b80e4b21 概述数据仓库这个概念是由 Bill Inmon 所提出的,其功能是将组织通过联机事务处理(OLTP)所积累的大量的资 ...

  8. [本体论][UML][统一建模语言][软件建模][OWL]从本体论到UML到OWL

    以下内容,是关于软件建模的方法与思路. UML与OWL都是基于本体论的建模语言. 本体论(哲学) 本体论(信息科学) UML(统一建模语言) more info 参考:[设计语言][统一建模语言][软 ...

  9. 我的四轴专用PID参数整定方法及原理---超长文慎入(转)

    给四轴调了好久的PID,总算是调好了,现分享PID参数整定的心得给大家,还请大家喷的时候手下留情. 首先说明一下,这篇文章的主旨并不是直接教你怎么调,而是告诉你这么调有什么道理,还要告诉大家为什么'只 ...

随机推荐

  1. Windows命令行(DOS命令)教程 -1 (转载) http://www.pconline.com.cn/pcedu/rookie/basic/10111/15325.html

    一.命令行简介 命令行就是在Windows操作系统中打开DOS窗口,以字符串的形式执行Windows管理程序. 在这里,先解释什么是DOS? DOS--Disk Operation System 磁盘 ...

  2. Java的优先级

    序列号 符号 名称 结合性(与操作数) 目数 说明 1 . 点 从左到右 双目 ( ) 圆括号 从左到右 [ ] 方括号 从左到右 2 + 正号 从右到左 单目 - 负号 从右到左 单目 ++ 自增 ...

  3. js中的因数分解

    方法一: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8& ...

  4. Remove掉Request.QueryString

    好久上博客来了,最近有点忙,有点懒. 今天在解决一个Request.QueryString 传值的问题上遇到了,当不是第一次加载时需要把Request.QueryString的值赋值为null,刚开始 ...

  5. map和reduce

    map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回. map()传入的第一个参数是f,即函数对象本身.由于 ...

  6. 递归:这帮坑爹的小兔崽子 - 零基础入门学习Python023

    递归:这帮坑爹的小兔崽子 让编程改变世界 Change the world by program 斐波那契数列的递归实现 这节课我们用斐波那契(Fibonacci)数列的递归实现来作为第一个例子吧,斐 ...

  7. Jasper_table_pass parameter to table component

    <subDataset name="Dataset1" uuid="2a894ef4-dbcc-47df-bfaf-027766c7352e"> 2 ...

  8. [iOS常见问题] 关于使用QQ做第三方登录的问题!

    [iOS常见问题] 关于使用QQ做第三方登录的问题! 注意:QQ本身没有授权功能,所以想要使用QQ做第三方登录必须通过QQ空间来实现! 第一步:集成ShareSDK(步骤同集成分享的一样,如果已经集成 ...

  9. Powershell变量的幕后管理

    Powershell变量的幕后管理 513 12月, 2011  在 Powershell  tagged 变量 / 类型 by Mooser Lee本文索引[隐藏]1修改变量的选项设置2激活变量的写 ...

  10. leetcode_question_114 Flatten Binary Tree to Linked List

    Given a binary tree, flatten it to a linked list in-place. For example, Given 1 / \ 2 5 / \ \ 3 4 6 ...