【嵌入式】计算机加密SSL/TLS协议基础

推荐一款 求职面试、刷题学习 的神器:👉*点击跳转* ,快来看看吧!


参考文章:https://www.internetsociety.org/deploy360/tls/basics/?gclid=Cj0KCQjwpcOTBhCZARIsAEAYLuXVTtaCVNbegx5XuY-WxZ7BwerSisLhr3GEhNiP-3VkXxGzPY5f6UMaAtAmEALw_wcBhttps://www.internetsociety.org/deploy360/tls/basics/?gclid=Cj0KCQjwpcOTBhCZARIsAEAYLuXVTtaCVNbegx5XuY-WxZ7BwerSisLhr3GEhNiP-3VkXxGzPY5f6UMaAtAmEALw_wcB

https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.2https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.2https://www.youtube.com/watch?v=6xDGSalpPXk&list=PLkL8xqe0hJ5F0XCovSULofmZ4shDDe4-C&index=7https://www.youtube.com/watch?v=6xDGSalpPXk&list=PLkL8xqe0hJ5F0XCovSULofmZ4shDDe4-C&index=7

几个英语单词

cryptic:同义词mysterious,表示神秘的、秘密的。

encrypt: to make something mysterious,使某事变得神秘,即加密

decrypt: to make something not mysterious,解密

cryptography: the art and science of encryption,密码学

cipher: a secret way of writing, especially one in which a set of letters or symbols is used to represent others, “a cipher”可以理解为一种加密手段或加密算法

什么是TLS

TLS用于加密网络上传输的数据,以防偷窥者或者黑客看到你的数据,尤其是重要的私密数据例如账户密码、信用卡号码或者个人信件。

TLS是一个安全协议,为网络上应用之间的通信提供了端到端的数据安全保障。TLS最显著地体现在了浏览器的中,当打开一个使用了TLS协议的网页时,会显示一个锁的图标表示与该网站之间的连接是安全的。当然,TLS也可以用在其它应用中,例如收发邮件、文件传输、音视频会议、即时消息通信等等。

TLS协议发展于SSL 3.0协议,后者是由网景公司在1994年发布的标准。

为了给应用层协议例如HTTP、FTP、SMTP等提供加密服务,TLS通常基于基于传输层的TCP协议。但是TLS同样也支持在UDP协议上实现,被叫做DTLS。

"Transport Layer Security (TLS) encrypts data sent over the Internet to ensure that eavesdroppers and hackers are unable to see what you transmit which is particularly useful for private and sensitive information such as passwords, credit card numbers, and personal correspondence. This page explains what TLS is, how it works, and why you should deploy it.

TLS is a cryptographic protocol that provides end-to-end security of data sent between applications over the Internet. It is mostly familiar to users through its use in secure web browsing, and in particular the padlock icon that appears in web browsers when a secure session is established. However, it can and indeed should also be used for other applications such as e-mail, file transfers, video/audioconferencing, instant messaging and voice-over-IP, as well as Internet services such as DNS and NTP.

TLS evolved from Secure Socket Layers (SSL) which was originally developed by Netscape Communications Corporation in 1994 to secure web sessions. SSL 1.0 was never publicly released, whilst SSL 2.0 was quickly replaced by SSL 3.0 on which TLS is based.

TLS was first specified in RFC 2246 in 1999 as an applications independent protocol, and whilst was not directly interoperable with SSL 3.0, offered a fallback mode if necessary. However, SSL 3.0 is now considered insecure and was deprecated by RFC 7568 in June 2015, with the recommendation that TLS 1.2 should be used. TLS 1.3 is also currently (as of December 2015) under development and will drop support for less secure algorithms.

It should be noted that TLS does not secure data on end systems. It simply ensures the secure delivery of data over the Internet, avoiding possible eavesdropping and/or alteration of the content.

TLS is normally implemented on top of TCP in order to encrypt Application Layer protocols such as HTTP, FTP, SMTP and IMAP, although it can also be implemented on UDP, DCCP and SCTP as well (e.g. for VPN and SIP-based application uses). This is known as Datagram Transport Layer Security (DTLS) and is specified in RFCs 63475238 and 6083."

什么是Cipher suite

Cipher suite即“加密算法套件”,是指一组用于保障网络连接安全的算法集合。加密套件一般使用Transport Layer Security(TLS)协议或它的前身Secure Socket Layer(SSL)协议规范中定义的加密算法。一个加密套件一般包含:一个秘钥交换算法(key exchange algorithm)、一个批量数据加密算法(bulk encryption algorithm)和一个消息认证算法(message authentication code algorithm)。

秘钥交换算法用于在两个设备之间交换秘钥,这个秘钥在批量数据加密算法中用于加密和解密两个设备之间传输的数据。批量加密算法可以分为block cipher和stream cipher。消息认证算法用于数据完整性检测,保证数据在传输过程中没有被篡改。此外,加密套件中可以包含一个签名认证算法用于服务器的认证。

不同加密算法的组合,组成了上百种不同的加密套件,不同的加密套件的加密效果各不相同。

一个简单的Cipher

参考之前转载的一个最简单的加密算法:

一个最简单的加密解密算法(人人能懂)_好奇宝宝·权的博客-CSDN博客_简单加解密算法原文:http://blog.csdn.net/stpeace/article/details/8294980 点击打开链接[cpp] view plain copy#include     // KEY 非常重要,不能对公众泄露KEY值  // 发送端和接收端提前秘密约定好KEY值  #define KEY 1313113 //https://blog.csdn.net/tq384998430/article/details/67633916?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165157355516782390567116%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165157355516782390567116&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-67633916.nonecase&utm_term=%E5%8A%A0%E5%AF%86&spm=1018.2226.3001.4450另一种简单的加密算法:substitution cipher。这个算法的原理就是符号替换,例如26个英文字母,加密端将A用B替换,B用C替换......,解密端使用反逻辑即可将数据解密,这种方式是caesar cipher(恺撒密码)的一种实现。

