本文为纯机翻,读来并不通顺

请求征求意见:2246 Certicom
类别:Standards Track C. Allen

Certicom

1999年1月
TLS协议版本1.0
本备忘录的状态

本文档指定了

Internet社区
的Internet标准跟踪协议,并要求讨论和提出建议。
改进。
请参阅最新版本的“ Internet
官方协议标准”(STD 1)了解标准化状态



协议的状态。
该备忘录的分发是无限的。


版权声明


版权所有(C)互联网协会(1999)。
版权所有。


摘要


本文档指定了传输层安全性

(TLS)协议的
1.0版TLS协议提供了

Internet上的
通信隐私该协议允许客户端/服务器应用程序以

旨在防止窃听,

篡改或消息伪造
的方式进行通信


目录


1.简介3

2.目标4

3.本文件的目标5

4.介绍语言5

4.1。
基本块大小6

4.2。
杂项6

4.3。
矢量6

4.4。
民数记7

4.5。
列举7

4.6。
构造类型8

4.6.1。
变形9

4.7。
密码属性10

4.8。
常数11

5. HMAC和伪随机函数11

6. TLS记录协议13

6.1。
连接状态14 Dierks&Allen标准轨道[第1页]


RFC 2246               TLS协议版本1.0 1999年1月


6.2。
记录层16

6.2.1。
碎片16

6.2.2。
记录压缩和解压缩17

6.2.3。
记录有效载荷保护18

6.2.3.1。
空或标准流密码19

6.2.3.2。
CBC分组密码19

6.3。
密钥计算21

6.3.1。
导出密钥生成示例22

7. TLS握手协议23

7.1。
更改密码规范协议24

7.2。
警报协议24

7.2.1。
关闭警报25

7.2.2。
错误警报26

7.3。
握手协议概述29

7.4。
握手协议32

7.4.1。
你好消息33

7.4.1.1。
您好请求33

7.4.1.2。
客户问好34

7.4.1.3。
服务器问候36

7.4.2。
服务器证书37

7.4.3。
服务器密钥交换消息39

7.4.4。
证书申请41

7.4.5。
服务器问好完成42

7.4.6。
客户端证书43

7.4.7。
客户端密钥交换消息43

7.4.7.1。
RSA加密的

Premaster
机密消息44 7.4.7.2。客户Diffie-Hellman公共价值45

7.4.8。
证书验证45

7.4.9。
已完成46

8.密码计算47

8.1。
计算主密钥47

8.1.1。
RSA 48

8.1.2。
Diffie-Hellman 48

9.强制密码套件48

10.应用程序数据协议48

A.协议常数值49

A.1。
记录层49

A.2。
更改密码规格消息50

A.3。
警报消息50

A.4。
握手协议51

A.4.1。
你好消息51

A.4.2。
服务器认证和密钥交换消息52

A.4.3。
客户端认证和密钥交换消息53

A.4.4。
握手完成消息54

A.5。
CipherSuite 54

A.6。
安全参数56

B.术语表57

C.CipherSuite定义61

Dierks&Allen标准路线[第2页]


RFC 2246               TLS协议版本1.0 1999年1月


D.实施说明64

D.1
临时RSA密钥64

D.2。
随机数的产生和播种64

D.3。
证书和认证65

D.4。
CipherSuites 65

E.与SSL 66

E.1的
向后兼容性 版本2客户端问候67

E.2。
避免中间人版本回滚68

F.安全分析69

F.1。
握手协议69

F.1.1。
身份验证和密钥交换69

F.1.1.1。
匿名密钥交换69

F.1.1.2。
RSA密钥交换和认证70

F.1.1.3。
Diffie-Hellman密钥交换与身份验证71

F.1.2。
版本回滚攻击71

F.1.3。
检测针对握手协议的攻击72

F.1.4。
继续会议72

F.1.5。
MD5和SHA 72

F.2。
保护应用程序数据72

F.3。
最后说明73

G.专利声明74

安全考虑75

参考文献75

积分77

评论78

完整的版权声明80
1简介
TLS协议的主要目标是提供隐私和数据



两个通信应用程序之间的完整性。
该协议

由两层组成:TLS记录协议和TLS握手

协议。
在最低级别上,

TLS记录协议
位于某些可靠的传输协议(例如TCP [TCP])之上

TLS记录协议规定,有两个基本的连接安全

性:


-连接专用。
对称加密用于

数据加密(例如DES [
DES ],RC4 [ RC4 ]等)。
此对称加密
的密钥针对每个

连接
唯一生成,并且基于另一连接协商的秘密

协议(例如TLS握手协议)。
记录

协议也可以不加密使用。


-连接可靠。
消息传输包括

使用键控MAC
的消息完整性检查。安全哈希函数(例如

SHA,MD5等)用于MAC计算。
记录

协议可以在没有MAC的情况下运行,但通常仅在
Dierks&Allen Standards Track [Page 3]中使用


RFC 2246               TLS协议版本1.0(1999年1月)采用


这种方式,而另一种协议使用记录协议作为

协商安全性参数的传输方式。


TLS记录协议用于封装各种更高

级别的协议。
一种这样的封装协议TLS握手

协议,允许服务器和客户端进行身份验证,


在应用协议发送或接收其第一字节

数据
之前协商加密算法和加密密钥TLS握手协议提供

具有三个基本属性的
连接安全性:


-可以使用非对称或

公共密钥密码术(例如RSA [
RSA ],DSS [ DSS ]等)来验证对等方的身份
身份验证可以设置为可选,但通常

至少对等方
是必需的。


-共享密钥的协商是安全的:

窃听者无法使用
协商后的密钥,对于任何经过身份验证的

连接,即使是

可以将自己置于连接中间
的攻击者也无法获取该密钥


-协商可靠:攻击者

未经双方检测
就无法修改协商通信

沟通。


TLS的优点之一是它与应用程序协议无关。

更高级别的协议可以

透明地
在TLS协议之上分层但是,TLS标准未指定

协议
如何通过TLS添加安全性;有关如何启动TLS

握手以及如何解释

交换
的认证证书的决定,

取决于运行在TLS之上的协议
的设计者和实现者的判断2目标
TLS协议的目标按照其优先级顺序为:

1.密码安全性:应该使用TLS

在两方之间
建立安全连接。





2.互操作性:独立的程序员应该能够

使用TLS开发应用程序,从而能够在

不了解

彼此代码的
情况下成功地交换密码参数


3.可扩展性:TLS寻求提供一个框架,


必要时
可以将新的公共密钥和批量加密方法并入其中这还将完成两个子目标:防止Dierks&Allen Standards跟踪[第4页]


RFC 2246               TLS协议版本1.0(1999年1月)


需要创建一个新协议(并冒可能引入

新弱点的
风险),并避免实现一个

全新的安全库。


4.相对效率:加密操作倾向于占用大量

CPU,特别是公钥操作。
出于这个

原因,TLS协议已经将可选的会话

高速缓存方案,以减少需要连接的数量

必须从头开始建立。
此外,已采取措施

减少网络活动。
3本文件目标



本文档和TLS协议本身基于

Netscape发布
的SSL 3.0 协议规范。

协议与SSL 3.0之间
的差异并不明显,但它们之间的

差异非常大,以至于TLS 1.0和SSL 3.0不能互操作

(尽管TLS 1.0确实包含了一种机制,TLS

实施可以
通过该机制降级到SSL 3.0)。本文档

主要面向将要实施该协议的读者以及对其

进行密码分析的
读者

编写此
规范时已考虑到这一点,并且旨在反映

这两个群体
的需求因此,许多依赖于算法的

数据结构和规则包含在文本正文中(与

附录相对),提供了对它们的更轻松访问。

尽管涵盖了某些

策略区域(因为它们需要维护可靠的

安全性)
,但


本文档无意提供服务
定义或接口定义的任何详细信息4表示语言
本文档以外部

表示形式
处理数据的格式将使用以下非常基本且有些随意
定义的表示语法。
该语法
从其结构的多个来源中
提取尽管它的
语法和XDR
类似于编程语言“ C” [


XDR ]在它的两个
语法和意图,这将是危险的吸引太多的相似之处。

表示语言
目的仅是记录TLS,而不是

超出特定目标的一般应用。
Dierks&Allen标准路线[第5页]


