精华内容
下载资源
问答
  • 可以通过公开密钥加密技术实现对称密钥的管理和共享。 解决Alice和Bob之间相互通信时如何产生和传输密钥的问题——Diffie-Hellman算法 对称密钥交换协议 Diffie-Hellman算法是一个公开的密钥算法,它的安全性基于在...

    引入

    在采用对称加密技术的时候双方的密钥必须保证是相同的,或者是在前篇的MAC消息认证码中提到的收发双方的密钥是共享的,而这个时候就需要通过一种安全的方法共享密钥。可以通过公开密钥加密技术实现对称密钥的管理和共享。
    如何让密钥在不安全的信道进行安全的共享
    解决Alice和Bob之间相互通信时如何产生和传输密钥的问题——Diffie-Hellman算法

    对称密钥交换协议

    Diffie-Hellman算法是一个公开的密钥算法,它的安全性基于在有限域上求解离散对数的困难性(可以深入了解了解,总之就是很难就是了,王小云教授说一个密码算法都是建立在某个数学难题之上的)
    加粗样式

    利用Diffie-Hellman算法产生密钥的过程

    首先Alice,Bob和窃听者都可以知道一个大的素数n和整数g,n和g可以公开,其中g是n的本原元。

    两者之间产生密钥的过程:Alice和Bob之间产生密钥的过程入下图所示共享密钥的过程
    虽然信道处在一个不安全的环境下,窃听者能够听到双方在传输过程中的全部信息,但是它缺少通信双方特有的属于只有自己知道的随机整数a和b,所以监听到最后也是白听了,也没有获取到真正有用的密钥信息,这样就能实现在不安全的信道安全地共享密钥啦

    展开全文
  • CPU缓存侧信道攻击

    千次阅读 2019-04-29 17:46:02
    2018年年初,多个独立的安全研究团队披露了现代CPU架构的若干严重漏洞,在业界造成了极大地影响,至今仍余波未了。...现阶段用户的隐私信息大多是依靠加密技术实现,如登录网站、电子邮箱、银行取款等等...

    2018年年初,多个独立的安全研究团队披露了现代CPU架构的若干严重漏洞,在业界造成了极大地影响,至今仍余波未了。在这些漏洞的利用方式中,针对CPU缓存的侧信道攻击技术是主要方式。什么是针对CPU缓存的侧信道攻击?黑客会如何利用侧信道攻击技术?

    密码是一种用来混淆的技术,它将正常的(可识别的)信息转变为无法识别的信息。现阶段用户的隐私信息大多是依靠加密技术实现,如登录网站、电子邮箱、银行取款等等。用户信息的安全性依靠于加密算法的安全性。然而理论上的安全并不等同于物理实现上的安全。

    关于侧信道攻击

    侧信道攻击是利用密码算法执行过程中泄漏的与内部运算紧密相关的多种物理状态信息如声光信息、功耗、电磁辐射以及运行时间等,再结合统计学手段等进行攻击。近年来,侧信道技术已经逐渐地从设备外部深入到计算机内部的CPU、高速缓存(Cache)、分支预测单元等等得到其中蕴含的敏感信息(如密钥)。Cache攻击是一种新型的侧信道分析技术,它可以跨平台、跨CPU、突破安全边界对目标设备进行攻击,对现有安全防护造成极大的威胁。另外,由于Cache侧信道攻击可以利用cache共享实施攻击,因此具有不易发现且极难防御的特点。

    Cache是什么?

    Cache的学名是中央处理单元高速缓冲存储器,由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多, 接近于CPU的速度。主要由三大部分组成:

    ➡Cache存储体:存放由主存调入的指令与数据块。

    ➡地址转换部件:建立目录表以实现主存地址到缓存地址的转换。

    ➡替换部件:在缓存已满时按一定策略进行数据块替换,并修改地址转换部件。

    Cache的作用

    冯.诺依曼体系结构是现代计算机的基础,现在大多计算机仍是冯.诺依曼计算机的组织结构。一个典型的冯诺依曼系统如图1所示,包含下面几大件:计算机由控制器、运算器、存储器、输入设备、输出设备五部分组成。然而由于计算机技术发展,主存储器速度比CPU处理速度慢得多,使得CPU的高速处理能力不能充分发挥,整个计算机系统的工作效率受到影响。为了缓和中央处理器和主存储器之间速度不匹配的矛盾,计算机系统加入了Cache模块,现代计算机CPU与内存和Cache基本关系如图2所示 。CPU在Cache中找到有用的数据被称为命中,当Cache中没有CPU所需的数据时(这时称为未命中),CPU才访问内存。

    http://5b0988e595225.cdn.sohucs.com/images/20170831/c22a9d3a4c7a4f3caf93569c005c6b50.png

    图1 冯诺依曼体系结构

    http://5b0988e595225.cdn.sohucs.com/images/20170831/d41cb8e66d634d8283b9cf44c3ae537e.png图2 最简单的高速缓存配置图

    Cache结构

    一般处理器的cache分三层,其架构如下图3所示,L1 Cache一般分为Data Cache(数据缓存)和Instruction Cache(指令缓存),为每个核单独占有。L2 Cache一般是每个核心单独占有,或者两个核心共享。L3 Cache一般在多核CPU中是所有核心CPU共用。访问时间关系为T­(内存)>T­­(L3)>T(L2)>T(L1)。

    http://5b0988e595225.cdn.sohucs.com/images/20170831/4cb5250d1efc4df19d9297877d3b7712.png

    ​图3 Intel cache架构

    如下为Intel Sandy Bridge架构处理器实图,可以看到多核共享的L3 Cache:

    Cache侧信道攻击原理

    多核之间cache数据共享,而cache命中和失效对应响应时间有差别,攻击者可以通过访问时间的差异,推测cache中的信息,从而获得隐私数据。根据采集信息不同,cache侧信道攻击可分为时序驱动攻击、访问驱动攻击以及踪迹驱动攻击。时序驱动攻击需要获得目标攻击系统详细配置参数,重建对照环境,利用统计分析方法,对照采集到的密码算法一次加密/解密的整体时间,推测密钥。踪迹驱动攻击需采集密码算法执行过程中所有cache访问命中和失效序列,再结合明文或密文推测密钥,一般通过功耗检测手段进行,但该手段需要特殊的信息采集设备而且需要物理接触密码设备,实现起来比较复杂。访问驱动攻击通过采集加密或解密过程中访问的cache组集合,再利用数学分析方法推测密钥,可以远程实现,攻击实现可行性较强。目前,Cache侧信道攻击包含四种方法,分别为Flush-Reload方法、Flush-Flush方法、Prime-Probe方法和Evict-Time方法。下面将对每类方法原理进行说明,并引用IAIK项目flush_flush [1]中的代码来解释关键行为点。

    1 Flush-Reload

    Flush-Reload(FR)方法是prime-probe方法的变种,基于共享内存实现,是一种跨内核、跨虚拟机的Cache 探测方法。在Flush 阶段,攻击者将监控的内存块从cache中驱逐出去,然后在Trigger阶段等待目标用户访问共享内存。在Reload阶段,攻击者重新加载监控的共享内存块。如果在等待的期间,目标虚拟机访问过的内存块不需要重新加载,时间将会较短,因为这些数据已经被缓存在cache中。根据加载时间长短,可判定目标虚拟机访问过的数据。Flush-Reload具体步骤如下:

    步骤1. Flush:将共享内存中特定位置映射的cache数据驱逐

    步骤2. Trigger:等待目标虚拟机响应服务请求,更新Cache

    步骤3. Reload:重新加载Flush阶段驱逐的内存块,测量并记录cache组的重载时间

    示例代码说明:

    下面这段代码实现了Flush+Reload攻击。通过rdtsc_begin和rdtsc_end来标记访问目标内存的开始和结束时间,从而计算出访问时长。然后再判断该时长是否小于一个Cache命中的临界值,最终便可知道该内存是否被目标程序访问过:

     

    2 Flush-Flush

    与Flush-Reload不同的是,Flush-Flush攻击是基于clflush指令执行时间的长短来实施攻击的。如果数据没在Cache中则clflush指令执行时间会比较短,反之若有数据在cache中则执行时间会比较长。与其它Cache攻击不同,Flush Flush侧信道攻击技术在整个攻击过程中是不需要对内存进行存取的,因此该攻击技术更加隐蔽。然而根据我们的经验,由于有无数据情况下Cache被flush的时间差别其实并非特别明显,因此在攻击过程中数据判断的精度并不高。

    Flush-Flush具体步骤如下:

    步骤1:通过flush清空Cache原始数据

    步骤2:等待目标进程运行,更新Cache,并刷新共享缓存行,测量刷新时间

    步骤3:根据测量时间判断原始数据是否被缓存

    该方法攻击原理如图所示:

    示例代码说明:

    下面这段代码实现了Flush-Flush攻击。代码主要通过rdtsc()来标记flush(addr)运行前后的时间点,计算出清理目标Cache数据所需的时间。如果flush(对应clflush指令)执行的时间较长,则表示数据被缓存,如果时间较短则表示数据未被缓存。

    3 Prime-Probe

    Prime-Probe方法具体步骤如下:

    步骤1. Prime: 攻击者用预先准备的数据填充特定多个cache 组

    步骤2. Trigger: 等待目标虚拟机响应服务请求,将cache数据更新

    步骤3. Probe: 重新读取Prime 阶段填充的数据,测量并记录各个cache 组读取时间

    该方法攻击原理如图所示:

    示例代码说明:

    4 Evict-Time

    Evict-Time具体步骤如下

    步骤2:等待目标程序运行,并记录其运行时间(运行过程有可能使用到第一步所说的Cache数据)

    步骤3:使用Evict方法覆盖Cache上的数据

    步骤4:然后再运行一次该函数,并第二次记录执行时间,如果时间不一致且执行时间变长则说明程序运行时读取了第一步所说的Cache数据(Cache未命中)

    与其他三种侧信道攻击技术相比,Evict-Time不是当前主流的侧信道攻击技术。

    应用场景最广泛的是Prime-Probe,而Flush-Rload和Flush-Flush要用到SSE2指令clflush,因此受到一定限制,在JavaScript和非Intel CPU中无法使用。但同时,Prime-Probe也有缺点,在攻击速度、攻击稳定性方面,则不如Flush-Reload和Flush-Flush。

    在支持clflush指令的环境中,Flush-Flush和Flush-Reload都可以使用,主要的区别是Flush-Flush无需访问内存,使用的CPU指令更少,速度也更快,也更不容易被检测。但flush-flush精度上要求更高,因为clflush指令的执行时间一般在100多个时钟周期,相较于数据未被缓存,数据被缓存时,clflush执行时间只会增加10多个时钟周期,因此Flush Flush更容易受到其它程序噪音的影响。

     

    Cache侧信道的攻击发展

    1998 年,Kesley 等人首次提出Cache 命中率可用于密钥分析的思想,颠覆了传统密钥分析方法,引起了研究人员的广泛关注。之后,研究人员以数据缓存、指令缓存作为研究对象,提出了多种可行的Cache 侧信道攻击方法,对算法安全性带来了严重威胁。但大部分研究成果都是基于单机非虚拟化环境。直到2009年,Ristenpart等人首次提出在云环境中存在跨虚拟机cache侧信道攻击的安全威胁,并利用Prime-Probe 方法在Amazon EC2 云平台中探测得到同驻虚拟机的Cache 负载状态信息以及用户击键间隔时间信息等。2014年,Yarom提出第一个跨内核的cache侧信道攻击Flush-reload。其利用Intel X86处理器系统共享内存的漏洞,通过监测内存得到CPU处理的cache line。此种攻击主要利用L3层cache实现攻击,同时并不需要共享执行core。2015年,Liu和Irazoqu使Prime-Probe攻击可以应用于跨内核的cache侧信道攻击。2016年,Irazaqui提出第一个可以跨CPU的AMD平台的cache攻击。攻击环境逐渐从单核转为跨核,从微处理器转到云环境。

     

    攻击实例

    在2015CCS大会上,Yossef Oren等人利用不安全的网站链接,探测得到用户的鼠标和网页活动信息,甚至可以利用受害者的正在访问的网页信息。此种攻击可移植性强,不用安装恶意软件,可行性较高,攻击原理如图6所示。

    图6 利用Java的cache侧信道攻击原理

    在Europe 2016 Blackhat上,Moritz Lipp等人演示了如何从cache中得到信息确定用户正在输入的字符,演示情况如图7所示,用户输入字符,攻击者可以很快获得相应的信息。

    图7 Moritz Lipp演示在智能手机上的cache 侧信道攻击

    在USA 2016 Blackhat上,Taylor Hornby等人演示了如何从cache的侧信道信息中得到其他用户正在浏览的网页,演示现场图如图8所示。

    图8 Taylor Hornby演示如何获取受害者正在浏览的网页

    此外,伴随着云服务越来越贴近生活,云用户持续增多。云环境中同驻虚拟机cache资源共享也成为cache侧信道攻击的目标,近几年针对云上安全的研究也逐渐增多。在CHES 2016,Inci,M.等人成功实现了在亚马逊云上得到用户RSA私钥,现场如图9所示。

    图9 Inci,M等人在CHES上讲解攻击原理

    在2016 USENIX, Moritz Lipp等人上演示了如何在拥有trustzone安全环境的安卓手机上实施cache攻击,得到精准的用户信息,部分成果如图10 所示。

    图10 利用cache模版侧信道攻击得到用户输入信息

    在arXiv 2017 ,Schwarz,M等人在Malware Guard Extension: Using SGX to Conceal Cache Attacks一文中,利用SGX来隐藏cache攻击(Intel声称的SGX可以消除侧信道攻击,并且推荐使用SGX保护加密计算),得到用户的私钥。一条迹的数据可以恢复96%的私钥,11条迹可以恢复全部的私钥,其攻击原理如图11所示。

    图11 在SGX可信执行环境下的cache侧信道攻击原理

     

    总结

    Cache侧信道攻击方法严重威胁加密算法的安全性,而且随着云服务技术的大规模应用,虚拟化技术的普及,使得Cache侧信道远程攻击更为隐蔽从而也更具攻击力。Cache攻击逐渐渗透到我们的日常应用中,智能手机的可信环境在此种攻击方法下也存在严重安全隐患。安全问题日益突出,用户的隐私需要更加完善的安全措施来保护。希望更多地研究学者加入我们的队伍中,为隐私保驾护航。

     

     

    展开全文
  • 信息加密和解密的主要的实现方式是对数据本身的加密和解密,以及对**传输途径(信道)**的加密和解密 密码学衍生出的两个重要学科:密码编码学和密码分析学,分别研究数据的加密和解密 1.1 加密技术 分

    一、密码学

    • 密码学(在西欧语文中之源于希腊语kryptós,“隐藏的”,和gráphein,“书写”)是研究如何隐密地传递信息的学科。在现代特别指对信息以及其传输的数学性研究,常被认为是数学和计算机科学的分支,和信息论也密切相关。
    • 密码学包含了三个要素:明文,密钥和密文
    • 信息加密和解密的主要的实现方式是对数据本身的加密和解密,以及对**传输途径(信道)**的加密和解密
    • 密码学衍生出的两个重要学科:密码编码学和密码分析学,分别研究数据的加密和解密

    1.1 加密技术

    分组密码技术

    • 使用定长的密钥,对加密的明文数据等长分组,一组为一单位进行加密。
      分组密码技术有两个重要概念:密钥长度、分组长度。

    • 对称加密技术

    • 公开(非对称)加密技术

    流密码技术

    • 一次将1 bit 明文转变成1 bit密文;流密码技术通常是一种对称密钥技术;流密码技术多在政府、军方使用;密钥流生成器是流密码安全的关键
    • 二元加法流密码

    信息摘要算法(单向杂凑Hash算法)

    • 将一个较长的数字串映射成一个较短的定长输出数字串的函数。

    新兴加密技术

    • 混沌密码学

      由确定而简单的动力学系统产生的混沌信号能表现出复杂的伪随机性

    • 量子密码学

      使用量子力学保证一个安全的交流。它能让两方产生一个共享的、随机的、且不被其它人知道的二进制位串,可以用作一个密钥来加密或解密数据。

    • 神经密码学

      是一种将神经网络用于密码学领域的设想。目前还处于实验阶段。

    1.2 对称、非对称密码体制

    对称密码体制

    • 加密密钥与解密密钥存在明显的依赖关系,由其中一个可以很容易推导出另一个。
    • 实践中,对称密码体制多使用同一个密钥加密和解密,称为加解密双方共享密钥。
    • 对称密码体制也称为单钥密码体制。
      对称密码体制
    • 常见对称密钥算法:
      • DES算法:
        • 分组长度64bit,密钥长度(DES:64bit,2DES:128bit,3DES:192bit)
        • 特点:对称密码的代表,使用最广泛,3DES向下兼容
      • IDEA算法:
        • 分组长度64bit,密钥长度128bit,生成的密文为64bit
        • 特点:硬件运算速度高于DES,但是存在大量弱密钥
      • AES算法:
        • 分组长度128bit,密钥长度(128,192,256)bit可选,通常使用128bit
      • RC算法:
        • RC1,RC2,RC3,RC4,RC5

    非对称密码体制

    • 非对称密码体制又叫公钥密码体制
    • 密码体制有两个完全不同的密钥,而且其中一个可以公开(常用于加密),另一个需要保密(常用于解密)。因此,也称为双钥密码体制。
    • 公钥密码就是一种陷门单向函数,其陷门信息作为秘密密钥
    • 公钥密码体制一般要借助某个特殊的数学问题,如数论中的大数分解、离散对数等数学难解问题,构造单向函数,因此,这类密码的安全强度取决于它所依据的问题的计算复杂度。

    非对称密码体制

    • 常见的非对称密钥算法:
      • RSA算法:
        • 基于大整数因子分解的困难性,目前常用1024bit以上的算法
        • 特点:是非对称密码算法的代表,即可用于加密也可以用于数字签名
      • DSA算法:
        • 基于整数有限域离散对数难题的,其安全性与RSA相比差不多。
        • 特点:两个素数公开,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却做不到。
      • ECC算法:
        • 基于离散对数问题的算法,即椭圆加密算法
        • 特点:在私钥的加密解密速度上,ECC算法比RSA、DSA速度更快。存储空间占用小。带宽要求低。

    1.3 信息摘要算法

    • 信息摘要算法又称Hash算法
    • Hash算法特别的地方在于它是一种单向算法,用户可以通过hash算法对目标信息生成一段特定长度的唯一hash值,却不能通过这个hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。
    • 常见的Hash算法有MD2、MD4、MD5、HAVAL、SHA

    1.4 国密算法

    • 国家商用密码管理办公室制定了一系列密码标准,包括SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、ZUC祖冲之密码算法等等。其中SM1、SM4、SM7、祖冲之密码(ZUC)是对称算法;SM2、SM9是非对称算法;SM3是哈希算法。

    • SM1对称密码算法:

      • 曾用名SCB2 是目前主推的对称密码算法;128分组、128密钥长度;算法强度与AES相当;算法不公开,仅以IP核的形式存在于芯片中。
    • SM2公钥密码算法:

      • 是一种基于ECC密码算法,现已经公开;主要使用256密钥长度;SM2算法在很多方面都优于RSA算法
    • SM3 HASH算法:

      • 主要用于数字签名及验证、消息认证码生成及验证、随机数生成等,其算法公开。据国家密码管理局表示,其安全性及效率与SHA-256相当。
    • SM4 对称密码算法:

      • 原名SMS4,是为无线局域网安全密码算法,现在是较早公开的国密算法,现在已经更名为SM4
    • SM7 对称密码算法:

      • 是一种RFID芯片安全密码算法;SM7算法是一种分组密码算法,分组长度为128比特,密钥长度为128比特。SM7适用于非接触式IC卡
    • SM9 标识密码算法:

      • SM9算法不需要申请数字证书,适用于互联网应用的各种新兴应用的安全保障。如基于云技术的密码服务、电子邮件安全、智能终端保护、物联网安全、云存储安全等等。这些安全应用可采用手机号码或邮件地址作为公钥,实现数据加密、身份认证、通话加密、通道加密等安全应用,并具有使用方便,易于部署的特点
    • ZUC祖冲之算法:

      • 祖冲之序列密码算法是中国自主研究的流密码算法,是运用于移动通信4G网络中的国际标准密码算法;该算法包括祖冲之算法(ZUC)、加密算法(128-EEA3)和完整性算法(128-EIA3)三个部分。目前已有对ZUC算法的优化实现,有专门针对128-EEA3和128-EIA3的硬件实现与优化。

    1.5 公钥基础设施PKI(Public Key Infrastructure)

    • PKI的定义:
      • 公钥基础设施是一个包括硬件、软件、人员、策略和规程的集合,用来实现基于公钥密码体制的密钥和证书的产生、管理、存储、分发和撤销等功能。
    • PKI的组成:
      • 一个典型的PKI系统包括PKI策略、软硬件系统、证书机构CA、注册机构RA、证书发布系统和PKI应用等。
        • PKI安全策略
          • 建立和定义了一个组织信息安全方面的指导方针,同时也定义了密码系统使用的处理方法和原则。它包括一个组织怎样处理密钥和有价值的信息,根据风险的级别定义安全控制的级别。
        • 证书机构CA
          • CA是证书的签发机构,它是PKI的核心。CA是PKI的信任基础,它管理公钥的整个生命周期,其作用包括:发放证书、规定证书的有效期和通过发布证书废除列表(CRL)确保必要时可以废除证书。
        • 注册机构RA
          • 注册机构RA提供用户和CA之间的一个接口,它获取并认证用户的身份,向CA提出证书请求。它主要完成收集用户信息和确认用户身份的功能。对于一个规模较小的PKI应用系统来说,可把注册管理的职能由认证中心CA来完成,而不设立独立运行的RA。
        • 证书发布系统
          • 证书发布系统负责证书的发放,如可以通过用户自己,或是通过目录服务器发放。目录服务器可以是一个组织中现存的,也可以是PKI方案中提供的。
        • PKI的应用
          • PKI的应用非常广泛,包括应用在web服务器和浏览器之间的通信、电子邮件、电子数据交换(EDI)、在Internet上的信用卡交易和虚拟私有网(VPN)等。

    1.6 数字摘要、数字信封、数字签名

    • 数字摘要的基本原理:

      • 发送端把原信息用 HASH 函数加密成摘要,然后把数字摘要和原信息一起发送到接收端,接收端也用 HASH 函数把原消息加密为摘要,看两个摘要是否相同,若相同,则表明信息的完整,否则不完整。
      • 它用来保证信息的完整性
    • 数字信封的基本原理:

      • 发送端使用对称密钥来加密数据,然后将此对称密钥用接收者的公钥加密,称为加密数据的“数字信封”,将其和加密数据一起发送给接受者,接受者先用自己的私钥解密数字信封,得到对称密钥,然后使用对称密钥解密数据。
      • 它用来保证信息的保密性
    • 数字签名的基本原理:

      • 发送方首先用 HASH 函数对原文件生成数字摘要,用自己的私钥对这个数字摘要进行加密来形成发送方的电子签名,附在文件后。然后用一个对称密钥对带有电子签名的原文件加密,再用接收方的公钥给对称密钥加密,然后把加密后的密钥文件传送给接受方。接收方用自己的私钥对密钥密文解密,得到对称密钥,用对称密钥对原文件密文进行解密,同时得到原文件的电子签名,再用发送方的公钥对电子签名解密,得到电子签名的 HASH 值,然后用 HASH 函数对得到的原文件重新计算 HASH 值,并与解密电子签名得到的 HASH 值进行对比。
      • 它用来保证信息的不可抵赖性和完整性
    展开全文
  • 在WCDMA中,加扰就是用一个伪随机码序列对扩频码...本文介绍下行扰码的生成过程和如何用FPGA的实现。采用Verlog硬件描述语言进行功能描述,在写信号的作用下,予付扰码初值,在时钟信号的作用下,产生下行扰码的I,Q序列。
  • 本文展示了如何克服这些问题,它不仅展示了低密度奇偶校验(LDPC)代码和自定义流高级加密标准(CSAES)组合以提高安全级别的设计,而且还介绍了一种实际的实现方式。为了它。 设计该算法的目的是为了优化利用硬件...
  • 信息隐藏的算法实现 [摘要] 在信息技术飞速发展的今天,人们对...因此信息隐藏领域已经成为信息安全的焦点,本文主要研究如何把文本文件、WORD文件、JPG文件、写字板文件嵌入位图文件(.BMP)的方法及算法实现
  • Diffie-Hellman密钥是如何交换的

    万次阅读 2017-12-18 09:27:41
    Diffie-Hellman密钥交换(DH)[1]是一种在公共信道上安全交换加密密钥的方法,也是Ralph Merkle最初设计并以Whitfield Diffie和Martin Hellman命名的第一个公钥协议之一。[1] [2] DH是在密码领域实现的公钥...

    Diffie-Hellman密钥交换DH[1]是一种在公共信道上安全交换加密密钥的方法,也是Ralph Merkle最初设计并以Whitfield DiffieMartin Hellman命名的第一个公钥协议之一[1] [2] DH是密码领域实现的公钥交换最早的实际例子之一

    传统上,双方之间的安全加密通信要求他们首先通过一些安全的物理信道交换密钥,例如由可信赖的信使传送的纸质密钥列表Diffie-Hellman密钥交换方法允许没有彼此先验知识的双方通过不安全的信道共同建立共享密钥然后可以使用该密钥来使用对称密钥密码来加密随后的通信

    Diffie-Hellman被用来保护各种互联网服务。然而,2015年10月发布的研究表明,当时许多DH互联网应用中使用的参数不够强大,无法防止资金充足的攻击者(如大型政府的安全服务)的妥协。[3]

    该计划最初是由惠特菲尔德的Diffie和Martin Hellman的于1976年出版,[2] 但在1997年据透露,詹姆斯·H·埃利斯[4] 克利福德·科克斯马尔科姆·J·威廉森GCHQ,英国信号情报机构此前曾什么时候?]显示了公钥密码学是如何实现的。[5]

    虽然Diffie-Hellman密钥协议本身是一个非认证密钥协商协议,它提供了各种认证协议的基础,并用于提供向前保密传输层安全性短暂的模式(称为EDH或DHE取决于密码套件)。

    该方法不久之后通过遵循RSA的一种实现公钥加密使用非对称算法。

    名称编辑]

    2002年,Hellman提出这个算法被称为Diffie-Hellman-Merkle密钥交换,以认识Ralph Merkle公钥密码学发明的贡献(Hellman,2002),他写道:

    这个系统已经被称为Diffie-Hellman密钥交换。这个系统最初是由迪菲和我在一篇论文中描述的,它是一个公开密钥分发系统,是由Merkle开发的一个概念,因此如果名字与它关联,应该被称为“Diffie-Hellman-Merkle密钥交换” 。我希望这个小小的讲坛可以帮助我们认识到默克尔对公钥密码学发明的平等贡献。[6]

    说明编辑]

    概述编辑]

    Diffie-Hellman密钥交换的想法的例证

    Diffie-Hellman密钥交换在双方之间建立一个共享密钥,可用于秘密通信,在公共网络上交换数据。以下概念图通过使用颜色而不是非常大的数字来说明密钥交换的一般概念。

    这个过程开始于让Alice和Bob双方同意一个不需要保密的任意开始颜色(但每次都应该不同[7])。在这个例子中,颜色是黄色的。他们每个人都选择自己保留的秘密颜色。在这种情况下,橙色和蓝绿色。这个过程的关键部分是爱丽丝和鲍勃现在将他们的秘密颜色与他们相互共享的颜色混合在一起,分别产生橙棕色和淡蓝色混合物,然后公开交换这两种混合颜色。最后,两者都将从合作伙伴那里获得的颜色与他们自己的私人颜色混合在一起。其结果是最终的颜色混合物黄褐色,这是同伴的颜色混合物。

    如果第三方倾听交流,他们在计算上很难确定秘密颜色。事实上,当使用大量数字而不是颜色时,现代超级计算机在合理的时间内执行此操作在计算上是昂贵的(在密码学出版物中,窃听者通常被命名为夏娃。)

    密码解释编辑]

    该协议的最简单和最初的实现使用乘法模 ,其中p素数g原始根  p以这种方式选择这两个值来确保所产生的共享秘密可以具有从1到p -1的任何值这是协议的一个例子,非秘密值为蓝色,秘密值为红色

    1. Alice和Bob同意使用模数p = 23和基数g = 5(这是一个原始根模 23)。
    2. Alice选择一个秘密整数a = 4,然后发送Bob A = a mod p
      • A = 5 4 mod 23 = 4
    3. Bob选择一个秘密整数b = 3,然后发送Alice B = b mod p
      • B = 5 3 mod 23 = 10
    4. Alice计算s = a mod p
      • s =10 4 mod23= 18
    5. Bob计算s = b mod p
      • s = 4 3 mod23= 18
    6. 爱丽丝和鲍勃现在分享一个秘密(数字18)。

    Alice和Bob都达到了相同的值,因为在mod p下,

    {\ displaystyle {\ color {Blue} A} ^ {\ color {red} b} {\ bmod {\ color {Blue} p}} = {\ color {Blue} g} ^ {\ color {Red} ab} {\ bmod {\ color {Blue} p}} = {\ color {Blue} g} ^ {\ color {Red} ba} {\ bmod {\ color {Blue} p}} = {\ color {Blue} B } ^ {\ color {Red} a} {\ bmod {\ color {Blue} p}}}{\ displaystyle {\ color {Blue} A} ^ {\ color {red} b} {\ bmod {\ color {Blue} p}} = {\ color {Blue} g} ^ {\ color {Red} ab} {\ bmod {\ color {Blue} p}} = {\ color {Blue} g} ^ {\ color {Red} ba} {\ bmod {\ color {Blue} p}} = {\ color {Blue} B } ^ {\ color {Red} a} {\ bmod {\ color {Blue} p}}}[8]

    进一步来说,

    {\ displaystyle({\ color {blue} g} ^ {\ color {red} a} {\ bmod {\ color {Blue} p}})^ {\ color {Red} b} {\ bmod {\ color {蓝色}}} = {{颜色{蓝色} g} ^ {\颜色{红色} b} {\ bmod {\颜色{蓝色} p}})^ {\颜色{红色} \ color {Blue} p}}}{\ displaystyle({\ color {blue} g} ^ {\ color {red} a} {\ bmod {\ color {Blue} p}})^ {\ color {Red} b} {\ bmod {\ color {蓝色}}} = {{颜色{蓝色} g} ^ {\颜色{红色} b} {\ bmod {\颜色{蓝色} p}})^ {\颜色{红色} \ color {Blue} p}}}

    注意只有ab和(ab mod p = ba mod p)是保密的。所有其他值 - pga mod pb mod p - 都以明文形式发送。一旦Alice和Bob计算共享密钥,他们就可以使用它作为加密密钥,只有他们知道,才能通过相同的开放通信信道发送消息。

    当然,为了保证这个例子的安全,需要abp的更大的值,因为n mod 23 只有23个可能的结果。但是,如果p是至少600位数的素数,那么甚至最快的现代计算机无法找到一个给定的唯一pg ^ 一个p这样的问题被称为离散对数问题[3]的计算一个p被称为模幂并且即使对于大数量也可以有效地完成。注意,g不需要很大,实际上通常是一个小整数(如2,3,...)。

    保密图编辑]

    下面的图表描绘了谁知道什么,再次以非秘密价值为蓝色,秘密价值为红色这里Eve是一个窃听者 - 她看着Alice和Bob之间发送的内容,但是她不会改变他们的通信内容。

    • g =公众(主要)基地,已知爱丽丝,鲍勃和夏娃。g = 5
    •  Alice,Bob和Eve来说, p =公共(主)模数。p = 23
    • a = Alice的私钥,只有Alice才知道。a = 6
    • b = Bob只有Bob才知道的私钥。b = 15
    • A = Alice,Bob和Eve所知的Alice的公钥。A = g a mod p = 8
    • B = Bob的公钥,Alice,Bob和Eve都知道。B = g b mod p = 19
    • 爱丽丝
      已知 未知
      p = 23  
      g = 5  
      a = 6 b
      A = 5  mod 23  
      A = 5 6 mod 23 = 8  
      B = 19  
      s =B a mod23  
      s =19 6 mod23= 2  
      短发
      已知 未知
      p = 23  
      g = 5  
      b = 15 一个
      B = 5 b mod 23  
      B = 5 15 mod 23 = 19  
      A = 8  
      s =A b mod23  
      s =8 15 mod23= 2  
      前夕
      已知 未知
      p = 23  
      g = 5  
        a b
         
         
      A = 8 B = 19  
         
        小号


    现在s是共享密钥,Alice和Bob都知道,但是不是 Eve。

    注意:Alice应该很难解决Bob的私钥或者Bob解决Alice的私钥。如果爱丽丝不难解决鲍勃的私钥(反之亦然),夏娃可以简单地用自己的私钥/公钥替换自己的私钥,将鲍勃的公钥替换成她的私钥,生成一个假共享密钥,然后求解Bob的私钥(并用它来解决共享密钥,Eve可能试图选择一个公钥/私钥对,这将使她更容易解决Bob的私钥)。

    这里给出了Diffie-Hellman的另一个示例(也使用实际使用的数字太小)[9]

    有限循环群的推广编辑]

    这里是对协议的更一般的描述:[10]

    1. Alice和Bob同意在有限循环群 G ^顺序的Ñ发电元件ģ(这通常在协议的其余部分之前就已经完成了,g被假定为所有攻击者都知道).G是乘法写成的。
    2. 爱丽丝选取一个随机自然数 ,其中1≤ 一个 < Ñ,并发送一个给Bob。
    3. 鲍勃选取一个随机自然数b,这也是1≤ b < Ñ,并发送b给Alice。
    4. 爱丽丝计算(ba
    5. Bob计算(ab

    Alice和Bob都拥有可用作共享密钥的组元素ab如果没有一个有效的算法来确定ab给定gabG满足保密通信的必要条件

    例如,椭圆曲线Diffie-Hellman协议是使用椭圆曲线而不是整数模p的乘法群的变体。也已经提出了使用超椭圆曲线的变体超奇异中原衍密钥交换是已被设计成在量子计算机安全的一个Diffie-Hellman的变种。

    与两方以上的运作编辑]

    Diffie-Hellman密钥协议并不局限于仅由两位参与者共享密钥。任何数量的用户都可以通过执行协议协议的迭代和交换中间数据(其本身不需要保密)来参与协议。例如,Alice,Bob和Carol可以参与如下的Diffie-Hellman协议,所有的操作都是模p

    1. 双方同意算法参数pg
    2. 各方生成他们的私钥,分别命名为abc
    3. Alice计算a并将其发送给Bob。
    4. Bob计算(g ab = ab并将其发送给Carol。
    5. Carol计算(g abc = abc并将其用作她的秘密。
    6. Bob计算b并将其发送给Carol。
    7. Carol计算(g bc = bc并将其发送给Alice。
    8. Alice计算(g bca = bca = abc并将其用作她的秘密。
    9. Carol计算c并将其发送给Alice。
    10. Alice计算(g ca = ca并将其发送给Bob。
    11. 鲍勃计算(g cab = cab = abc并将其用作他的秘密。

    窃听者已经能够看到abcabacbc,但是不能使用这些的任何组合来有效地再现abc

    为了把这个机制扩大到更大的群体,必须遵循两个基本原则:

    • 从一个仅由g组成的“空”密钥开始,秘密是通过以任何顺序(第一次这样的求幂产生参与者自己的公钥)将每个参与者的私人指数提升一次而获得的。
    • 任何中间值(有多达N -1个指数,其中N是组中参与者的数量)可以被公开揭示,但最终值(已经应用了所有N个指数)构成共享的秘密,因此决不能公开透露。因此,每个用户必须通过最后应用他们自己的私钥来获得他们的秘密副本(否则,最后的贡献者将没有办法将最终密钥传送给其接收者,因为最后的贡献者将会把密钥变成非常秘密小组希望保护)。

    这些原则为参与者选择按键参与者的顺序提供了各种选择。最简单和最明显的解决方案是将N个参与者安排在一个圆圈中,并且将N个密钥围绕该圆圈旋转,直到最终每个密钥都由所有N个参与者(以其所有者结束)贡献,并且每个参与者贡献了N个密钥(以自己结束)。但是,这要求每个参与者执行N个模幂运算。

    通过选择更优化的顺序,并依赖于一个事实,即密钥可以被复制,因此能够减少由每个参与者执行的模块化幂的数目日志2Ñ + 1)使用分而治之式方法,在这里给八个参与者:

    1. 参与者A,B,C和D各执行一次取幂,得到abcd ; 该值被发送到E,F,G和H.作为回报,参与者A,B,C,和d接收EFGH
    2. 参与者A和B各执行一次取幂,产生efghab,将它们发送给C和D,而C和D执行相同的操作,产生efghcd,并发送给A和B.
    3. 参与者A进行求幂,得到efghcda,其发送给B; 同样,B将efghcdb发送给A. C和D做类似的操作。
    4. 参与者A执行一个最终的求幂,产生秘密efghcdba = abcdefgh,而B做相同的获得efghcdab = abcdefgh ; 再次,C和D也是这样做的。
    5. 参与者E到H同时使用abcd作为他们的出发点执行相同的操作

    一旦该操作已经完成了所有参与者将拥有秘密ABCDEFGH,但每位参加者都表现只有四个模块化指数运算,而不是八个通过简单的圆形布置的暗示。

    安全编辑]

    如果Gg被正确选择,该协议被认为对窃听者是安全的特别是,G组的顺序必须很大,特别是如果同一组用于大量的业务。窃听者(“ Eve ”)必须解决Diffie-Hellman问题才能获得ab对于订单足够大的组织来说,目前这被认为是困难的。一个解决离散对数问题的高效算法将使得计算ab变得容易,并且解决Diffie-Hellman问题,使得这个和其他许多公钥密码系统不安全。小特点的领域可能不太安全。[11]

    订单应具有防止利用大素因子Pohlig-Hellman算法来获得一个b因为这个原因,有时用Sophie Germain素数 q来计算p = 2 q + 1,称为安全素数,因为G的次数只能被2和q整除那么有时选择g生成G的阶q子群,而不是G,从而得到g勒让德符号一个从来没有揭示的最低位一个使用这种选择的协议是例如 IKEv2[12]

    g通常是一个小整数,例如2.由于离散对数问题随机自我还原性,小g与同组的任何其他发生器同样安全。

    如果Alice和Bob使用的随机数发生器的输出不是完全随机的并且可以在一定程度上进行预测,那么Eve的任务就容易得多。

    在原始描述中,Diffie-Hellman交换本身不提供通信方的认证,因此容易受到中间人攻击马洛里(执行中间人攻击的主动攻击者)可以建立两个不同的密钥交换,一个与Alice和另一个与Bob,实际上伪装成Alice到Bob,反之亦然,允许她解密,加密,消息之间传递。请注意,Mallory必须继续处于中间位置,每次Alice和Bob进行通信时都会传送消息。如果她不在场,她以前的存在就会显露给爱丽丝和鲍勃。他们会知道,他们所有的私人谈话都被该频道的某个人截获和解码。

    通常需要一种方法来认证彼此的通信方,以防止这种类型的攻击。可以使用诸如STS协议之类的Diffie-Hellman变体来避免这些类型的攻击。

    对互联网流量的实际攻击编辑]

    在求解离散对数问题中通常最有效数字域筛选算法由四个计算步骤组成。前三个步骤仅取决于组G的顺序,而不取决于期望有限日志的具体数目。[13]事实证明,许多互联网流量使用少量的1024位或更少的组中的一个。[7]通过预先计算最常见组的数字字段筛选的前三个步骤,攻击者只需要执行最后一个步骤,这比前三个步骤的计算花费少得多,以获得特定的对数。僵局攻击利用这个漏洞攻击了各种各样的互联网服务,这些互联网服务允许使用订单是512位素数(所谓的出口等级)的组织作者们需要几千个CPU核心来预先计算一个512位素数的数据。完成之后,使用两个18核Intel Xeon CPU可以在一分钟内解决单个对数。[3]

    根据Logjam攻击背后的作者估计,解决1024位素数的离散对数问题所需的预计算要困难得多,大约需要1亿美元,远远低于美国这样的大型情报机构的预算。国家安全局(NSA)。Logjam的作者推测,与广泛重用的1024位DH素数的预计算背后的NSA文件泄漏 NSA是能够打破目前的密码学大部分。[3]

    为了避免这些漏洞,作者推荐使用椭圆曲线密码术,对此没有类似的攻击。如果做不到这一点,他们建议的顺序,p的Diffie-Hellman组的,至少应为2048位。他们估计,2048位素数所需的预计算比1024位素数要困难10 9[3]

    如果NSA打破了Diffie-Hellman,但并没有推动美国站点升级到更长的密钥,那么这将是NSA的NOBUS封锁安全漏洞的一个例子,NSA认为只有他们可以利用。

    其他用途编辑]

    加密编辑]

    已经提出了基于Diffie-Hellman密钥交换的公钥加密方案。第一个这样的方案是ElGamal加密一个更现代的变种是集成加密方案

    正向保密编辑]

    实现前向保密的协议为每个会话生成新的密钥对,并在会话结束时丢弃它们。Diffie-Hellman密钥交换是这种协议的常用选择,因为它的快速密钥生成。

    密码认证密钥协议编辑]

    当Alice和Bob共享密码时,他们可以使用Diffie-Hellman 密码认证密钥协议(PK)形式来防止中间人攻击。一个简单的方案是比较在通道两端独立计算s连接散列值这些方案的一个特点是攻击者只能在每次迭代时与另一方测试一个特定的密码,所以系统提供了很好的安全性和相对较弱的密码。G.hn家庭网络标准所使用的ITU-T X.1035建议书描述了这种方法

    这种协议的一个例子是安全远程口令协议

    公钥编辑]

    也可以使用Diffie-Hellman作为公共密钥基础设施的一部分,允许Bob对消息进行加密,以便只有Alice能够对其进行解密,除了Bob拥有对Alice公钥的可信知识之外, 。Alice的公钥是{\ displaystyle(g ^ {a} {\ bmod {p}},g,p)}(g ^ {a} {\ bmod {p}},g,p)给她发消息,Bob选择一个随机b,然后发送Alice{\ displaystyle g ^ {b} {\ bmod {p}}}g ^ {b} {\ bmod {p}} (未加密)以及用对称密钥加密的消息 {\ displaystyle(g ^ {a})^ {b} {\ bmod {p}}}(g ^ {a})^ {b} {\ bmod {p}}只有Alice可以确定对称密钥,并因此解密消息,因为只有她有一个(私钥)。预先共享的公钥还可以防止中间人攻击。

    实际上,Diffie-Hellman不是以这种方式使用的,RSA是主要的公钥算法。这主要是出于历史和商业的原因引证需要 ],即RSA安全创建了一个证书授权机构,成为Verisign的密钥签名Diffie-Hellman不能用来签署证书。然而,ElGamalDSA签名算法在数学上与其相关,以及IPsec协议套件的MQVSTSIKE组件用于保护Internet协议通信。


    展开全文
  • 教你如何破解

    2012-05-20 01:55:50
    2、安装Network Stumbler软件,打开Network Stumbler,等几分钟后就可以看见所有的区域中工作中的无线AP,记录下MAC地址,SSID,信道(chan),是否加密(Encryption)[如果未加密就不需要破解了]。 3、下面再解压缩...
  • 在大家越来越注重网络数据安全性的今天,HTTP已经进化到HTTPS,经由HTTP进行通信,利用SSL/TLS建立全信道加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。 在...
  • TCP信道是一条流速很慢,但每秒流量很大的大运河,而KCP是水流湍急的小激流。KCP有正常模式和快速模式两种,通过以下策略达到提高流速的结果: RTO翻倍vs不翻倍: TCP超时计算是RTOx2,这样连续丢三次包就变成RTOx8...
  • 2021-05-04

    2021-05-07 12:01:00
    信息加密与消息摘要 《孙子兵法》有云:知己知彼,百战不殆;不知彼而知己,一胜一负;不知彼不知己,每战必败。...古典密码算法历史上曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解.
  • 高级加密标准(AES)已在许多系统... 我们展示了AES的并行实现如何加密算法提供更好的性能,同时又足够灵活。 与顺序非屏蔽AES实现相比,使用数据并行性的一阶最佳屏蔽方案在使用8个线程时显示出大约5倍的加速性能。
  • http和https

    2019-02-20 08:59:39
    为什么TCP要三次握手? 问题的本质是,信道是不可靠的,但是我们要建立可靠的连接发送可靠的数据,也就是数据的传输需要是可靠的 ...整个过程(实现TLS/SSL通信)中使用了非对称加密(确保对称加密的密钥安
  • TI IP机顶盒解决方案

    2021-01-19 20:54:58
    数字媒体所面临的挑战包括在无线和有线网络中的视频、音频和数据流的同步处理中,如何实现实时性能、更高的信道密度和软件编程的灵活性。典型的数字媒体处理功能包括编码和解码媒体流,自动代码转换(transcoding)...
  • 数字媒体所面临的挑战包括在无线和有线网络中的视频、音频和数据流的同步处理中,如何实现实时性能、更高的信道密度和软件编程的灵活性。典型的数字媒体处理功能包括编码和解码媒体流,自动代码转换(transcoding)...
  • 10.3 通信信道加密 169 10.4 加密数据存储 172 10.5 硬件加密与软件加密 174 10.6 压缩、编码、加密 176 10.8 密文中隐藏密文 177 10.9 销毁信息 178 第三篇 密码算法 180 第十一章 数学背景 180 11.1 信息论 180 ...
  • 141. 什么是终端的OTA参数预配置(OTA-Provisioning)如何实现? 113 五.网络优化篇 114 142. 站点面积和小区半径之间的计算关系 114 143. 接入半径和覆盖半径的区别,典型值是多少? 115 144. WCDMA与GSM的无线...
  • asp.net知识库

    2015-06-18 08:45:45
    如何实现web页面的提示保存功能 在ASP.Net中两种利用CSS实现多界面的方法 如何在客户端调用服务端代码 页面一postback,它就显示页面的最顶端,怎样让它定位在某一位置? 如何保证页面刷新后的滚动条位置 清除网页...
  • 计算机网络(第四版+潘爱民)

    千次下载 热门讨论 2011-10-09 12:41:20
    5.5.2 网络如何连接起来 5.5.3 串联虚电路 5.5.4 无连接的网络互连 5.5.5 隧道技术 5.5.6 互联网路由 5.5.7 分 段 5.6 Internet上的网络层 5.6.1 IP协议 5.6.2 IP地址 5.6.3 Internet控制协议 5.6.4 OSPF-内部网关...
  • 21.2. CAS是如何工作的 21.3. 配置CAS客户端 22. X.509认证 22.1. 概述 22.2. 把X.509认证添加到你的web系统中 22.3. 为tomcat配置SSL 23. 替换验证身份 23.1. 概述 23.2. 配置 A. 安全数据库表结构 A.1. ...
  • Spring3 Security3 官方中文文档.pdf

    热门讨论 2010-12-12 10:57:32
    22.2. CAS是如何工作的 22.3. 配置CAS客户端 23. X.509认证 23.1. 概述 23.2. 把X.509认证添加到你的web系统中 23.3. 为tomcat配置SSL 24. 替换验证身份 24.1. 概述 24.2. 配置 A. 安全数据库表结构 A.1. ...
  • 22.2. CAS 是如何工作的 22.3. 配置CAS 客户端 23. X.509 认证 23.1. 概述 23.2. 把X.509 认证添加到你的web 系统中 23.3. 为tomcat 配置SSL 24. 替换验证身份 24.1. 概述 24.2. 配置 A. 安全...
  • 网络信息扫描实验

    2013-05-11 22:05:21
    一个开放的网络端口就是一条与计算机进行通信的信道,对网络端口的扫描可以得到目标计算机开放的服务程序、运行的系统版本信息,从而为下一步的入侵做好准备。对网络端口的扫描可以通过执行手工命令实现,但效率较低...
  • 编者按:IEEE 802.1x作为一种新生的链路层验证机制协议,其原理、组成、工作进程以及功能等到底如何呢?本文揭示了这项协议在网络安全方面的运行机理及其突出应用。 虽然大多数组织的IT基础设施已经加强了边界防御...
  • 那么,“模拟信道”能否说成是“仿真信道”? 问题2-3:为什么电话信道的标准带宽是3.1 kHz? 问题2-4:奈氏准则和香农公式的主要区别是什么?这两个公式对数据通信的意义是什么? 问题2-5:传输媒体是物理层吗?...
  • 问题5-6:TCP协议能够实现可靠的端到端传输。在数据链路层和网络层的传输还有没有必要来保证可靠传输呢? 问题5-7:在TCP报文段的首部中只有端口号而没有IP地址。当TCP将其报文段交给IP层时,IP协议怎样知道目的IP...

空空如也

空空如也

1 2 3
收藏数 49
精华内容 19
关键字:

信道加密如何实现