高完整性系统工程
文章平均质量分 89
高完整性系统工程课程记录
小羊和小何
渡人者自渡
展开
-
高完整性系统工程(一):Intro & Safety
系统失败会带来的问题。原创 2023-03-04 14:36:31 · 524 阅读 · 0 评论 -
高完整性系统工程(一): Safety Engineering, HAZOP & Fault Tree Analysis
当脚下压力发生变化时,制动控制器ECU接收来自制动踏板的信号。对于每一项,思考可能出现的潜在危险,并对其后果进行评级(catastrophic 灾难性的、critical 关键的、marginal 边缘的、negligible 可忽略的)。例如,气压计读书总是在暴风雨前下降,但气压计的读数下降不会引起暴风雨。:一个预期的行为,例如,一个过程中的事件或一个状态转换。我的系统设计是否正确地减轻了在 PHA 期间发现的危险(例如 HAZOP)?(突变),以分析当预期行为没有发生时可能发生的情况,并确定。原创 2023-03-11 21:25:11 · 615 阅读 · 0 评论 -
高完整性系统工程(二): Security Engineering: Threat Modelling
目录1. Basic Security Properties 基本安全属性2. Threat Modelling2.1 STRIDE 2.2 电子欺骗 Spooding 2.3 篡改 Tampering2.4 否认 Repudiation2.5 信息披露 Information Disclosure2.6 拒绝服务 Denial of Service2.7 特权的提升 Elevation of Privilege原创 2023-03-11 22:23:24 · 420 阅读 · 0 评论 -
高完整性系统工程(三): Logic Intro & Formal Specification
定义:A statement that is either true or false。原创 2023-03-18 17:33:37 · 830 阅读 · 0 评论 -
高完整性系统工程(四): Checking Formal Specifications
【代码】高完整性系统工程(四): Checking Formal Specifications。原创 2023-05-31 19:40:33 · 720 阅读 · 0 评论 -
高完整性系统工程(四):Formal Verification and Validation
例如,一个状态机可以用如下的方式进行描述:S0 (Init) --Opi-> S1 --Opj-> S2 ... --Opk-> Sn,其中S0, S1, S2...Sn代表不同的状态,Opi, Opj, Opk等代表可能的操作。这是一个表达式,表示的是对于所有的密码本(pb),用户(user),地址(url),密码(pwd)和结果(res)的组合,如果满足初始状态。函数,这个函数接收五个参数:pb(密码本),user(用户),url(地址),pwd(密码)和res(结果)。例如,在以下的密码添加示例中,原创 2023-05-31 21:56:33 · 727 阅读 · 0 评论 -
高完整性系统工程(五):Alloy Example and Trace-Based Modelling(Capability-Based Access Control)
在Alloy中,你可以定义一个状态的数据类型,以及一个转换函数,描述系统从一个状态如何转换到另一个状态。:在这个例子中,Boebert的攻击是指一个低权限级别的程序能够通过将其能力写入一个低级别的内存段,并且这个能力能够被一个高权限级别的程序读取出来,这样高权限级别的程序就能够以低权限级别的程序的能力进行操作,破坏了系统的安全。:在很多系统中,我们不仅关心系统在单个时间点的状态,还关心系统状态随时间的变化,即系统的行为。状态转换是指系统从一个状态变化到另一个状态,跟踪则是指一系列的状态转换。原创 2023-05-31 23:46:32 · 225 阅读 · 0 评论 -
高完整性系统工程(六):INTRODUCING ADA
举例子来说,一个int类型的数据与一个float类型的数据相加,最终的结果是一个float类型的数据,这个过程就发生了隐式类型转换,int类型数据首先被转成float类型,然后与另一个float进行操作,这便是相相关类型之间隐式转换。的定义实际上是在私有部分进行的,这种设计可以提供良好的封装性,防止数据的误操作。类型的一个子集,范围是0到86400。Ada是一种静态、强类型的编程语言,这意味着你不能将一个类型的值直接赋给另一个类型的变量,除非这两个类型是相同的,或者已经定义了从一个类型到另一个类型的转换。原创 2023-05-29 21:33:25 · 1047 阅读 · 0 评论 -
高完整性系统工程(七):Safe Language Subsets, SPARK Ada
安全编程语言指的是那些能够保证程序行为与程序员意图一致的编程语言。这涉及到程序的可预测性和可验证性。安全语言并不总是意味着程序不会崩溃,但它意味着这些语言相对于不安全的语言来说更简单。安全子集从一种语言中移除不安全的部分。它的哲学是让程序员付出更多努力,换取更简单的测试和验证过程。安全子集的程序可以使用现有的工具链进行编译和调试。程序员不需要学习新的编程语言。结果的程序更易于自动化分析和验证。原创 2023-05-29 22:54:01 · 769 阅读 · 0 评论 -
高完整性系统工程(八):Hoare Logic
霍尔逻辑是一种理论方法,用于证明程序的正确性,即程序的运行结果符合我们预期的功能和效果。这部分介绍了如何在霍尔逻辑中表示程序的基本元素。通过这些基本元素和结构,我们可以在霍尔逻辑中建立和证明程序的模型。这部分示例展示了一个阶乘程序FACTORIAL,输入是n,输出是f。主程序调用了。证明程序的正确性是遵循程序的结构,自顶向下。为了证明关于X的某件事,我们需要分析X的内部组件。霍尔逻辑使用霍尔三元组{P} S {Q}PSQ例如,描述的是,在执行x := x + 1之前,x的值是2。这是最强后置条件的示例。原创 2023-05-30 16:20:23 · 1742 阅读 · 0 评论 -
高完整性系统工程(九):Invariants
其中循环结构的一般形式表示为:({P ∧B} S {P} P ∧ ¬B => Q) / ({P} while B do S done {Q}),其中P为不变式,B为循环条件,S为循环体中的语句,Q为循环结束后的条件。根据前面说的不变式的性质,我们可以知道,这个不变式通常需要涉及到循环中改变的变量和后置条件中的内容。通过这个不变式,我们可以保证在循环开始、循环中、循环结束时,程序的状态都满足我们的期望,从而证明了这个循环程序的正确性。唯一不同的是,这里的目标是找出整个程序的前置条件,而不仅仅是循环部分。原创 2023-05-30 22:17:37 · 897 阅读 · 0 评论 -
高完整性系统工程(十):Programming and Proving with Pointers
本章介绍霍尔逻辑和指针编程,通过Ada语言来阐述函数的传参方法。主要讲解了两种传参方式,分别是按值传递(Pass By Value)和按引用传递(Pass By Reference),同时讨论了这两种方式在比较两个对象是否相等时的不同表现。原创 2023-05-30 23:58:58 · 506 阅读 · 0 评论 -
高完整性系统工程(十一):Fault Tolerant Design
例如,当P1,P2,P3分别输出24.2、24.1、24.3时,如果他们的输出在某个小距离ε内,我们就认为这两个测量值是足够相等的(sufficiently equal)。在这个过程中,更深入的理解和扩展,可以涉及到如何进行HAZOP,以及不同类型的故障(例如拜占庭故障)可能如何影响系统的工作。多数投票是一种简单的投票算法,其中的输出是投票中得到最多数的选项。在错误检测中,如果大多数的组件(例如P1和P2)提供了相同的值,那么这个值就会被视为正确的,而其他与众不同的值(例如P3)会被视为可能的错误。原创 2023-05-31 13:59:05 · 1153 阅读 · 0 评论 -
高完整性系统工程(十二):Separation Logic for Automated Verification
顺序规则(CONSEQ):(P → P’ {P’} prog {Q’} Q’ → Q) / ({P} prog {Q}),这个规则表示,如果从前置条件P可以推导出另一个前置条件P’,并且从后置条件Q’可以推导出另一个后置条件Q,那么原本的霍尔三元组的效果可以通过新的三元组来实现。在分离逻辑中,霍尔三元组{P} prog {Q}的含义是部分正确性(Partial Correctness):如果P在程序开始时成立,那么只要程序正常终止,Q就会成立,而且,程序绝对不会出错。以下是一个使用了上述规则和概念的例子。原创 2023-05-31 16:08:59 · 1295 阅读 · 0 评论