密码学概论

2023-09-19 11:58:25

1.密码学的三大历史阶段:

  1. 第一阶段 古典密码学 依赖设备,主要特点 数据安全基于算法的保密,算法不公开,只要破译算法 密文就会被破解, 在1883年第一次提出 加密算法应该基于算法公开 不影响密文和秘钥的安全;衡量加密算法的安全 是所需要话费的时间,一般电脑需要300年才能破译 认为强度是安全的
  2. 第二阶段 计算机的出现 进入电子密码学阶段, 加密算法公开  主要特点:   数据安全基于秘钥安全 而不是算法的保密。衡量保密强度是破译的时间
  3. 第三阶段: 公钥密码使得 发送端和接收端无秘钥传输的保密通讯成为可能。

2.加解密的基础操作:

1. 置换:按照规则替换内容信息
  • 置换是用一个特定的值替换另一个特定值得过程
  • 置换需要通信双方事先通知置换的方法
  • 置换比较简单,频繁使用会找到规律
  • 上例中置换基础原则为: 基数未ASCII 码值加1, 偶数为 ASCII 码值加2
2. 移位:打乱字母的排列顺序
  • 移位 把某个字母以前或其后几位的某个特定字母替代
  • 移位具有规律,容易被攻破
3. 编码:ASCII编码    BASE64编码

3.加密算法分类

  • 密码设计的基本公理是 算法公开
  • 系统安全性仅依赖于  秘钥的保密性

    加密算法的分类:

  • 对称秘钥密码算法 (又称私有秘钥算法)
  • 非对称秘钥密码算法 (又称公钥密码算法)

   加密算法秘钥强度对比: 

4.对称加密算法 :

  • 使用同一秘钥进行加密解密
  • 优势 加解密速度快,密文是紧凑(密文和原文大小相差不大) 安全的
  • 缺点 秘钥分发,秘钥存储和管理  无法解决秘钥在传输、存储过程中的安全。缺乏对数字签名/不可否认的支持
  
著名对称加密算法:
     DES     3DES
  • DES 是一种块或分组加密算法 (Data Encryption Standard)
  • 20世纪70年代 IBM 公司发明
  • DES 秘钥固定 56bit太短  不安全(暴力破解),需要经常更换秘钥, 3DES 可解决秘钥短带来的安全性
  • DES 以块模式对 64bit 的源文块 进行操作
  • 使用 DES CBC模式(  IV 向量) 增加安全性,   3DES 秘钥放大3倍,168位 以提高安全性
   
ASE    (Advanced  Encrytion Standard)
  • 1997年颁布  用于取代 DES加密算法
  • 适合高速网络,适合在硬件上实现
  • 使用128位, 192位 或256位的秘钥块(还能以32bit 扩展)
  • 3DES 的替代加密方案, 硬件运行效率高  适用于无线、音视频加密

        

RC 系列 轻量级 速度块 对硬件要求低 (RC2, RC4,  RC5)这里主要讲下  RC4
  • Rivest 设计
  • 秘钥长度可变
  • 流模式加解密算法,面向bit 操作
  • 算法基于随机置换
  • RC4 应用范围广(https/WEP/WPA) WPA2-AES
➥ IDEA    国际数据加密算法
  • 分组长度64位, 秘钥长度128位
  • 设计原理: 来自不同代数群的 混合运算
    ➥ 异或
    ➥ 模216加
    ➥ 模216 + 1 乘
➥ CASR
➥ Blowfish
  • Bruce Schneier 设计
  • 秘钥长度可变
  • 易于软件快速实现, 所需存储控件不到5KB
  • 安全性可以通过改变秘钥长度进行调整
  • 适用于秘钥不经常改变的加密
  • 不适用于需要经常交换秘钥的情况