RFC 2246               TLS协议版本1.0,1999年1月

4.1基本块大小

明确指定所有数据项的表示形式。

基本数据块的大小是一个字节(即,8个比特)。
多个字节数据

项是从左到右,从上到下的字节串联

从字节流中,通过以下方式形成一个多字节项(

示例中
为数字)(使用C表示法):


value =(byte [0] << 8 *(n-1))|
(字节[1] << 8 *(n-2))|

… |
字节[n-1];


多字节值的这种字节顺序是普通网络

字节顺序或大端格式。
4.2



注释以“ / *”开头,以“ * /”结尾。


可选组件通过将其

在“ [[]]”双括号中来表示。


包含未解释数据的单字节实体为

不透明
类型4.3向量
向量(单维数组)是同类数据

元素
的流向量的大小可以在文档编制
指定,也可以在运行时不指定。无论哪种情况,长度都
声明

向量中
的字节数,而不是元素数用于指定作为类型T的固定
长度向量的
新类型T’的语法为
T T’[n];





在此,T’在数据流中占据n个字节,其中n是

T的大小的
倍数。向量的长度不包括在

编码流中。


在以下示例中,数据被定义为

协议不解释的
三个连续字节,而数据被定义为三个

连续的数据,总共消耗9个字节。


不透明的基准面[3];
/ 三个未解释的字节 /

基准数据[9];
/ * 3个连续的3字节向量* / Dierks&Allen Standards Track [Page 6]


RFC 2246               TLS协议版本1.0(1999年1月)


通过

使用<floor…ceiling>标记(包括所有内容)
指定合法长度的子范围来定义可变长度向量

编码时,实际长度字节中先于矢量的内容

流。
长度将采用数字形式,该数字消耗

保持向量指定的最大(上限)

长度
所需的字节实际长度字段为零的可变长度向量

称为空向量。


T T’<floor…ceiling>;


在下面的示例中,manual是必须包含以下内容的向量

在300到400个字节之间的不透明类型。
它永远不能为空。

实际长度字段占用两个字节,一个UINT16,足以

表示值400(参见
第4.4节)。另一方面,更长的时间
可以表示最多800个字节的数据或400个uint16元素,并且它

可能为空。
它的编码将包括

在向量之前
的两个字节的实际长度字段。编码向量的长度必须

是单个元素长度的偶数倍(例如,

uint16
17字节向量将是非法的)。


不透明的强制性<300…400>;

/ 长度字段是2个字节,不能为空 /

uint16 long <0…800>;

/ 零到400个16位无符号整数 /
4.4数字
基本数字数据类型是无符号字节(uint8)。
所有较大的
数值数据类型均由固定长度的一系列字节构成

,如
第4.1节所述,这些字节串联在一起,并且也没有符号。
下列数字类型是预定义的。

uint8 uint16 [2];

uint8 uint24 [3];

uint8 uint32 [4];

uint8 uint64 [8];

此处以及规范中其他位置的所有值均以

“网络”或“大端”顺序存储;
由十六进制表示的UINT32
字节01 02 03 04等同于十进制值16909060.
4.5




枚举

另一种稀疏数据类型称为枚举。

enum类型
的字段只能采用定义中声明的值。

每个定义都是不同的类型。
只能

分配或比较
相同类型的枚举枚举的每个元素都必须Dierks&Allen Standards Track [Page 7]


RFC 2246为               TLS协议版本1.0(1999年1月)


分配了一个值,如以下示例所示。
由于

枚举的元素没有排序,因此可以按

任何顺序为
它们分配任何唯一值。


枚举{e1(v1),e2(v2),…,en(vn)[[,(n)]]} Te;


枚举在字节流中占据的空间与其

最大已定义序数值一样多。
以下定义将导致

一个字节用于携带Color类型的字段。


枚举{红色(3),蓝色(5),白色(7)}颜色;


可以选择在没有其关联标签的情况下指定一个值,以

在不定义多余元素的情况下强制宽度定义。

在下面的示例中,Taste将占用数据

中的两个字节,但只能采用值1、2或


4。enum {sweet(1),sour(2),bitter(4),(32000)} Taste;


枚举的元素名称在

定义的类型
范围内在第一个示例中,

对枚举第二个元素的
完全合格的引用将是Color.blue。

如果明确

指定
了任务的目标,则不需要这种资格


颜色color = Color.blue;
/ 过度指定,合法 /

颜色color =蓝色;
/ 正确,键入隐式 /


对于从未转换为外部表示形式的枚举,

数字信息可以省略。


枚举{低,中,高}数量;
4.6构造类型
为了

方便起见,
可以从原始类型构造结构类型每个规范都声明一个新的唯一类型。
定义
语法与C.
struct {

T1 f1;

T2 f2;


Tn fn;

} [[T]];
Dierks&Allen标准路线[第8页]




RFC 2246               TLS协议版本1.0(1999年1月)


可以使用类型名称(

使用类似于枚举的语法)
来限定结构中的字段例如,

T.f2引用先前声明的第二个字段。

可以嵌入结构定义。
4.6.1变体
定义的结构可能基于

环境中可用的
某些知识而具有变体选择器必须是枚举
类型,用于定义结构定义的可能变体。

一定的情况下臂枚举的每一个元素宣布



选择。
可以给变体的主体标注标签

以供参考。

表示语言未规定
运行时选择变体的机制


结构{

T1 f1;

T2 f2;


Tn fn;

选择(E){

case e1:Te1;

情况e2:Te2;


案例en:十;

} [[fv]];

} [[Tv]];


例如:


枚举{apple,orange} VariantTag;

struct {

uint16 number;

不透明的字符串<0…10>;
/ 可变长度 /

} V1;

struct {

uint32 number;

不透明的字符串[10];
/ 固定长度 /

} V2;

struct {

select(VariantTag){/ 选择器的值是隐含的 /

case apple:V1;
/ * VariantBody,标记=苹果* /

案例橙色:V2;
/ * VariantBody,标记=橙色* /

} variant_body;
/ 变体上的可选标签 /

} VariantRecord;


通过

在类型之前为选择器
指定一个值可以对变体结构进行限定(变窄)例如,一个

Dierks&Allen标准路线[第9页]


RFC 2246               TLS协议版本1.0(1999年1月)


橙色VariantRecord


VariantRecord的缩小类型,其中包含

V2类型
的variant_body4.7密码属性
数字签名,流密码

加密,块密码加密和公共密钥加密
这四个密码操作分别
指定为数字签名,流加密,块加密和

公共密钥加密。

通过

在字段的类型说明之前
添加适当的关键字指定来指定字段的密码处理
当前会话状态隐含了
加密密钥(请参见


第6.1节)。

在数字签名中,单向哈希函数用作

签名算法的
输入数字签名的元素被编码为不透明

矢量<0…2 ^ 16-1>,其中长度由签名

算法和密钥
指定


在RSA签名中,对两个散列(一个SHA和一个

MD5)
的36字节结构进行签名(用私钥加密)。

如[
PKCS1 ]中所述,它使用PKCS#1块类型0或类型1进行编码

在DSS中,SHA哈希的20个字节直接通过

数字签名算法运行,没有其他哈希。
这将产生

两个值r和s。
如上所述,DSS签名是不透明的矢量,

其内容是DER编码的:


Dss-Sig-Value :: = SEQUENCE {

r INTEGER,

s INTEGER

}


在流密码加密中,纯文本与

从加密安全

密钥
生成的输出量相同的逻辑异或。伪随机数生成器。


在块密码加密中,每个明文块都会加密为一个

密文块。
所有块密码加密

均以
CBC (密码块链接)模式完成,并且所有块加密的项目都

将是密码块长度的精确倍数。


在公用密钥加密中,使用公用密钥算法进行加密

数据只能用匹配的

私钥
解密公共密钥加密的元素被编码为不透明

向量<0…2 ^ 16-1>,其中长度由签名

算法和密钥
指定Dierks&Allen标准路线[第10页]


RFC 2246               TLS协议版本1.0 1999年1月


RSA加密值使用PKCS#1块类型2进行编码,

如[
PKCS1 ]中所述。

在下面的示例中:


流加密的结构{

uint8 field1;

uint8 field2;

数字签名的不透明哈希[20];

} 用户类型;


哈希的内容用作签名算法的输入,

