RSA公私钥变更后续处理

jielidu 2010-03-08 10:05:59
公司用到了RSA加密,模式是C/S

Client保存Server公钥,发送数据时使用该公钥加密,Server用自己私钥解密。
为了防止Server公私钥泄密,需要定时变更。

那么就涉及到Server变更,怎样通知Client的问题。

目前有个办法,就是Client登陆时,Server发送公钥到Client;但有个问题:Client已经登陆并一直没有退出
Server公私钥变更的话,是让Client重新登陆的好,还是发送新公钥到Client端,继续通信?

大家有没有其他更好的办法????
...全文
229 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
_JeffreyWu 2010-03-08
  • 打赏
  • 举报
回复
友情 UP.........................
yuzl32 2010-03-08
  • 打赏
  • 举报
回复
你可以开启一个独立线程,让Client检测公钥是否发生改变,一旦发生改变就采用新的公钥加密发送数据。
jielidu 2010-03-08
  • 打赏
  • 举报
回复
Client登陆时,Server推送公钥,这个没问题。
有问题的是,用户一直在线并没有退出Client,它使用的还是旧公钥,发送数据到Server肯定解密失败(因为Server已经使用新的私钥解密)。这种情况下,怎么做到Client没任何感觉就能继续通信?

我上面提到的第一个需要Client重新登陆;第二个也需要C/S交互一次公钥,Client再重新发数据,这个感觉Client比较难实现。

想问下有无其他方法,Client不用重登陆,而继续进行通信
yuzl32 2010-03-08
  • 打赏
  • 举报
回复
没看出问题来,LZ认为这两种发送公钥存在什么不足点?是客户端识别不过来,还是什么?
zbing0203 2010-03-08
  • 打赏
  • 举报
回复
这样呢
server更改密钥时通知client 然后client回给server
server收到这个回复之后 才用新密钥解密
jielidu 2010-03-08
  • 打赏
  • 举报
回复
这里Server公私钥变更主要是:防止公司内部人员因为某些原因,造成密钥泄密。
如果采用流水号,并到Server查询机制,不能阻止泄密啊(这个密钥应该会被删除)


重登陆客户感知肯定不很好

那就只能采用:Client使用旧密钥发送数据,Server用新私钥检测,发现不对,就发送新公钥给Client;
Client用新公钥重新加密发送一次。如果还是存在错误,说明Client是伪造或者重复攻击,断掉连接或者提示客户重新登陆了
xboy 2010-03-08
  • 打赏
  • 举报
回复
为公钥提供一个流水号,系统建一张流水号、公钥表,每次服务器变更公钥时生成一个不重复的流水号。在给客户端发送公钥时,一并发送公钥对应的流水号。

客户端提交信息时,必须在信息中包含公钥流水号。

服务端根据流水号找到对应的公钥进行解密。

不应强制客户端重新登录,否则客户感知会非常不好。
jielidu 2010-03-08
  • 打赏
  • 举报
回复
不管是Server通知,还是Client监测
都必然存在:没监测或通知到之前,已经使用旧公钥加密并发送消息,后面才接到通知或检测到的可能性

这种情况下Client如何处理?
zbing0203 2010-03-08
  • 打赏
  • 举报
回复
server每次变更密钥时 通知一下client

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