关于SSL原理的详解

article/2025/11/4 8:19:00

关于SSL原理的详解

  • SSL原理详解
  • 一、SSL是什么?
  • 二、建立SSL通道过程
    • 1.简化篇
    • 2.具体建立过程
  • 总结


SSL原理详解

其实SSL从网上看到的资料很多了,但是发现还是没有将原理讲得特别清楚,尤其是对CA,433端口与80端口的数据传输原理,都没有说得很清楚。通过在网上找相关资料,写此博客也便以后自己回顾。
SSL主要解决的问题是什么?是解决防钓鱼网站,防中间人攻击。利用非对称加密,让客户端和服务端进行密码协商,然后用对称加密进行数据传输,以确保数据传输的安全性。那么怎么解决传输的中间人截取信息后伪造数据的问题就是SSL的原理。


一、SSL是什么?

SSL(Secure Sockets Layer 安全套接字协议)。传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密。
SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。可分为两层:

应用层
SSL Handshake Protocol
SSL Record Protocol
TCP

1、SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密支持。 确保机密性、完整性
2、SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,该协议允许服务器和客户机相互验证,协商加密和MAC算法以及保密密钥,用来保护在SSL记录中发送的数据。握手协议是在应用程序的数据传输之前使用的。
3、警报协议(SSL Alert protocol)客户机和服务器发现错误时,向对方发送一个警报消息。如果是致命错误,则算法立即关闭SSL连接,双方还会先删除相关的会话号,密钥。每个警报消息共2个字节,第1个字节表示错误类型,如果是警报,则值为1,如果是致命错误,则值为2;第2个字节制定实际错误类型。

二、建立SSL通道过程

1.简化篇

客户端向跟服务端443端口说:哥们,建立一个安全连接吧,你在不在?
服务端回应说:在的,我有DES、AES、IDEA加密算法,你看用哪个?
客户端说:我们用DES吧,私钥是abc123;
服务器端说:收到,我们建立连接吧。
于是客户端利用DES算法将请求信息利用密钥abc123加密,向服务器端80端口发送请求;服务器端获取数据后,利用DES算法和密钥abc123解密,并将结果发回给客户端。由于私钥只有客户端和服务端知道,这样保证数据通信的安全性。

那么问题来了,怎么保证客户端和服务端商量算法和密钥的时候是安全的,不会被中间人获取后,伪造信息呢?

2.具体建立过程

Client GoodRouter BadRouter Server CA 申请证书,注册域名和公钥 CA利用CA的私钥加密Server(域名和公钥),由于GoodRouter和BadRouter只有CA的公钥, 没有私钥信息,所以无法篡改,只能老老实实转发 利用CA公钥解密,获得Server公钥 利用Server的公钥加密“Server, Client想和你建立个连接” “Server, Client想和你建立个连接” 我想篡改,但是我只有Server的公钥, “Server,Client想和你建立个连接”也是用公钥加密过的,只能转给Server 利用私钥解密,得到 Client想跟我建立连接的请求 利用私钥加密,“在的,我有DES、AES、IDEA加密算法,你看用哪个” 中间传输过程因为都是加密的,所以中间人无法篡改,我就忽略了 用Server的公钥加密“我们用DES吧,私钥是abc123” 用Server的私钥加密“收到,我们建立连接吧” DES算法和私钥abc123加密请求,将数据发送给服务端,获取数据 Client GoodRouter BadRouter Server CA

那么还有一个问题,CA的公钥是怎么下发给Client的呢,因为CA如果是通过网络下发的,都有可能有中间人(BadRouter)伪装自己是CA公司,将假证书下发给Client,这样Client的任何请求都可能以假证书的公钥加密,发给BadRouter,BadRouter将解密的信息再包装后发给Server,Server回的信息就都给了BadRouter,BadRouter把造假信息以Server的名义回给Client。这样信息就被劫持了,你的银行卡就被盗了。
那怎么解决,其实是通过操作系统来保证的。操作系统安装时就已经安装了公认安全的CA公司的数字证书,怎么找呢?看下面的截图
CA证书
所以如果安装的盗版操作系统,可能会被植入伪造的CA证书。具体操作可以看看我的另外一篇博客内网数字证书的生成与使用


总结

以上就是我总结的网上资料关于SSL的安全加密的过程,当然TCP协议握手属于比较基础的知识,就不在这里赘述了。简单的说整个过程就是建立在CA证书的签发机构的公信力之上,如果CA本身安全性无法保证,那整个安全通信的机制就瓦解了。


http://chatgpt.dhexx.cn/article/yQWC5qeF.shtml

相关文章

ExpandableListView--基本使用介绍

1 什么是ExpandableListView?有啥作用? 首先看一张ExpandableListView 的继承关系图: ExpandableListView的继承关系 根据上图可知,ExpandableListView是ListView的子类。而expandable 在英文中的意思是可扩展的,所以ExpandableL…

ExpandListview

土鳖程序员 【深入篇】自定义ExpandableListView,实现二级列表效果 先看效果图: 上图是我们要实现的效果,那么现在我们开始着手去做,主要分为以下几步: 一丶我们需要根据效果图去思考该如何动手,从上图分析…

ExpandListView总结