然后使用流密码对整个结构进行加密。

结构
长度(以字节为单位)对于

field1和field2
等于2个字节,再加上两个字节作为签名的长度,

加上签名算法输出的长度。

由于以下事实
是已知的,即用于签名的算法和密钥

在对该结构进行编码或解码之前
已知的。4.8常量
可以出于

声明
目的定义类型的常量,方法是声明所需类型的符号并为其指定值。
未指定的类型(不透明,可变长度向量和

包含不透明的结构)无法分配值。

不能消除多元素结构或向量的
字段
例如,

struct {

uint8 f1;

uint8 f2;

} Example1;






范例1 ex1 = {1,4};
/ *分配f1 = 1,f2 = 4 * / 5HMAC和伪随机函数
TLS记录和握手层中的许多操作都需要

密钥MAC。
这是受
机密
保护的某些数据的安全摘要如果不知道MAC
机密,
伪造MAC是不可行的我们用于此操作的构造称为HMAC,
在[
HMAC ]中进行了描述
HMAC可以与各种不同的哈希算法一起使用。
TLS
通过两种不同的算法在握手中使用它:MD5和SHA-

1,分别表示为HMAC_MD5(秘密,数据)和HMAC_SHA(秘密,



Dierks&Allen标准路线[第11页]


RFC 2246               TLS协议版本1.0 1999年1月


数据)。
附加的哈希算法可以由密码套件定义,并

用于保护记录数据,但是MD5和SHA-1被硬编码到

该协议版本的握手描述中。


另外,

为了密钥生成或验证的目的,
需要一种构造来将秘密扩展为数据块。

该伪随机函数(PRF)将秘密,种子

和标识标签
作为输入,并产生任意长度的输出。


为了使PRF尽可能安全,它

以某种方式
使用两种哈希算法,这种算法应保证其安全性(如果有)

算法保持安全。


首先,我们定义一个数据扩展函数P_hash(secret,data)

,该函数使用单个哈希函数将秘密和种子扩展为

任意数量的输出:


P_hash(secret,seed)= HMAC_hash(secret,A(1)+种子)+

HMAC_hash(秘密,A(2)+种子)+

HMAC_hash(秘密,A(3)+种子)+ …


其中+表示串联。


A()定义为:

A(0)=种子

A(i)= HMAC_hash(secret,A(i-1))


P_hash可以迭代多次,以生成

所需数量的数据。
例如,如果使用P_SHA-1

创建64字节的数据,则必须迭代4次

(通过A(4)),创建80字节的输出数据;

最后迭代
的最后16个字节将被丢弃,剩下64个字节的

输出数据。


TLS的PRF是通过将密钥分为两半,然后

用一半使用P_MD5生成数据,而另一半

使用P_SHA-1生成数据,然后

将这两个扩展功能
的输出异或在一起而创建的。


S1和S2是秘密的两半,每个

长度
相同S1来自机密的前半部分,S2来自

后半部分。
它们的长度是通过舍入

总体机密除以二;
因此,如果原始密码的长度为奇数

个字节,则S1的最后一个字节将

与S2
第一个字节相同


L_S =秘密字节的长度;

L_S1 = L_S2 = ceil(L_S / 2);
Dierks&Allen标准路线[第12页]


RFC 2246               TLS协议版本1.0(1999年1月


)如上所述,

将机密分为两半(可能有
一个共享字节),S1占用前L_S1个字节

,S2占用最后L_S2个字节。


然后将PRF定义为通过将两个伪随机

流互斥或混合在一起的结果。


PRF(秘密,标签,种子)= P_MD5(S1,标签+种子)XOR

P_SHA-1(S2,标签+种子);


标签是ASCII字符串。
它应该以

给出
的确切形式包括在内,没有长度字节或尾随空字符。对于

例如,标签“slithy toves”将被通过散列处理

以下字节:


73 6C 69 74 68 79 20 74 6F 76 65 73


请注意,由于MD5产生16字节输出,而SHA-1产生20

字节输出,因此其内部迭代的边界将不

对齐;
生成80字节输出将涉及P_MD5

通过A(5)
进行迭代,而P_SHA-1仅迭代A(4)。6TLS记录协议
TLS记录协议是一个分层协议。
在每一层,
消息可以包括长度,描述和内容的字段。

记录协议接收要传输的消息,将

数据分成可管理的块,可选地压缩数据,应用



MAC,加密并传输结果。
接收到的数据经过

解密,验证,解压缩和重组,然后交付给

更高级别的客户端。


本文档中描述了四个记录协议客户端:

握手协议,警报协议,更改密码规范

协议和应用程序数据协议。
为了允许

TLS协议的扩展,

记录协议
可以支持其他记录类型任何新的记录类型都应
在此处描述的四种记录类型

的ContentType值之后立即分配类型值
(请参阅附录A.2)。如果是TLS
实现接收到它不了解的记录类型,

应该忽略它。
设计用于TLS的任何协议都必须经过

精心设计,以应对针对它的所有可能的攻击。

请注意,由于记录的类型和长度不受

加密
保护,因此应注意将这些值的流量

分析
值最小化Dierks&Allen标准路线[第13页]


RFC 2246               TLS协议版本1.0 1999年1月

6.1连接状态

TLS连接状态是TLS记录

协议
的操作环境它指定了压缩算法,加密算法

和MAC算法。
此外,这些算法的参数

是已知的:MAC机密,批量加密密钥以及用于

在读和写方向上
进行连接的IV从逻辑上讲,

总是有四个未完成的连接状态:当前的读取

和写入状态以及挂起的读取和写入状态。
所有记录

均在当前读写状态下处理。
安全

待处理状态的参数可以由TLS握手

协议设置,并且握手协议可以有选择地使任何

待处理状态成为当前状态,在这种情况下,适当的当前

状态将被处理并被待处理状态替换;

然后
将待处理状态重新初始化为空状态。

尚未使用安全参数初始化的状态
设为

当前状态
是非法的初始当前状态始终指定不使用

加密,压缩或MAC。

通过提供以下值


设置TLS连接读写状态的安全性参数

连接结束


此连接中,
是否将此实体视为“客户端”还是“服务器”


批量加密算法

用于批量加密的算法。
该规范

包括该算法的密钥大小,该密钥有多少是

秘密的,是块密码还是流密码,密码的块大小

(如果适用)以及是否被视为

“导出”密码。


MAC算法

用于消息认证的算法。

规范包括由

MAC算法
返回的哈希值的大小


压缩算法

一种用于数据压缩的算法。
该规范

必须包括算法执行

压缩
所需的所有信息


主密钥(master secret)

连接中两个对等方之间共享的48字节密钥。


客户端随机数客户端

提供的32字节值。
Dierks&Allen标准路线[第14页]


RFC 2246               TLS协议版本1.0(1999年1月)


服务器随机服务器

提供的32字节值。


这些参数在表示语言中定义为:


枚举{服务器,客户端} ConnectionEnd;


枚举{null,rc4,rc2,des,3des,des40} BulkCipherAlgorithm;


枚举{stream,block} CipherType;


枚举{true,false} IsExportable;


枚举{null,md5,sha} MACAlgorithm;


枚举{null(0),(255)} CompressionMethod;


/

可以添加
CompressionMethod,BulkCipherAlgorithm和MACAlgorithm中指定的算法 /


struct {

ConnectionEnd实体;

BulkCipherAlgorithm bulk_cipher_algorithm;

CipherType cipher_type;

uint8 key_size;

uint8 key_material_length;

IsExportable is_exportable;

MACAlgorithm mac_algorithm;

uint8 hash_size;

CompressionMethod compression_algorithm;

opaque master_secret [48];

不透明的client_random [32];

opaque server_random [32];

} SecurityParameters;


记录层将使用安全性参数来生成

以下六项:


客户端写MAC机密

服务器写MAC机密

客户端写密钥

服务器写密钥

客户端写IV(仅用于块密码)

服务器写IV(仅用于块密码)


客户端写服务器在接收和

处理记录
时使用这些参数,反之亦然。

第6.3节中描述了用于从安全参数生成这些项目的算法Dierks&Allen标准路线[第15页]


RFC 2246               TLS协议版本1.0 1999年1月


一旦设置了安全参数并

生成
了密钥,就可以通过将连接状态设置

