密码学基础知识(七)公钥密码
公钥密码体制:
自从deffie和hellman发表了密码学的新方向后,公钥密码体制就以任我行吸星大法的速度广泛使用,其中有三个魔头:RSA,ElGamal和Menezs-Vanston。
可是江湖上为什么在对称密码一统江湖的时候出现公钥密码呢?
不用想,就是小说里的情节,对称密码派面临巨大的困难:
1. 密钥分配,由于其密钥分发是通过秘密信道,而安全的秘密信道不好弄。
2. 密钥管理:密钥量太大,不是指密钥长度太长,而是和一个人通信就一个密钥,和n个人就n-1个密钥。
3. 数字签名:对称密码密钥相同,所以接收方可以伪造签名,理所当然发送方可以否认。
公钥密码体制基于:陷门单向函数,记得前面说过,陷门的意思是有个参数t,计算y=f(x)就容易了。没有t就显示单向性。
再说下公钥密码体制有意思的把:
每个人一个公钥,一个私钥,公钥公开。
首先,公钥密码的通信过程:
一个消息,用B的公钥加密,密文传递过去,B私钥解密。
然后是数字签名:
一个消息,用A的私钥加密,密文传过去,B用A的公钥解密。
那要是我两个一起用呢:即先A的私钥加密,然后再B的公钥加密,密文传过去,B就先A的公钥解密,再B的私钥解密,这种双重加密实现了机密性和(真实性)可认证性。
下面讲下三个魔头的故事:
首先讲RSA:
RSA,基于大整数素分解问题。
1. 选两个保密的大素数p , q。
2. 公开n=p q,保密φ(n)。为啥公开n,φ(n)还能保密,很简单啊,因为数太大,素数求解很不容易。
3. 选取个e作为公开加密密钥,要求e和φ(n)最大公约数为1。
4. 核心:解密密钥d,d e=1 mod φ(n)。
加密: c=memod n;
解密: m=cd modn;
看完这两个公式你就明白了为啥是基于大整数素分解问题了吧,解密得有n,被人不知道你p 和q是多少,n欧拉值就不能得出,那就求不了d。咱们求解可以简单点,不用欧几里得扩展算法,d e=t φ(n) +1 ,t从0开始试,d就很容易求。
RSA的安全性:
基于大整数素分解,因式分解公认很难,是个NP问题,现在pq已经大到n长度位1024-2048位了,跟对称密码都不是一个量级的了。
除了p q 要大,我们一般还要其长度大致一样,n是1024的话,那两个就都512位左右;他俩差值也不能小,要不直接根号n啥都出来了;p q 应为起强素数,即:p-1 q-1 也有大的素因数,而且两者最大公约数也要小,1肯定最好了。
RSA承受着 共模攻击和低指数攻击。
EIGamal:
基于有限域乘法群上离散对数问题
DSS美国数字签名标准就是其变形
随机选择一个大素数p,再随机个d, 计算β=αd mod p .β是公开的加密密钥,d是保密的解密密钥。
加密时随机选取一个整数k, c1=αk mod p;c2=m βk mod p;c=(c1,c2)。
解密就是解密了:m=c2(c1d)-1mod p .
这个K就是搅屎棍,将一个明文可以对应出不同的密文,很好。
安全性:p至少768位,建议1024位,且是强素数,k也要是一次性的。
最后一个,椭圆曲线上的Menezs-Vanston:
基于椭圆曲线上离散对数问题。且比上两个还难解。
(1) 设p > 3是一个素数,E是有限域Zp上的椭圆曲线。α∈E是椭圆曲线上的一个点,并且α的阶足够大,使得在由α生成的循环子群中的离散对数问题是难解的。
p和E以及α都公开。
(2)随机选取整数d,1≤d≤ord(α)-1,计算
β=dα
β是公开的加密密钥,d是保密的解密密钥。
(3)明文空间为Zp*×Zp* ,密文空间为E×Zp*×Zp*。
(4)加密变换:对任意明文x=(x1,x2)∈Zp*×Zp* ,秘密随机选取一个整数k,1≤k≤ord(α)-1 ,
密文为: y=(y0, y1, y2),
其中y0=kα,(c1 , c2) = kβ,
y1=c1 x1 modp,
y2=c2 x2 modp,
(5)解密变换:对任意密文y=(y0, y1, y2)∈ E×Zp*×Zp*,明文为:
x=(y1c1-1mod p, y2c2-1 mod p) ,其中(c1 , c2)= d y0 。
160位的椭圆曲线就相当于RSA的1024位了。
密码学基础知识(七)公钥密码相关推荐
- 重力传感器 测重力代码_“重力瀑布”如何帮助您教授孩子的密码学基础知识...
重力传感器 测重力代码 by Kamil Tustanowski 通过卡米尔·图斯坦诺夫斯基 "重力瀑布"如何帮助您教授孩子的密码学基础知识 (How "Gravity ...
- 密码学系列(三):区块链+密码学基础知识
密码学系列(三):区块链+密码学基础知识 一.区块链的概念 区块链概述 区块链的特点 区块链变化 市场现状 二.区块链政策与标准 区块链的特点与发展 三.区块链的定义 区块链的价值 四.区块链开发语言 ...
- 密码学基础知识-数论(从入门到放弃)
数论知识 本文主要介绍整除.质数和合数.同余定理.模逆元素.欧几里得除法.欧拉函数.欧拉定理.费马小定理.中国剩余定理(孙子定理). 文章目录 数论知识 简介 一.整除 二.质数和合数 三.同余定理 ...
- Java基础知识(七) 输入输出流
Java基础知识 输入输出流 1. Java IO流的实现机制是什么 2. 管理文件和目录的类是什么 3. Java Socket是什么 4. Java NIO是什么 5. 什么是Java序列化 6. ...
- 密码学基础知识(十)查缺补漏(缺)
今天密码学结束了,哎,都是泪啊,答题时发现脑袋里都是思想,公式没记多少,就主要记了DES AES RC4 RSA的具体算法了,还把LSFR的特征多项式怎么装换成输出f忘了.所以现在补一下那些漏了的知识 ...
- 密码学基础知识(三)古典密码
说完了前面那些,想起个事,本系列依据内容主要来自<现代密码学>马春光编著.我就是学这本书的. 好了,古典密码就是古时候的密码,哈哈,逗你玩的,shannon的保密系统的通信理论发表前的都是 ...
- 密码学基础知识(一)信息安全与密码学
信息安全的六个基本属性:可用性A,机密性C,完整性I,非否认性N,真实性(可认证性)A,可控性C.即A2C2IN. availability就是保证啥时候数据都是可用的,不是说打仗了数据被人破坏了你就 ...
- [密码学] 基础知识
文章目录 分类 攻击方法 Kerckhoffs假设 维吉尼亚密码 破解维吉尼亚密码 分类 根据密钥分类: ①对称密码:Key1=Key2,也称为私钥密码 ②非对称密码:Key1≠Key2,也称 ...
- 密码学基础知识(九)密钥管理
密钥管理: 前面说过,密钥是保密系统的核心.那对密钥的管理自然很重要: 密钥管理有: 1. 密钥生成:主要是密钥生成器,产生伪随机序列: 2. 密钥的分配和协商:生成后就要分发出去,有集中 ...
最新文章
- Parcelable与Serializable的比较
- SAP采购订单下传SRM
- WindowsServer 2008 Ad建立ftp隔离用户
- Gcc详解以及静态库、动态库生成
- [安卓】Error和Exception的区别
- 几大主流的前端框架(UI/JS)框架
- matlab变压器温度仿真
- 7. gdal进行遥感影像的16位转8位和百分比截断增强(看这篇就够了)
- Android进阶——更节电的后台任务JobScheduler 机制使用详解
- 7人制足球技战术要点
- 再探矩阵求逆引理 : Woodbury恒等式的证明
- 433模块 防冲撞 解决多发一收 mesh自组网 方案实现
- NSString中的rangeOfString
- cisco在服务器编辑首页信息,cisco设置
- 怎么用手机里的计算机玩游戏,黑鲨手机怎么玩电脑上游戏
- java abstract的用法
- CANDENCE :如何新建PCB文件、设置PCB画布尺寸、绘制PCB板框
- [线段树][ZZNUOJ]易水寒
- 九阴白骨爪(2)Ubuntu20.04下配置环境(MySQL/Anaconda/Django)
- Navicat 快捷键大全(史上最全)
热门文章
- 模块化数据机房具备的五大优势
- 第001期:数据中心知识问答
- linux java性能监控工具_性能监控工具以及java堆分析OOM
- 成功解决tensorflow.python.framework.errors_impl.NotFoundError: FindFirstFile failed for: ../checkpoints
- Dataset:fetch_20newsgroups(20类新闻文本)数据集的简介、安装、使用方法之详细攻略
- 成功解决VS编译环境下C++语言出现的异常提示:烫烫烫烫烫烫烫烫烫烫
- TF之Windows:Windows系统下设置Tensorflow运行方式为GPU加速运行的详细攻略
- BigData之Storm:Apache Storm的简介、深入理解、下载、案例应用之详细攻略
- Py之dlib:Python库之dlib库的简介、安装、使用方法详细攻略
- Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Listbox/Scrollbar)