zoukankan      html  css  js  c++  java
  • 密码学基础(六)

    私钥加密体系的实际应用中存在三个问题:

    1. 密钥的分发
    2. 存储和管理大量的密钥
    3. 私钥加密体系在开放系统中的不适用性

    密钥分发中心(Key-Distribution Center, KDC)

    KDC的运行机制:

    1. 首先,Alice和KDC共享一个密钥kA,Bob和KDC共享一个密钥kB
    2. Alice向KDC发送一条信息:“I, Alice, want to talk to Bob”
    3. KDC接收到消息后选择一个会话密钥k,然后用kA将k进行加密后发送给Alice,同样的,用密钥kB将k加密后发送给Bob
    4. 只要Alice和Bob恢复了会话密钥,他们就可以进行私密的会话了
    5. 会话结束后,需要擦拭掉会话密钥

    KDC的图示:

    KDC的优点:

    • 每个用户只需要与KDC维持一个长期的密钥,而且用户需要管理并存储会话密钥,但这个会话密钥时短期的
    • KDC需要保存很多密钥,然而,KDC可以放在安全的地方,并且有抵抗网络攻击的安全手段
    • 每当一个用户加入时,只需要添加一个该用户与KDC之间的密钥

    KDC的缺点:

    • 如果成功攻击了KDC,那么着整个系统都会被破解
    • KDC是单点故障:如果KDC停机,则暂时无法进行安全通信

    KDC的密钥分发协议

    这个协议其实就是在原来KDC的运行机制的基础上做了一点改进:

    当Alice向KDC发起与Bob会话的请求后,KDC用kA将会话密钥加密发送给Alice,然后又用kB将会话密钥发送给Alice,然后Alice在向Bob发起会话,并同时将EnckB(k)发送给Bob。

    图示如下:

    KDC的密钥分发协议的优点:

    • 该协议减少了KDC上的通信负担。
    • KDC不需要启动到Bob的第二个连接,也不需要担心Alice启动协议时Bob是否在线。 
    • 此外,如果Alice保留了票据(以及会话密钥副本),那么就可以通过简单地将票据重新发送给Bob来重新启动与Bob的安全通信,而需要再次向KDC发起请求。

    然而密钥分发协议并没有降低KDC的安全隐患问题

    密钥交换与迪菲-赫尔曼(Diffie-Hellman)协议

    KDC体系中还存在一个问题就是需要用一条私密的信道来分享用户与KDC之间的密钥

    Diffie和Hellman意识到不对称现象可以被用于推导安全密钥交换的交互协议,允许双方通过一条公共信道来分享一个密钥,并且允许双方执行他们可以逆转但窃听者不能逆转的操作。

    密钥交换协议的安全性:协议执行过程中,窃听者无法区分由协议生成的密钥和一个随机的二进制串

    密钥交换协议的安全实验:KEeavA,Π(n):

    1. 通信双方在执行协议的时候需要维护一个安全参数1n,这将生成一个包含各方发送的所有消息的文本trans,以及各方输出的密钥k。
    2. 随机的选择一个比特b,如果b = 0,则令k^ = k;如果b = 1,则随机的选择k^∈{0, 1}n
    3. 将trans和k^发送给敌手,然后敌手输出一个比特b‘
    4. 如果b' = b,则这个实验输出1;否则输出0

    定义:如果存在一个可忽略函数negl对所有运行在PPT上的敌手都有Pr[KEeavA, Π(n)=1] ≤ 1/2 + negl(n),则称这个密钥交换协议是安全的。

    Diffie-Hellman协议

    Diffie-Hellman协议的构造方法:

    首先通信双方都需要输入一个安全参数1n,然后运行协议:

    1. Alice运行 ç(1n) 从而获得(G, q, g)
    2. Alice随机的在Zq中选择一个x,然后计算hA := gx
    3. Alice发送(G, q, g, hA)给Bob
    4. Bob收到(G, q, g, hA)后,随机的在Zq中选择一个y,然后计算hB := gy,并将hB发送给Alice,然后输出密钥kB := hAy
    5. Alice收到hB后输出密钥kA := hBx

    Diffie-Hellman协议的图示:

    离散对数问题的难度对于协议的安全性来说是必要的,但不是充分的,因为有可能存在其他方法来计算密钥kA=kB,而不需要显式地计算x或y。

    密钥交换协议所要求的是共享密钥gxy对于给定g、gx和gy的任何敌手都应该与某个随机的数不可区分,而这正是DDH(Decision Diffie-Hellman)假设。

    DDH问题,假设存在一个可忽略函数对所有PPT上的敌手 A 都有:
    |Pr[A(G, q, g, gx, gy, gz)=1] - Pr[A(G, q, g, gx, gy, gxy)=1]| ≤ negl(n)

    定理:如果DDH问题在群G中是难以解决的,那么Diffie-Hellman密钥交换协议在被动攻击下是安全的。

    证明.

    在开始证明之前需要将前面的KEeavA,Π实验进行一定的修改:当b=1时,随机的选择一个群G中的元素,而不是一个n比特长的随机二进制串,则:

    Pr[KEeavA,Π(n)=1]

    =1/2(Pr[KEeavA,Π(n)=1 | b=0] + Pr[KEeavA,Π(n)=1 | b=1])

    =1/2(Pr[A(G, q, g, gx, gy, gxy)=0] + Pr[A(G, q, g, gx, gy, gz)=1])

    =1/2(1-Pr[A(G, q, g, gx, gy, gxy)=1] + Pr[A(G, q, g, gx, gy, gz)=1])

    =1/2(1-(Pr[A(G, q, g, gx, gy, gxy)=1]  - Pr[A(G, q, g, gx, gy, gz)=1]))

    =1/2(1 - negl(n))

    =1/2 - 1/2negl(n)

    所以Diffie-Hellman密钥交换协议是安全的。

    然而在实际应用中,Diffie-Hellman协议对于中间人攻击是完全不安全的。

  • 相关阅读:
    HDU 5119 Happy Matt Friends(递推)
    爬虫系列之requests
    基于SVM的python简单实现验证码识别
    python3.6配置libsvm2.2
    KNN——图像分类
    python写web服务器
    牛客练习赛9 珂朵莉的值域连续段
    【转】3次重传的机制
    【转】三个重复的ACK意味着发生拥塞?
    【转】TCP报文格式定义详解
  • 原文地址:https://www.cnblogs.com/TheFutureIsNow/p/11897621.html
Copyright © 2011-2022 走看看