为当前状态
来实例化它们必须为每个已

处理的记录
更新这些当前状态每个连接状态都包括以下

元素:


压缩状态

压缩算法的当前状态。


密码状态

加密算法的当前状态。
这将包括

该连接的预定密钥。
此外,对于

以CBC模式(为TLS指定的唯一模式)运行的
分组密码,

它最初将包含该连接状态的IV,并

进行更新以包含在

处理记录时
加密或解密的最后一个块的密文对于流密码,

它将包含任何必需的状态信息,以允许

流继续加密或解密数据。


MAC密码

上面生成的此连接的MAC密码。


序列号

每个连接状态都包含一个序列号,该序列号

针对读取和写入状态分别维护。

每当建立连接状态时
,序列号都必须设置为零

活动状态。
序列号的类型为uint64,并且不能

超过2 ^ 64-1。
序列号在每条

记录
之后递增:具体地说,在

特定连接状态
下传输的第一条记录应使用序列号0。6.2记录层
TLS记录层

以任意大小的非空块
从高层接收未解释的数据6.2.1分段
记录层将信息块分段为TLSPlaintext

记录,
该记录以2 ^ 14字节或更小的块的形式承载数据。客户端消息
边界未保留在记录层中(即,多个




相同ContentType的客户端消息可以合并为

单个TLSPlaintext记录,也可以将单个消息分为

多个记录。


struct {

uint8 major,minor;

} ProtocolVersion;
Dierks&Allen标准路线[第16页]


RFC 2246               TLS协议版本1.0,1999年1月,


枚举{

change_cipher_spec(20),alert(21),handshake(22),

application_data(23),(255)

} ContentType;


struct {

ContentType类型;

ProtocolVersion版本;

uint16长度;

不透明片段[TLSPlaintext.length];

} TLSPlaintext;


类型

用于处理封闭片段的高级协议。


版本

所使用协议的版本。
本文档

介绍TLS版本1.0,该版本使用版本{3,1}。

版本值3.1是历史记录:TLS版本1.0是

对SSL 3.0协议
的较小修改,该协议带有版本

值3.0。
(请参阅
附录A.1)。

length

以下TLSPlaintext.fragment的长度(以字节为单位)。

长度不得超过2 ^ 14。


片段

应用程序数据。
该数据是透明的,被视为
由type字段指定

的更高级别协议处理
独立块


注意:可能会

交错
不同TLS记录层内容类型的数据应用程序数据通常优先级较低

比其他内容类型进行传输。
6.2.2记录压缩和解压缩
所有记录均使用

当前会话状态中
定义的压缩算法进行压缩总是有一个主动压缩
算法。
但是,最初将其定义为
CompressionMethod.null。
压缩算法将
TLSPlaintext结构转换为TLSCompressed结构。

只要使

连接状态为活动
状态,就会使用默认状态信息初始化压缩功能Dierks&Allen标准路线[第17页]



RFC 2246               TLS协议版本1.0 1999年1月


压缩必须是无损的,并且内容长度不能

超过1024个字节。
如果解压缩功能遇到一个

TLSCompressed.fragment,它将解压缩到超过

2 ^ 14个字节
的长度,则它应该报告致命的解压缩失败错误。


struct {

ContentType类型;
/ 与TLSPlaintext.type相同 /

ProtocolVersion版本; / 与TLSPlaintext.version相同 /

uint16长度;

不透明片段[TLSCompressed.length];

} TLSCompressed;


长度

以下TLSCompressed.fragment的长度(以字节为单位)。

长度应不超过2 ^ 14 + 1024


片段

TLSPlaintext.fragment的压缩形式。


注意:CompressionMethod.null操作是一个标识操作。
没有

字段被更改。


实施说明:

解压缩功能负责确保

消息不会导致内部缓冲区溢出。
6.2.3记录有效负载保护
加密和MAC功能将TLSCompressed结构

转换为TLSCiphertext。
解密功能可逆转该过程。
记录的MAC还包含一个序列号,以便



可以检测到丢失,多余或重复的消息。


struct {

ContentType类型;

ProtocolVersion版本;

uint16长度;

选择(CipherSpec.cipher_type){

案例流:GenericStreamCipher;

案例块:GenericBlockCipher;

}片段;

} TLSCiphertext;


type

类型字段与TLSCompressed.type相同。


version

版本字段与TLSCompressed.version相同。
Dierks&Allen标准路线[第18页]


RFC 2246               TLS协议版本1.0 1999年1月


length

以下TLSCiphertext.fragment的长度(以字节为单位)。

长度不能超过2 ^ 14

+2048


片段
TLSCompressed.fragment的加密形式,带有MAC。6.2.3.1空或标准流密码
流密码(包括BulkCipherAlgorithm.null-参见
附录A.6)将TLSCompressed.fragment结构与流
TLSCiphertext.fragment结构相互转换。

流加密结构{

opaque content [TLSCompressed.length];

不透明的MAC [CipherSpec.hash_size];





} GenericStreamCipher;


MAC生成为:


HMAC_hash(MAC_write_secret,seq_num + TLSCompressed.type +

TLSCompressed.version + TLSCompressed.length +

TLSCompressed.fragment));


其中“ +”表示串联。


seq_num

该记录的序列号。


hash


SecurityParameters.mac_algorithm
指定的哈希算法


注意,MAC是在加密之前计算的。
流密码

对包括MAC在内的整个块进行加密。
对于

不使用同步向量的流密码(例如RC4),流密码

从一条记录的末尾开始的状态仅用于后续

数据包。
如果CipherSuite为TLS_NULL_WITH_NULL_NULL,则加密

由身份操作组成(即,数据未加密

且MAC大小为零,表示未使用MAC)。

TLSCiphertext.length是TLSCompressed.length加上

CipherSpec.hash_size。
6.2.3.2CBC块密码
对于块密码(例如RC2或DES),加密和MAC

函数将TLSCompressed.fragment结构与块

TLSCiphertext.fragment结构相互转换。
Dierks&Allen标准路线[第19页]



RFC 2246               TLS协议版本1.0(1999年1月)


块加密结构{

opaque content [TLSCompressed.length];

不透明的MAC [CipherSpec.hash_size];

uint8 padding [GenericBlockCipher.padding_length];

uint8 padding_length;

} GenericBlockCipher;


6.2.3.1节所述生成MAC

padding

填充,用于强制使明文的长度为

块密码的块长度的整数倍。

衬垫可以是任何长度最多为255个字节长的,只要它

导致TLSCiphertext.length是

块长度
的整数倍

基于对

交换消息长度的
分析,可能需要比必要长度更长的长度来阻止对协议的攻击填充数据

向量
中的每个uint8 必须填充有填充长度值。


padding_length

填充长度应确保

GenericBlockCipher结构
的总大小是密码块

长度
的倍数合法值的范围是从0到255(含)。

长度指定

padding_length字段本身之外
的padding字段的长度


加密的数据长度(TLSCiphertext.length)比

TLSCompressed.length,CipherSpec.hash_size和

padding_length
总和大一。


示例:如果块长度为8个字节,则内容长度

(TLSCompressed.length)为61个字节,MAC长度为20

个字节,填充前的长度为82个字节。
因此,

填充长度模8必须等于6,以使

总长度为8字节(块

长度)
的偶数倍填充长度可以是6、14、22,依此类推,

直到254。如果填充长度是最小必需值

6,则填充将是6个字节,每个字节包含值6。

因此,块

加密
之前的GenericBlockCipher的最后8个字节为xx 06 06 06 06 06 06 06 06,其中xx是

MAC
最后一个字节。


注意:在CBC模式(密码块链接)中使用分组密码

时,设置安全性参数时

将使用其他密钥和秘密生成第一条记录初始化向量(IV)
后继记录的IV是前一个记录的最后一个密文块

Dierks&Allen标准路线[第20页]


RFC 2246               TLS协议版本1.0,1999年1月

6.3密钥计算

记录协议需要一种算法,可以

根据握手

协议
提供的安全性参数生成密钥,IV和MAC机密


主密钥将散列为一系列安全字节,这些字节

将分配给

当前连接状态
所需的MAC密钥,密钥和非导出IV(请参阅
附录A.6)。CipherSpec要求
客户端写MAC机密,服务器写MAC机密,客户端写

