下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

为何 SESIP™ 认证对 FreeRTOS 非常重要

FreeRTOS 现已通过 IoT 平台安全性评价标准 (SESIP™) 保证等级 2 认证。FreeRTOS 是 是一款嵌入式操作系统,多数情况下运行在嵌入式系统处理器上。前所未有的是, 开发人员在构建 FreeRTOS 应用程序的同时 也参与到 FreeRTOS 社区中。在过去超过 18 年中,社区携手共进, 不断成长发展。尽管 FreeRTOS 系统最初只是 一个实时操作系统内核,FreeRTOS 提供了一些基础 库,如 FreeRTOS-Plus-TCP。这是一个稳健、安全而且 不断完善的 TCP 库。FreeRTOS 还提供 IoT 应用协议库, 如 coreMQTT,有助于开发人员有把握 安全地连接到云端。 FreeRTOS 是一个开源项目, 在社区的参与下不断完善,因而它 仍然是开发人员构建嵌入式 系统和解决方案的最佳选择。

在所有 FreeRTOS 项目中,安全是首要任务。 FreeRTOS 已经在通过内存安全证明不断提高安全覆盖范围。 现在,FreeRTOS 展现出充分的安全性,已经通过 IoT 平台 (SESIP™) 的安全性评价标准 认证。SESIP™ 的基本宗旨源于 业界通行的共同标准框架。 共同标准是计算机安全认证的国际标准 (ISO/IEC 15408)。 FreeRTOS 已经 被强大而严苛的 FreeRTOS 社区 严格审查,这正常也合乎情理。SESIP™ 认证体现了我们对所有 FreeRTOS 应用程序开发人员的承诺(不论他们是否真的需要自己证明网络安全的合规性),尤其是 那些需要证明网络安全合规性的开发人员,帮助他们的产品快速实现网络安全合规性。顾客可以 快速识别 SESIP™ 认证的应用程序, 这些应用程序符合一套严格标准。

FreeRTOS 的 SESIP™ 项目,配置了 FreeRTOS 202012.00 LTS 库,用于认证测试, 并由 FreeRTOS 在 GitHub 上维护。 这篇博客中的一些话题均 假设您已具备关于特定 FreeRTOS 内核特性或 库的知识。如果对这些特性有任何疑问,您可以随时通过 FreeRTOS 论坛,与社区互动。

本文列出了认证流程评估的 FreeRTOS 内核和相关 FreeRTOS 库的关键领域 。第一部分包括认证测试 假设。接下来的三个部分涉及进行测试的 主要方面。第五部分介绍对于希望获得 SESIP™ 认证的产品开发人员来说, 希望通过 SESIP™ 认证的产品开发人员而言, FreeRTOS 有何优点。

关于 FreeRTOS 内核和相关库的 SESIP™ 认证

SESIP™ 认证从 0 到 5 包含五个保证级别 。 随着保证等级的提高, 测试也更加复杂和严格。 GlobalPlatform™ 管理 SESIP™ 的五个保证级别,而测试 合作伙伴执行认证测试。TrustCB™ 提供了 SESIP™ 的所有五个级别的认证; FreeRTOS 接受了 SESIP™ 的二级保证测试, 其中包括为期两周的黑盒渗透测试运行。 Riscure 是一家经验丰富的安全测试实验室,能够 执行 SESIP™ 二级所要求的认证测试。 TrustCB™ 在确认测试结果后 发放认证。认证测试对以下事项进行了验证:平台 平台身份和实例身份、无线固件更新、安全 通信、隔离能力以及对 评估目标 (TOE),或就软件主体 (即 FreeRTOS 内核和相关 IoT 库)的加密操作。

环境假设

为了缩小测试参数范围, 在对 FreeRTOS 进行 SESIP™ 认证测试时,必须作出一些环境假设。

它假设平台只会部署在不会遭受物理攻击的环境中。 TOE 必须 具有一个内存保护单元 (MPU) 作为基础 硬件的一部分。 另外,测试不会向 TOE 添加任何恶意代码。事实上, 开发团队需要得到信任,必须实施 开发团队规则,约束对 FreeRTOS 源代码的 修改。最后一个假设是, 无线固件更新 (FOTA) 函数使用 AWS IoT OTA 更新管理器。 FOTA 功能 依靠中心化系统来传递命令和固件有效负载。 中心化系统不在测试范围内,但连接到 中心化系统的设备参与测试。

基于这些假设,让我们来看看前三个 测试的领域。

身份验证

认证规范中指出, “用户能够验证他们的产品是安全的, 前提是他们能够获得产品各个部分的标识 (包括应用程序和连接的平台)。” 源代码和配置管理是 是源代码和配置管理。 FreeRTOS 维护 FreeRTOS 内核和相关库 于 GitHub. Github 在线代码平台使用 Git 源代码控制 系统。 源代码控制系统允许认证和授权用户 修改源代码。源代码管理系统跟踪 提交到系统的每个原子提交,生成详尽的 代码存储库提交历史。 开发人员通常将软件 组件分别组织到单独的代码存储库,以便于管理和 组合。类似的,FreeRTOS 内核和每个库 都是软件组件,拥有各自的代码存储库。

尽管构成组件的每个文件都有一个 版本,配置管理器使用一个 Git 源代码 存储库标记以简化特定时间内连续提交的 源代码集合。 FreeRTOS 为每个软件组件(表现为单独的代码存储库) 维护一个文件清单, 该文件描述了 FreeRTOS 内核和库的连续集合。 FreeRTOS将清单用于验证身份真伪 长期支持 (LTS) 非 LTS 版本的身份。 经证明, FreeRTOS 202012.00 LTS 版被本用作 TOE。

