分布式系统开发实战:安全通道

这篇具有很好参考价值的文章主要介绍了分布式系统开发实战:安全通道。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据安全是一个非常值得关注的问题。数据在网络上传播,数据很容易被侦听、窃取,如果想要实现数据的安全,一个非常重要的方式就是给数据加密。SSL/TLS和TLS就是这类安全协议,它们层叠在其他协议之上,用于实现数据的安全。

19.3.1 SSL/TLS

安全套接字层(Secure Sockets Layer,SS-L)是在网络上应用最广泛的加密协议实现之一。SSL使用结合加密过程来提供网络的安全通信。SSL提供了一个安全的增强标准TCP/IP套接字用于网络通信协议。如表19-1所示,在标准TCP/IP栈的传输层和应用层之间添加了安全套接字层。SSL的应用程序中最常用的是超文本传输协议(HyperTextTransfer Protocol,HTTP),这个是互联网网页协议。其他应用程序,如网络新闻传输协议(Net News Transfer Protocol,NNTP)、Telnet、轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP)、互动信息访问协议(Interactive Message Access Protocol,IMAP)和文件传输协议(File Transfer Protocol,FTP),也可以使用SSL。

分布式系统开发实战:安全通道,安全,php,开发语言

SSL最初是由网景公司在1994年创立的,现在已经演变成为一个标准。由国际标准组织(Internet Engineering Task Force,IETF)进行管理。之后IETF更名为SSL传输层安全(Transport Layer Security,TLS),并在1999年1月发布了第一个规范,版本为1.0。TLS 1.0对于SSL的最新版本3.0版本是一个小的升级。两者差异非常微小。TLS 1.1是在2006年4月发布的,TLS 1.2在2008年8月发布。

19.3.2 SSL握手过程

SSL通过握手过程在客户端和服务器之间协商会话参数,并建立会话。会话包含的主要参数有会话ID、对方的证书、加密套件(密钥交换算法、数据加密算法和MAC算法等)以及主密钥(Master Secret)。通过SSL会话传输的数据,都将采用该会话的主密钥和加密套件进行加密、计算MAC等处理。不同情况下,SSL的握手过程存在差异。下面将

分别描述以下3种情况下的握手过程。

  • ·只验证服务器的SSL握手过程。
  • ·验证服务器和客户端的SSL握手过程。
  • ·恢复原有会话的SSL握手过程。

只验证服务器的SSL握手过程如图19-2所示。

分布式系统开发实战:安全通道,安全,php,开发语言

如图19-2所示,只需要验证SSL服务器身份,不需要验证SSL客户端身份时,SSL的握手过程如下。

(1)SSL客户端通过Client Hello消息将它支持的SSL版本、加密算法、密钥交换算法、MAC算法等信息发送给SSL服务器。

(2)SSL服务器确定本次通信采用的SSL版本和加密套件,并通过Server Hello消息通知SSL客户端。如果SSL服务器允许SSL客户端在以后的通信中重用本次会话,则SSL服务器会为本次会话分配会话id,并通过Server Hello消息发送给SSL客户端。

(3)SSL服务器将携带自己公钥信息的数字证书通过Certificate消息发送给SSL客户端。

(4)SSL服务器发送Server Hello Done消息,通知SSL客户端版本和加密套件协商结束,开始进行密钥交换。

(5)SSL客户端验证SSL服务器的证书合法后,利用证书中的公钥加密SSL客户端随机生成的Premaster Secret,并通过Client Key Exchange消息发送给SSL服务器。

(6)SSL客户端发送Change Cipher Spec消息,通知SSL服务器后续报文将采用协商好的密钥和加密套件进行加密和MAC计算。

(7)SSL客户端计算已交互的握手消息(除Change Cipher Spec消息外所有已交互的消息)的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并添加MAC值、加密等),并通过Finished消息发送给SSL服务器。SSL服务器利用同样的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比较,如果二者相同,且MAC值验证成功,则证明密钥和加密套件协商成功。

(8)同样地,SSL服务器发送Change Cipher Spec消息,通知SSL客户端后续报文将采用协商好的密钥和加密套件进行加密和MAC计算。