密钥,服务器写密钥,客户端写IV和服务器写IV,

从主机密按此顺序生成的。
未使用的

值是空的。


生成密钥和MAC机密时,主机密用作

熵源,随机值为

可导出密码
提供未加密的盐材料和IV。


要生成密钥材料,请计算


key_block = PRF(SecurityParameters.master_secret,

“密钥扩展”,

SecurityParameters.server_random +

SecurityParameters.client_random);


直到产生足够的输出。
然后,对key_block进行

如下分区:


client_write_MAC_secret [SecurityParameters.hash_size]

server_write_MAC_secret [SecurityParameters.hash_size]

client_write_key [SecurityParameters.key_material_length]

server_write_key [SecurityParameters.key_material_length]

client_write_IV [SecurityParameters.IV_size]

server_write_IV [SecurityParameters.IV_size]


client_write_IV和server_write_IV

仅针对非导出生成对于可导出的分组密码,

初始化向量将在稍后生成,如下所述。
任何

多余的key_block材料都将被丢弃。


实施说明:

本文档中定义的密码规范需要

最多的资料是3DES_EDE_CBC_SHA:需要2 x 24字节

密钥,2 x 20字节的MAC密钥和2 x 8字节的IV,共计

104字节的密钥材料。
Dierks&Allen标准路线[第21页]


RFC 2246               TLS协议版本1.0 1999年1月(可


导出加密算法(对于CipherSpec.is_exportable

为true))需要进行以下附加处理才能得出其

最终写密钥:


final_client_write_key =

PRF(SecurityParameters.client_write_key,

“客户端写密钥”,

SecurityParameters.client_random +

SecurityParameters.server_random);

final_server_write_key =

PRF(SecurityParameters.server_write_key,

“服务器写密钥”,

SecurityParameters.client_random +

SecurityParameters.server_random);


可导出的加密算法仅从

hello消息
随机值中得出其IV


iv_block = PRF(“”,“ IV块”,SecurityParameters.client_random +

SecurityParameters.server_random);



上面
key_block 一样,iv_block 分为两个初始化向量


client_write_IV [SecurityParameters.IV_size]

server_write_IV [SecurityParameters.IV_size]


注意,在这种情况下使用PRF时没有秘密:

表示该机密的长度为零字节,对

PRF中的哈希无
贡献6.3.1导出密钥生成示例
TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5对于

两个加密密钥中的每一个
需要五个随机字节,对于每个MAC
密钥需要
16个字节,总共需要42字节的密钥材料。PRF输出
存储在key_block中。
由于key_block是
可导出的加密算法
,因此会对其进行分区,并对写入密钥进行加盐处理。
key_block = PRF(master_secret,

“密钥扩展”,

server_random +




client_random)[0…41]

client_write_MAC_secret = key_block [0…15]

server_write_MAC_secret = key_block [16…31]

client_write_key = key_block [32…36]

server_write_key = key_block [37…41]
Dierks&Allen Standards Track [第22页]


RFC 2246               TLS协议版本1.0,1999年1月


final_client_write_key = PRF(client_write_key,

“客户端写密钥”,

client_random +

server_random)[0…15]

final_server_write_key = PRF(server_write_key,

“服务器写入密钥”,

client_random +

server_random)[0。 .15]