5. 公钥加密算法(非对称加密算法) :

  • 公钥加密比私钥出现的晚
  • 私钥加密使用同一个秘钥来加密和解密信息
  • 私钥可以生成公钥,私钥加密公钥解密;公钥加密私钥解密
  • 公钥加密使用两个秘钥,一个秘钥用来加密信息,另外一个用来解密信息
  • 应用: 公钥加密 保密性, 私钥签名 数字签名

  •  优点:私钥不用 存储/传输 公钥可传输,可以保证秘钥在传输过程中的安全。
  •  缺点:加密相对速度慢,密文不紧凑 , 可以和对称加密 相互配合使用
 常用的公钥加密算法:

➥ RSA  最主流的公钥加密算法

  • 1977年由  Ron Rivest,  Adi Shamir  和 Len Adelman 开发
  • 专利于2000年9月到期
  • 秘钥长度在512 - 8192 bit 之间
  • 安全性基于 大素数因子分解的困难性
  • RSA 比用软件实现的DES慢 100倍
  • RSA 比用硬件实现的DES慢 1000倍
  • RSA 的主要用途: 解码 数字签名和密钥交换(加密散列 秘钥)

➥ HD (Diffie-Hellman)

  • 1976年  Whitfield Diffie 和 Martin Hellman 发明
  • 解决对称加密系统中的秘钥的 发布问题
  • 无需使用代价高昂既可对秘钥达成共识
  • 安全性来基于 很难计算出 很大的离散对数
  • 现在秘钥管理中提供其他算法的秘钥管理

➥ DSA

➥ ECC  区块链中的 椭圆加密算法

  • 1985年提出
  • 原理:给定椭圆曲线上的两个点 A和B, 如A = kB,要找到整数 k非常困难
  • 秘钥更小: 与1024位和RSA秘钥具有同样的安全性的  秘钥只有 160位

公钥加密算法常见的应用:
  • 加密&解密
  • 数字签名:发送方用自己的私钥签署报文, 接收方用对方的公钥验证对方的签名
  • 秘钥交换:双方协商回话秘钥

6. 数字签名 : 

➥ RSA  提供认证和抗抵赖性(私钥签名)

➥ 数字签名 Digital Signature

7. 数字证书与CA  

CA(Certificate Authority, 电子商务认证授权机构 ) 解决签名认证问题,类似身份证颁发机构

8. 哈希与HMAC

哈希 Hash(也叫散列函数), 常用的有:MD5  SHA

  • 将一段数据(任意长度)经过计算,  转化为一段 定长的数据
  • 不可逆性  几乎无法通过Hash 结果推导出原文,既无法通过 x 的 hash 推导出 x
  • 无碰撞性   几乎没有可能找到一个 y, 使得 y的 Hash 值等于x的 hash值
  • 雪崩效应   输入轻微变化  Hash 输出值 产生巨大变化
  • 单向          不可能从散列值推出原始数据
  • 使用场景
    1.发布文件的完整性验证  篡改, 如金融类软件  MD5
    2.服务器中保存用户密码
    3.数据签名

 感谢大佬分享 整理来自==》:01 密码学概述_哔哩哔哩_bilibili

更多推荐

网络安全(黑客)自学

前言作为一个合格的网络安全工程师,应该做到攻守兼备,毕竟知己知彼,才能百战百胜。计算机各领域的知识水平决定你渗透水平的上限。【1】比如:你编程水平高,那你在代码审计的时候就会比别人强,写出的漏洞利用工具就会比别人的好用;【2】比如:你数据库知识水平高,那你在进行SQL注入攻击的时候,你就可以写出更多更好的SQL注入语句

【业务功能110】微服务-springcloud-springboot-Kubernetes集群部署-kubeadm极速部署-Docker安装

kubeadm极速部署Kubernetes1.24版本集群一、Kubernetes1.24版本集群部署1.1Kubernetes1.24版本集群部署环境准备1.1.1主机操作系统说明序号操作系统及版本备注1CentOS7u91.1.2主机硬件配置说明三台主机可以利用虚拟化VMware来部署1.准备Centos7iso镜

常用数据库的 API - 开篇

