军方让我做即时通讯,好好交代一下网络安全问题(附源码)

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

由于Boss跟军方的特殊关系,我们又接到了军方的项目,这次呢是做一个即时通讯系统。虽然Boss跟军方很铁,拿到的项目款也很多,系统并不是很难,但是项目还是要好好做。无论如何,对系统的性能、友好性、安全性都还是要求很高的。30W也不是轻易就能搞到的。当然,也不算难,上周就已经发钱、发钱、发钱了!总共也就只不过花了2周而已。

      在此首先要感谢一下园子里的大大大大神GG无私奉献出的GGtalk,Boss说了,过两天联系上了一定发一个 5K 的大大大红包!

      今天呢主要想总结一波网络安全的问题。这也是军方最关心的。

一.网络安全的四种威胁 

    1.截获(比如抓包抓到了你传输的消息)      

    2.篡改(截获消息然后修改掉再发送,破坏消息的完整性)

    3.伪造 (比如非法源站冒充合法源站给目的站发消息)         

    4.拒绝服务(向目的站发起大量的恶意连接或者发送大量无意义消息使得服务瘫痪)

 

二.两种加密方式

     1.对称加密

      对称加密就是加密秘钥和解密秘钥是相同的,其中具有代表性的就是DES算法。DES算法是公开的,但是秘钥是保密的,而保密性是由秘钥决定的。

     2.非对称加密

        非对称加密就是加密秘钥和解密秘钥是不一样的。其中公钥、加密算法、解密算法都是公开的,而私钥是保密的,非对称加密的保密性是由私钥来保障的。

    

三.防火墙

    

      防火墙顾名思义就是一睹隔离危险的墙,能够阻止恶意的入侵或攻击,简而言之就是起到一个过滤的作用。其中分组过滤路由器能够对网络层和传输层的数据进行过滤。应用网关也称代理服务器,能够对应用层数据进行过滤。 

四.即时通讯中的消息加密

      3DES(或称为Triple DES)是非常常用的对称加密算法,是对DES算法的增强,它相当于是对每个数据块应用三次DES加密算法。GG即时通信系统中有Des3Encryption这个工具类,用以实现对该算法的封装。大家可以下载源码然后拿到该文件。

1.发送聊天消息

      在得到聊天内容后,先进行简单的序列化,然后对序列化的结果进行3DES加密:

复制代码
复制代码
 
    ChatBoxContent content = this.chatBoxSend.GetContent();  byte[] buff = CompactPropertySerializer.Default.Serialize(content);
    byte[] encrypted = buff;
    if (GlobalResourceManager.Des3Encryption != null)
    {
        encrypted = GlobalResourceManager.Des3Encryption.Encrypt(buff);
    }
 
复制代码
复制代码

  然后,将加密的结果通过IRapidPassiveEngine发送出去。

2.处理接收到的聊天消息

     接收到1对1的聊天消息或是群聊天消息后,首先要做的是解密,然后再反序列化:

复制代码
复制代码
 
    byte[] decrypted = info;
    if (GlobalResourceManager.Des3Encryption != null)
    {
        decrypted = GlobalResourceManager.Des3Encryption.Decrypt(info);
    }
    ChatBoxContent content = CompactPropertySerializer.Default.Deserialize<ChatBoxContent>(decrypted, 0);
 
复制代码
复制代码

3.处理离线消息

      离线消息是当接收者不再时,将该聊天消息暂存在服务器上,等接收者上线时,再发送给他。所以,离线消息的解密处理与普通聊天消息的处理是一样的。

复制代码
复制代码
 
    if (informationType == InformationTypes.OfflineMessage)
    {
        byte[] bChatBoxContent = null;
        OfflineMessage msg = CompactPropertySerializer.Default.Deserialize<OfflineMessage>(info, 0);
        if (msg.InformationType == InformationTypes.Chat) //目前只处理离线的聊天消息
        {
            sourceUserID = msg.SourceUserID;
            bChatBoxContent = msg.Information;
            byte[] decrypted = bChatBoxContent;
            if (GlobalResourceManager.Des3Encryption != null)
            {
                decrypted = GlobalResourceManager.Des3Encryption.Decrypt(bChatBoxContent);
            }                                  
            ChatBoxContent content = CompactPropertySerializer.Default.Deserialize<ChatBoxContent>(decrypted, 0);           
        }
    }
 
复制代码
复制代码

4.聊天记录如何处理?   

      根据上面的流程描述,我们可以知道,在服务端看到的聊天消息是经过加密的,而GGTalk在服务端有将聊天记录存储到数据库中的功能,因此,数据库中聊天内容那一列存储的数据也是加密的。在GG即时通信系统中,服务端不需要查看聊天消息的真正内容,所以,服务端不需要使用到Des3Encryption类。GG在客户端本地也有存储聊天记录(使用Sqlite),与服务器上数据库中存储的不一样的是,本地存储的是明文的。所以,在查看聊天记录时,要根据用户选择的是从本地查看还是从服务器查看来决定是否需要对数据进行解密:

复制代码
复制代码
 
    byte[] decrypted = record.Content;
    if (this.skinRadioButton_Server.Checked)
    {
        if (GlobalResourceManager.Des3Encryption != null)
        {
            decrypted = GlobalResourceManager.Des3Encryption.Decrypt(decrypted);
        }
    }
    ChatBoxContent content = CompactPropertySerializer.Default.Deserialize<ChatBoxContent>(decrypted, 0);
 
复制代码
复制代码

五.源码下载 

 

目录
相关文章
|
7月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的网络办公系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的网络办公系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
7月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的网络直播带货查询系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的网络直播带货查询系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
5月前
|
小程序 前端开发
网络祭祀人物微信小程序模板源码
网络祭祀人物微信小程序模板源码
56 5
|
5月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的网络在线考试系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的网络在线考试系统附带文章源码部署视频讲解等
57 0
基于springboot+vue.js+uniapp的网络在线考试系统附带文章源码部署视频讲解等
|
5月前
|
网络协议 网络架构
【网络编程入门】TCP与UDP通信实战:从零构建服务器与客户端对话(附简易源码,新手友好!)
在了解他们之前我们首先要知道网络模型,它分为两种,一种是OSI,一种是TCP/IP,当然他们的模型图是不同的,如下
218 1
|
5月前
|
存储 Java Unix
(八)Java网络编程之IO模型篇-内核Select、Poll、Epoll多路复用函数源码深度历险!
select/poll、epoll这些词汇相信诸位都不陌生,因为在Redis/Nginx/Netty等一些高性能技术栈的底层原理中,大家应该都见过它们的身影,接下来重点讲解这块内容。
|
6月前
高端响应式网络科技公司网站源码pbootcms模板
这是一款高端响应式网络科技公司网站源码pbootcms模板,适合所有类型的网络公司展示,整站源码下载,为您简化开发过程,可自适应手机端。
58 3
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的网络相册的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的网络相册的详细设计和实现(源码+lw+部署文档+讲解等)
37 1
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的网络小说微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的网络小说微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
|
5月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的网络安全科普系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的网络安全科普系统的详细设计和实现(源码+lw+部署文档+讲解等)