公钥密码体制:

自从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, c1k 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位了。

密码学基础知识(七)公钥密码相关推荐

  1. 重力传感器 测重力代码_“重力瀑布”如何帮助您教授孩子的密码学基础知识...

    重力传感器 测重力代码 by Kamil Tustanowski 通过卡米尔·图斯坦诺夫斯基 "重力瀑布"如何帮助您教授孩子的密码学基础知识 (How "Gravity ...

  2. 密码学系列(三):区块链+密码学基础知识

    密码学系列(三):区块链+密码学基础知识 一.区块链的概念 区块链概述 区块链的特点 区块链变化 市场现状 二.区块链政策与标准 区块链的特点与发展 三.区块链的定义 区块链的价值 四.区块链开发语言 ...

  3. 密码学基础知识-数论(从入门到放弃)

    数论知识 本文主要介绍整除.质数和合数.同余定理.模逆元素.欧几里得除法.欧拉函数.欧拉定理.费马小定理.中国剩余定理(孙子定理). 文章目录 数论知识 简介 一.整除 二.质数和合数 三.同余定理 ...

  4. Java基础知识(七) 输入输出流

    Java基础知识 输入输出流 1. Java IO流的实现机制是什么 2. 管理文件和目录的类是什么 3. Java Socket是什么 4. Java NIO是什么 5. 什么是Java序列化 6. ...

  5. 密码学基础知识(十)查缺补漏(缺)

    今天密码学结束了,哎,都是泪啊,答题时发现脑袋里都是思想,公式没记多少,就主要记了DES AES RC4 RSA的具体算法了,还把LSFR的特征多项式怎么装换成输出f忘了.所以现在补一下那些漏了的知识 ...

  6. 密码学基础知识(三)古典密码

    说完了前面那些,想起个事,本系列依据内容主要来自<现代密码学>马春光编著.我就是学这本书的. 好了,古典密码就是古时候的密码,哈哈,逗你玩的,shannon的保密系统的通信理论发表前的都是 ...

  7. 密码学基础知识(一)信息安全与密码学

    信息安全的六个基本属性:可用性A,机密性C,完整性I,非否认性N,真实性(可认证性)A,可控性C.即A2C2IN. availability就是保证啥时候数据都是可用的,不是说打仗了数据被人破坏了你就 ...

  8. [密码学] 基础知识

    文章目录 分类 攻击方法 Kerckhoffs假设 维吉尼亚密码 破解维吉尼亚密码 分类 根据密钥分类:   ①对称密码:Key1=Key2,也称为私钥密码   ②非对称密码:Key1≠Key2,也称 ...

  9. 密码学基础知识(九)密钥管理

    密钥管理: 前面说过,密钥是保密系统的核心.那对密钥的管理自然很重要: 密钥管理有: 1.    密钥生成:主要是密钥生成器,产生伪随机序列: 2.    密钥的分配和协商:生成后就要分发出去,有集中 ...

最新文章

  1. Parcelable与Serializable的比较
  2. SAP采购订单下传SRM
  3. WindowsServer 2008 Ad建立ftp隔离用户
  4. Gcc详解以及静态库、动态库生成
  5. [安卓】Error和Exception的区别
  6. 几大主流的前端框架(UI/JS)框架
  7. matlab变压器温度仿真
  8. 7. gdal进行遥感影像的16位转8位和百分比截断增强(看这篇就够了)
  9. Android进阶——更节电的后台任务JobScheduler 机制使用详解
  10. 7人制足球技战术要点
  11. 再探矩阵求逆引理 : Woodbury恒等式的证明
  12. 433模块 防冲撞 解决多发一收 mesh自组网 方案实现
  13. NSString中的rangeOfString
  14. cisco在服务器编辑首页信息,cisco设置
  15. 怎么用手机里的计算机玩游戏,黑鲨手机怎么玩电脑上游戏
  16. java abstract的用法
  17. CANDENCE :如何新建PCB文件、设置PCB画布尺寸、绘制PCB板框
  18. [线段树][ZZNUOJ]易水寒
  19. 九阴白骨爪(2)Ubuntu20.04下配置环境(MySQL/Anaconda/Django)
  20. Navicat 快捷键大全(史上最全)

热门文章

  1. 模块化数据机房具备的五大优势
  2. 第001期:数据中心知识问答
  3. linux java性能监控工具_性能监控工具以及java堆分析OOM
  4. 成功解决tensorflow.python.framework.errors_impl.NotFoundError: FindFirstFile failed for: ../checkpoints
  5. Dataset:fetch_20newsgroups(20类新闻文本)数据集的简介、安装、使用方法之详细攻略
  6. 成功解决VS编译环境下C++语言出现的异常提示:烫烫烫烫烫烫烫烫烫烫
  7. TF之Windows:Windows系统下设置Tensorflow运行方式为GPU加速运行的详细攻略
  8. BigData之Storm:Apache Storm的简介、深入理解、下载、案例应用之详细攻略
  9. Py之dlib:Python库之dlib库的简介、安装、使用方法详细攻略
  10. Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Listbox/Scrollbar)