领导非要实现这么一个需求:
需要提供一个接口,用户发送个人私钥、消息实体等一系列数据,让我使用特定算法完成签名,然后需要提供另一个接口,这个接口实现对签名的验证,然后将签名验证成功的消息发送给我的下游。 流程为:A 将数据发送给我->我完成签名->我自己调用验证接口验证该签名->将消息(不包含签名)发送给 B ,所有接口均走内网。 我这一步岂不是多余?自己签名自己验证,B 也不会去验证任何东西。还要求签名和验证分别部署,请问这样做真的有意义吗?
1
yuanix 2022-05-31 15:04:27 +08:00 1
过于愚蠢以至于我怀疑是领导没说清楚自己的实际需求
|
2
wd 2022-05-31 15:06:02 +08:00 via iPhone
私钥都发给别人了还叫私钥吗?
|
3
skull 2022-05-31 15:10:05 +08:00
怕是没有理解透领导的需求吧
|
4
cloudsigma2022 2022-05-31 15:13:09 +08:00
领会意图,事半功倍。领会不了,事倍功半!
|
5
coderflying OP @yuanix 我一开始看到这需要我也傻了,我反复确认了数次,他也明确说流程就这样。
|
6
M9jB6pg65 2022-05-31 15:16:43 +08:00 2
听上去像是 ssl 加速卡的诡异变种, 不同在于 正常人最多认为 pci 设备可信, 而你的老板似乎认为内网是绝对安全的
|
7
MoYi123 2022-05-31 15:17:32 +08:00
我们公司还有要填身份证号鉴权,然后去查自己身份证号的接口呢.
|
8
coderflying OP @wd 我对加密这块不是太熟悉,所有私钥由我们本地生成再发给用户,我也提过私钥这样通过网络传输不安全,但是没办法,需求就这样
|
9
dcsite 2022-05-31 15:20:59 +08:00
A:数据发送端
C:加密(签名服务) D:解密(验签服务) B:数据接收端 我觉得你领导这个需求没问题,相当于微服务化了 |
10
coderflying OP @skull 我曾视图说服领导说我这块根本是多余的,他跟我掰扯半天,我感觉的快说服的时候,来了句”这样跟客户说的时候,显得我们这用到了 xx 签名,显得安全。“
|
11
billlee 2022-05-31 15:24:11 +08:00 via Android
以后要做性能优化的时候,就可以去掉签名、校验这段代码了(不是
|
12
codefever 2022-05-31 15:26:52 +08:00 1
我觉得不是领导不懂,只是客户不懂,但是又不能说客户不懂,所以以一种客户能理解的方式去运作项目,照顾了客户的面子,除了繁琐对项目也没有其他影响,客户觉得自己的需求也得到了你们充分的尊重,win-win
|
13
coderflying OP @codefever 这个说法可以,很可能就是客户非要加这么个东西
|
14
coderflying OP @billlee 看了流程图你会发现多余的实在太多了,优化的空间非常大
|
15
libook 2022-05-31 15:31:25 +08:00
按需求做了,出问题怎么追责,得想清楚。
|
16
coderflying OP @dcsite 如果我仅提供签名和验证服务并分别部署由其他角色调用,那我觉得没问题。但是在这里,除了我自己永远不会有人调用验证接口。
|
17
Irina 2022-05-31 15:34:03 +08:00
用户角度来看,进行了验证并收到验证成功提示的确能带来一种“更安全”的感受,尽管实际...hhh
|
18
coderflying OP @M9jB6pg65 他坚信内网绝对安全,坚信 AB 间交互时在提供各自身份的时候,要对身份信息进行加密才安全,我说如果别人拿到这个加密后的身份密文去与对方交互,这不是白搭,他说别人不可能拿到
|
19
xsm1890 2022-05-31 15:56:29 +08:00
你是来实现需求的,不是来评价需求合不合理的,手动狗头保命!
|
20
bk201 2022-05-31 15:56:44 +08:00
为啥不和领导提出自己的不解。
|
21
zhaokun 2022-05-31 16:40:54 +08:00
我之前也接触过这类领导
拆分微服务,每个微服务里有且仅有一个接口,领导的意思是,给甲方报的时候显着服务多工作量多 |
22
LZWDRWEB 2022-05-31 16:46:51 +08:00 1
检测电脑有没有开机.exe
|
23
bthulu 2022-05-31 16:47:57 +08:00
领导是需要全盘考虑的, 不仅仅是技术方面的考量. 有些事情, 技术上确实是无用功, 但这无用功, 恰恰是公司能成功的关键.
|
24
Yest192 2022-05-31 17:14:28 +08:00
为什么我感觉没什么问题呢.. 不过我不是做后端的,只是提一下我的看法:
感觉你这个模块就算是 验证也解密的 领导希望这块和主要的逻辑功能解耦吧。这样子如果后面还有其他客户端,可能主逻辑不用改了,只需要改动你这块就行了。还有就是内网也不一定安全,但是至少比公网安全得多吧,所以这个秘钥验证我觉得也是有意义的吧。 |
25
cp19890714 2022-05-31 17:32:21 +08:00
你来问网友, 为啥不直接问你领导呢?
如果你觉得他没说清楚,或者你无法接收他给的解释,那你就问到底。 这种具体的事情,就别来问网友了,问了也没用,网友最多也只能给你方法论。 |
26
Vindroid 2022-05-31 17:36:05 +08:00
这不是技术层面的需求,而是纯业务要求导致的,你照做就行了,和领导细聊技术没意义
|
27
janus77 2022-05-31 17:40:38 +08:00
这种基本上就是为了满足某些强制标准 或者吹嘘安全性用的,没有实际意义但是必须要做。这样的需求到处都是,我之前还遇到一个项目,谈的时候说搞了两台服务器,做的时候是一个单体项目,然后领导跟我们说把数据库部署到一台,服务部署到另一台,不然客户会觉得我们没用光预算,显得我们做的东西太过简单。这样会影响后面的单子。
|
28
Zerowgd 2022-05-31 18:00:23 +08:00
感觉你这不叫私钥,类似于 AK/SK 认证方式,发送私钥以及实体进行数据签名,然后接口去验证,这个接口去验证只是你们领导想把验签独立,类似于 Oauth2 的资源服务器认证,然后 B 服务可以通过调用接口返回的消息来确认是否是验签成功的,个人认为没什么问题,整体流程微服务化
|
29
imn1 2022-05-31 18:07:29 +08:00
签名和验证签名很可能是在两套设备上完成,就是“我”和“我”是一个岗位的两个工序
你想想: 1. 秘书把命令书准备好 --> 生成签名(的环境) 2. 领导审阅签字 --> 验证(这个验证可能在办公室,也可能在远程国外完成) |
30
sivacohan 2022-05-31 19:16:18 +08:00
你说的这个不是加密机的操作流程吗?
是不是可以推荐领导采购一套加密机? |
31
FrankAdler 2022-06-01 00:49:31 +08:00
@bthulu 听君一席话
|
32
JamesMackerel 2022-06-01 10:20:21 +08:00 via iPhone
确实蠢到妈都不认识了,不过既然已经反复沟通过了,那说明让上级理解的可能性很小,所以现在方案就两个,一个是跑,另一个是快点做完回家抱老婆。
|
33
JamesMackerel 2022-06-01 10:24:42 +08:00 via iPhone 1
对了,记得留好沟通的记录,把你在安全上的考量和对这个方案的疑虑都写出来在一个可查的文档里,让领导确认就是要这样做。
否则可能会有意想不到的结果。 另外,如果领导在做完之后又说这个方案怎么那么蠢,要改掉,你就要么跑要么按部就班地排期改,改完了回家抱老婆。刚刚说的那个文档和签字画押是老板试图让你背锅的时候用的。 |
34
Outshine 2022-06-01 12:55:15 +08:00
楼上都没人注意到需要用户上传自己的私钥这个事情嘛?
|
35
zilongzixue 2022-06-01 15:50:02 +08:00
@Yest192 你看懂了吗,楼主是自己加签自己验证,直接把数据转给 b 不就行了,还加密个毛,这不是脱裤子放屁吗
|
36
raysonlu 2022-06-01 16:57:02 +08:00
可以尝试不要把自己代入进去理解。A 发消息给 B ,B 生成一个签名,然后问 C 是否正确。把 AB 当作一个客户端整体,C 是远程服务端,这模式看上去就有点类似软件注册码验证了,当然 B 如果真的是在客户端的话应该是“编译部署”好的。
|