首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安全关键应用程序的Python编码标准

安全关键应用程序的Python编码标准
EN

Stack Overflow用户
提问于 2021-10-22 08:35:43
回答 2查看 506关注 0票数 2

来自C/C++背景,我知道在诸如MISRA、SEI CERT、Barr等嵌入式系统中,应用于安全关键应用程序(如经典的三重医学-汽车-航空航天)的编码标准。

跳过这个问题,它是否应该或者它是否适用于一种语言,我想为-even含糊地遵循一些安全标准的嵌入式系统创建Python应用程序,但是除了一般的Python编码标准(比如PEP8)之外,搜索找不到任何一个。

是否有一个Python编码准则,具体适用于安全关键系统?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-02 08:46:36

诸如IEC 61508 (工业)、ISO 26262 (汽车)或DO-178 (航空航天)等“功能性安全”的顶层安全标准提供了一个软件部分(例如IEC 61508-3),其中列出了许多合适的编程语言。这些都是久经考验的古老语言,在这些语言中,所有的缺陷和定义不清的行为都被认为是众所周知的,执行可以被视为可预测的。

在实践中,对于最高的安全级别,这意味着您几乎被限制在C与安全子集(MISRA C)或Ada与安全子集(火花)。还提到了一些其他的老语言,如Modula-2、Pascal和Fortran,但是在现代安全MCU中对这些语言的工具支持是不存在的。对此类MCU的Python支持也是如此。

像PythonandC++这样的语言甚至没有在最低的安全级别上被提及,所以在这些代码之间,它们被认为是完全不合适的。甚至比纯粹的汇编程序还少,因为它实际上是用来降低安全性的。

票数 5
EN

Stack Overflow用户

发布于 2022-07-24 16:00:09

在安全关键软件开发方面很难找到Python的指导,因为有太多的东西使Python无法选择真正重要的应用程序。你永远不能委托一段Python代码你的生活。请参阅以下几个理由:

Python中的内存模型与嵌入式软件语言中的内存模型有很大的不同。Python大量使用堆,而安全关键软件通常使用全局数据和堆栈。对于动态内存来说,执行安全评估太复杂了。您有内存碎片、垃圾收集、内存泄漏等现象。Python中防止这些事情发生的算法从未被限定过。

在Python中,您通常不关心依赖项、循环依赖项。因为一切都是在运行时解释的,所以它只是起作用了。但是安全关键应用程序通常需要在树结构中具有抽象级别和依赖项的自顶向下设计。因为这就是V型车想要的。这就是为什么大多数情况下Python代码都不符合安全标准的原因。

Python开发人员更喜欢防御性的编程风格,这样代码就不会受到不利的意外情况的影响。但是,在安全关键代码中,必须事先考虑到所有情况。防御性编程防止在开发早期检测设计错误。

对于lambda表达式和闭包,很难使用测试覆盖率指标。但在安全关键软件开发中,这些都是必需的。您至少需要覆盖每条Python语句一次,因为没有静态类型,测试是非常重要的。否则,您将无法可靠地识别类型错误。

我知道你并不期望有这样的安全水平,你只是想要有一定的(最好的)安全水平。如果有指导,Python的哪些特性可以被认为是安全的,以及推荐什么样的编程技术,这将是非常有趣的。不幸的是,目前似乎还没有得到任何指导。也许人们过于担心运行时环境和Python的概念还不够成熟或不适合安全关键应用程序。

阅读的好书是Leanna Rierson的“开发安全-关键软件-航空软件和DO-178 C遵从性实用指南”。它提供了非常有趣的洞察力,说明在开发安全关键软件时您必须关心什么。它甚至包括诸如面向对象编程之类的内容。说到C#或Java,据说这些语言还不够成熟。可以假设Python的情况也是如此。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69673807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档