该项目旨在演示 Pod 物联网安全解决方案——SAFE2 小程序,带有最简单的物联网模块——Arduino Nano。
SAFE2 小程序基于 GSMA IoT SAFE 理念的扩展。该小程序旨在为成本极低且受限的物联网设备提供遥测数据到数据服务器的安全传输。
IoT SAFE 小程序由 GSMA 于 2019 年 12 月 3 日推出。它旨在简化物联网解决方案并为加密密钥提供安全存储和安全环境以执行 TLS 协议的加密功能。
IoT SAFE 是一种运行在受保护环境中的安全库。这种模型意味着物联网应用程序的复杂架构,其中可能包括 TLS 层、中间件和带有物联网安全小程序的安全元素 (SIM)。
TLS 层负责 TLS 握手和协议处理。IoT SAFE 中间件负责将命令从 TLS 层传输到 IoT SAFE 小程序。IoT SAFE 小程序负责加密操作的执行。
Pod SAFE2 解决方案旨在简化从 SIM 卡到服务器的数据传输。它不仅包括加密库,还包括基于 SIM 工具包功能的 TLS1.3 协议实现。
它显着简化了数据收集应用程序(例如物联网遥测)和 SAFE2 小程序之间的接口。
外部应用程序只需要传递要发送到服务器的数据。
不再需要 IoT 应用程序中的 TLS 层,因为它已经由 Pod SAFE2 小程序实现。
SIM 负责所有协议步骤,包括域名解析和重复尝试,直到将消息传送到服务器。
要通过 SAFE2 小程序发送一些数据,设备应用程序应通过调制解调器中间件向 SIM 发送特定命令 - 用于完全 SIM 访问的 AT 命令,即“AT+CSIM”。
首先,辅助逻辑信道必须打开(以免干扰基本信道中调制解调器和 SIM 卡之间的 GSM 会话)。然后必须在新通道中选择小程序,并将数据发送到同一通道中的小程序。通道应关闭以供重新使用。
AT+CSIM 命令必须根据 ISO/IEC 7816-4 将下一个 APDU 命令编码到 SIM:
获取带有应用程序数据的 PUT DATA 命令,SAFE2 小程序创建一个发送作业。该工作包含地址信息和申请数据。小程序将尝试执行作业,直到成功为止。目前对于每个作业,如果需要解析服务器名称,并使用存储在 SIM 中的预共享密钥建立 TLS 1.3 会话。
下面是他的 Demo Scetch 的典型执行日志。第一部分是调制解调器设置,等待调制解调器中的网络注册和 GSM 相关进程的完成。下一部分 - 设备 ID 注册 - 完成设置。最后一部分 - 向小程序提供数据。
15:35:05.588 -> nano started!
15:35:06.589 -> put 'at'
15:35:06.988 -> put 'at'
15:35:07.389 -> put 'at'
15:35:07.789 -> put 'at'
15:35:08.189 -> put 'at'
15:35:08.589 -> put 'at'
15:35:08.988 -> put 'at'
15:35:09.387 -> put 'at'
15:35:09.787 -> put 'at'
15:35:10.186 -> put 'at'
15:35:10.286 -> at
15:35:10.319 -> OK
15:35:10.386 ->
15:35:10.386 -> +CFUN: 1
15:35:10.485 ->
15:35:10.519 -> +CPIN: READY
15:35:10.651 ->
15:35:10.685 -> SMS Ready
15:35:11.581 -> put 'at+creg?'
15:35:11.581 -> 0:2
15:35:11.581 -> cntr: 0
15:35:13.074 -> put 'at+creg?'
15:35:13.074 -> 0:2
15:35:13.074 -> cntr: 0
15:35:14.600 -> put 'at+creg?'
15:35:14.600 -> 0:5
15:35:14.600 -> cntr: 1
15:35:16.093 -> put 'at+creg?'
15:35:16.093 -> 0:5
15:35:16.093 -> cntr: 2
15:35:17.587 -> put 'at+creg?'
15:35:17.587 -> 0:5
15:35:17.587 -> cntr: 3
15:35:19.080 -> put 'at+creg?'
15:35:19.113 -> 0:5
15:35:19.113 -> cntr: 4
15:35:20.606 -> put 'at+creg?'
15:35:20.606 -> 0:5
15:35:20.606 -> cntr: 5
15:35:22.099 -> put 'at+creg?'
15:35:22.099 -> 0:5
15:35:22.099 -> cntr: 6
15:35:23.592 -> put 'at+creg?'
15:35:23.625 -> 0:5
15:35:23.625 -> cntr: 7
15:35:24.621 -> setup finished
15:35:24.621 -> at+csim=10,"0070000001"
15:35:24.621 -> +CSIM: 6,"019000"
15:35:24.621 ->
15:35:24.621 -> OK
15:35:24.654 -> at+csim=34,"01A404000CF0706F646773616665320101"
15:35:24.654 -> +CSIM: 4,"9000"
15:35:24.654 ->
15:35:24.654 -> OK
15:35:24.787 -> at+csim=30,"01DA02C00A51523143572089723526"
15:35:24.787 -> +CSIM: 4,"9000"
15:35:24.787 ->
15:35:24.787 -> OK
15:35:24.820 -> at+csim=10,"0070800100"
15:35:24.820 -> +CSIM: 4,"9000"
15:35:24.820 ->
15:35:24.820 -> OK
15:35:24.820 -> Set DeviceID: OK
15:35:24.821 -> Humidity: 40
15:35:24.821 -> Temperature: 25
15:35:24.821 ->
15:35:24.821 -> HT data:00280019
15:35:24.821 -> at+csim=10,"0070000001"
15:35:24.821 -> +CSIM: 6,"019000"
15:35:24.821 ->
15:35:24.821 -> OK
15:35:24.854 -> at+csim=34,"01A404000CF0706F646773616665320101"
15:35:24.854 -> +CSIM: 4,"9000"
15:35:24.854 ->
15:35:24.854 -> OK
15:35:25.650 -> at+csim=18,"01DA02C10400280019"
15:35:25.650 -> +CSIM: 4,"9000"
15:35:25.650 ->
15:35:25.650 -> OK
15:35:25.650 -> at+csim=10,"0070800100"
15:35:25.650 -> +CSIM: 4,"9000"
15:35:25.650 ->
15:35:25.650 -> OK
现在我们可以通过向服务器发送 https 查询来检查存储的数据。服务器响应数据如下。
[
{
"sim_attribute_update_id": 11,
"iccid": "894450250918638963",
"deviceid": "51523143572089723526",
"createdAt": "2020-10-01",
"updatedAt": "2020-10-01",
"sim_attributes": [
{
"id": 5,
"sim_attribute_update_id": 11,
"key": "data",
"value": "00280019",
"createdAt": "2020-10-01",
"updatedAt": "2020-10-01"
}
]
}
]
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !