我正在研究安全关键软件的开发,特别是编程语言的选择对这种开发的影响.
请详细说明常用的语言及其原因.
看看C,C对可以在代码中使用的形式方法(frama-c,VCC,verifast)有很好的支持.就我所知,C++似乎没有任何可比性.
有哪些正式方法可用于推理用C++编写的安全关键软件?
static_cast
在C++ 11/14或实现此功能的库中是否有"安全"替代方案?
"安全"我的意思是演员应该只允许不失精度的演员.因此,如果数字适合a ,则仅允许来自int64_t
to int32_t
的强制转换int32_t
,否则报告错误.
我目前正在考虑安全关键软件(DO-178C DAL-D)中的C++和编码标准的定义.我正在看MISRA C++,它已经10年了,并且错过了所有C++ 11 ... 17的功能.
虽然保守的安全性通常并不是一个坏主意,但新的语言功能可能有利于安全.
在评论期间,人们必须争论为什么做出某些决定.人们总是可以争辩说,新的语言特征使代码更清晰......从而减少了有关误解的错误; 特别是如果编译器能够测试和验证您的假设.
但很难找到比"让事情变得更清晰"更突出的安全方面的语言特征.现代C++的哪些方面真正有助于安全?
我正在建立一个小练习项目来测试这些想法,目前完全专注于"让编译器检查你的假设".例如,我们刚开始使用[[nodiscard]]
并在第一个小时内以这种方式发现至少两个错误.但是现代c ++的哪些方面被设计并且应该考虑到安全性?
我们正在使用java,spring,hibernate和其他一些现成的库来开发诊断应用程序.根据FDA指南(和咨询公司),如果开源库位于应用程序的关键路径中,则应对其进行白盒测试(因为我们有源代码).
如果我要读取的数据库表行,它会采取API的调用数百从因为交易的数据库获取的单排,休眠HQL-SQL,过程中涉及的JDBC API.
这是否意味着我必须验证每个API调用.?
我们是否应该将java也视为第三方库并验证我们在应用程序中使用的每个api调用?
不足以对这些库进行黑盒测试吗?
是否有使用spring/hibernate和其他开源库的医疗设备/诊断/医院软件?
我非常有兴趣知道你们中有些人是否遇到过这种情况以及你们是如何解决这个问题的?
感谢你的时间!谢谢.
我正在寻找有关安全关键系统开发技术/方法的良好资源(书籍或其他资源),尤其是涵盖硬件和软件的资源。我对 C/C++ 有丰富的工作知识,所以即使它只是 SourceForge 等上的代码,我仍然希望有一个链接来浏览。
谢谢。
我正在研究自动交易系统.我应该有什么样的保安?
我的主要想法是让多个部分相互检查.
我将有第二个独立的小流程,它也将连接到同一交易账户并监控简单的事情,例如确保总净头寸不超过一定限度,或者例如10分钟内不超过N个订单,或多于M个仓位同时开仓.您还可以检查实际未结头寸是否与策略流程认为实际持有的头寸相对应.作为奖励,我可以在不同的机器/网络提供商上运行此检查程序.
除了主策略中的检查,这将确保无论发生什么奇怪的错误,都不会发生任何真正的错误.
我应该监控和注意的任何其他事情?
安全关键项目不建议任何动态分配或释放分配的内存.仅在程序执行的精化/初始化阶段,才允许.
我知道你们中的大多数人都会争论实施SW,它应该只进行所有静态分配,或者在代码中做一些理由,动态分配不会损害整个程序等等,但是,这个问题还有其他选择吗?有什么方法或任何例子可以在程序初始化/详细说明期间分配一些(堆)内存并从那里分配/释放内存?如果我们真的想在(安全关键)项目中进行动态分配,还是解决这个问题的任何解决方案/替代方案?
首先,我读了这个.但我想扩大.总结一下:
在设计安全关键系统时,设计人员必须评估一些指标,以确保系统按预期工作.它是一种数学证明,具有足够低的复杂性,可供人类使用.它与问责制,可靠性,可审计性等有关......
在另一方面,在这一点上,AI是,似乎工作得很好,但大多数时候,我们做一个黑盒不具有证明其正确性的(主要是因为在框中正在进行的事情太复杂,是分析),它更像是一个统计确定性: 我们训练了系统,系统在所有测试中都表现良好.
那么,有些问题吗?
Q1.这两个模糊的想法现在有意义吗?
Q2.是否可以将AI用于安全关键系统并确保其性能?我们能否确定AI的确定性行为?任何参考?
Q3.我想已经有一些公司在汽车领域销售基于AI的安全关键系统.他们如何设法为这样一个限制性市场认证他们的产品?
编辑
关于Q1:感谢Peter,我意识到,例如,对于汽车示例,没有关于完全确定性的要求.ASIL D水平是汽车系统最严格的水平,只需要一个失效概率的上限.其他ISO26262标准和级别也是如此.我会改进这个问题:
Q1.系统设计中是否有任何安全标准,在任何级别/子组件,任何领域/领域,是否需要完全确定性?
关于Q2:即使不需要完全确定性,问题仍然存在.特别是,我现在正在阅读有关AI的可能攻击:我将在此处发布链接(此时我无法访问它们).
关于Q3:现在我了解他们将如何获得认证.无论如何,任何参考都会非常受欢迎.
requirements artificial-intelligence machine-learning safety-critical
safety-critical ×10
c++ ×4
c ×1
c++11 ×1
cppcheck ×1
finance ×1
hibernate ×1
java ×1
medical ×1
monitoring ×1
narrowing ×1
requirements ×1
spring ×1
system ×1
testing ×1
type-safety ×1