有哪些方法可以验证自写协议?

信息安全 tls 密码学 代码审查
2021-09-02 11:24:21

在每个人大喊:“永远不要自己加密”之前,从技术上讲,我还没有(我仍然是一半),但除此之外,我正在制作一个类似 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 源代码中删除内容也可能会引入弱点,因此仍然需要“审计”。

3个回答

有些 IT 安全公司提供代码审计等服务(通常与渗透测试等其他服务一起提供)。你联系他们,描述你的需求,然后如果这属于他们的能力范围,他们会给你一个估计。

定义规范

如果您在削减代码之前正在编写/开发新协议,则应首先编写规范,例如请求评论 (RFC)。

即使您从不打算发布您的协议,过程也是重要的部分。RFC 将成为您希望在未来进行的任何评估的基础。

除了协议如何工作之外,您还需要描述您开发新协议/套件的原因以及为什么有人应该实施您的协议。

验证

要验证您的规范,您可以考虑以下组合:

  • 安全研究组织,例如 SANS
  • 大学
  • 安全社区通过发表研究论文
  • 第三方风险评估

请考虑开发健壮的协议需要时间,并且您可能需要对其进行版本控制,因此请为此做好准备。正如您所提到的,SSL/TLS 已经过大量审查,并且已经进行了多次版本化。

执行

在您定义了一个已经收到审查的规范之后,您将需要开发一个可以完成代码审查和渗透测试的参考实现。

对于代码审查,您将寻找具有您正在使用的编程语言的专业安全技能和渗透测试背景的评估员。他们将根据规范评估您的代码。

对于渗透测试,您需要找到有能力开发自己的自定义测试工具并获得 ISO 27001 和 Certified Ethical Hacker (CEH) 等认证的评估员。

其他要点

  • 显然,在投入如此大的时间和金钱费用之前,您需要考虑在您正在开发的系统的潜在生命周期内是否真的值得。

  • 就像其他人所说的那样,使用现有的协议实现通常成本更低,并且降低了安全风险。

  • 虽然您的计算能力有限,但可能有其他方法可以解决这个问题(而不是实施新的安全堆栈)。您真的需要消息隐私(在受控的安全环境中)还是只需要消息完整性检查?或者你可以只加密/解密信封。

无论如何希望这会有所帮助。

取决于语言和环境:

美国国土安全部和第三方托管 SWAMP(软件保障市场)。您必须申请访问权限和会员资格,但值得研究。

沼泽