zoukankan      html  css  js  c++  java
  • 安全数据传输平台项目——总结1.0 --- 报文规则部分。

    项目描述:

    已经和组员完成安全数据传输平台项目有好一会了,最近也比较忙,所以抽周末一上午的时间来写这篇博客。

    首先先提我们的项目——安全数据传输平台。

    一句话概括我们要解决的社会痛点:基于用户互相通信间上安全的需求,通过对称密钥给信息包上安全。

    我们要解决的需求有:1.用户服务器与用户客户端一对一通信上安全的需求。

              2.用户服务器与多个用户客户端通信过程中,利用不同密钥分别上安全的需求。

              3.用户服务器集群能在某一用户服务器崩溃的情况下,完成处理与其通信客户端保存继续正常通信的需求。

              4.用户客户端下存在级联,客户端级联的客户端主机 需要与 客户端通信上安全的需求。

              5.密钥的分配,密钥的定时更新,密钥更新时用户通信保持正常和稳定。

              6.机器崩溃时用户可以手动协商密钥。

    而我的任务就是完成我们项目组件中:Linux下搭建密钥协商服务器与Linux与Windows密钥协商客户端以及共享内存设置部分。

    今天博客的内容主要围绕密钥的生成与分配展开,涉及到的知识点有——ASN.1 DER编码规则,socket。

    提出疑问:

    《计算机网络》(谢希仁)里就有提及,对称性密钥的实现有两大难点:

      1.如果有n个用户,每个用户都渴望和剩下n-1个用户建立连接,那么就一共要分配n(n-1)/2个密钥,这就是一个很典型的n^2问题。

      2.网络环境是复杂又不安全的,所以密钥的分配也是一个很大的问题。

    解决疑难:

    针对第一个问题,因为我们的测试环境下用户并不是很多,完全可以用四位数字来概括所有用户。将来如果真的存在这种需求,那么就要利用多个密钥,以一个主密钥和多个副密钥来加密 和 解密用户的信息包,这样其实多个用户可以共用的密钥时一样的,只是他们加密与解密的副密钥次序有了差别。

    我们项目制作过程中最主要遇到的还是密钥分配的问题,我们的大致思路是:由用户1生成一个随机数并发送给用户2,然后再由用户2生成一个随机数并发送,双方通过协商生成一个密钥,并将其存入数据库(同时在数据库中完成注册),要记住一个宗旨:密钥的分配过程一定不可以涉及网络。

    以上,就要涉及到我的任务:密钥协商服务器和密钥协商客户端的涉及!

    当然,涉及密钥协商服务器和密钥协商客户端并没有设计两个socket,一个connect一个accept这么简单。

    我们首先要注意一个问题:如果用户双方系统不一致怎么办???64位系统的数据到32位系统是否就会出现信息丢失。

    所以要引入今日重点——报文规则。

    今日重点:

      我在这里着重介绍几个著名的报文规则:

      1.HTTP与HTML

        HTTP就是我们著名的超文本传输协议,迄今为止用的最广泛的网络协议。HTML即为文本标记语言,HTML是一种规范,一种标准,它通过标记符号来标记要显示的网页中的各个部分。HTML在HTTP上运行,通过HTTP也可以传输图片,影像,数据等内容。

      2.XML

        XML为可扩充标注语言,由SGML所精简而来的一种通用标注语言,现在XML被广泛用于四方面:1.应用于具有不同复杂格式的不同数据源间的交互。2.应用于大量运算负荷分布在客户端的情况,用户可以根据自己的需求选择和制作不同的应用程序以处理数据,而服务器只需发出同一个XML文件。3.应用于将同一数据以不同的形式表现出来。4.应用于网络代理对所取得的信息进行编辑、增减以适应个人用户的需要,形成具有个人特色的数据文件。

        XML可以很好的满足我们的需求,因为我们传递的密钥协商信息包实际上就是一个结构体,里面包含了不同的数据类型,当然XML也有其局限性,它增加了信息包的内容,为了正确的传输和信息交互牺牲了一定的空间。

      3.JSON

        JSON是一种轻量级的数据交换格式。它并不是编程语言,其语法只支持字符串、数值、布尔值与NULL以及在此基础上的对象和数组。其读写成本低,极其适合互联网上的数据传递。

        JSON采用与编程无关的文本格式,只要该语言按JSON规则,就可以解析数据,跨平台无阻碍。

        JSON的语法实际上就是以键值对的形式存放数据,键值对间以‘,’相隔,键与值之间以‘:’相隔。

      4.用户自定义

        这个往往应用于公司内部,因为报文的复杂而且繁杂,所以需要自定义报文规则,针对win和Linux平台内存规则的不同,还有指针内部资源的获取,还有大小端字节序的不一致,综合考虑,自定义报文规则不失为一种明智的抉择。

      5.ASN.1 DER编码规则。

        ASN.1抽象语法标记,ASN.1可以理解成一个标准,描述了如何对一个数据进行表示、编码、传输和解码。它提供了一整套正规的格式用于描述数据对象的结构。

        DER为ASN.1标准下的其中一种编码规则,表示识别名编码规则。

        ASN.1提供了一些基本的预定义数据类型:

        https://baike.baidu.com/item/ASN.1/498523

        这里我调用了ITCAST的DER编解码库和日志打印库(windows下运行要屏蔽日志打印头文件)。

        以下是其githup地址:

        https://github.com/gitsshylalala/DER.git

  • 相关阅读:
    openssl之EVP系列之5---EVP_Encrypt系列函数具体解释(二)
    LINQ to SQL活学活用(1):这要打破旧观念
    【安卓】乾坤大罗移,将容器触摸事件传至还有一容器、!
    高速排序——JAVA实现(图文并茂)
    WebCollector爬取百度搜索引擎样例
    nyist 202 红黑树(二叉树中序遍历)
    excel转换日期格式,将yyyymmdd类型日期转换成yyyy-mm-dd等日期类型方法
    窗体界面设计03
    窗体界面设计02
    窗体界面设计01
  • 原文地址:https://www.cnblogs.com/shy0322/p/9312586.html
Copyright © 2011-2022 走看看