【HKE离散对数交换与椭圆曲线】
【一、原理部分】
DHKE允许双方通过不安全的密道进行交流,基本原理是
k=(αx)y = (αy)x mod p
DHKE协议由两个协议组成:握手协议和主要协议
握手协议:选择大素数p和整数α∈{2,3……p-2},并公开
主要协议:即双方分别选择一个x和y,将α^x 和 α^y计算出来后交换。在进行自己的
y或x的指数计算后即可得到密钥。
使用概率素数产生法生成p,p的长度应该大于1024位,选择的私钥a和b必须要用随机数产生

【代数知识】
阿贝尔群:交换群。 每个元素的逆元都可以由
循环群:存在一个群内元素α的所有次幂后的值,都在群内以一个序列循环(如,1,3,5,4,2)
在Z(6)中。ord(a)=5,|G|,G有5个元素,|G|表示为基是5。且该元素为生成元。

  • ord(a) = k,k满足,a^k=1 mod G
    注意,Z(6)只是表示元素都小于6,不代表元素个数
    定理:①每个素数p:Zp都是一个阿贝尔有限循环群
    ②假设G为有限群,则每个a^|G|=1,ord(a)可以整除|G|
    ③当G为有限循环群,G的生成元的个数为φ(|G|),如果|G|是素数,则所有不等于1的
    元素a都是生成元。
    ④群可以有子群,循环群G内的每个满足ord(a)=s的元素a都是拥有s个元素的循环子群的
    生成元。且这个循环子群的基可以整除原群,逆过来可以快速找到循环子群
    ⑤假设G是n阶有限循环群,a为对应生成元,对整除n的每个整数k,都存在由
    a(n/k)生成的循环子群H(即H的生成元是an/k),且H是由满足条件a^k=1的元素组成
    的,且G不存在其他子群
    离散数学:有点困难,核心思想是——选择Zp子群中基为素数的子群内的x(α^x=β mod p)
    这个DH密钥算法是基于离散对数的安全性。构建的单向函数是基于离散对数的求解阶数分解
    【攻击】
    难题是:中间人是否可以通过ax和ay生成的A和B,求出a^x·y?
    结论:循环群的阶p-1必须不能因式分解成全部都是小整数的素因子,否则容易遭受攻击,
    最小素因子至少要160位(80位长度密钥)
    攻击者一般不可能找到 d =
    loga β mod p 的
    【Elgamal方案】

    就是在基于DHKE的基础上,由发送信息方,如Alice每次发送前就随机在对方发过来的公钥内选择一个数生成掩码密钥与明文相乘即可。生成掩码密钥使用了alice的密钥和bob的公钥,把掩码密钥先
    发送刚给BOb,bob会用私钥解密掩码密钥就可以得到逆向掩码密钥。
    这样做的好处就是两次加密同一个明文得到的不会是同一组密文。
    【计算】密钥生成时,私钥应该用真随机数生成得到,公钥要执行指数运算,解密
    用定理可以化简成Km-1=kep-d-1 mod p
    【攻击】抗攻击性较好,难以求解对数,同时为了抵抗延展性被利用,一般也用了填充方案。

椭圆曲线:
椭圆曲线并不是椭圆,而是与椭圆周长的方程相似的三次方程。一般,椭圆曲线方程形为:
    y2 + axy + by = x3 + cx2 + dx + e
对我们而言将方程限制为以下形式就已足够:
    y2 = x3 + ax + b             
对于给定的a和b,对x的每一个值,需画出y的正值和负值。

【计算法则】
将满足式(10.1)的所有点(x , y)和元素O(称为无穷远点或者零点的元素,后面会讨论这个概念)所组成的点集E(a , b)。上图中两条曲线分别可用集合E(-1 , 0)和E(1 , 1)表示。
若式(10.1)里的参数a和b满足
    4a3 + 27b2 ≠ 0                (10.2)
