第十六个知识点:描述DSA,Schnorr,RSA-FDH的密钥生成,签名和验证 这是密码学52件事系列中第16篇,这周我们描述关于DSA,Schnorr和RSA-FDH的密钥生成,签名和验证. 1.DSA 数字签名场景(DSA),也叫数字签名标准(the Digital Signature Standard,DSS),在1991年[1]被NIST(国际标准和技术机构)提出.DSA的安全是基于计算离散对数的困难性上.但是却没有一个基于一个标准困难性假设的证明,即便在随机访问模型里. 域参数生成…
第二十六个知识点:描述NAF标量乘法算法 NAF标量乘法算法是标量乘法算法的一种增强,该算法使用了非邻接形式(Non-Adjacent Form)表达,减少了算法的期望运行时间.下面是具体细节: 让\(k\)是一个正整数,\(P\)是一个在域\(F_q\)上椭圆曲线\(E\)上的点.这个计算乘法操作\(Q = k * P\)就是圆曲线上的标量乘法操作(点乘).一个最简单计算的方法就是基于双倍-加法的霍纳规则的变体.顾名思义,该方法最突出的两个构建块是点加倍和点添加原语.就像名字那样,算法也十分简…
第三十六个知识点:Index Calculus算法 我们这篇博客继续描述一种数学攻击,这种数学攻击被叫做Index Calculus(IC)算法. 注意这里Index Calculus算法没有找到合适的中文翻译.因为原文不是很通顺,我加入了很多自己的话. 我们要做什么 Index Calculus攻击是一种企图解决DLP(离散对数问题)的方法.简单来说,算法把目标值写成在因子基数上的元素幂的乘积,对数已知的元素,然后利用对数定律提取目标值.我们现在详细的解释刚才那句话是什么意思. 算法工作原理…
第四十六个知识点 在Sigma协议中,正确性,公正性和零知识性意味着什么 Sigma协议 Sigma协议是Alice想要向Bob证明一些东西的协议(Alice知道一些秘密).他们有下面的一般范式:Alice知道一个秘密,Alice和Bob都分享了一些相同的信息.因此: Alice给Bob发送了一个值,这个值叫做承诺(commitment). Bob均匀的随机选择一个挑战(challenge)发送给Alice. Alice计算一个回应(response)发送给Bob. Bob检查回应,接受或者拒绝…
Bristol大学密码学博士生的五十二个知识点 这个系列,是Bristol大学的密码安全工作组为密码学和信息安全相关的博士准备了52个基本知识点. 原地址:http://bristolcrypto.blogspot.com/2014/10/52-things-number-1-different-types-of.html 对密码学基础是一个极好的总结. 每篇内容不多但是问题提出的极好.我翻译过来是随手之意. 计算机工程方面(E) Number 1 通用处理器,带指令扩展的通用处理器,专用处理器…
第十五个知识点:RSA-OAEP和ECIES的密钥生成,加密和解密 1.RSA-OAEP RSA-OAEP是RSA加密方案和OAEP填充方案的同时使用.现实世界中它们同时使用.(这里介绍的只是"textbook rsa-oaep") 1.1 RSA[1] RSA是一种最早的公钥加密场景.它基于RSA问题的困难性(之前的博客说过).这里重新复习一下RSA的原理. 密钥生成: 生成两个大素数\(p,q\)同时计算模数\(N=pq\). 选择一个随机的数\(e \in Z_N .\)S.T.…
第四十九个知识点:描述在IPsec和TLS后的基本想法 网络安全协议(Internet Protocol Security,IPsec)和安全传输层协议(Transport Layer Security,TLS)都旨在在不安全的网络中创造一个安全的两方通信.一般来说,这两种机制都是建立一个私密的会话密钥(要么是预先准备的要么是密钥协商的),然后使用对称密码学进行大部分的交流.还有一些关于身份验证的详细信息,但是我将跳过这些内容.虽然这两个最终有相似的目标,但是它们在实现上有很大的不同. IPse…
第十八个知识点:画一个描述ECB,CBC,CTR模式的操作 第8周是画三个图的任务,但是维基百科上已经有人画的很好了 https://en.wikipedia.org/wiki/File:ECB_encryption.svg https://en.wikipedia.org/wiki/File:CBC_encryption.svg https://en.wikipedia.org/wiki/File:CTR_encryption_2.svg 因此我将解释这后面的原理. 操作模式:块密码的安全性依…
第二十四个知识点:描述一个二进制m组的滑动窗口指数算法 简单回顾一下我们知道的. 大量的密码学算法的大数是基于指数问题的安全性,例如RSA或者DH算法.因此,现代密码学需要大指数模幂算法的有效实现.我们应该从一个简化的方案开始思考:计算\(x^a\mod N\),我们可以用指数算法来求\(x^a\),然后再约减到\(N\).然而,对大多数密码算法来说,\(x^a\)都是非常大的.现在,大多数传统的方法能被简单的在每个阶段模\(N\).这回产生一些改进的技术.下面我会介绍一些计算\(X^E \mo…
第三十四个知识点:描述攻击离散对数问题的baby-step/Giant-step方法 Baby-step/Giant-step是Dnaiel Shanks为解决DLP问题开发的算法.DLP问题已经是许多现代密码学的困难性基础. 首先,我们回顾DLP问题. 给定一个循环群\(G\),\(G\)的阶是\(n\),生成元是\(g\).给定群中的一个元素\(h\),DLP问题就是找出\(x\)满足下面的条件: \[h = g^x \] 现在我们回到Baby-step/Giant-step算法上. 因为\…