认证测试评估了源代码编写并发现 实施者可以验证软件版本包括它们 他们产品的软件版本。 应用程序开发团队 必须在以下环境条件下进行操作:开发人员可以被信任 而且不会修改任何经 SESIP™ 认证过的 FreeRTOS 源代码。可以考虑将 FreeRTOS 源代码设置为 不可更改,因为修改源代码会使 认证无效。

连接平台的身份验证关系到 设备运行时识别。这意味着,开发人员和 操作人员可以通过标准的 API 或代码结构唯一识别正在运行的设备。在此测试中,库负责 提供运行时身份识别 API。 具体而言, 开发人员根据应用程序要求初始化 MQTTConnectInfo 结构体 。 当 IoT 设备连接到 MQTT 代理时,客户端 ID 必须是唯一的。该行为由 MQTT v3.1.1 规范,第3.1节,第3段所定义的。 开发人员 必须实现一个机制来进行唯一初始化 的结构体成员 pClientIdentifier 生成唯一的标识,而 CoreMQTT 库提供了一个统一的 API 来确定运行设备 身份识别。

系统更新

通过无线更新可以更新设备固件, 而不需要昂贵的回厂操作或技术人员支持。这种 OTA 方法 能够快速处理 设备部署到现场后发现的安全漏洞和软件漏洞。在验证更新内容 来自受信源时,同时也会进行其他 验证,如版本和兼容性检查。经证明, FreeRTOS over-the-air (OTA) 客户端库使应用开发人员能够管理 新更新的通知、下载和更新,以及 对固件更新执行加密验证。 我们前一个博客中讨论过 如何验证 OTA模型(在名为《使用正式的方法 验证OTA协议》的文章中)。

OTA 的一个关键方面是采用集中式服务,在服务器端提供 OTA 任务处理所需的 安全和作业管理机制。 每个集中式服务可以通过不同的方式 实现这种能力。 这篇博客前面的 环境假设提到 AWS 和 OTA 更新管理器服务 会被用作集中式服务。我们 使用AWS IoT无线更新库, 为 OTA 实现了设备端应用程序。 这个库无缝集成 OTA 更新管理器服务。

软件隔离

软件隔离有助于阻止攻击者修改内存, 在应用程序运行时修改内存可能对 所有正在运行的任务产生负面影响。 软件隔离包含两个层面:硬件层面 和软件层面的软件隔离。 硬件层面的软件隔离要求使用内存 管理单元 (MMU) 或内存保护单元 (MPU)。 对于 软件层面, FreeRTOS 内核必须为具备上述硬件条件的架构提供移植版本, 并实现 MMU 和 MPU 的配套功能。

接受认证期间, FreeRTOS 团队使用了 LPC54018 IoT 模块。该模块来自 NXP™ Semiconductors, 它具备一个 MPU,因此满足硬件要求。要满足软件隔离要求 并不困难,因为部分 Cortex™-M 架构的 FreeRTOS 移植 在之前 已经支持该功能了。隔离发生在 FreeRTOS 任务级别 ,因此开发人员必须 了解两种不同的 API。 了解更多关于此主题的信息, 请参阅 Gaurav Aggarwal 博客中有关 特性的部分ARMv8-M。

希望获得 SESIP™ 认证人士的额外福利

对于希望为自己的应用程序 获得认证的开发人员来说,SESIP™ 认证的有利之处 在于这种认证是在 软件和硬件依赖已经获得SESIP™ 认证的基础上实现的。 这就是组合认证,是构建安全和可信产品 的强大工具。 这对 IoT 设备来说尤其重要, 这是因为应用程序为了网络通信安全 使用软、硬件栈,从而变得更加复杂。图1 显示了应用程序通过认证时的理想情况。

图 1.
理想的情况是,绿色部分应用程序的所有底层组件都具备同等级或应用程序所需求的更高等级的 SESIP™ 认证。

SESIP™ 对应用程序进行认证时, 它希望开发人员的 TOE 关注点放在 代码或硬件这些直接处于他们控制之下的部分。 当开发人员使用 未获得SESIP™ 认证的硬件和软件, Riscure 等测试机构需要对 整个软、硬件栈进行测试。例如,图2 展示了由于 FreeRTOS 内核 修改导致需要重新认证的情形。

图2.
应用程序开发人员团队修改 FreeRTOS 内核使认证失效的的情况。

下一步工作

我们快速介绍了我们为 获取 SESIP™ 二级认证所做的努力! 下一步,我会 支持深入挖掘在此认证过程中 发挥作用的API OTA 提供出色的功能为开发人员 大规模部署 IoT 设备。 确保我们的运行时代码在 内存中得到保护也同样重要。 您要记住的是, LTS 和非 LTS 的清单文件对连续软件集进行描述, 即 FreeRTOS 和库的软件标识。 当 获得 SESIP™ 认证时,需要 基于 FreeRTOS 的 SESIP™ 构建,请查看 GlobalPlatform™ 网站上的要求。 然后, 根据 FreeRTOS 和库的清单文件使用它们,并在 未来开发过程依赖这些认证和保证。

祝您生活愉快,编程愉快!

作者简介

Richard Elberger 是 Amazon Web Services 的首席 IoT 技术专家。他是一位多产的演讲者,也是位不知疲倦的嵌入式技术迷。他定期撰写文章,为 IoT 和全球云从业人员创建内容和建设社区。Richard维护多个 IoT 相关的开源项目(FreeRTOS、meta-aws、ThingPress )并做出积极贡献。这些开源项目帮助客户在 AWS 上构建和交付出色 IoT 解决方案 。
查看此作者的文章
FreeRTOS 论坛 获得来自专家的行业领先支持,并与全球同行合作。 查看论坛
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.