则基于集合E(a , b)可以定义一个可交换群(Abel群),其加法的运算规则如下:
  1、O是加法的单位元,有O = -O;对椭圆曲线上任何一点P,有P + O = P
  2、点P (x , y)的负元-P = (x , -y)。注意这两点可以用一条垂直的线连接起来,并且P + (-P) = P - P = O
  3、要计算坐标不同的P和Q之和,则在P和Q间作一条直线并找到与曲线的第三个交点R(显然存在唯一的交点R,除非这条直线与P或者Q相切,此时分别取R = P或者R = Q,与下述5相一致)。并定义如下三点上的加法:P + Q = -R。也就是,定义P + Q 为第三个交点相对于x轴的镜像
  4、上述术语的几何解释也适用于具有相同x坐标的两个点P和 -P的情形。用一条垂直的线连接这两点,这可视为在无穷远点与曲线相交,因此有P + (-P) = O,与上述2相一致。
  5、为计算点Q的两倍,画一条切线并找到另一交点S,则Q + Q = 2Q = -S。

余下数论知识参考:https://www.cnblogs.com/block2016/p/5618918.html

【椭圆曲线实现Diffie-Hellman密钥交换】

首先,挑选一个大整数q以及式(10.5)或式(10.7)中的椭圆曲线参数a和b,这里q为素数p或者是形为2m的整数。由此可以定义出点的椭圆群Eq(a , b)

其次,在Eq(a , b)中挑选基点G = (x1 , y1),G的阶为一个非常大的数n。椭圆曲线上的点G的阶n是使 nG = 0 成立的最小正整数。Eq(a , b)和G是该密码体制中通信各方均已知的参数

用户A和用户B之间完成密钥交换过程如下:

1、A选择一个小于n的整数nA作为其私钥,然后产生其公钥PA = nA × G。该公钥是Eq(a , b)中的一个点。B也类似地选择私钥nB并计算公钥PB

2、A产生秘密钥k = nA × PB,B产生秘密钥k = nB × PA

nA × PB = nA × (nB × G) = nB × (nA × G) = nB × PA

要破译这种体制,攻击者必须由G和kG计算k,这被认为很难。

【椭圆曲线加/解密】
1、用户A选定一条椭圆曲线Ep(a,b),并取椭圆曲线上一点,作为基点G。
2、用户A选择一个私有密钥k,并生成公开密钥K=kG。
3、用户A将Ep(a,b)和点K,G传给用户B。
4、用户B接到信息后 ,将待传输的明文编码到Ep(a,b)上一点M(编码方法很多,这里不作讨论),并产生一个随机整数r(r是用来做扩散的,同时也是B的密钥)
5、用户B计算点C1=M+rK;C2=rG。
6、用户B将C1、C2传给用户A。
7、用户A接到信息后,计算C1-kC2,结果就是点M。因为
C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M
再对点M进行解码就可以得到明文。
【预防攻击】
在这个加密通信中,如果有一个偷窥者H ,他只能看到Ep(a,b)、K、G、C1、C2 而通过K、G 求k 或通过C2、G求r 都是相对困难的。因此,H无法得到A、B间传送的明文信息。

描述一条Fp上的椭圆曲线,常用到六个参量:
T=(p,a,b,G,n,h)。
(p 、a 、b 用来确定一条椭圆曲线,
G为基点,
n为点G的阶,
h 是椭圆曲线上所有点的个数m与n相除的整数部分)
【安全条件】
这几个参量取值的选择,直接影响了加密的安全性。参量值一般要求满足以下几个条件:

1、p 当然越大越安全,但越大,计算速度会变慢,200位左右可以满足一般安全要求;
2、p≠n×h;
3、pt≠1 (mod n),1≤t<20;
4、4a3+27b2≠0 (mod p);
5、n 为素数;
6、h≤4。

