在每个人大喊:“永远不要自己加密”之前,从技术上讲,我还没有(我仍然是一半),但除此之外,我正在制作一个类似 TLS 的协议,但要轻得多。
我需要用非常少的 RAM/ROM 和处理器能力来保护几个嵌入式系统之间的通信(嗯,它有 100 MHz,但其中很多都在持续使用并且不能中断)。
我要做的是使用AES-128和 GCM(或 CBC + HMAC)来保护设备之间的通信。有些设备只能使用 GCM,其他设备使用 CBC + HMAC 所以(仍在研究)我必须制作一个类似 TLS 的结构来同意使用哪一个(设备通过服务器通信,而不是点对点通信,所以有2 个中只有 1 个不是问题;服务器只需要两者)。
过去几个月(2 1/2)我一直在做很多研究,我想说我已经涵盖了基础知识。我现在开始实现我发现的所有内容(密钥的使用、IV、随机数、加密然后 MAC 等)。
现在问题来了:当我完成后,我希望检查我创建的代码。显然,TLS 所经历的深层次审查是无法实现的,但有什么方法呢?有没有可以发布我的代码以供审查的网站?有可以“认证”它的公司吗?当一家公司创建了一个安全的通信并想要验证它是否可以防止他们设想的事情时,通常会发生什么?
是的,我知道我没有使用 PKI。硬件处于安全环境中,不能将新设备添加到服务器(服务器保留一个可以连接的设备列表,并监控一个设备是否离线),因此该公司表示 PKI 可能是他们会考虑的东西稍后,但对于第一个版本将是不必要的。
编辑: 我想澄清一下(我收回几句话)。我将使用 TLS 来创建此协议,但 TLS 的使用量尚不清楚。如果可能,我会简单地尝试从 TLS 中删除我不需要的所有内容并以这种方式创建它,我可能会提取其中的一部分(加密然后 mac,将 IV 添加到密文等)并使用它。
但无论哪种方式,它都不是 TLS,即使只是从 TLS 源代码中删除内容也可能会引入弱点,因此仍然需要“审计”。