iv_block = PRF(“”,“ IV块”,client_random +

server_random)[0 …

client_write_IV = iv_block [0…7]

server_write_IV = iv_block [8…15]
7TLS握手协议
TLS握手协议由一组三个子协议组成

,用于允许对等方就

记录层的
安全参数达成一致,进行身份验证,实例化协商的
安全参数并向彼此报告错误情况。

握手协议负责协商会话,

会话协议由以下各项组成:
会话标识符

服务器选择的用于标识

活动或可恢复会话状态
的任意字节序列
对等证书

X509v3 [
X509





]证书。状态的此元素
可以为null。


压缩方法

用于在加密之前压缩数据的算法。


cipher spec

指定大容量数据加密算法(例如null,DES

等)和MAC算法(例如MD5或SHA)。
它还定义了

加密属性,例如hash_size。

正式定义
请参见
附录A.6

主密钥

客户端和服务器之间共享的48字节
主密钥


是可恢复

的标志,指示是否可以将会话用于发起新

连接。

Dierks&Allen标准路线[第23页]


RFC 2246               TLS协议版本1.0 1999年1月


这些项用于创建保护参数,以

供记录层在保护应用程序数据时使用。

通过

TLS握手协议
的恢复功能,可以使用同一会话实例化许多连接7.1更改密码规范协议
更改密码规范协议用于在

加密策略中
发出信号转换该协议由一条消息组成,该消息
在当前(而非挂起)

连接状态
下进行加密和压缩该消息由值1的一个字节的
结构{




枚举{change_cipher_spec(1),(255)}类型;

} ChangeCipherSpec;


客户端和服务器均发送更改密码规范消息,

以通知接收方后续记录将

在新协商的CipherSpec和密钥的保护下。
接收

到此消息会使接收器指示记录层

立即将读取的未决状态复制到读取的当前状态。

发送此消息后,发送方应立即指示

记录层将写挂起状态设置为写活动

状态。
(请参阅
第6.1节。)发送更改密码规范消息
在握手期间,安全参数已经达成共识

,但在发送完成验证消息之前(请参见
7.4.9

)。7.2警报协议
TLS记录层支持的内容类型之一是

警报类型。
警报消息传达消息的严重性和
警报
描述。严重程度的警报消息会导致
连接立即终止。
在这种情况下,
与该会话相对应的
其他连接可以继续,但是
会话标识符必须无效,以防止失败的会话

用于建立新的连接。
像其他消息一样



警报消息按照

当前连接状态
指定进行加密和压缩


枚举{warning(1),致命(2),(255)} AlertLevel;


枚举{

close_notify(0),

unexpected_message(10),

bad_record_mac(20),

decryption_failed(21),

record_overflow(22),
Dierks&Allen Standards Track [Page 24]


RFC 2246               TLS协议版本1.0 1999年1月


decompression_failure(30),

handshake_failure(40),

bad_certificate(42),

unsupported_certificate(43),

certificate_revoked(44),

certificate_expired(45),

certificate_unknown(46),

非法参数(47),

unknown_ca (48),

access_denied(49),

decode_error(50),

decrypt_error(51),

export_restriction(60),

protocol_version(70),

不足安全性(71),

internal_error(80),

user_canceled(90),

no_renegotiation(100),

(255)

} AlertDescription;


struct {

AlertLevel级别;

AlertDescription描述;

}警报;
7.2.1关闭警报
客户端和服务器必须共享有关连接即将

结束的
知识,以避免被截断攻击。任何一方均可
发起结束消息的交换。

close_notify

此消息通知收件人,发件人将不再

通过此连接
发送任何消息。
如果没有正确终止任何连接
,会话将无法恢复




close_notify级别等于警告的消息。


任何一方都可以通过发送close_notify警报来发起关闭。

关闭警报后收到的任何数据都将被忽略。


要求各方在关闭

连接的写端
之前发送close_notify警报要求另一方

以自己的close_notify警报响应并

立即
关闭连接,并丢弃所有未决的写入。它不是

必需的紧密的发起者等待响应

关闭连接的读取端之前close_notify消息警报。
Dierks&Allen标准路线[第25页]


RFC 2246               的TLS协议版本1999 1.0一月


如果使用TLS规定,任何数据可被应用协议

在所述底层传输的TLS连接后进行

关闭,TLS实现必须接收所述响应

指示到应用层之前close_notify消息警报,提醒

所述TLS连接已结束。
如果应用程序协议不会

传输任何其他数据,而仅关闭基础

传输连接,则实现可以选择关闭

传输,而无需等待响应的close_notify。

本标准的
任何部分都不应该规定使用的方式

TLS的配置文件管理其数据传输,包括何时

打开或关闭连接。


注意:假设关闭连接可靠地传递了

待处理的数据,然后破坏了传输。
7.2.2错误警报
TLS握手协议中的错误处理非常简单。

检测到错误时,检测方将消息发送给

另一方。
传输或接收到致命警报消息后,
双方立即关闭连接。
服务器和客户端
需要忘记

与失败的连接关联的
任何会话标识符,密钥和机密
定义了
以下错误警报




意外

的消息接收到不适当的消息。
此警报始终是致命的

,在正确的

实现
之间的通信中永远不应观察到


bad_record_mac

如果接收到带有错误

MAC
的记录,则返回此警报此消息始终是致命的。
cryption_failed以无效方式


解密
的TLSCiphertext:不是
块长度
偶数倍,或者其填充值(如果

选中)是不正确的。
此消息始终是致命的。


record_overflow

接收到的TLSCiphertext记录的长度超过

2 ^ 14 + 2048字节,或解密

超过2 ^ 14 + 1024字节
的TLSCompressed记录的记录此消息始终是致命的。


decompression_failure解

压缩功能接收到不正确的输入(例如,数据

将扩展到过多的长度)。
此消息始终是

致命的。
Dierks&Allen标准路线[第26页]


RFC 2246               TLS协议版本1.0(1999年1月)


handshake_failure

收到handshake_failure警报消息表示,在

给定可用选项的情况下

发送者无法协商一组可接受的安全性
参数。这是一个致命错误。

bad_certificate

证书是腐败的,包含签名未

正确验证等


unsupported_certificate

证书是不支持的类型。


certificate_revoked

证书的签名者已将其吊销。


certificate_expired

证书已过期或当前无效。


certificate_unknown

在处理

证书时
出现了其他(未指定)问题,使其无法接受。


invalid_parameter

握手中的字段超出范围或与

其他字段
不一致这总是致命的。


unknown_ca

接收到有效的证书链或部分链,但

由于无法

找到
CA证书无法将其与已知的受信任CA匹配而未接受该证书。

消息始终是致命的。


access_denied

接收到有效证书,但是访问控制已生效

申请后,发件人决定不进行协商。

此消息始终是致命的。


encode_error

由于某些字段超出

指定范围或消息长度不正确,
因此无法对消息进行解码

消息始终是致命的。


crypto_error

握手加密操作失败,包括

无法正确验证签名,解密密钥交换

或验证完成的消息。
Dierks&Allen标准路线[第27页]


RFC 2246               TLS协议1.0版1999年1月


export_restriction

谈判不符合出口限制进行

检测;
例如,尝试

为RSA_EXPORT握手方法
传输1024位临时RSA密钥。

消息始终是致命的。


protocol_version

客户端尝试协商的协议版本可以

识别,但不受支持。
(例如,

出于安全原因,可以避免使用
旧的协议版本)。此消息

始终
致命的。


insufficient_security

返回而不是handshake_failure当谈判有

失败是因为服务器要求的密码

比客户端支持的
密码更安全。此消息始终是

致命的。


internal_error

与对等方无关或

协议
的正确性导致的内部错误使其无法继续(例如内存

分配失败)。
此消息始终是致命的。


user_canceled

由于某种原因,该握手被取消,与

协议故障
无关如果用户在

握手完成
后取消操作,则仅通过发送

close_notify
关闭连接更为合适。此警报应遵循

通过close_notify。
此消息通常是警告。


no_renegotiation

在初始握手之后,

由客户端发送以响应问候请求,或者由
服务器发送以响应客户端问候。
这两种情况通常都会导致重新谈判;

不合适时,收件人应以此警报响应;

此时,原始请求者可以决定是否

继续进行连接。
一种

合适的情况是服务器产生了一个进程来

满足请求。
该过程

在启动时可能
会收到安全参数(密钥长度,身份验证等),并且可能是

此后很难传达对这些参数的更改

此消息始终是警告。


对于未明确指定警报级别的所有错误,

发送方可以自行决定这是否是致命

错误;
如果收到带有警告级别的警报,则Dierks&Allen标准跟踪[页28]


RFC 2246               1999年1月TLS协议版本1.0


接收方可以自行决定是否将其视为

致命错误。
但是,所有

以致命级别
发送的消息都必须视为致命消息。7.3握手协议概述
会话状态的加密参数由

TLS握手协议
产生,该协议在TLS记录
层的
顶部运行TLS客户端和服务器首次开始通信时,它们会
商定协议版本,选择加密算法,

可选地进行身份验证以及使用公钥加密



生成共享机密的技术。


TLS握手协议包括以下步骤:


-交换问候消息以就算法达成共识,交换随机

值并检查会话恢复。


-交换必要的密码参数,以允许

客户端和服务器就Premaster机密达成协议。


-交换证书和加密信息,以允许

客户端和服务器进行身份验证。


-从premaster机密和交换的

随机值中
生成一个主机密


-向记录层提供安全参数。


-允许客户端和服务器验证其对等方具有

计算出相同的安全参数,并且握手

发生时没有被攻击者篡改。


请注意,高层不应该过分依赖TLS来始终

协商两个对等方之间可能建立的最牢固的连接:

中级攻击者可以通过多种方式尝试

使两个实体跌落到他们所

支持
的最不安全的方法该协议旨在最大程度地降低这种风险,但

仍然存在可用的攻击:例如,攻击者可能

阻止对运行安全服务的端口的访问,或试图使

对等方协商未经身份验证的连接。
基本面

规则是,更高的级别必须知道其安全

要求是
什么,并且绝不能在

安全性比其要求
低的信道上传输信息TLS协议是安全的,因为

任何密码套件都提供其承诺的安全级别:如果您

通过与

已验证
证书的主机进行1024位RSA密钥交换来协商3DES ,那么您可以期望它是安全的。Dierks&Allen标准路线[第29页]


RFC 2246               TLS协议版本1.0(1999年1月)


但是,

除非您认为数据的价值不超过

破解该加密所需要
的工作,否则切勿通过40位安全性加密的链接发送数据


通过握手协议可以实现这些目标,握手协议可以

概括如下:客户端发送客户端问候消息

,服务器必须以服务器问候消息来响应
该客户端问候消息,否则

将发生致命错误并且连接将失败。
客户端问候

和服务器问候用于

在客户端和服务器之间
建立安全增强功能。客户端和服务器

您好,请建立以下属性:协议版本,会话

ID,密码套件和压缩方法。
此外,

生成并交换了
两个随机值:ClientHello.random和

ServerHello.random。


实际的密钥交换最多使用四个消息:服务器

证书,服务器密钥交换,客户端证书和

客户端密钥交换。
可以通过

指定这些消息的格式并定义消息的使用
来创建新的密钥交换方法

以允许客户端和服务器就共享

机密
达成协议这个秘密应该很长。当前定义的密钥

交换方法交换机密,范围为48到128字节

长度。


在问候消息之后,服务器将发送其证书(

如果要进行身份验证)。
另外,

如果需要,则可以发送
服务器密钥交换消息(例如,如果它们的服务器没有

证书,或者其证书仅用于签名)。
如果

服务器已通过身份验证,则它可能会从

客户端
请求证书,如果该证书适合所选的密码套件。现在,

服务器将发送服务器问候完成消息,表明

握手
问候消息阶段已完成。然后,服务器将

等待客户端响应。
如果服务器已发送证书

请求消息,则客户端必须发送证书消息。

现在发送客户端密钥交换消息,并且

消息
的内容将取决于在

客户端问候和服务器问候
之间选择的公钥算法如果客户端已发送

具有签名能力
证书,

则会发送
数字签名的证书验证消息以显式验证证书。


此时,客户端发送了更改密码规范消息,

并且客户端将挂起的密码规范复制到当前的密码

规范中。
然后,客户端立即

使用新算法,密钥和机密
发送完成的消息作为响应,服务器将

发送自己的更改密码规范消息,将待处理的消息传输到

当前的密码规范,并在新的
Dierks&Allen Standards Track [第30页]下发送完成的消息


RFC 2246               TLS协议版本1.0 1999年1月


密码规范。
此时,握手已完成,客户端

和服务器可能开始交换应用程序层数据。
(请参见

下面的流程图。)


客户端服务器


ClientHello -------->

ServerHello

证书*

ServerKeyExchange *

CertificateRequest

<-------- ServerHelloDone

证书

ClientKeyExchange

CertificateVerify *

[ChangeCipherSpec]已

完成-------->

[ChangeCipherSpec]

<--------已完成的

应用程序数据<------->应用程序数据


图1-消息流完整握手


*表示并非

总是发送的
可选消息或与情况有关的消息


注意:为了帮助避免管道停顿,ChangeCipherSpec是

独立的TLS协议内容类型,实际上不是TLS

握手消息。


当客户端和服务器决定恢复上一个会话或

复制现有会话(而不是协商新的安全性

参数)时,消息流如下:


客户端使用

要恢复
的会话的Session ID发送ClientHello 然后,服务器检查其会话缓存是否匹配。如果

找到匹配项,并且服务器愿意

在指定的会话状态下
重新建立连接,则它将发送

具有相同会话ID值
ServerHello。此时,

客户端和服务器都必须发送更改密码规范消息,然后

直接处理完成的消息。
重建完成后,

客户端和服务器可能开始交换应用程序层数据。

(请参阅下面的流程图。)如果找不到会话ID匹配,则

服务器将生成一个新的会话ID,并且TLS客户端和服务器将

执行完整的握手。
Dierks&Allen标准路线[第31页]


RFC 2246               的TLS协议版本1.0 1999年1月


客户端服务器


的ClientHello -------->

服务器问候

[的ChangeCipherSpec]

<--------成品

[的ChangeCipherSpec]

成品-------->

应用程序数据<------->应用程序数据


图2-简短握手


消息流每个消息的内容和含义将在

以下各节中有详细介绍。
7.4握手协议
TLS握手协议是

TLS记录协议
的已定义高级客户端之一。该协议用于协商
会话
安全属性。握手消息被提供给
TLS记录层,在此它们被封装在一个或多个

TLSPlaintext结构中,该结构将

按照当前活动会话状态的指定
进行处理和传输
枚举{

hello_request(0),client_hello(1),server_hello(2),

certificate(11),server_key_exchange(12),

certificate_request(13),server_hello_done(14),




certificate_verify(15),client_key_exchange(16),

finished(20),(255)

} HandshakeType;


struct {

HandshakeType msg_type;
/ 握手类型 /

uint24长度;
/ 消息中的字节 /

选择(HandshakeType){

case hello_request:HelloRequest;

case client_hello:ClientHello;

案例server_hello:ServerHello;

案例证书:证书;

case server_key_exchange:ServerKeyExchange;

case certificate_request:CertificateRequest;

case server_hello_done:ServerHelloDone;

case certificate_verify:CertificateVerify;

case client_key_exchange:ClientKeyExchange;

案例完成:完成;

} 身体;

握手;
Dierks&Allen标准路线[第32页]


RFC 2246               TLS协议版本1.0 1999年1月


握手协议消息以

必须发送
的顺序显示在下面以意外顺序发送握手消息会

导致致命错误。

但是
,可以忽略不需要的握手消息请注意订购的一个例外:证书消息

在握手中使用两次(从服务器到客户端,然后从

客户端到服务器),但仅在其第一位置描述。

Hello

消息中
不受这些排序规则约束的一条消息可以随时发送,但是

如果在握手过程中到达客户端
,则应忽略该消息。

7.4.1Hello消息

Hello阶段消息用于

在客户端和服务器之间
交换安全增强功能。当新会话

开始时,记录层的连接状态加密,哈希和

压缩算法将初始化为null。
当前的

连接状态用于重新协商消息。
7.4.1.1Hello请求发送
此消息的时间:

服务器可以随时发送hello请求消息。

此消息的含义:

Hello请求是一条简单的通知,通知客户端应

通过发送客户端问候来重新开始协商过程




方便时发送消息。

如果客户端当前正在协商会话,则
该消息将被客户端忽略

如果客户端不希望

重新协商会话,
消息可能会被忽略,或者如果客户端愿意,则可以

使用no_renegotiation警报进行
响应由于握手消息的

目的


要比
应用程序数据具有传输优先权,因此可以预期,在从客户端接收到不多的记录之前,协商将开始如果服务器

发送了一个hello请求,但没有收到客户端的hello

响应,则它可能会以致命警报关闭连接。


发送问候请求后,服务器不应重复该请求,

直到后续的握手协商完成为止。


该消息的

结构
struct {} HelloRequest;


注意:此消息永远不应包含在

整个握手过程中维护
的消息哈希中,并在完成的

消息和证书验证消息中使用。
Dierks&Allen标准路线[第33页]


RFC 2246               TLS协议版本1.0,1999年1月

7.4.1.2客户端问候

当将发送此消息

时:客户端首次连接到服务器时,需要发送

客户端问候作为其第一条消息。
客户端还可以

响应于问候请求或

主动
发送客户端问候,以重新协商

现有连接中
的安全性参数


该消息的结构:

客户端问候消息包括随机结构,该结构

稍后将在协议中使用。


struct {

uint32 gmt_unix_time;

不透明random_bytes [28];

随机


gmt_unix_time

根据

发件人的内部时钟

,采用标准UNIX 32位格式的当前时间和日期(
自格林尼治标准时间1970年1月1日午夜以来的秒数
基本TLS协议
不需要正确设置时钟更高级别或应用程序

协议可能会定义其他要求。


random_bytes

由安全随机数生成器生成的28个字节。


客户端问候消息包括可变长度的会话

标识符。
如果不为空,则该值标识

客户端希望

重用
其安全参数的同一客户端和服务器会话标识符可以来自先前的连接,此

连接或另一个当前活动的连接。

如果客户端仅希望更新连接的随机结构

和派生值,
第二个选项很有用,而第三个选项使

无需

重复完整的握手协议
可以建立几个独立的安全连接这些独立的连接

可以顺序或同时发生。
当会话ID

协商完成并交换

完成消息
时,该会话ID才有效并且一直存在,直到由于老化或由于以下原因而被删除为止

与该

会话
关联的连接上遇到致命错误SessionID的实际内容由

服务器
定义


不透明的SessionID <0…32>;
Dierks&Allen标准路线[第34页]


RFC 2246               TLS协议版本1.0(1999年1月)


警告:

因为在没有加密或没有

立即MAC保护的
情况下传输SessionID,所以服务器不得

在会话标识符中
放置机密信息,或使伪造的

会话标识符
的内容引起任何安全性破坏。(请注意,

整个握手内容(包括SessionID)


握手
结束时交换的Finished消息的保护。)


CipherSuite列表在

客户端问候消息中
从客户端传递到服务器,其中包含密码组合

客户端按客户端的

偏好
顺序支持的算法(最喜欢的选择优先)。每个CipherSuite都定义了密钥

交换算法,批量加密算法(包括秘密密钥

长度)和MAC算法。
服务器将选择一个密码套件,

或者,如果未提供可接受的选项,则返回握手

失败警报并关闭连接。


uint8 CipherSuite [2];
/ 密码套件选择器 /


客户端问候包括客户端支持的压缩算法列表

,并根据客户端的首选项进行排序。


枚举{null(0),(255)} CompressionMethod;


struct {

ProtocolVersion client_version;

随机

会话ID session_id;

CipherSuite cipher_suites <2…2 ^ 16-1>;

CompressionMethod compression_methods <1…2 ^ 8-1>;

} ClientHello;


client_version

客户端希望

在此会话期间
进行通信的TLS协议版本这应该是

客户端支持
的最新(最高价值)版本。对于此

版本的规范,版本为3.1(
有关向后兼容性的详细信息,请参见<a href="https://www.rfc-editor.org/rfc/rfc2246.html#ap

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. IDEA Maven项目 spring+springmvc+mybatis整合

    整个目录项目如下1-首先在pom中导入坐标 <?xml version="1.0" encoding="UTF-8"?>4.0.0 <groupId>com.aiit</groupId> <artifactId>spring-springmvc-mybatis</artifactId> <version>1.0-SNAPSHOT</version> …...

    2024/3/29 8:14:25
  2. 在Nginx/Tengine服务器上安装SSL证书

    在Nginx/Tengine服务器上安装SSL证书阿里云SSL证书服务支持下载证书安装到Nginx/Tengine服务器上,本文介绍了证书安装的具体操作。背景信息本文档以CentOS 7、Nginx 1.15.6为例。本文档证书名称以domain name为示例,如证书文件名称为domain name.pem,证书密钥文件名称为doma…...

    2024/3/29 8:14:24
  3. ThreadLocal 使用和原理

    这篇文章会从三个方面来说说ThreadlocalThreadLocal用在什么地方?ThreadLocal的get/set源码分析!ThreadLocal的使用方法! 1、ThreadLocal用在什么地方?1.1)保存线程上下文信息,在任意需要的地方可以获取。例如Spring的事务管理,用ThreadLocal存储Connection,从而各个DA…...

    2024/3/29 11:29:42
  4. python的集合的特性

    成员操作符 s = {1,2,3} print(1 in s) print(1 not in s)结果for循环s = {1,2,3} for i in s:print(i,end=) print()print(hellp python)结果...

    2024/4/19 20:47:08
  5. 快速学习Oracle-触发器

    简介 数据库触发器是一个与表相关联的、存储的 PL/SQL 程序。每当一个特定的数据操作语句(Insert,update,delete)在指定的表上发出时,Oracle 自动地执行触发器中定义的语句序列。 触发器可用于数据确认 实施复杂的安全性检查 做审计,跟踪表上所做的数据操作等 数据的备份和同…...

    2024/3/29 11:29:42
  6. 如何列出所有用户的所有cron作业?

    是否有命令或现有脚本可以让我一次查看所有* NIX系统的预定cron作业? 我希望它包含所有用户crontabs,以及/etc/crontab ,以及/etc/cron.d任何内容。 看到/etc/crontab run-parts运行的特定命令也很好。 理想情况下,我希望以一种漂亮的列形式输出并以一些有意义的方式排序。…...

    2024/3/29 11:29:39
  7. Precision、Recall

    Precision precision=TP/(TP+FP) 真阳对预测为阳的占比。 Recall recall=TP/(TP+FN) 真阳对真实为阳的占比。...

    2024/3/29 3:09:27
  8. mycat分库分表技术原理简单介绍

    mycat分库分表原理 一:介绍 1:mycat就是一个数据库中间件,数据库的代理,它屏蔽了物理数据库,应用连接mycat,然后mycat再连接物理数据库 2:它支持水平拆分(分库分表,通过分库达到分表),支持多种分片规则,3: 它支持mysql、oracle、mongodb,sql server,并且支持数据库…...

    2024/3/29 11:29:39
  9. 2、多线程的实现方式

    1、多线程主要的实现方式: 一种是继承Thread类 一种实现Runnable接口 2、继承Thread类和实现Runnable接口的区别:由于Java是单继承方式,如果线程类已经继承了其它类,就不能使用继承Thread类的方式,但是可以转而使用实现Runnable接口的方式Thread类的run方法不能共享,比如…...

    2024/3/29 11:29:36
  10. vue------provide & inject 依赖注入(层级较深时传值)

    前置介绍:provide/inject需要一起使用,以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效。如果你熟悉 React,这与 React 的上下文特性很相似父组件中:<template><div id="app">{{count}}…...

    2024/3/29 20:07:29
  11. tomcat指定jdk

    前情提要:在tomcat启动时,一般是使用系统默认的jdk,但是不同的项目使用不同的tomcat和jdk,又不想更改系统jdk版本,因此可以在tomcat的配置文件中进行配置; 解决方法: Windows系统 修改tomcat/bin/setclasspath.bat 在此配置文件中添加以下内容: set JAVA_HOME=I:\JavaH…...

    2024/3/29 11:29:35
  12. 堪称最好最全的A*算法详解(译文)

    英文原文链接:http://theory.stanford.edu/~amitp/GameProgramming/英文原文参考:http://www-cs-students.stanford.edu/%7Eamitp/gameprog.html#Paths翻译参考链接:http://blog.csdn.net/b2b160/article/details/4057781我们尝试解决的问题是把一个游戏对象(game object)…...

    2024/4/26 16:21:23
  13. Themeleaf页面将英文时间转化为中文

    如题转换前获取的时间格式为转换前代码:th:text="${notice.createTime}" 这里我们进行时间格式化:th:text="${#dates.format(notice.createTime,yyyy-MM-dd)}" 转换成你想要的格式...

    2024/4/9 7:39:08
  14. 项目亮点

    1、C2C 商品库存缓存,使用zset 命令 score 使用价格 value 存储 价格和库存标识 因为score 会产生精度,修改当时入的值即 99.9入score字段,但是查询会是99.9000000009值2、双十一准点变价 使用缓存变价计划的方式,提前在缓存里面加入变价的时刻和双十一的价格...

    2024/4/23 4:13:57
  15. fastjson与jackson-core序列化与反序列化

    一.fastjson序列化与反序列化方式 1.fastjson依赖版本: <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency>2.json字符串转换java对象: a)TypeReference…...

    2024/3/29 11:29:30
  16. Vcenter6.7对接H3C交换机基于源IP哈希算法的负载均衡配置

    H3C交换机配置LACP动态负载均衡后,在Vcenter中配置基于源IP哈希算法的负载均衡后虚拟机访问不通后发现,必须按照以下两图,将“管理物理网络适配器”中“活动适配器”两块网卡排列顺序与vSwitch设置中的活动适配器顺序一致才能访问通。...

    2024/3/29 11:29:30
  17. 关于jdk的安装

    最重要的就是明确版本,关于jdk的安装网上有很多的教程,但是每个系统不一样导致每个安装方法不一样。公司的电脑是win10系统而家里的是win8导致调配path 路径时出现的不同。 关于win8的path路径,我们只要把jdk以及jre的地址加到path前面就可以了。没有;的记得补全;。 jdk的…...

    2024/3/29 11:29:28
  18. DB2连接失败问题

    临近年底,项目将在明年开始启动,年前就熟悉熟悉,采用db2数据库,由于本人没有接触过,所以接下乃至以后的时间里,将会持续更新我所在项目遇到的一切问题,谨以此当做自己成长过程中的绊脚石来记录。连接数据库,错误提示:不支持的什么什么格式.问题原因:使用jdk8与db2版本…...

    2024/3/31 3:52:23
  19. C语言程序设计-1008 数组元素循环右移问题

    终于自己完整的最对了一题,撒花 #include <iostream> using namespace std;int main(){int N, M;scanf("%d %d\n", &N, &M);int a[N] = {0};for(int i = 0; i < N; i++){int n, xuhao;cin >> n;xuhao = (i + M) % N;a[xuhao] = n; }for(int …...

    2024/3/29 8:14:34
  20. Tomcat服务器安装PFX格式证书

    Tomcat服务器安装PFX格式证书本页目录背景信息操作指南后续操作相关文档 您可以将下载的证书安装到Tomcat服务器上。Tomcat支持PFX格式和JKS两种格式的证书,您可根据您Tomcat的版本择其中一种格式的证书安装到Tomcat上。背景信息本文教程以Tomcat 7为例。Tomcat 9强制要求证书…...

    2024/5/2 15:28:20

最新文章

  1. Qt中的数据库

    一. 创建数据库类:QSqlIDatabase类 1.定义数据库是使用什么样的数据库&#xff0c;默认支持:SQLITE&#xff0c;与MYSQL使用静志函数:addDatabase("XXX") 2.创建并打开数据库文件: setDatabase("指定一个数据库文件的路径") 3.open()打开数据库文件 二…...

    2024/5/6 7:51:37
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. EasyExcel 校验后导入

    引入pom <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.3</version></dependency>触发校验类 import com.baomidou.mybatisplus.extension.api.R; import lombok.experimental…...

    2024/5/4 13:20:54
  4. 如何转行成为产品经理?

    转行NPDP也是很合适的一条发展路径&#xff0c;之后从事新产品开发相关工作~ 一、什么是NPDP&#xff1f; NPDP 是产品经理国际资格认证&#xff0c;美国产品开发与管理协会&#xff08;PDMA&#xff09;发起的&#xff0c;是目前国际公认的唯一的新产品开发专业认证&#xff…...

    2024/5/4 23:56:47
  5. [Spring Cloud] gateway全局异常捕捉统一返回值

    文章目录 处理转发失败的情况全局参数同一返回格式操作消息对象AjaxResult返回值状态描述对象AjaxStatus返回值枚举接口层StatusCode 全局异常处理器自定义通用异常定一个自定义异常覆盖默认的异常处理自定义异常处理工具 在上一篇章时我们有了一个简单的gateway网关 [Spring C…...

    2024/5/3 22:05:18
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/4 23:54:56
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/4 23:54:56
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/4 23:55:17
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/4 23:55:16
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/4 23:55:06
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/4 23:55:01
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57