from 花葬_小吃一口 小白一位,本文仅一些自己在学习路上的一些总结,请各路大佬觉得不是,或有可补充的地方,请帮忙修正。学生感激不尽(耐心看完哦,代码有几百行,这是我对于可折叠列表学习所有的理…

ExpandableListView详细教程

既然大家能到这里来,相信已经对ExpandableListView用了初步的认识,废话不多说,直接给大家上干货。 源程序找不到了,下图是将ExpandableListView放在DrawerLayout(侧边栏)中的效果。 ExpandableListView就是大家平时在PC端见到的二…

ExpandableListActivity(一)

相关文章 ExpandableListView&#xff08;二&#xff09; 参考资料&#xff1a; 1.sakurakider的文章安卓的ExpandableListView的使用和优化 2. sunny.day的文章ExpandableListView(可扩展的listView) 效果图 首先是组布局和组子项布局 group_layout.xml <?xml versio…

ExpandableListView的简单例子

最近一段时间参考网上的例子&#xff0c;做了一下简单的 ExpandableListView&#xff0c;现在和大家共享一下&#xff1a; 1&#xff1a;main.xml的内容 <?xml version"1.0" encoding"utf-8"?><LinearLayout xmlns:android"http://sch…

android-ExpandableList可展开的list

ExpandableList可展开的list 老规矩。右键取得显示不出来的图片地址&#xff0c;利用下载工具下载这个图片。后缀改为rar即可得到源代码项目。 package zhang.EspandableListView;import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.…

android 二级折叠列表,Android折叠列表 ExpandableList

ExpandableList 是折叠列表,通过继承ExpandableListActivity 类就可以非常简单的实现折叠列表。 效果图: 代码实现 package com.zhou.activity; import android.app.ExpandableListActivity; import android.os.Bundle; import android.view.ContextMenu; import android.vie…

ExpandableListView的使用

ExpandableListView的使用 效果图 布局 <ExpandableListViewandroid:id"id/expandableListView"android:layout_width"match_parent"android:layout_height"match_parent" /> 初始化 ExpandableListView expandableListView (Expanda…

ExpandableListView简介

学习笔记&#xff0c;欢迎指导。 最近做了一个项目&#xff0c;需要一个层级列表&#xff0c;完成之后&#xff0c;就顺便来做个博客简介一下。 △基本简介 →“ExpandableListView”是对“ListView”做的扩展&#xff0c;“ListView”是个列表&#xff0c;而“ExpandableLis…

浅析——ExpandableListView的使用

ExpandableListView&#xff08;可扩展的ListView&#xff09; ExpandableListVivew是ListView的子类&#xff0c;它在普通ListView的基础上进行了扩展&#xff0c;它把应用中的列表项分为几组&#xff0c;每组里又可包含多个列表项。ExpandableListVivew的用法与普通ListView的…

ExpandableListView的应用

使用ExpandableListView实现下拉菜单栏 xml布局 1.activity_main.xml <ExpandableListView xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools"http://schemas.android.…

ExpandableListView说明及其用法

一&#xff1a;ExpandableListView ExpandableListView&#xff0c;是可展开的列表组件的ExpandableListView的用法和ListView非常像&#xff0c;只是其所显示的列表项应该由ExpandableListAdapter提供&#xff0c;下面是它的xml属性及说明&#xff1a; childDivider&#xff…

关于ExpandableListView用法的一个简单小例子

喜欢显示好友QQ那样的列表&#xff0c;可以展开&#xff0c;可以收起&#xff0c;在android中&#xff0c;以往用的比较多的是listview&#xff0c;虽然可以实现列表的展示&#xff0c;但在某些情况下&#xff0c;我们还是希望用到可以分组并实现收缩的列表&#xff0c;那就要用…

ExpandableListView扩展(BaseExpandableListAdapter的使用)

针对普通的ExpandableListView的使用&#xff0c;即&#xff0c;需要显示的数据全都是使用TextView显示时&#xff0c;我们使用SimpleExpandableListAdapter就可以了。 但是如果是相对复杂的ExpandableListView&#xff0c;那么SimpleExpandableListAdapter就不满足我们的要求…

ExpandableListView控件的使用

目录 一、ExpandableListView的介绍 二、适配器&#xff08;ExpandableAdapter&#xff09; 1、BaseExpandableListAdapter&#xff1a; BaseExpandableListAdapter例子 一、ExpandableListView的介绍 ExpandableListView是ListView的子类。它是ListView的基础上进行了扩展&…

ExpandableListView的使用详解

在Android开发中&#xff0c;我们知道经常会用到ListView来加载一些列表数据&#xff0c;但有时候ListView并不能完全十分满足我们的需求。比如如下图的效果用 ExpandableListView实现起来就更方便点&#xff0c;我们直接用ExpandableListView&#xff0c;设置Group不能点击即可…

ExpandableListView实例

先来看效果图&#xff1a; demo中有三个group item和多个child item&#xff0c;group item包括一个指示器&#xff0c;一个标题和一个按钮。child item包括一个图片&#xff0c;一个标题和一个按钮。先来实现布局文件 1 activity_main.xml <?xml version"1.0&qu…

ExpandableListView使用方法详解

一、前言 “好记性不如烂笔头”&#xff0c;再次验证了这句话是真的很有道理啊&#xff0c;一个月前看了一下ExpandableListView的使用&#xff0c;今天再看居然忘了这个是干啥的了&#xff0c;今天就详细讲解一下ExpandableListView的使用方法&#xff0c;感觉对于二级条目显示…

ExpandableList的使用

首先&#xff0c;我们把一二级选择的对应的类写好。 看这些代码&#xff0c;最主要的是我在ParentStrings中写了一个List<ChildrenStrings>的一个方法&#xff0c;以便之后ChildrenStrings的存储和调用 下面是BusAdapter继承BaseExpandableAdapter public class BusAda…