密码学读书笔记——4相关推荐

  1. 密码学读书笔记系列(三):《商用密码应用与安全性评估》

    密码学读书笔记系列(三):<商用密码应用与安全性评估> 思考/前言 第1章 密码基础知识 1.1 密码应用概述 1.2 密码应用安全性评估(密评)的基本原理 1.3 密码技术发展 1.4 ...

  2. 密码学读书笔记系列(一):《密码故事——人类智力的另类较量》

    密码学读书笔记系列(一):<密码故事--人类智力的另类较量> 第一章 玛丽女王的密码 第二章 不可破译的密码 第三章 加密的机械化 第四章 破解恩格玛 第五章 语言上的隔阂 第六章 艾丽丝 ...

  3. 现代计算机密码学阶段主要有两个方向,密码学技术读书笔记

    关于密码学技术读书笔记 一.密码学的介绍 密码学(在西欧语文中,源于希腊语kryptós"隐藏的",和gráphein"书写")是研究如何隐密地传递信息的学科. ...

  4. 度量相似性数学建模_数学之美读书笔记

    2020年6月读,先通读一遍,随后为写读书笔记又重新读了一遍,收获颇丰,虽然没有很多数学或者编程方面的知识,但正如作者所说,这本书讲述的是道,而非术. 读这本书让我领略到了科学的趣味,并不是枯燥的敲代 ...

  5. 《数学之美》-吴军 读书笔记

    从吴军的<数学之美>找到了伽莫夫的<从一到无穷大>,前段时间先整理了<从一到无穷大>的笔记.现在整理下<数学之美>以巩固下. 近段时间AlfaGo 与人 ...

  6. 《数学之美》——吴军#读书笔记

    <数学之美> 吴军 第一章:文字和语言vs数字和信息 主要内容概述:"语言和数学的产生都是为了同一个目的--记录和传播信息".科技是伴随着人类的不断进化而发展进步的.信 ...

  7. 《区块链技术与应用》读书笔记

    <区块链技术与应用>读书笔记 第一章 概论 区块链的特点 1.分布式结构 2.建立信任(通过数学原理和程序算法,使系统运作规则公开透明) 3.公开透明 4.时序且不能修改 区块链系统的原理 ...

  8. 【读书笔记】《数学之美》——一个好方法在形式上总是简单的

    数学之美 作者简介 内容简介 摘抄语录 收获感悟 牛顿曾说"(人们)发觉真理在形式上从来是简单的,而不是复杂和含混的."数学的美妙之处在于它对自然界史诗的总结和归纳,也是抽象思考的 ...

  9. 计算复杂性读书笔记(一): 判定问题,P,NP

    2019独角兽企业重金招聘Python工程师标准>>> 计算复杂性读书笔记(一): 判定问题,P,NP    比特猪   quanzz1129@gmail.com 首先是版权声明,版 ...

最新文章

  1. 调试H3C MSR 20-20 PPPOE拨号
  2. Python环境变量设置
  3. springMVC项目国际化(i18n)实现方法
  4. 顺序栈实现括号匹配的检验(C语言实现)【栈】
  5. Foundation框架: 9.OC中的集合类之四 - NSMutableDictionary的基本认识
  6. 线程中如何使用对象_多线程中如何使用gdb精确定位死锁问题
  7. 42. 接雨水 golang
  8. linux日常常用命令分析
  9. 天然气门站监控摄像头如何布置_监控摄像头布置原则
  10. JEECG 前端JS国际化实现,采用i18n新技术方案
  11. (三.1)基于MicroBlaze的PowerlinkC代码分析
  12. 洛谷P2038 无线网络发射器选址 水题 枚举
  13. 分享一份自己整理的PPT--数据分析师的业务流程和常规思维
  14. 2021年华为杯数学建模竞赛E题——信号干扰下的超宽带(UWB)精确定位问题
  15. 16*16点阵字库HZK16的使用
  16. eth的geth钱包安装
  17. 219-6-3Google浏览器书签备份
  18. Matplotlib颜色设置
  19. 杭州电子科技大学程序设计竞赛(2016’12)- 网络同步赛
  20. 未来教育计算机二级2020年9月有几套题,未来教育】2021年9月全国计算机二级office题库国二计算机等级考试上机考试真题计算机二级msoffice2021年考试备考三月教材九2016...

热门文章

  1. 怎么下载网页上的视频
  2. vs2012 MFC连接及操作access(2007)数据库(ADO)
  3. biti's blog
  4. CL-ReLKT: Cross-lingual Language Knowledge Transfer for MultilingualRetrieval Question Answering论文阅读
  5. 连接mysql数据库报错Cannot create PoolableConnectionFactory
  6. 18336万!华为中标昌平区政务云2022年-2025年服务项目
  7. win7桌面图标显示不正常解决
  8. js中each的用法
  9. 使用计算机开机按啥建,学生计算器第一次使用应该如何开机
  10. 两个外企常用的电面网站