通信安全及SSL协议
SSL协议
- 一、通信安全
- (一) 通信安全的安全目标
- (二)概念
- 1. 必要的装备
- 2. 把工具组合起来使用
- (三)密码学 - 摘要算法
- (四)CA “数字证书颁发机构” 过程
- 二、SSL协议的解释和加密
- (一)简单的安全通道协议
- 1. 构建玩具安全协议TSP
- 2. 单向握手
- 3. 双向握手
- 4. 导出密钥
- 5. 数据传输
- 6. 总结
- (二)SSL协议
- 1. SSL协议目标
- 2. SSL的历史
- 3. SSL协议的位置
- 4. TLS和SSL的主要区别
- 5. SSL协议的分层模型
- 6. SSL协议的C/S架构
- 7. SSL握手协议功能
- 8. 握手主要工作流程
- 9. 认证服务器的身份
- 10. SSL协议规范语言基本类型
- 11. SSL握手协议
- (1)单向SSL握手 in Wireshark
- (2)Handshake协议
- (3)ChangeCipherSpec协议
- (4)ClientHello in Wireshark
- (5)算法套件
- 12. SSL记录协议
- SSL记录协议的功能
- 13. 数据传输主要工作流程
- 三、高级SSL协议
- (一)SSL会话与连接
- 1. SSL连接与会话的差异
- 2. SSL连接与会话的关系
- 3. SSL会话恢复过程
- 4. SSL会话密钥导出
- 5. SSL各类工作密钥的作用
- (二)初始化向量(IV)
- (三)客户端证书认证
- (四)有客户端认证的全握手过程
- (五)认证客户端的身份
- (六)CertificateRequest
- Certificate (C) in Wireshark
- (七)PFS(perfect forward secrecy)完美前向安全性
- (八)ECDH算法基础
- 1. 椭圆曲线算法ECC
- 2. ECDHE预主密钥协商过程
- 4. 完美前向安全性PFS总结
- (九)SSL使用场景
- (十)SSL加速产品
- 1. NSAE应用安全网关
- 2. NetGate SSL VPN网关
一、通信安全
(一) 通信安全的安全目标
保密性( confidentiality)
- 保证数据在通信过程中不被窃听
消息完整性( message integrity)
- 保证数据在通信过程中不被篡改
端点认证( endpoint authentication
- 保证通信过程中双方身份的真实性
- 单向认证
- 双向认证
(二)概念
1. 必要的装备
加密
- 将明文通过加密算法和密钥转换为密文
消息摘要( Message Digest)
- 将任意长度的消息作为输入,产生一个表示消息特征的定长字符串,也称为数字指纹,具有不可逆性和抗冲突性
MAC( message authentication codes,信息验证码)
- 保证消息不被篡改的算法,MAC类似于摘要算法,但是在计算MAC时还需要采用一个密钥,目前基本采用HMAC,即 Hash MAC
公钥基础设施PK
- 私钥签名、公钥加密、数字证书等等技术等集合,提供身份认证、数据保密性、完整性、操作抗抵赖性
2. 把工具组合起来使用
数据加密
- 公钥方式用于加密共享密钥
- 共享密钥用于加密通信数据
数据签名
- 先计算通信数据的消息摘要
- 发送方私钥加密消息摘要进行数字签名
(三)密码学 - 摘要算法
- 原文
- 摘要算法
- 摘要值
特点:
- 不可逆
- 不能通过摘要推导出原文
- 碰撞空间大
- 不可能创造出消息M‘让它和消息M与相同的哈希值
常用对称算法:
MD5、SHA1、SHA256、SHA384、SHA512、SM3
(四)CA “数字证书颁发机构” 过程
- 发送方和接收方彼此信任签发对方证书的CA(信任证书颁发机构证书)
- CA可以是多级的,通过证书链来实现信任关系
- 证书链的第一级是“自签”的,被称为“根CA″,中间级别的CA被称为中级CA
二、SSL协议的解释和加密
(Alice发送方,Bob接收方)
(一)简单的安全通道协议
1. 构建玩具安全协议TSP
- 简单的安全消息系统只能发送单条消息
- 交互式的系统需要建立一组可以在整个连接中使用的密钥
- 构建一个Alice和Bob在通信过程中对双方进行认证并建立一组密钥的简单安全通道协议,称之为玩具安全协议(Toy Security Protocol,TSP)。
- 握手(Handshake)。Alice和Bob使用他们的证书和私用密钥来对对方进行认证并交换共享密钥。
- 导出密钥(Key derivation)。Alice和 Bob 使用达成一致的共享密钥导出一组加密密钥,以用于对传输进行保护。
- 数据传输(Datatransfer)将要传输的数据分割成一系列的记录(record),并对每条记录单独加以保护,这样使得数据一准备好就可以进行传输,一旦接收就可以进行处理。
- 关闭连接(Connection closure)。使用特殊的、经过保护的关闭消息,来安全地关闭连接。这样可以阻止攻击者伪造关闭操作而截断正在传输的数据。
2. 单向握手
- 简单的握手——完成单向认证的握手
- 给Bob发送一条Hello消息,告诉她已经作好了通信准备
- Bob以他的证书作为应答
- Alice产生一个准备和Bob共享的单一的密钥,称之为主密钥(master
secret,MS) - 使用Bob证书中的公钥加密MS发送给Bob
- Bob使用自己的私钥解密出MS获得了通信共享密钥
3. 双向握手
- 简单的握手——完成双向认证的握手
- 给Bob发送一条 Hello消息,告诉她已经作好了通信准备
- Bob以他的证书和 Nonce作为应答
- Alice产生一个准备和Bob共享的单一的密钥,称之为主密钥( master secret,MS)
- Alice使用Bob证书中的公钥加密MS,再使用自己的私钥做数字签名
- Bob验证 Alice的证书并获取证书公钥,使用 Alice的公钥验证 Alice的签名
- Bob使用自己的私钥解密出MS获得了通信共享密钥
Nonce是或 Number once的缩写,在密码学中 Nonce是一个只被使用一次的任意或非重复的随机数值。
4. 导出密钥
只有一个共享密钥是不是够用
- 使用同一个密钥来完成不止一种类型的加密操作被认为是不安全的
Ecs用于将数据从客户端发送到服务器端的加密密钥
Mcs用于从客户端发送到服务器端数据的MAC密钥
EsC—用于将数据从服务器端发送到客户端的加密密钥
Msc——用于从服务器端发送到客户端数据的MAC密钥
- 使用一个称作密钥导出函数( key derivation function,KDF的工具来导出上述各种用途的密钥
KDF的输入是主密钥MS和Bob所发送的 Nonce,输出是上述各种用途的密钥
5. 数据传输
如何防止重放攻击(MITM Attack)
攻击者将截获记录重新发送给接收者
将记录进行编号
编号必须成为MAC输入的一部分,以防攻击者对席号进行修改
M=MAC(MxSequencelD)x=cs或sc
序号不能阻止攻击者重放Alice的所有消息,需要Bob每次握手都生成一个新的Nonce,新的握手会使用新的一组不同的密钥
如何防止截断攻击(Truncation Attack)
攻击者可以很容易伪造数据包,例如TCP的关闭连接,Bob意识不到Alice的消息没有传完整
根据记录中运载的数据是普通数据还是控制信息,规定其类型
M= MAC(MxSequencell TypelD),x=Cs或sc
例如类型字段为0表示数据对待如果为1则表示控制信息,我们需要采取一种简单的约定,即所有的控制数据都由一个简单的数字构成。我们保留0来指示正在关闭连接,而使用非0数字来表示错误
6. 总结
- TSP包含了SSL绝大多数的核心功能
- 实现了握手、密钥交换、相互认证及保密数据传输
- TSP在具体细节上是不充分的
- 长度字段有多长?
- 打算使用什么样的算法来完成密钥交换、认证等功能?
- 没有重要的协商功能(negotiation)
(二)SSL协议
1. SSL协议目标
SSL是指使用公钥和私钥技术组合的安全网络通讯协议。
SSL以对称密码技术和公开密码技术相结合,可以实现如下三个通信目标:
(1)秘密性:SSL客户机和服务器之间传送的数据都经过了加密处理,网络中的非法窃听者所获取的信息都将是无意义的密文信息。
(2)完整性:SSL利用密码算法和散列(HASH)函数,通过对传输信息特征值的提取来保证信息的完整性,确保要传输的信息全部到达目的地,可以避免服务器和客户机之间的信息受到破坏。
(3)认证性:利用证书技术和可信的第三方认证,可以让客户机和服务器相互识别对方的身份。为了验证证书持有者是其合法用户(而不是冒名用户),SSL要求证书持有者在握手时相互交换数字证书通过验证来保证对方身份的合法性。
2. SSL的历史
3. SSL协议的位置
- SSL协议可用于保护正常运行于TCP之上的任何应用协议,如HTTP FTP、SMTP或Telnet的通信,最常见的是用SSL来保护HTTP的通信
- SSL协议的优点在于它是与应用层协议无关的。高层的应用协议(如 HTTP、FTP、Telnet等)能透明地建立于SSL协议之上。
- SSL协议在应用层协议之前就已经完成加密算法、通信密钥的协商以及服务器的认证工作。在此之后应用层协议所传送的数据都会被加密从而保证通信的安全性。
4. TLS和SSL的主要区别
TLS与SSL的差异
- 版本号:TLS记录格式与SSL记录格式相同,但版本号的值不同,TLS的版本10使用的版本号为SSLv3.1。
- 报文鉴别码:SSLv3.0和TLS的MAC算法及MAC计算的范围不同。TLS使用了RFC-2104定义的HMAC算法。SSLv3.0使用了相似的算法,两者差别在于SSLv3.0中,填充字节与密钥之间采用的是连接运算,而HMAC算法采用的是异或运算。但是两者的安全程度是相同的。
- 伪随机函数:TLS使用了称为PRF的伪随机函数来将密钥扩展成数据块,是更安全的方式。
- 报警代码:TLS支持几乎所有的SSLv3.0报警代码,而且TLS还补充定义了很多报警代码,如解密失败( decryption failed)、记录溢出( record overflow)、未知CA( unknown ca)、拒绝访问( access denied)等。
- 密文族和客户证书:SSLv3.0和TLS存在少量差别,即TLS不支持 Fortezza密钥交换、加密算法和客户证书。
- certificate verify和 finished消息:SSLv3.0和TLS在用 certificate verify和 Finished消息计算MD5和SHA-1散列码时,计算的输入有少许差别,但安全性相当。
- 加密计算:TLS与SSLv3.0在计算主密值( master secret)时采用的方式不同。
- 填充:用户数据加密之前需要增加的墳充字节。在SSL中,填充后的数据长度要达到密文块长度的最小整数倍。而在πLS中,填充后的数据长度可以是密文块长度的任意整数倍(但填充的最大长度为25字节),这种方式可以防止基于对报文长度进行分析的攻击。
TLS的主要增强内容
TLS的主要目标是使SSL更安全,并使协议的规范更精确和完善。TLS在SSLⅴ3.0的基础上,提供了以下増强内容:- 更安全的MAC算法
- 更严密的警报
- “灰色区域”规范的更明确的定义
TLS对于安全性的改进
- 对于消息认证使用密钥散列法:TLS使用“消息认证代码的密钥散列法”(HMAC),当记录在开放的网络(如因特网)上传送时,该代码确保记录不会被变更。SSLv3.0还提供键控消息认证,但HMAC比SSLν3.0使用的(消息认证代码)MAC功能更安全。
- 增强的伪随机功能(PRF):PRF生成密钥数据。在TLS中,HMAC定义PRF。PRF使用两种散列算法保证其安全性,如果任一算法暴露了,只要第二种算法未暴露,则数据仍然是安全的。
- 改进的已完成消息验证:πLS和Ss3.0都对两个端点提供已完成的消息,该消息认证交换的消息没有被变更。然而,TLS将此已完成消息基于PRF和HMAC值之上,这也比SSL30更安全。
- 一致证书处理:与SSLv3.0不同,TLS试图指定必须在TLS之间实现交换的证书类型。
- 特定警报消息:πLS提供更多的特定和附加警报,以指示任一会话端点检测到的问题。TLS还对何时应该发送某些警报进行记录。
5. SSL协议的分层模型
SSL协议是一个分层的协议,共有两层组成,分别用于握手和数据传输。
- SSL握手协议:允许服务方和客户方互相认证,并在应用层协议传送数据之前协商出一个加密算法和会话密钥。
- SSL记录层协议:位于可靠的传输层协议之上,用于封装高层协议的数据。
6. SSL协议的C/S架构
- SSL协议定义了两个通信主体:客户(client)和服务器(server)其中,客户是协议的发起者。
- 在客户/服务器结构中,应用层从请求服务和提供服务的角度定义客户和服务器,而SSL协议则从建立加密参数的过程中所扮演的角色来定义客户和服务器。
7. SSL握手协议功能
- 协商SSL协议的版本
- 协商加密套件
- 协商密钥参数
- 验证通讯双方的身份(可选)
- 建立SSL连接
握手过程一般是由五个阶段构成的。
8. 握手主要工作流程
- 网络连接建立,SSL客户端发送消息,消息中包含SSL版本号、密码设置、可实现的算法列表、随机数以及服务器使用SSL协议通信所需的其它信息;
- SSL服务器端回应消息,确定SSL版本号、加密算法和压缩算法;
- SL服务器发出服务器数字证书;
- SSL客户端的身份认证是可选的;
- 客户端生成预主密钥 pre master secret,用服务器的公钥加密后返回服务器,服务器利用自己的私钥解密后得到会话密钥。
无客户端认证的全握手过程(单向):
9. 认证服务器的身份
- 从服务器端传送的证书中获得相关信息
- 当天的时间是否在证书的合法期限内;
- 签发证书的机关是否客户端信任的;
- 签发证书的公钥是否符合签发者的数字签名
- 证书中的服务器域名是否符合服务器自己真正的域名
- 服务器被验证成功,客户继续进行握手过程。
10. SSL协议规范语言基本类型
- 规范使用五种基本类型 opaque、uint8、uint16、uint24和uint32,分
别对应无符号的8-、16-、24-和32-位整数,并在线路上以12、3或4字节序列加以表示。所有的数字都以”网络字节顺序”——高位字节在前来表示——所以用十六进制字节00 00 00 01表示uint32 的数字1。 - 结构/* 和 /* 与 C 语言一样都是用来包裹注释的
11. SSL握手协议
SSL握手涉及的两个主要协议内容类型
- Handshake
- ChangeCipherSpec
出错时的协议内容类型
- Alert
(1)单向SSL握手 in Wireshark
(2)Handshake协议
Handshake协议内容类型包括
ClientHello
ServerHello
Certificate
CertificateRequest
CertificateVerify
ServerHelloDone
ClientKeyExchange ServerKeyEXchange
Finished
(3)ChangeCipherSpec协议
使用SSL记录协议服务的SSL高层协议的3个特定协议之一也是其中最简
单的一个。协议由单个消息组成该消息只包含一个值为1的单个字节。
该消息的唯一作用就是使未决状态拷贝为当前状态,更新用于当前连接
的密码组。
为了保障SSL传输过程的安全性双方应该每隔一段时间改变加密规范。
(4)ClientHello in Wireshark
(5)算法套件
密码算法套件的名称是以协商安全设置时使用的身份验证、加密、消息认证码(MAC)和密钥交换算法组成
密码套件名称的差异:
IANA的名称是完整书写,openssl和其他协议库会适当简写
12. SSL记录协议
SSL记录协议接收传输的应用报文,将数据分片成可管理的块进行数据压缩(可选)应用MAC接着利用IDEA. DES、3DES或其他加密算法进行数据加密,最后增加由内容类型主要版本次要版本和压缩长度组成的首部。被接收的数据刚好与接收数据工作过程相反依次被解密验证、解压缩和重新装配然后交给更高级用户。
每个SSL记录包括下面的信息:
内容类型;;
协议版本号;
长度;
数据有效载荷;
MAC。
SSL记录协议的功能
- 保护传输数据的私密性,对数据进行加密和解密
- 验证传输数据的完整性,计算报文的摘要
- 提高传输数据的效率,对报文进行压缩
- 保证数据传输的可靠和有序
13. 数据传输主要工作流程
应用数据的传输过程为:
- 应用程序把应用数据提交给本地的SSL;
- 发送端的SSL根据需要:
- 使用指定的压缩算法,压缩应用数据
- 使用散列算法对压缩后的数据计算散列值;
- 把散列值和压缩数据一起用
- 加密算法加密3)密文通过网络传给对方;
- 接收方的SSL
用相同的加密算法对密文解密,得到明文;
用相同的散列算法对明文中的应用数据散列;
计算得到的散列值与明文中的散列值比较: - 如果一致则明文有效接收方的SSL把明文解压后得到应用数据上交给应用层。否则就丢弃数据,并向发方发出告警信息。严重的错误有可能引起再次的协商或连接中断。
三、高级SSL协议
(一)SSL会话与连接
SSL会话的目的是降低pre_master_secret确立的开销
- 客户端公钥加密过程
- 服务端私钥解密过程
经过恢复的握手允许新的连接使用上一次握手中确立pre_master_secret
通过SSLsession ID机制来实现SSL会话缓存
1. SSL连接与会话的差异
- 连接代表一种特定的通信通道(通常映射为TCP连接),以及密钥、加密选择和序号状态等内容
- SSL会话则是一种虚拟的结构,它代表磋商好的算法和pre_ master secret
- 每次当给定的客户端与服务器经过完整的密钥交换并确立新的 master secret时就会创建一个会话。
- 一个给定的会话可以与多条连接关联。尽管给定会话中的所有连接均共享同一个master_secret,但是每个连接又都有它自己的加密密钥,MAC密钥和IV。
- 会话恢复(resumption)允许根据共同的master_secret来产生一组新的对称密钥,因为这些密钥依赖于对每次连接来说都是全新的随机值而新的随机值与原来的master_secret一起产生新的会话密钥。
2. SSL连接与会话的关系
3. SSL会话恢复过程
4. SSL会话密钥导出
5. SSL各类工作密钥的作用
(二)初始化向量(IV)
- 分组密码-分组链接模式(CBC)
- 密钥、初始化向量(IV)和明文数据块1做为最初始的输入
- 密钥、IV和明文数据块1加密运算后的结果做为加密明文数据块2的输入IV
(三)客户端证书认证
客户端认证是通过服务器给客户端发送一条CertificateRequest消息来进行初始化。
客户端通过发送一条Certificate消息(与服务器用来传送其证书的消息格式一样用来发送客户端证书)和一条CertificateVerify消息予以应答。
CertificateVerify消息是一个使用与其传输的证书所关联的私用密钥来签名的字符串使得服务器可以验证客户端证书的有效性。
(四)有客户端认证的全握手过程
(五)认证客户端的身份
- 客户端传送的证书中获得相关信息;
- 用户的公钥是否符合用户的数字签名;
- 当天的时间是否在证书的合法期限内;
- 签发证书的机关是否服务器信任的;
- 用户的证书是否在服务器的LDAP用户信息中;
- 该用户是否有权限访问请求的服务器资源。
(六)CertificateRequest
Certificate Request肖息是服务器端要求客户端证书认证的请求
ClientCertificate Type指明服务器端支持的客户端证书验证签名算法
DistinguishedName是服务器端配置的CA信任域中的CA证书的DN(客户端证书的 ISsuer),SSL客户端会根据CA的DN在本地证书存储中自动选择服务器端配置的CA信任域中的CA颁发的客户端证书
Certificate (C) in Wireshark
Certificate 消息是X.509证书链
- 第一个的是客户端证书,后面是中级CA证书(如果有)
(七)PFS(perfect forward secrecy)完美前向安全性
- 服务器证书私钥泄露
- 软件密钥
- SSL服务器设备报废
- 带来的风险就是之前在网络上截获的加密数据包会被解密
- 使用服务器私钥解密PreMasterSecret
- 其它的导出会话密钥的元素都以明文方式存在与数据包中
- PFS的目的就是在服务器私钥泄露的情况下保证之前在网络上截获的加密数据包不被解密
(八)ECDH算法基础
1. 椭圆曲线算法ECC
2. ECDHE预主密钥协商过程
浏览器发送 client hello,包含一个随机数 trandom1,同时需要有2个扩展:
- Elliptic curves:客户端支持的曲线类型和有限域参数。现在使用最多的是256位的素数域,参数定义如上节所述。
- Ec_ point formats:支持的曲线点格式,默认都是 uncompressed
服务端回复 server hello,包含一个随机数 random2及ECC扩展
服务端回复 certificate,携带了证书公钥。
服务端生成ECDH临时公钥,同时回复 server key exchange,包含三部分重要内容:
- ECC相关的参数
- ECDH临时公钥
- 服务器证书私钥对a)、b)签名生成的签名值,用于客户端校验
浏览器接收 server key exchange之后,使用服务器证书公钥进行签名验证,获取服务器端的ECDH临时公钥,生成会话所需要的共享预主密钥。至此,浏览器端完成了密钥协商。
浏览器生成客户端ECDH临时公钥和 client key exchange消息,跟RSA密钥交换不同的是,这个消息不需要加密了。
服务器处理 client key exchang消息,获取客户端ECDH临时公钥
服务器生成会话所需要的共享预主密钥。
Server端密钥协商过程结束。
4. 完美前向安全性PFS总结
ECDHE由于计算共享预主密钥 PreMasterSecret时有服务器端和客户端产生的临时密钥对参与运算,预主密钥协商过程完成后客户端和服务器端的临时密钥对就从内存中消失了,所以后续即便有网络上截获的加密数据包和服务器证书私钥,也不能计算出预主密钥 PreMaster Secret,从而实现了完美的前向安全性。
(九)SSL使用场景
PC客户端浏览器
- 网银
- 网站
- 手机银行
- 微信银行
端到端的SSL
- 银企直连
- 财企直连
- 网联清算
- 银联无卡
(十)SSL加速产品
1. NSAE应用安全网关
2. NetGate SSL VPN网关
通信安全及SSL协议相关推荐
- 【转】SSL协议、SET协议、HTTPS简介
一.SSL协议简介 SSL是Secure Socket Layer的缩写,中文名为安全套接层协议层.使用该协议后,您提交的所有数据会首先加密后,再提交到网易邮箱,从而可以有效防止黑客盗取您的用户名.密 ...
- SSL协议原理(Secure Socket Layer)【转载】
摘要 伴随企业信息化程度的加深,远程安全访问.协同工作需求的日益明显,SSL VPN技术逐渐成为企业用户远程安全接入的重要方式.本文着重阐述SSL(安全套接层)协议的基本原理,比较SSL VPN与IP ...
- 互联网通信安全TCP/IP协议
介绍TCP/IP协议 TCP/IP IP协议详解 https://blog.csdn.net/qq_42058590/article/details/82918678 IP: Internet Pro ...
- 服务器 ssl协议怎么开启,SSL协议是什么?SSL未开启如何解决?
本文给大家介绍一下著名的网络安全协议SSL,如果有需要的朋友可以参考学习,希望以下的分享对您的学习有所帮助. 安全套接字协议(Secure Socket Layer,SSL)是web浏览器与Web服务 ...
- SSL协议安全系列:PKI体系中的证书吊销
GoSSIP_SJTU · 2016/03/03 10:06 0x00 前言 在前面的章节我们讨论了部分SSL/TLS握手协议.记录协议中存在的安全问题,针对它们的攻击以及相应的加固方案.在SSL/T ...
- oracle celient 作用,WebLogic Server 10.3 SSL配置及SSL协议传输的WebSevice调用.doc
搜索关键字:weblogic ssl webservice WebLogic Server ?? SSL 配置及 SSL 协议传输的 WebSevice 调用 作 者: 風 絮 ? ?2010-7-2 ...
- SSH协议、HTTPS中SSL协议的完整交互过程
1.(SSH)公私钥认证原理 服务器建立公钥:每一次启动sshd服务时,该服务会主动去找/etc/ssh/ssh_host*的文件 客户端通过ssh工具进行连接,如Xshell,SecureCRT 服 ...
- 简述ssl协议及利用openssl创建私有CA
我在这个链接中简单的介绍了下加密解密原理和相关算法及其实现:http://starli.blog.51cto.com/8813574/1671408 CA是什么?为什么需要CA? 先看下面的互联网安全 ...
- apache添加ssl协议实现用户认证
apache添加ssl协议实现用户认证 目标 1对服务器的访问由http改为https, 2仅有证书的客户端可以访问服务器, 3.通过服务器端的配置,可以停用某个客户端的证书. 一 Apache服务器 ...
最新文章
- 用 Flask 来写个轻博客 (18) — 使用工厂模式来生成应用对象
- aspnet是前端还是后端_项目开发中无法回避的问题:前端和后端如何合作和并行工作?...
- 用户研究:如何做用户画像分析
- 工作297:shift+$形成元
- 解决windows 2003打了系统补丁后远程桌面不能用
- abb机器人伺服电机报闸是什么_ABB机器人伺服电机维修更换马达步骤
- linux (debian) 配置静态ip
- 新入职朋友说话时,一定不要用“你们”,用“咱们”
- 需求文档(PRD文档)
- MySQL索引常见面试题(2022版)
- 添加Extension库
- jszip 解压压缩包_Node.js使用jszip实现打包zip压缩包
- 如何看Linux哪些进程占内存,linux 查看进程占用内存
- python实现机器学习算法——K均值聚类算法
- 【论文阅读笔记】Securing software by enforcing data-flow integrity
- win10无法装载iso文件_win10系统打开iso格式文件的四种方法
- Python学习20230111
- 银行卡识别-自动识别银行卡号
- 2021顶级的开源 BI(商业智能)软件和报表工具
- 雨天在火车站台上撑伞会触电吗?