使用对称加密,定期发布新的密钥,那位达人提供一个轻量级的解决方案。

解决方案 »

  1.   

    请CSDN版主,MVP,各位博士,信息安全专家给个简单的实现思路。(可被推敲的方案)
      

  2.   

    谢谢楼上提醒,场景大概是这样的:一台服务器和多个客户端进行通信,数据量偏大。
    使用对称加密算法,服务器和客户端统一使用一个密钥。
    服务器与客户端的连接是不稳定的,使用消息队列传输数据(非WINDOWS SERVER版本域控制,IBM MQ/MSMQ)。
    定期重新发布密钥保证安全性。问题在于密钥如何安全发布?
      

  3.   

    大概明白了  ,
    你是想通过一种密钥 是 客户端和 服务器端通信 然后 又保证 数据 不被其他人 使用
    然后 因为数据量很大  使用轻量级的 解决方案 对吧...至于 LZ 想使用对称加密 ,我更推荐 非对称的RSA 加密 非常适合 你的场景
    当然 密钥的安全 发布 可以借助于 自己 服务器系统的 RSA证书机构
    或者使用 第3放付费的平台
      

  4.   


    如果使用 非对称的 加密方式 
    你发布一个公钥给对方  对方使用统一的公钥和你通信 
    保证了 你的数据安全 
    如果你还想确认对方是否是合法用户 
    你可以 让 客户端的  用户 颁发 密钥 ,他再 把它的 公钥给你 
    这样你们的通信就安全了 顺便 问一句 是 BS 还是CS
      

  5.   

    MSMQ 有 HTTP 方式 也有 DIRECT OS 方式 
    我只是用过 MS SQL SERVER 2005的 MSMQ 上的 证书机制
    服务器上面的配置还不会噢
      

  6.   

    方案一:
    1、使用对称加密对消息正文加密
    2、使用对称加密解密正文消息
    3、hash散列保证数据不被篡改。问题在于:
    对称加密需要定期更换,更换的原因是先前的密钥已经不再安全。如果我这个时候把新的密钥分发给客户端,那么中间人可以截获新的密钥(因为旧密钥未必安全)。在此要解决2个问题,1个是定期更换,2个是密钥泄漏(此种方式无法通过发布新的密钥可以解决,因为该新密钥需要网络传输,并被截获)方案二:
    1、使用一次性的对称加密对正文加密
    2、使用公钥加密该密钥并随正文一起发送到接收方。
    3、接收方使用自己的私钥解密正文,获得解密私钥,使用该私钥解密正文。对于该公钥的管理可能会使用PKI,但对于公钥管理来说,了解很少。方案三:
    使用微软操作系统域进行安全管理。
    好处是集成了所有的安全策略,验证,加密,访问控制,审核消息队列对象,公钥续订。
    代价是客户端必须使用MS操作系统(这个项目中是不可行的)。客户端有可能使用Unix,消息队列有可能使用IBM Web Sphere MQ请赐教!
      

  7.   

    系统是CS,MSMQ 不使用http方式。使用TCP方式。
      

  8.   


    IBM Web Sphere MQ 
    对这个 不太了解,只看过一些MS MQ
    方案二
    我可能选择 
      

  9.   


    其实 LZ 完全可以使用RSA 加密 将密钥的管理 交给 第 3放 
    比如 淘宝的证书系统
      

  10.   

    新的问题,MSMQ在长时间发送消息时会占用大量内存,初始值为106MB,发送100W条数据(146KB每个)后,内存占用1.3GB,机器无法运行。停止发送消息,内存无法释放,有人有过这样的经历吗?
      

  11.   

    汗..大量的 队列 是个很严重的问题 ,LZ 一直存 难道没有释放吗?
    请求一个 应该就要使用 
            protected MessageQueue queue;
                queue = new MessageQueue(queuePath);
                    using (Message message = queue.Receive(timeout, transactionType))
                        return message;
    LZ 长时间发送消息 ,但是 不处理 消息 ,那就等着 奔溃吧
    给一个  不错的方案 
    在请求的 同时  迅速 导入到数据库  到是正解
      

  12.   

    只是进行了一下测试,.NET回收垃圾太慢了,即使GC.Collect()也无法立刻回收内存,但内存下降到一定程度,.NET一次性释放所有资源。
      

  13.   

    虽然没有形成结果,仍然结贴。感谢bhtfg538