我有一个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 库?
- 算法安全吗?我是安全领域的新手,希望得到任何有价值的反馈。
提前致谢!!