我对加密一无所知。但我需要它。如何?
假设您有一个通过异步消息在网络上相互通信的节点系统。节点不维护有关其他节点的会话信息(这是设计限制)。
假设您想确保只有您的节点可以读取正在发送的消息。我相信加密是解决这个问题的方法。
由于节点不维护会话并且通信必须以无状态、无连接的方式工作,我猜测非对称加密被排除在外。
所以这就是我想做的事情:
- 消息作为 UDP 数据报发送
- 每条消息都包含一个时间戳以使消息不同(反重放攻击)
- 每条消息都使用共享秘密对称密钥加密并通过网络发送
- 另一端可以使用共享秘密对称密钥解密
密钥显然可以通过破坏任何单个节点来破坏。同时,在这种情况下,访问任何一个受感染的节点无论如何都会揭示所有有趣的信息,因此密钥不是最薄弱的环节。
我应该使用什么密码进行此加密?什么密钥长度?
我更喜欢使用ezPyCrypto支持的东西。
假设,正如大多数人指出的那样,我使用 AES。我应该使用哪些模式?
我不知道如何用 ezPyCrypto 来做,PyCrypto似乎挂在主持人交换上,谷歌的keyczar没有解释如何设置 - 我担心如果我不明白,那么我会冒险引入不安全感。所以准系统会更好。这家伙声称在 python 中有一个很好的 AES 模块,但他也声称这是他的第一个 python 项目 - 尽管他可能比我更聪明,但也许他被绊倒了?
编辑:我将对 python 实现的搜索移至另一个问题以停止破坏...