有没有什么加密算法是一对多的?

2020-08-07 06:58:59 +08:00
 lihongming

有个项目可能需要用到一对多的加密传输,但我对加密没研究,求大佬们帮忙推荐个加密算法。

需求如下:

客户端: 每个客户端有自己的 key,发往服务端的信息都要用 key 加密后传输

服务端: 接收客户端发过来的加密信息,然后用自己的 key 解密,并且能验证客户端身份(比如客户端编号是 123,则其必须用 123 的 key,或者 key 本身带编号也可)

管理端: 可以根据服务端的 key 和客户端的编号生成无数多个客户端的 key

服务端、客户端、管理端都是脱机运行的,不联网。所以更新服务端名单的方法不能用,只能依靠加密算法。

4018 次点击
所在节点    程序员
24 条回复
lihongming
2020-08-07 15:36:21 +08:00
@keepeye 这样新增用户的时候,服务端就不认识了,因为服务端是脱机的,无法录入数据
LLaMA2
2020-08-07 15:55:30 +08:00
@lihongming 看到你 19 楼的回复,我想提醒一下,加密是为了传递过程中不被第三方窃取,而不是为了防止有人伪造合法的客户端,假定,你的客户端要给到客户的手里,那么他总有办法研究你的加密流程,他就一定能按照合法的流程组合好数据发送给服务端。

你的需求可能需要出厂的时候每个客户端都已经内置好了校验用的标识符,比如说每个设备都会生成一个 UUID 带上并且这个 UUID 在服务端上是独一份的,客户端所有的发送数据都会基于这个 UUID 做文章,你的服务端就知道这个数据是某个 UUID 发给你的,然后服务端保存了一份客户端-UUID 的映射表,每次新出一批设备就会在服务端添加上。

但是话又说话来,客户还是有办法基于他手里已经有的设备来伪造这个设备,不过他要伪造他手里没有的设备,那就只能靠猜了,毕竟只要你的 UUID 完全没有规律。
BIAOXYZ
2020-08-07 22:50:13 +08:00
hierarchical identity-based encryption 或 attribute-based encryption,然后有一个常规的证书系统就可以了。
lihongming
2020-08-08 08:09:56 +08:00
@ye4tar 就这个项目而言,加密不只是为了满足传输安全的需求,也是为了验证客户端的合法性。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/696319

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX