zoukankan      html  css  js  c++  java
  • 安全相关基础知识

    关键词:TRNG、对称加密、非对称加密。

    1. 基本概念

    1.1 TRNG True Random Number Generator

    参考文档:《TRNG真随机数生成(true random number generator)

    1、概述随机数

    生成一个真正随机的数并非易事,常用的伪随机数的生成用的是模余法,大致是这样的公式:
    Rn=(Rn1A+C)modBRn=(Rn−1∗A+C)modB
    ABCA,B,C都是常数,RnRn为产生的随机数,Rn1Rn−1为上一拍的随机数,从这个可以看出,这种算法产生的随机数并不足够随机,与初始状态有关,初始状态定了,随机序列也就定了。
    真随机数顾名思义就是真正的随机数,比如我们掷骰子,产生的就是真正的随机数,但我们总不能为了产生随机数去掷骰子吧,还好有很多很天然的随机数,比如热噪声、键盘的输入、鼠标的位置,这些都是随机的,但是这些随机的信号直接拿来做随机数也不一定就很随机,比如热噪声在频谱上并不是白噪声,而可能是有色噪声,鼠标的位置前后会有关联,一段时期可能在一个区域,所以这些随机信号并不能直接拿来作为随机数,而是需要经过处理。

    2、真随机数生成

    在真随机数的生成里,把随机数的生成分成两个部分,第一个部分称之为熵生成,指的就是前面说的各类噪声,第二部分就是熵提取,指的就是把噪声数据进行变化
    在熵提取算法里,有几个比较经典的算法:

    2.1冯诺依曼运算

    这个运算比较有意思,就是对于输入的一串0、1比特,两个两个的一组,如果输入是00或者11就不输出,如果输入的是10就输出1,如果输入的是01就输出0

    2.2用hash函数

    SHA-1或者MD5都是可选项,个人认为国密的SM3也是可以的。

    3、小结

    真随机数的生成大致就是这么一个原理,具体的应用实现就可以大胆创新了,比如,有人就在利用HASH函数上下功夫,有的用几个HASH的组合,随机决定用哪个HASH。

    1.2 对称加密和非对称加密及其区别

    参考文档:《对称加密和非对称加密的区别

    简介:

    • 对称加密: 加密和解密的秘钥使用的是同一个。
    • 非对称加密: 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)

    对称加密算法

    密钥较短,破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DES的加密性好,且对计算机性能要求也没有那么高.

    优点:

        算法公开、计算量小、加密速度快、加密效率高

    缺点:

        在数据传送前,发送方和接收方必须商定好秘钥,然后 使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。

    常见的对称加密算法有: DES、3DES、Blowfish、IDEA、RC4、RC5、RC6 和 AES

    非对称加密算法

    公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

    非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。

    优点:

        安全

    缺点:

        速度较慢

    常见的非对称加密算法有: RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)

    Hash算法(摘要算法)

    Hash算法特别的地方在于它是一种单向算法,用户可以通过hash算法对目标信息生成一段特定长度的唯一hash值,却不能通过这个hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。

    常见的摘要算法有: MD2、MD4、MD5、HAVAL、SHA。

    1.3 HTTPS、TLS、SSL、HTTP区别和关系

    参考资料:

    详解 HTTPS、TLS、SSL、HTTP区别和关系》- 介绍了HTTPS/HTTP/TLS/SSL、HTTP和HTTPS的区别、证书、HTTPS通信流程和握手过程、

    1.3.1 什么是HTTPS、TLS、SSL

    HTTPS,也称作HTTP over TLS。TLS的前身是SSL,TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3。下图描述了在TCP/IP协议栈中TLS(各子协议)和HTTP的关系。

    1.3.2 HTTP和HTTPS协议的区别

    1、HTTPS协议需要到证书颁发机构(Certificate Authority,简称CA)申请证书,一般免费证书很少,需要交费。

    2、HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。

    3、HTTP和HTTPS使用的是完全不同的连接方式,使用的端口也不一样,前者是80,后者是443。

    4、HTTP的连接很简单,是无状态的。

    5、HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全。

    从上面可看出,HTTPS和HTTP协议相比提供了

    · 数据完整性:内容传输经过完整性校验

    · 数据隐私性:内容经过对称加密,每个连接生成一个唯一的加密密钥

    · 身份认证:第三方无法伪造服务端(客户端)身份

    其中,数据完整性和隐私性由TLS Record Protocol保证,身份认证由TLS Handshaking Protocols实现。

    1.3.3 HTTPS的基本原理

    从上面可知,HTTPS能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。

    HTTPS其实是有两部分组成:HTTP +SSL/ TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。具体是如何进行加密,解密,验证的,且看下图。

  • 相关阅读:
    python+Appium自动化:记录遇到的坑
    python+Appium自动化:Appium元素检测
    python+Appium自动化:id元素定位
    python+Appium自动化:运行第一个appium脚本
    python+Appium自动化:Capability配置简介
    python+Appium自动化:Appium-desktop界面简介
    Appium简介以及环境安装
    monkeyrunner录制和回放功能
    monkeyrunner脚本录制和回放下载
    MonkeyRunner的简介与综合实践
  • 原文地址:https://www.cnblogs.com/arnoldlu/p/13608788.html
Copyright © 2011-2022 走看看