`
Liner
  • 浏览: 141562 次
  • 性别: Icon_minigender_1
  • 来自: 西南边陲
社区版块
存档分类
最新评论

普通 http 网络下数据的安全传输(设计原理)

阅读更多
曾几何时,https 安全但缺乏效率,http 有效率但却缺乏安全, 鱼与熊掌——两者不可兼得!

https 采用不对称加密算法创建安全的连接,之后用对称加密算法传递数据,安全性毋庸置疑——但因效率较低和授权费用(第三方 CA 机构认证)而难以普及。
http 设计的初始是基于相互信任,数据在网络上的传输是采用明文,不做任何加密处理,因此也就得到了效率——但数据的安全性或隐秘性就无从谈起了。只要别人愿意,网络监听就是一目了然的事。

为何不能将两者结合起来呢?——既有 http 的高效,又有类似 https 的足够的安全性!

在数据安全方面的理论中,要保证数据加密的可靠性,“密钥的传递”必须是安全的!一般情况下,密钥的传递途径最好与密文(加密后的数据)的传递途径不同。

一个显而易见的难题是——http 是明文传输

所以,通过 http 协议连接的服务器端和客户端,首先就无法实现密钥的安全传递! 或许因此,http 下数据的加密传输就失去了意义,也缺乏研究(大多寄希望于 IPv6 了——但那也还有些遥远,远水不解近渴)。

但当真如此吗? http 下真的没法做加密通讯么? 或许,我们可以慢慢探讨一下……

一、密钥的安全传递

这是首先要解决的问题。但如何在明文传输的 http 下进行呢? 毫无疑问,这是不可行的,《老子》曰:曲成万物而不遗——曲则全。呵呵,我们可借助 https 的安全性来实现密钥的安全传递,然后在 http 下进行业务数据的加密传输。

这样的想法,似乎一目了然,很直观,但如何实现? 经济效益如何? 在浏览器跨域安全规则的限制下,这样的想法实现起来却并不直观。初看起来,经济效益也并不怎样——既然有了 https 服务,干嘛不就用 https 来做业务数据的传输呢?

其实并不然,首先可以看下经济效益的问题:

有一台 https 服务器
A.  直接用来做业务,业务占用大量的 https 资源……这台 https 也就只能做少量的用途了。
B.  只做 “认证” 服务,即只做密钥的传递工作……它可以给很多普通 http 服务器提供服务——这很适合一站通式的站群登录服务。

并且:
A 方式中,大量的业务可能会压垮 https 服务器,使得需要投入新的 https 相关费用。
B 方式中,因为只提供认证服务,服务单一,既便于维护,也可以承载更大量的认证请求。同时,认证与业务的分离,使得业务的扩展变得简单——不论是相同业务的硬件扩展,还是不同业务的软件扩展。

所以说,在经济上,这十分划算!

下面看看,密钥如何从安全的 https 连接中安全地传递到普通的 http 连接下(这里说的传递可是指任意域间的跨域传递哦!)。
说明:因为没有现成的 https 服务,没有做过 https 页面中向 http iframe 设置 window.name 的测试。但原理上,设置 iframe 的 window.name 与 iframe 的 src 属性中 url 的协议类型无关,故这应该是可行的,有条件的朋友不妨一试。

用图示说明较好,传递方式如下:




1. 安全认证(图中 1-3):
    通过 https 安全连接登录, 服务器端存储密钥,同时返回密钥和登录ID;
    客户端转递密钥到目标域本地存储,同时向目标域中的 http 服务器发送登录ID。

2. 安全业务(图中 4-5):
    目标域中的 http 服务器通过“登录ID”从 https 服务器提取密钥并存储(Session 中);
    与客户端进行数据的加密传输,实现数据安全的业务通讯。

二、数据的加密传输

在实现了密钥的安全传递之后,数据的安全就可以通过加密来保证了。

但就我所知,在现阶段的各个浏览器中,尚未实现 http 下数据加密的调用接口(指 JS 环境),故我们只能自己来创造 JS 下的加密方法了。如本博客前几篇博文所述(请参看:《几个文字加密的 JS 简洁算法和一些个人的想法》《几个文字加密的 JS 简洁算法(续)-- 字符错位法》《几个文字加密的 JS 简洁算法(续2)--进制乱序法》), JS 环境下也是可以有简单且高效的加密方式的——或许我们只需要对“文字”进行处理,加密后的密文依然是正常的可视文字,从而并不影响 http 下明文传输的设计思想。

文字的加密方式应该会有很多,前几篇博文也仅是提供了一些思考的素材。http 下的通讯因没有考虑安全性,故网络劫持依然会存在——不论对客户端还是服务器,但那是另一个话题了(当然也可以通过一些手段来增强其安全性)。

JS 下数据的加密算法有待专业人士的努力和创造,俺就不多干巴了……但就前述的几种加密算法,本人倾向于“进制乱序法”,因为密文十分规范,网络传输十分可靠(ASCII 字符集是任何系统都可良好处理的)。——注:该算法或许应该改进一下,实现自动识别单双字节以节约编码长度。

参考:
wnRequest 的实现,请参考《近乎完美的简单 JS 跨域解决方式 --window.name》
在一年多以前,曾经写了一篇博文《普通 http 下可靠的网路认证方式》,如果您时间充裕,不妨小看一下,呵呵。
欢迎提出宝贵意见!
  • 大小: 7.1 KB
分享到:
评论
3 楼 clue 2011-02-15  
对称加密算法的效率通常都非常高的吧,以前在学校的时候,课程设计就是实现AES算法。
当时一个同学的程序就有10M每秒(或者是20M?记不清了)的处理速度,要知道当时还是单核,1G的时代。

嗯。。。我想应该比gzip还要快些吧,没试过……
2 楼 lym6520 2011-02-15  
可以看出LZ对CAS单点登入也是蛮有研究的哦。
1 楼 aofeng 2011-02-14  
不错的文章,分享既方便他人,也方便自己。

相关推荐

    网络游戏-Wifi-Direct网络的数据传输和处理方法及系统.zip

    本文将深入探讨基于Wifi-Direct的网络游戏数据传输和处理方法,以及相关的系统设计。 Wifi-Direct是一种点对点的无线通信技术,允许设备间直接建立连接,进行高速数据传输,无需通过传统的无线路由器。对于网络游戏...

    第1章 数据通信基本原理.pdf

    ### 数据通信基本原理 #### 一、网络通信基础概念 数据通信是信息技术领域...这些基础知识对于理解现代网络通信至关重要,不仅有助于工程师设计和维护复杂的网络系统,也对普通用户理解和使用网络服务有极大的帮助。

    飞鸽传输====能在本地网络中快速传输文件====速度能达到10M每秒

    P2P技术的一大优点就是减少了网络延迟,使得数据传输更为迅速。 1. **高速传输**:飞鸽传输能实现10M/s的高速传输,这是由于它充分利用了局域网内的带宽资源,避免了互联网传输可能带来的网络拥堵问题。对于大文件...

    计算机网络原理模拟计算机网络原理模拟

    这些知识点涉及到计算机网络的基本组成、协议功能、网络设备的作用以及数据传输和控制机制。对于理解和操作计算机网络系统至关重要。填空题和简答题部分涉及的内容包括网络分类(局域网、城域网、广域网)、以太网...

    计算机网络组成原理第一章

    在TCP/IP模型中,这四个层次分别是:网络接口层(对应OSI的物理层和数据链路层)、网络层(对应OSI的网络层)、传输层(对应OSI的传输层)和应用层(对应OSI的会话层、表示层和应用层)。TCP/IP模型更侧重于实际操作...

    网络编程之文件传输

    **UDP**则是一种无连接协议,它不保证可靠的数据传输,但能够同时向多个目标发送数据,适用于实时性要求较高、但对数据准确性要求不高的场景,如视频流媒体等。 在本实验中,为了确保文件数据在传输过程中不会丢失...

    网络传输介质与网络设备PPT学习教案.pptx

    从电话线到双绞线,再到光纤和卫星,不同的传输介质满足了各种场景下对数据传输的不同需求。而集线器、交换机和路由器等网络连接设备则为网络中不同设备间的通信提供了可能,它们的出现使得网络的可扩展性和灵活性...

    易语言屏幕差异传输优化

    - **安全性**:数据传输过程中应考虑加密,防止数据被窃取或篡改。 - **性能优化**:如何在保证效果的同时,降低CPU和内存占用,提高程序的运行效率。 总的来说,易语言屏幕差异传输优化是一个综合性的技术课题,...

    多通道高速数据采集电路设计

    综上所述,设计一个多通道高速数据采集电路需要综合考虑系统的工作原理、采样率、模数转换器的选择与参数计算、以及电路板的设计等多个方面。它不仅是电子工程领域的一项技术挑战,也是实现高速、高精度数据采集的...

    电信设备-宽带通信数据传输方法.zip

    在这个压缩包文件中,主要包含了一份名为“宽带通信数据传输方法.pdf”的文档,它可能详细阐述了宽带通信的核心原理和技术。 首先,宽带通信的基本概念是指能够传输宽频率范围信号的通信系统,通常指带宽大于1MHz的...

    网络游戏-一种网络数字音响传输板及音频网络系统.zip

    为了减少音频数据传输过程中的带宽需求,同时保持音质,这种传输板往往采用高效的音频编码格式,比如AAC或Opus。这些高级音频编码技术能够在较低的比特率下,提供接近CD级别的音质,这对于优化网络传输效率和节省...

    大型网络综合设计报告——sniff嗅探程序

    #### 设计原理 本设计采用了Linux环境下的Libpcap库进行报文捕获,该库允许程序捕捉网络接口上传输的数据包。设计流程包括使用Libpcap捕获数据包,然后根据数据包类型进行相应的处理算法。对于链路层数据包,首先...

    小型园区网络设计说明.doc

    通过小型园区网络设计,我们可以掌握网络互连设备的使用及工作原理、IP 地址的配置及数据传输过程和路由的选择等方面的知识,并且可以提高分析问题的能力和实践能力,培养科学研究的独立工作能力。

    全国2009年7月自考计算机网络原理试题.pdf

    计算机网络原理是信息技术领域的重要组成部分,它涉及到网络的构建、数据传输、协议栈以及网络设备等方面的知识。2009年7月的全国自学考试计算机网络原理试题主要考察了考生对网络基础知识的理解和应用能力。 1. ...

    z-modem文件传输协议

    这些专业人士通常负责管理和配置网络中的数据传输机制,确保数据能够高效、安全地在不同系统之间交换。 #### 三、为何开发ZMD? 自半个世纪前Ward Christensen开发了最初的Modem协议以来,该协议(后来被称为X-...

    第2章网络数据通信基础OK.pptx

    这些基本概念构成了网络数据通信的基石,后续章节如数据传输、数据编码与纠错、多路复用技术和数据交换技术则分别讲述了如何高效、安全地在不同的通信环境中传输数据。数据交换技术包括电路交换、报文交换和分组交换...

    蓝牙调试器(一个巨好用的蓝牙控制数据传输手机APP)

    蓝牙调试器是一款强大的移动应用程序,专门设计用于通过蓝牙技术进行设备间的数据传输和控制。它在Android平台上运行,为开发者和普通用户提供了一种便捷的方式来测试和调试蓝牙功能。这款APP适用于各种场景,如...

Global site tag (gtag.js) - Google Analytics