鉴源论坛 · 观通丨轨交系统安全性设计

news2024/11/26 17:00:16

作者 | 刘艳青 上海控安安全测评中心安全测评部测试经理

版块 | 鉴源论坛 · 观通

引语:第一篇对轨交信号系统从铁路系统分类和组成、城市轨交系统分类和组成、城市轨交系统功能、城市轨交系统发展方面做了介绍,第二篇从信号基础出发,讲述了信号机、转辙机、轨道电路等设置原则和含义,本文将从轨交系统的安全性设计的必要性、控制设计、需求分析以及实现等方面进行阐述。

1. 安全性设计的必要性

2. 安全软件控制设计

3. 软件安全性需求分析

4. 软件安全性设计及实现

01 轨交安全性设计的必要性

随着通信信号系统的发展,信号系统与综合监控系统信息交互,旅服系统、车站及列车广播系统等信息网之间的连接病毒、木马都会向信号系统扩散。信号系统本身的安全性防护不到位等安全漏洞,如果未进行有效手段的防护,极易造成重大行车事故。因此信号系统安全防护体系的建设已经迫在眉睫。在设计轨交系统的软件时,软件的安全性越来越重要,尤其对于当前的数据安全、处理安全以及保密安全。软件在具备数据安全的同时,还需注重软件的安全性设计。

软件安全主要表现在:

· 软件数据不被破坏或修改;

· 保密的数据不被公开;

· 数据和系统只能为系统用户使用。

软件可靠性主要表现在:

· 软件按照要求完成了对应的工作;

· 软件按照正确的方式完成了对应的工作。

基于此,软件安全可靠的实现和运行是数据正确、秘密和有效运行的保证,也是实现正确工作的可靠基础。

影响软件安全的不可靠因素:

· 输入错误;

· 系统的权限控制错误;

· 数据的使用权限控制不严;

· 数据的访问监查不到位;

· 数据保护不到位;

· 软件实现错误;

· 数据处理的安全机制不健全;

· 操作系统底层的漏洞;

· 其他的欺骗行为。

02 轨交软件安全控制设计

软件控制设计一般按照如下步骤实施:

首先,分析不安全的原因,找出影响范围最广、安全性最突出的问题,评估优先改善的项目或者目标问题;

其次,进行设计改善,当前提出的设计既要符合当前要求安全需求,也要能考虑进一步可以优化的安全需求;

再次,结合软件的生命周期活动,进行安全控制方面设计的改善。 

图1 软件安全性设计过程

03 轨交软件需求分析安全性设计

轨交行业软件需求分析和军工行业类似,在软件要求阶段,由软件设计人员通过对系统要求的充分一致性、完整性、明确性的分析,定义了软件要求。在进行软件需求界定时,软件设计人员所采用的方式主要包括:通过功能分析、面向对象分析、模型、仿真、业务分析、产品原型、场景分析等手段辅助界定软件要求。同时,还要充分考虑应用软件的时效性、内存容量、编程语言、操作系统环境和网络资源限制。

3.1 安全性设计方法

软件安全需求研究和系统分析的方式,主要从安全工作模式、运行状态和要求、容错与容失效、危险命令管理、接口安全、数据安全、系统资源等方面分析软件安全性需求的来源。

专用的安全性需求:特定的安全性系统需求,自上向下进行传递的需求,一般是系统经过初步分析的结果中包含危险原因,且和软件相关的安全性需求,也存在部分在研制后期发现后,从系统层面下达的。

通用的安全性需求:通常是某一领域的共同的安全需要。

3.2 软件安全性需求开发与分析的方法

系统专用的安全性需求,开发和分析除了根据系统的安全性需求和环境需求,还会依据通用标准、专用规范,根据资源的需求、接口需求以及危险报告,根据查找安全性核心功能,确定安全需求。

一般常用的方法有:基于软件功能的故障树分析方法、软件失效模式、影响和危害分析法。

针对安全性的关键功能,重点从:1)安全运行的模式、运行的状态以及安全运行的条件;2)容错与失效模式;3)危险命令处理;4)接口、数据、资源方面,进行需求分析。

