单片机内存安全功能的研究.docVIP

  • 46
  • 0
  • 约3.76千字
  • 约 8页
  • 2018-10-14 发布于福建
  • 举报
单片机内存安全功能的研究

单片机内存安全功能的研究   摘 要:针对单片机与安全相关系统的功能安全中涉及到的内部数据存储器安全管理的难点,采用对不同数据类型的划分,合理规划内存空间布局,并引入复合型冗余检验机制;增强单片机运行过程中检测内存寻址、写、存储和读过程中的失效问题以及防止内存中信息篡改的能力,确保产品在复杂现场运行环境中数据完整性和一致性,使得单片机产品在工业级应用领域的安全级别能够达到国际标准的要求。   关键词:参数变量;中间变量;临时变量;CRC循环冗余检验;复合检验   中图分类号:TP39   近几年来随着单片机在民用、工业、航天、军事等的广泛应用,在许多领域对单片机控制系统的安全性能的要求也越来越高。由于不同的应用领域,存在的潜在危险和风险,包含的复杂性各不相同,因此对于安全功能的需求也不经相同。目前国内外有很多认证标准对产品质量进行了安全相关规范,但由于标准涵盖面较宽泛,并未对如何进行安全设计方法进行细致描述,免不了使开发人员难以理解如何处理才能满足标准要求。本文基于工业自动化控制产品安全设计方法展开研究,并通过案例对具体实现方法进行阐述。本文的主要从提供有效检测内存寻址、写、存储和读过程中的失效问题以及防止内存中信息篡改,提高内存数据安全性解决方案入手进行研究。   目前对内存资源的管理在单片机产品开发领域仍属于一个比较复杂的课题;由于单片机内存资源有限,因此对单片机内存的合理划分是防止内存溢出,查询内存中数据状态变化,防止数据被篡改的有效手段。在这里将内存划分为三个部分:   第一部分:参数变量域;外部数据存储器中存储的仪表参数在单片机内存中的映射区域所对应的数据变量;仪器仪表上电时从外部数据存储器中读取至内存中参与运算或各类信息输出,用户修改内存参数后,将外部数据存储器对应参数进行同样修改,特性类似固定变量。   中间变量区域:根据部分参数变量进行查表或换算获得的特殊临时变量;该变量只存在于内存中,通常在参数变量发生变化时对其进行一次性运算赋值,用于简化运算步骤提高运行效率,特性类似固定变量。   临时变量区域:在内存中作为函数之间信息传递通道存在,数据变化随机无规律,特性属于动态变量。   单片机内存空间划分:   由于单片机内存资源有限,统筹内存空间布局有利于明确内存使用目的,减少内存碎片,查询内存状态,提高数据完整性检测效率,简化程序数据结构。   针对以上三种变量特性对内存进行如下划分:   作为仪表参数变量由于其存在一次修改后长期不变的特性可以采用16位CRC算法进行检验,由于其数据量较大运行一次会占用较多CPU资源,因此采用定期检测机制,以占用CPU总执行时间低于1/1000来确定间隔时间长度;如果运行一次要占用0.1sCPU执行时间,则采用100s以上间隔时间,以降低其对单片机系统运行效率的影响;为了简化程序结构,提高检测效率,可以按图1通过确定参数绝对地址采用结构体的方式在一个连续内存空间中放置参数变量;部分编译器存在不支持非对齐数据访问的情况,可以根据以偶地址为首地址按照FLOAT类型参数-INT32类型参数-INT16类型参数-INT8类型参数的先后顺序进行参数排列,这样便于确定参数块首地址和数据总长度两个参量,采用16位CRC算法进行统一检验。CRC又称循环冗余检验,其基本原理是:发送端在K位信息码后再拼接R位的校验码,整个编码长度为N位,故又称(N,K)码,如图2所示。于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x),根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。接收端将接收到的N位报文与G(x)进行运算,如果余数为0,则表示数据有效,再将报文右移R位得到原始报文,如果余数不为0,则数据无效,再做相应的处理。   16位CRC算法国际标准中常用的生成多项式为G(x)=x16+x15+x2+1。该算法可以用作检测一个字中所有的单位失效和所有的多位失效,以及所有可能位的99.998%的位失效;根据电气电子/可编程的功能安全性电子安全相关系统标准要求,16位CRC算法安全失效诊断覆盖率: 99%,属于高安全级别,能够满足工业产品的需求。其运算流程可以参看图3:由以上流程可知,CRC可以用来对内存中的参数区域内的所有数据进行签名,有效检测数据在单片机运行过程中是否被篡改,以保证数据的完整性和一致性。   但对CRC算法研究发现,其虽可以被用来检测内存数据有效性;但无法辨别内存每一位的物理特性,当数据存储器内某一位发生物理损坏,写入内存区域内的数据就会发生改变,导致CRC算法产生错误签名;为了弥补此不足按图4所示,设计了一种复合型内存检定方案;在内存中开辟一块存储区域,作为备份;备份数据与原参数区包含相同信息并且同原参

文档评论(0)

1亿VIP精品文档

相关文档