(9)SSL服务器计算已交互的握手消息的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并添加MAC值、加密等),并通过Finished消息发送给SSL客户端。SSL客户端利用同样的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比较,如果二者相同,并且MAC值验证成功,则证明密钥和加密套件协商成功。SSL客户端接收到SSL服务器发送的Finished消息后,如果解密成功,则可以判断SSL服务器是数字证书的拥有者,即SSL服务器身份验证成功,因为只有拥有私钥的SSL服务器才能从Client Key Exchange消息中解密得到Premaster Secret,从而间接地实现了SSL客户端对SSL服务器的身份验证。验证服务器和客户端的SSL握手过程如图19-3所示。

分布式系统开发实战:安全通道,安全,php,开发语言

SSL客户端的身份验证是可选的,由SSL服务器决定是否验证SSL客户端的身份。如图19-3中(4)、(6)、(8)部分所示,如果SSL服务器验证SSL客户端身份,则SSL服务器和SSL客户端除了交互“只验证服务器的SSL握手过程”中的消息协商密钥和加密套件,还需要进行以下操作。

(1)SSL服务器发送Certificate Request消息,请求SSL客户端将其证书发送给SSL服务器。

(2)SSL客户端通过Certificate消息将携带自己公钥的证书发送给SSL服务器。SSL服务器验证该证书的合法性。

(3)SSL客户端计算已交互的握手消息、主密钥的Hash值,利用自己的私钥对其进行加密,并通过Certificate Verify消息发送给SSL服务器。

(4)SSL服务器计算已交互的握手消息、主密钥的Hash值,利用SSL客户端证书中的公钥解密Certificate Verify消息,并将解密结果与计算出的Hash值比较。如果二者相同,则SSL客户端身份验证成功。恢复原有会话的SSL握手过程如图19-4所示。

分布式系统开发实战:安全通道,安全,php,开发语言

协商会话参数、建立会话的过程中,需要使用非对称密钥算法来加密密钥、验证通信对端的身份,计算量较大,占用了大量的系统资源。为了简化SSL握手过程,SSL允许重用已经协商过的会话,具体过程如下。

(1)SSL客户端发送Client Hello消息,消息中的会话id设置为计划重用的会话的id。

(2)SSL服务器如果允许重用该会话,则通过在Server Hello消息中设置相同的会话id来回复。这样,SSL客户端和SSL服务器就可以利用原有会话的密钥和加密套件,不必重新协商。

(3)SSL客户端发送Change Cipher Spec消息,通知SSL服务器后续报文将采用原有会话的密钥和加密套件进行加密和MAC计算。

(4)SSL客户端计算已交互的握手消息的Hash值,利用原有会话的密钥和加密套件处理Hash值,并通过Finished消息发送给SSL服务器,以便SSL服务器判断密钥和加密套件是否正确。

(5)同样地,SSL服务器发送Change Cipher Spec消息,通知SSL客户端后续报文将采用原有会话的密钥和加密套件进行加密和MAC计算。

(6)SSL服务器计算已交互的握手消息的Hash值,利用原有会话的密钥和加密套件处理Hash值,并通过Finished消息发送给SSL客户端,以便SSL客户端判断密钥和加密套件是否正确。

19.3.3 HTTPS

HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer)是基于SSL安全连接的HTTP。HTTPS通过SSL提供的数据加密、身份验证和消息完整性验证等安全机制,为Web访问提供了安全性保证,广泛应用于网上银行、电子商务等领域。近年来,在主要互联网公司和浏览器开发商的推动之下,HTTPS在加速普及,HTTP正在被加速淘汰。不加密的HTTP连接是不安全的,你和目标服务器之间的任何中间人都能读取和操纵传输的数据,比如ISP可以在你点击的网页上插入广告,你很可能根本不知道看到的广告是不是网站发布的。中间人能够注入的代码不仅仅是看起来无害的广告,他们还可能注入具有恶意目的的代码。2015年,某脚本被中间人修改,加入了代码对两个网站发动了DDoS攻击。这次攻击被称为“网络大炮”,“网络大炮”让普通的网民在不知情下变成了DDoS攻击者。而唯一能阻止“大炮”的方法是加密流量。文章来源地址https://www.toymoban.com/news/detail-860168.html