3.2.1 安全运行的模式、运行的状态以及安全运行的条件

在这些情况下,随着运行模式或者任务阶段的不同,参数的允许边界可能会变化,比如在系统空载情况下,运行试验期间,对温度的要求,可能会降低。

安全性设计中一般我们需要分析出存在的潜在危险源,例如:顺序要求、不适当的事件、错误的量值、错误的极性、非控的命令、环境的因素导致的错误等,制定针对性的相应措施。

既然有了设计的措施,在测试过程中,要根据设计要求,制定针对性的测试要求,对设计的安全性要求进行逐个的测试,并根据具体测试要求的不同制定对应的测试策略。如错误的量值,规定的量值范围如0-100,是否确认了边界外的数据,是否对浮点数进行了处理,对0的处理正确性等。

3.2.2 容错和容失效

依据失效的容量,确定可接受的冗余要求;信息冗余要求;故障检测、隔离和恢复;冗余管理、转换逻辑。容错和容失效一般根据系统设计的要求而确定。

针对失效容限,可设置冗余的要求:一般针对软件安全程度,可设置软件的失效容限要求,例如,要求允许有一个或二个以上故障而不导致系统危险;根据程序的失效容限要求,对冗余要求的软件,也可采用回复块设计、屏蔽技术及多版本编程等方法实现。

信息的冗余要求:对于安全关键信息应该至少保存到2个存储空间,对于和安全核心功能的关键信息应通过至少两种产生方式或传输方式进行产生、收集或决定。

故障检测、隔离和恢复:按设计要求确定故障检测的要求,并按规定进行隔离错误或恢复系统等。

冗余管理/转换逻辑:如热备份、冷备份等,或者切换到其他的处理工作。

图2 信号系统中CI子系统工作状态切换

3.2.3 危险命令处理

危险命令一般包括:接收、传送或者启动关键信号、危险命令的功能,危险命令处理特别注意较长的命令路径会由于通信线路干扰、设备干扰、认为差错,增大出错的概率

接口设计一般须根据接口定义的物理层和逻辑层协议来进行安全性设计。 

3.2.4 数据安全

数据安全要包含所有过程中的数据,包括规定的静态数据、动态的输入输出数据以及内部生成数据的逻辑结构等,须说明对数据的约束。

3.2.5系统资源

· 临界时间:即从故障产生到系统达到不安全状态的时间。

· 自动安全保护:在临界时间比现实人工操作的响应时间短或没有人工干预的情况下,启动自动安全保护。

· 采样速率:采样速率决定了判定结果的基础数据的样本量,只有有足够的样本量时,方可确保决策的正确性的概率。

· 内存资源:根据设计评估内存的使用,通过估计代码规模来估算内存资源的消耗,同时还需考虑动态内存分配占据的比重,避免造成内存的溢出,一般在此必须考虑内存的余量,至少20%的余量设计。

04 软件设计的安全性设计

在软件架构阶段,一般是根据软件需求设计系统软件的顶层结构和软件模块,针对软件功能需求,设计人员可以探索性的实验,构造原型软件,对需求进行验证。

在软件详细设计阶段,软件设计人员根据针对软件架构中定义的模块进行详细设计,每个模块应该被细分为能够被编码、翻译、检索的底层软件单元。如果软件模块能够被复用,设计人员应当采取合适的手段使得软件模块满足软件需求。

在软件编码阶段,非新建软件,开发人员需要从指定的配置库中获取源代码、调试脚本、开发文档。可以从编程语言的使用、复杂度控制、注释要求和方法、指针的使用、多余物处理等方面进行软件编码的安全性设计。

开发人员根据软件详细设计进行重新编码或者修改既有的代码,编码完成后应确保没有编译错误和报警。一般,行业内会制定编码规则等措施规范编码,开发人员编码需要根据严格遵守通用编码标准,记录修改编码的过程。软件调试人员制定测试策略和测试案例,用于调试代码,测试过程应该能够验证代码实现和软件功能的正确性。可以通过代码逻辑验证、数据验证、接口验证、死代码验证、中断的使用验证、软件测试验证等方法进行代码的验证。