APIAPI这个词在大多数人看来可能和CNS差不多,前者天天听说就是用不上,后者天天读就是发不了。不过,通过今天的一个简短介绍,今后API这个东西你就用上了,因为在文章最后我将会展示一个最最基础且高频的API使用示例。所谓API(ApplicationProgrammingInterface)就是应用程序接口。这个应用

联合国教科文发布,ChatGPT等生成式AI教育应用指南

联合国教科文组织(UNESCO)在官网发布了,全球首个《生成式AI与教育未来》的应用指南。呼吁各国实施适当的政策,以确保在教育中应用以人为本的方法来使用生成式AI。(指南下载地址:https://unesdoc.unesco.org/ark:/48223/pf0000386693)联合国教科文鼓励各国在教育中应用Cha

6.3、Flink数据写入到MySQL

目录1、添加POM依赖2、这一个完整的案例3、何时批量写入MySQL呢?4、容错性的保证(精确一次&至少一次)4.1、至少一次4.2、精确一次1、添加POM依赖ApacheFlink集成了通用的JDBC连接器,使用时需要根据生产环境的版本引入相应的依赖官网链接:官网<!--引入flinkjdbc连接器--><depen

猫头虎博主赠书三期:《Go编程进阶实战: 开发命令行应用、HTTP应用和gRPC应用》

🎉猫头虎博主赠书三期🎉:《Go编程进阶实战:开发命令行应用、HTTP应用和gRPC应用》🌷🍁博主猫头虎(🐅🐾)带您GotoNewWorld✨🍁🦄博客首页——🐅🐾猫头虎的博客🎐🐳《面试题大全专栏》🦕文章图文并茂🦖生动形象🐅简单易学!欢迎大家来踩踩~🌺🌊《IDEA开发秘籍专栏》🐾学会ID

【Go 基础篇】Go语言运算符解析:探索数学与逻辑的奥秘与运用

介绍在计算机编程中,运算符(Operators)是用于执行各种数学和逻辑操作的符号,它们使得计算机能够进行复杂的计算和决策。在Go语言(Golang)中,运算符是编写程序的基本工具之一,它们涵盖了算术运算、比较运算、逻辑运算等多个方面。本篇博客将深入探讨Go语言中的各种运算符,包括算术运算符、关系运算符、逻辑运算符、位

100天精通Golang(基础入门篇)——第21天:Go语言面向对象(OOP)核心概念解析

🌷🍁博主猫头虎🐅🐾带您进入Golang语言的新世界✨✨🍁🦄博客首页——🐅🐾猫头虎的博客🎐🐳《面试题大全专栏》🦕文章图文并茂🦖生动形象🐅简单易学!欢迎大家来踩踩~🌺🌊《IDEA开发秘籍专栏》🐾学会IDEA常用操作,工作效率翻倍~💐🌊《100天精通Golang(基础入门篇)》🐅学会Go

Python的电机控制模拟程序

一个带有EPICS支持的虚拟电机控制器。1)Status类:其实例化对象代表一个电机轴的状态。#!/usr/bin/envpython'''Status类代表一个电机处于的状态:1、DIRECTION状态位:设置运动方向2、DONE_MOVING状态字:置位表示结束运动3、MOVING状态字:置位表示正在运动4、HIG

【Go 基础篇】Go语言闭包详解:共享状态与函数式编程

介绍在Go语言中,闭包是一种强大的编程特性,它允许函数内部包含对外部作用域变量的引用。闭包使得函数可以捕获和共享外部作用域的状态,实现更加灵活和复杂的编程模式。本篇博客将深入探讨Go语言中闭包的概念、用法、实现原理以及在函数式编程中的应用。闭包的基本概念什么是闭包?闭包(Closure)是指一个函数包含了它外部作用域中

Spring续集

6.2、转发视图SpringMVC中默认的转发视图是InternalResourceViewSpringMVC中创建转发视图的情况:当控制器方法中所设置的视图名称以"forward:"为前缀时,创建InternalResourceView视图,此时的视图名称不会被SpringMVC配置文件中所配置的视图解析器解析,而是

热文推荐