到了这里,关于分布式系统开发实战:安全通道的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分布式系统架构设计之分布式数据存储的安全隐私和性能优化

    在前面分布式系统部分,有对安全性做过介绍,如前面所述,在分布式系统中,确保系统的安全性和隐私是至关重要的。安全性关注系统的防护措施,而隐私是关注用户的个人信息保护。 身份认证:确保用户和系统组件的身份是合法的,通过通过密码、令牌或证书实现 授权

    2024年02月02日
    浏览(57)
  • 分布式系统架构设计之分布式消息队列的水平扩展性、安全可用性以及监控与调优

    随着业务的快速发展和数据的不断增长,单一的消息队列服务器往往难以满足高并发、高可用和高吞吐量的需求,因此,如何实现消息队列的水平扩展成为了一个重要的问题。这部分我将从分区、副本、负载均衡等关键概念出发,一起探讨如何实现分布式消息队列的水平扩展

    2024年02月01日
    浏览(48)
  • Hadoop大数据从入门到实战(二)分布式文件系统HDFS

    头歌实践教学平台 教学课堂 大数据从入门到实战 - 第2章 分布式文件系统HDFS 任务描述 本关任务:使用 Hadoop 命令来操作分布式文件系统。 编程要求 在右侧命令行中启动 Hadoop ,进行如下操作。 在 HDFS 中创建 /usr/output/ 文件夹; 在本地创建 hello.txt 文件并添加内容:“ HDFS的

    2024年02月12日
    浏览(42)
  • 【头歌】大数据从入门到实战 - 第2章 分布式文件系统HDFS

    任务描述 本关任务:使用 Hadoop 命令来操作分布式文件系统。 编程要求 在右侧命令行中启动 Hadoop ,进行如下操作。 在 HDFS 中创建 /usr/output/ 文件夹; 在本地创建 hello.txt 文件并添加内容:“ HDFS 的块比磁盘的块大,其目的是为了最小化寻址开销。”; 将 hello.txt 上传至 H

    2024年02月05日
    浏览(85)
  • 云原生之深入解析分布式存储系统Ceph的环境部署和实战操作

    ① 什么是 Ceph ? Ceph 是当前非常流行的开源分布式存储系统,具有高扩展性、高性能、高可靠性等优点,同时提供块存储服务(rbd)、对象存储服务(rgw)以及文件系统存储服务(cephfs),Ceph 在存储的时候充分利用存储节点的计算能力,在存储每一个数据时都会通过计算得出该数据

    2024年02月09日
    浏览(44)
  • Unity与C++网络游戏开发实战:基于VR、AI与分布式架构 【1.6】

    3.8 Unity中使用协程         协程是在Unity中经常使用的一种辅助处理模式。比如,我们需要设计一个人一边走动一边去观察周围的情况,走动和观察这两种运动同时进行。这时我们可以使用多线程来处理这个问题,但是多线程在内存和CPU的调度时间上具有一些风险。此时在

    2024年04月10日
    浏览(42)
  • Spring Cloud实战 |分布式系统的流量控制、熔断降级组件Sentinel如何使用

    专栏集锦,大佬们可以收藏以备不时之需 Spring Cloud实战专栏:https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏:https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏:https://blog.csdn.net/superdangbo/category_9271502.html tensorflow专栏:https://blog.csdn.net/superdangbo/category_869

    2024年02月04日
    浏览(69)
  • 基于区块链的分布式存储系统开发论文研究

    论文引用:[1]蔡维德,郁莲,王荣,刘娜,邓恩艳.基于区块链的应用系统开发方法研究[J].软件学报,2017,28(06):1474-1487. 1. 区块链介绍   区块链是由多独立节点参与的分布式数据系统,也可以理解为分布式账簿(distributed ledger technologt,简称DLT),由这些节点共同维护,它的特点是

    2024年02月12日
    浏览(57)
  • 【系统开发】尚硅谷 - 谷粒商城项目笔记(五):分布式缓存

    引入redis依赖 配置redis 堆外内存溢出 缓存穿透 缓存雪崩 缓存击穿 导入依赖 redisson配置类 可重入锁 可重入锁解释 :无论是公平方式还是非公平方式,进门坐下来之后,你可以问医生问题一次,两次,无数次( 重入),只要你还坐着,你都可以问,但是一旦起身离开座位,

    2024年02月09日
    浏览(60)
  • 【软件开发】大规模分布式系统的容错架构设计

    假设有一个数据库,数据库里有一张特别大的表,里面有几十亿,甚至上百亿的数据。更进一步说,假设这一张表的数据量多达几十个 TB,甚至上百个 TB,那么如果用 MySQL 之类的数据库,单台数据库服务器上的磁盘可能都不够放这一张表的数据! 假如你手头有一个超大的数

    2024年02月04日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包