两个移动(Android 和/或 iOS)设备之间的安全连接

信息安全 加密 网络 证书 证书颁发机构 Python
2021-08-20 07:33:33

我有一个Device A将与网络上的多个设备(BLE 和/或 NFC)通信。

所有设备将在身份验证后处理一个令牌Device A,该令牌需要以某种方式安全和保密地传输到网络上。

实现它的最佳方法是什么。我想 SSL 握手之类的东西会是安全的,但更简单的解决方案将是首选。

基本上Device A需要充当服务器。

到目前为止所做的研究使我得出以下流程:

  • Device A设法将公钥发送给客户端。
  • 客户端使用密钥加密Token并将其发送到Device A.
  • 只能Device A读取Token并验证客户端。

这种方法的问题(及其解决方案,根据我在处理安全系统时的有限知识):

  • 令牌是相同的,公钥也可能会重复,从而导致系统存在弱点。

    • 令牌将通过网络以nonce传输。
  • MIM 攻击:任何人Device X都可以模仿Device A并向客户端发送公钥并发起交易。现在Device X知道令牌并模仿客户端。

    • Device A应该拥有某种数字证书来证明其真实性数字证书将由用 Python/Django 编写的服务器分配。并且所有客户端都应该能够在不与服务器交互的情况下验证证书。

关注点:

  • 由于我需要将它用于移动设备,因此我需要公钥对尽可能短但又安全。

问题:

  • 如何实现最后一部分算法?是否有任何可用于生成、颁发和验证证书的开源 python 库?
  • 算法安全吗?我是安全领域的新手,希望得到任何有价值的反馈。

提前致谢!!

1个回答

听起来是一个非常酷的项目。您似乎重新发现了Kerberos旨在解决的问题。

看看您的示例,您为什么不同时使用 PKI 两种方式?还是不能控制两端的证书?您可以查看 SSL 会话初始化,以了解如何在管理员的注视下传输机密消息。

如果您正在推出自己的解决方案,您会发现安全密钥存储是一个非常难以克服的问题。

编辑:为了解决您深思熟虑的问题,由于计算限制,椭圆曲线密码术经常在移动设备上使用。