对称加密和非对称加密

对称加密(Symmetric encryption)是指只使用一个秘钥(a secret key),同时用于加密和解密电子数据的加密方式。使用对称加密方法的通信实体之间需要进行秘钥交换以实现加密和解密。

非对称加密(Asymmetric encryption)也称公钥加密(Public-key encryption),是指使用两个不同但是又存在数学上的关联的钥匙,一个叫做公钥(public key)另一个叫做私钥(private key)。公钥用于加密数据,私钥用于解密数据。非对称加密可用于对称加密通讯中的秘钥交换。

常见的对称加密算法:

  • AES (Advanced Encryption Standard)

  • DES (Data Encryption Standard)

  • IDEA (International Data Encryption Algorithm)

  • Blowfish (Drop-in replacement for DES or IDEA)

  • RC4 (Rivest Cipher 4)

  • RC5 (Rivest Cipher 5)

  • RC6 (Rivest Cipher 6)

常见的非对称加密算法:

  • RSA

  • Diffie-Hellman

  • ECC

  • El Gamal

  • DSA

什么是哈希函数Hash function

哈希函数也叫散列函数,是指使用哈希算法,能够将任意大小的数据集合映射到一个固定大小的数据集合的函数。哈希函数的输出叫做哈希值、散列码、摘要或者就叫哈希,一般为固定长度且远小于输入数据的长度,可用于便捷的查找和表示原始数据。哈希算法是一种压缩映射算法,且不可逆。

对于数据存取应用,哈希函数和对应的哈希表可以保证每次的数据访问能够在固定且很短的时间内完成。存储哈希值占用的存储空间仅为原始数据占用空间的一小部分。

哈希经常与数据校验、指纹等混淆,虽然他们之间有一定的关联性,但是它们每个都是针对特定的应用有不同的优化设计。哈希函数和其它函数的最大区别在于数据的完整性。

哈希算法的要求: 

1、对两个不同的输入,不能够输出相同的哈希值,对于相同的输入,必须输出相同的哈希值

2、高效的运算速度

3、安全不可逆,微小的输入变化需要引发巨大的输出改变

摘要和签名的区别:摘要是对原文的单向映射,而数字签名一般是由摘要用私钥进行加密后生成的。摘要可以防止数据被篡改,数字签名可以确定消息是由谁发出的(是否由私钥拥有者,因为A的私钥产生的签名只能用A的公钥进行解密,也就说如果信息能用A的公钥解密则这个消息一定是A发出的)。因此摘要+签名的组合就保证了消息传输中信息放篡改、不可抵赖的问题

常用的哈希算法:

  • Secure Hash Algorithm 1 (SHA-1)
  • Secure Hash Algorithm 2 (SHA-2)
  • Secure Hash Algorithm 3 (SHA-3)
  • MD2
  • MD4
  • MD5

OpenSSL和mbedTLS

OpenSSL软件库为在网络上通讯的应用之间提供安全加密功能,防止数据被窃取同时对通讯对方进行认证,广泛用于网络服务器包括绝大部分的HTTPS网页服务器。OpenSSL实现了SSL/TLS协议,基础加密库和丰富的工具软件。

mbedTLS前身为PolarSSL,也是一个实现了SSL/TLS协议以及各类加密算法和工具的软件库,使用C语言实现,mbedTLS的宗旨为:易于理解,使用,集成和扩展。和OpenSSL不同的是,得益于mbedTLS非常小的build size和runtime memory usage,它能够被集成到小型嵌入式系统中去。

什么是信息熵information entropy

在信息学(information theory)中,一个随机数(random number)的熵(entropy)是指由该随机数所有可能的取值结果所造成的数值不确定性因素。例如一个随机数X取值范围为x1~xn,且各值的发生概率为P(x1)~P(xn),那么X的熵一般表示为:

H(X)=-\sum_{i=1}^{n}P(X_{i})logP(X_{i})

什么是PEM文件

Privacy Enhanced Mail (PEM)文件是将二进制的DER证书或秘钥通过BASE64编码得到的human readable文件。PEM文件包含了明显特征的文件头部和尾部,例如一个RSA公钥生成的PEM文件内容为:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCfT3Jb9W4xZpALyiK4S0xFMsjl
tpXUy0r/9eIyrwraHV8RPeWvn5+pv7nr2dQHbAnvcl46Fk+bfOe9kyriOvpAFkTj
wYbNu9DT5tnJkuhbCte46YVTvBnFSJSR83L+xo9l4WyYq+ZSiz26b11W4b+TLXLj
4cYTzCg1tXvGACr5JwIDAQAB
-----END PUBLIC KEY-----

头部和尾部信息描述了文件内容的类型,但不是所有PEM文件都需要它们,其它的类型如:

-----BEGIN CERTIFICATE REQUEST----- and -----END CERTIFICATE REQUEST----- show a CSR in PEM format.
-----BEGIN RSA PRIVATE KEY----- and -----END RSA PRIVATE KEY----- show a private key in PEM format.
-----BEGIN CERTIFICATE----- and -----END CERTIFICATE----- show a certificate file in PEM format.


推荐一款 求职面试、刷题学习 的神器:👉*点击跳转* ,快来看看吧!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值