05 总 结

系统从安全控制、需求安全分析,再到安全设计,每个环节都是必不可少。轨交系统应用到具体的子系统中,如联锁的冗余设计等。软件安全性考虑,应用在V模型等。很多系统也具备仿真技术的软件安全性设计。信号系统中的故障导向安全原则,也是对危险失效的一种防护。

参考文献:

[1] 城市轨道交通信号系统安全防护体系建设方案

http://www.chinaaet.com/article/3000133785.

[2] GJB102A-2012军用软件安全性设计指南

https://wenku.so.com/d/10ab35c713ed036d8c62ad26aac63af8?src=www_rec.

[3] GBT 37691-2019 可编程逻辑器件软件安全性设计指南

https://wenku.so.com/d/bd18bdc0f2c5fe2486bf132311d6bc73.

[4] 城市轨道交通信号系统运行风险及对策

https://wenku.so.com/d/ff06751d586c6b814754e161bc342d24.

[5] 轨道交通运控CBTC系统安全软件开发过程介绍

https://wenku.so.com/d/b88ab18a04cd64886a5380b0b521fc44.

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

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

相关文章

【蓝桥杯算法 1】AcWing166.飞行员兄弟

本文已收录专栏 🌲《蓝桥杯周训练》🌲 “飞行员兄弟”这个游戏,需要玩家顺利的打开一个拥有 16 个把手的冰箱。 已知每个把手可以处于以下两种状态之一:打开或关闭。 只有当所有把手都打开时,冰箱才会打开。 把手可…

支持数位板的远程软件,实现远程使用 Wacom 数位板

现在数位板越来越流行了,影视、动漫、游戏、设计等行业经常需要用到。Wacom 是数位板领域的全球领导者,其设备为创意人员带来了真正的纸感绘图体验。 数位板用户需要远程办公的时候,经常会遇到两个问题:远程软件不支持数位板、远…

