Telemetry: Add an HMAC style authentication scheme to the telemetry system
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 30/100
- Issue 类型
- 功能
- 描述清晰度
- 需要澄清
- 活跃度
- 冷清
- 技术栈
- c
调研方向
首先跟踪飞行计算机上的遥测消息生成、通过 LoRa 的传输,以及地面站/SDEC 路径中的接收和验证。查看 Flight-Computer-Firmware issue 191 中的替代方案,并在实现之前确定身份验证设计、密钥处理、对消息大小的影响以及无效消息的行为。完成的标准是,双方都集成了约定的安全措施,并且格式错误或未经身份验证的数据不会继续传播。
由索引模型根据 Issue 内容生成。
描述
Requester: @ETSells
Describe the solution you'd like
The ground station currently provides no validation for the data it receives over LoRa. This is a security vulnerability. For the flight ecosystem, there is no impact on safety margins, so we have not prioritized it.
However, the new liquid feed system requires onboard flight data in order to function properly, so the criticality of this function will increase for that project. We need some security measure to provide an assurance that the received data is not maliciously malformed.
The flight computer has the highest design assurance and security assurance standards of any of SDR's projects, so we can safely consider it a trusted device. If the flight computer asserts that data is good, we can trust it. So, we need some method of determining that the device sending the data is the flight computer.
We can do this via some form of hashing scheme. Consider the following:
- A private key is generated in SDEC. This can be up to (256 bytes - lora_msg_size).
- That private key is uploaded to the flight computer and lives in the preset struct.
- When a telemetry message is generated, we take a buffer with the private key and the message, and then we hash over it using SHA-256.
- We can then append this hash to the generated message (either half of it (16 bytes) or the whole thing (32 bytes)). This brings our message length up to 64 bytes or 80 bytes, depending on how much of it we use.
- Continue the transmission process as normal
- The ground station receives the message, and if the CRC matches, it passes the whole thing including the hash to SDEC.
- On the other side, SDEC has a copy of the private key. It performs the same hash operation and compares its output to the signature.
a. If the signature matches, then we have an assurance that both the message content didn't get mutated in transit and that the sender is within the trust boundary.
b. If the signature matches, then either the message was corrupted in transit or sent outside the trust boundary. Either way, we discard the message and don't propogate the data through to displays.
Notably, since the message is fixed size, we shouldn't suffer from length extension attacks, which is the only known weakness of SHA-2. This does increase message size, which will reduce transmission speed.
Describe alternatives you've considered
See https://github.com/SunDevilRocketry/Flight-Computer-Firmware/issues/191.
Additional context
This is not an urgent feature that has to be worked in the upcoming release. The flight computer cannot be exploited as a result of the base vulnerability.
However, the New Liquids Feed System upgrades the criticality of the ground station and the data flow from it. As such, mitigation FC.NLFS.GS.3 requires the presence of some security measure on LoRa. Priority should increase as we get closer to NLFS completion.
Points of Contact
FC Rev 3 Project Lead / Telemetry & Security SME / NLFS PM & SQA: @ETSells
- 主要语言
- C
- 星标
- 4
- 派生
- 2
- 平均合并
- 5 天 2 小时
- 30 天内合并 PR
- 6
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 没有贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
SunDevilRocketry/mod 的其他 Issue
-
Sensor: Magnetometer calibration可能已有人在做 @NArmistead 于 27 天前认领。 未关闭enhancement
难度 5/5 一周以上 新手友好度 20/100
SunDevilRocketry/mod#163 · 1 条评论 · 已指派 1 人 ·
-
Telemetry: Create ICD可能已有人在做 @ETSells 于 26 天前认领。 未关闭advanced documentation
难度 5/5 一周以上 新手友好度 15/100
SunDevilRocketry/mod#161 · 已指派 1 人 ·
-
Mod: Make library platform independent可能已有人在做 @ETSells 于 25 天前认领。 未关闭advanced refactor
难度 4/5 3-5 天 新手友好度 35/100
SunDevilRocketry/mod#160 · 1 条评论 · 已指派 1 人 ·
-
Refactor: Split up sensor.c可能已有人在做 @ETSells 于 5 天前认领。 未关闭advanced refactor
难度 5/5 一周以上 新手友好度 15/100
SunDevilRocketry/mod#159 · 已指派 2 人 ·
-
Sensor: Rename and add LoRa to sensor mutex可能重新可做 @ferociousPandaPickle 于 35 天前认领,目前没有进行中的 PR。 未关闭enhancement good first issue
难度 3/5 1-2 天 新手友好度 64/100
SunDevilRocketry/mod#153 · 1 条评论 · 已指派 1 人 ·
查看 SunDevilRocketry/mod 的全部 Issue
相似的 Issue
-
ai-driven-fuzzing bug claude Minor
难度 2/5 1-3 小时 新手友好度 78/100
linagora/open-bastion#425 ·
维护者通常 1 天内回复
-
question
难度 1/5 1 小时以内 新手友好度 68/100
-
examples/dnsdoctor: cleanup.sh stops at the first missing piece of a setup.sh that did not finish未关闭severity: low
难度 2/5 1-3 小时 新手友好度 70/100
luainkernel/lunatik#2263 ·
维护者通常 1 天内回复
-
难度 2/5 半天 新手友好度 72/100
vercel-labs/scriptc#2910 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
darktable-org/darktable#22939 ·
维护者通常 1 天内回复