(考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例

文章目录一:计算机网络结构分层的必要性(1)分层思想(2)计算机网络分层思想①:如何让两台计算机通过网线传输数据②:如何让分组在单个网络内传输③:如何让分组在网络间传输④&#xf…

SpringBoot项目练习

项目名称:旅游网站后台管理一:项目简介旅游网站后台管理,包括如下用户:旅游线路:线路图片:线路分类:旅行社:后台技术:springboot、mybatis、mybatis plus前台:bootstrap、…

测试开发 | 专项测试技术初识Hook

本文节选自霍格沃兹测试学院内部教材Hook 技术需要预先分析目标应用的源代码和逻辑,根据目标测试场景设置目标、逻辑和数据,然后运行时动态的对目标函数参数值、逻辑或者返回值做修改,达到修改现有函数逻辑、实现目标测试场景的目的。Hook的价…

JavaWeb基础(一) Mybatis使用详解

JavaWeb基础——Mybatis 1,配置文件实现CRUD 如上图所示产品原型,里面包含了品牌数据的 查询 、按条件查询、添加、删除、批量删除、修改 等功能,而这些功能其实就是对数据库表中的数据进行CRUD操作。接下来我们就使用Mybatis完成品牌数据的…

3-2存储系统-主存与CPU的连接外部存储器

文章目录一.主存与CPU的连接(一)连接原理(二)主存容量的扩展1.位扩展法2.字扩展法3.字位同时扩展法(三)存储芯片的地址分配和片选1.线选法2.译码片选法二.外部存储器(一)磁盘储存器1…

JVM-三色标记

一、什么叫三色标记三色也叫三色抽象,它是所有mutator和collector都必须遵守的定律。它把对象标记为三种颜色:白色:对象还未被垃圾收集器访问,在回收的开始阶段所有的对象均为白色(当然了这只是指概念上的,…

PaddleNLP开源UTC通用文本分类技术,斩获ZeroCLUE、FewCLUE双榜第一

飞桨PaddlePaddle 2023-01-12 20:02 发表于湖北 针对产业级分类场景中任务多样、数据稀缺、标签迁移难度大等挑战,百度提出了一个大一统的通用文本分类技术UTC(Universal Text Classfication)。 UTC在ZeroCLUE和FewCLUE两个榜单上均位居榜首…

css加载会造成阻塞吗?

目录 A.设置网络加载速度 B.css加载会阻塞DOM树的解析渲染吗? 1.css会阻塞DOM树解析? 2.css加载会阻塞DOM树渲染? 3.个人对这种机制的评价 3.css加载会阻塞js运行吗? 4.结论 可以使用以下几种方法解决CSS加载速度的问题: …

曲线曲率介绍和python求法

目录曲率1.1 弧长参数 s参考资料曲率 比如我们想知道曲线 AB\boldsymbol{AB}AB 上任一点处的弯曲程度怎么办呢?这时就需要一个十分重要的概念——曲率。 维基百科: 在数学中,曲率(curvature)是描述几何体弯曲程度的量…

Octave安装与使用

1. 介绍 Octave是一种编程语言,旨在解决线性和非线性的数值计算问题。Octave为GNU项目下的开源软件,早期版本为命令行交互方式,4.0.0版本发布基于QT编写的GUI交互界面。Octave语法与Matlab语法非常接近,可以很容易的将matlab程序…

机器学习/人工智能 实验二:图像特征自动学习方法实践与分析

写在前面 参考的是https://zh.d2l.ai/index.html 一、实验目的与要求 (1)利用基于深度学习的特征自动学习方法完成图像特征提取的实验方案的设计。 (2)编程并利用相关软件完成实验测试,得到实验结果。 (3)通过对实验数据的分析、整理,得出实验结论&am…

Unity | 序列化(Serialized)和反序列化(NonSerialized)是什么意思

一、什么是序列化 官方叙述:序列化是将对象的状态信息转换为可以存储或传输的形式的过程。 人话叙述:我们平时输入的代码,实际上是不能储存或者传输的,所以我们需要翻译一下,翻译成能储存或者翻译的文字,这…

【SpringBoot 学习】52、SpringBoot 使用 grpc 实现远程服务调用

文章目录一、SpringBoot 使用 grpc 实现远程服务调用1、服务端编写2、客户端编写一、SpringBoot 使用 grpc 实现远程服务调用 gRPC 是一个现代的、开源的、高性能的远程过程调用(RPC)框架,可以在任何地方运行。gRPC 使客户端和服务器应用程序…

Java-Thread多线程的使用

Java-Thread多线程的使用一、线程,进程,并发,并行的概念1.进程2.线程3.并发和并行二、线程的创建和使用1.通过继承Thread类,重写run方法2.实现Runnable接口,重写run方法3.使用案例三、线程的常用方法四、线程的退出和中…

关于机器人状态估计(11)-VIO单目与双目/雷达Lidar SLAM/未来的机器人

写这篇文章的时候刚发生行业大事件: Google收购ROS 其实一开始还是水,绝对大量文不对题,但是必有干货,毕竟用的是这个关键的系列标题。 最近有几件行业内发生的大小事,让我觉得有必要更一下。 首先是Livox的mid-360…

VueUse(中文)——核心函数:State相关函数

VueUse官方地址 一、createGlobalState 将状态保持在全局范围内,以便跨Vue实例重用 1、没有持久性(存储在内存中) 例如: 或者 2、持久性存储 使用useStorage()存储在localStorage:例如: 组件使用: 二、createInjectionSt…

【图灵商城】前、后端项目搭建与运行

【图灵商城】前、后端项目搭建与运行 项目介绍 图灵商城-基础班架构图,如下所示: 本节是项目代码的初始化,今天是2023-01-15,先预祝大家新年快乐!!! 图灵商城这个项目是一个前后端分离的项目…

我这是这样知道 React TS 中的 Event Handler 类型的

开头 现在 TypeScript 的发展也越来越成熟,已逐渐应用到我们开发的前端项目之中,它能够带来类型提示,提前规避类型上的错误,来提高项目代码的健壮性,以及更高效的编码效率,前提就是我们需要定义好相应的类…