zoukankan      html  css  js  c++  java
  • 身份认证与加密浅谈(PKI)

    来源


    利用PKI体系解决私密文件传输中一系列问题的大体思路


    背景:
    现有A用户和B用户之间想加密传输一些秘密文件,通过什么样的技术可以确保A和B传输数据的安全性?
    方案:采用对称秘钥对数据进行加密传输(对称加密算法计算效率高,速度快)
    解决的问题:私密性
    算法:AES、3DES、DES等
    工作原理:A用户选择一种对称加密算法并与用户口令P(P的值假设为'user_passwd')对原始数据Data进行加密后生成加密后的数据P_DATA,再通过网络将P_DATA传递给B,B获取P_DATA后采用相同的用户口令P与相应的对称加密算法对数据进行解密,最终获得真正的数据DATA

    产生的问题:A的加密口令P以及使用了哪种加密算法该如何告诉B,直接在公网传输有被窃取的风险。

    上述问题方案:采用非对称秘钥算法将用户口令P加密(非对称加密算法计算效率低,速度慢,适用于加密数据量特别小的数据)
    算法:RSA、ECC等
    解决的问题:hash值解决文件完整性、公钥加密解决用口令P的私密性
    工作原理:A用户使用B用户的公钥将用户口令P与加密算法的选择信息加密,连同P_DATA以及两者的hash值发送给B。B使用自身的私钥解密得到加密算法和对称加密算法的用户口令P,使用P解密得到原始数据Data。

    产生的问题:A如何获得B的公钥?如果A直接通过网络获取B的公钥则存在中间人劫持的风险,即中间有C冒充B将C的公钥发送给A,A又不对收到的公钥进行验证的话则C获取到加密后的数据后用自己的私钥即可将数据解密

    上述问题方案:CA机构介入
    解决的问题:身份唯一性
    背景:CA机构为可信任线下机构(类似于公安局),所有人都有CA的公钥
    工作原理:
    1、B向CA机构提交个人信息、注册秘钥信息。
    2、CA机构依据注册秘钥生成非对称加密算法秘钥对,并将该密钥对的公钥、个人信息以及经过CA自身私钥加密后的前两个元素的hash值封装成一张数字证书。
    3、将生成的数字证书与生成的密钥对的私钥一同反还给B
    4、B将数字证书发送给A,A拿B的证书去CA官方提供的OCSP服务器检测证书有效性。如有效则A用CA的公钥解密得到数字证书上的hash,将B的个人信息与B的公钥再次做hash后与解密得到的hash比对,如一致则能保证该公钥为B的公钥

    
    
    产生的问题:如果C拿到B的证书即可冒充A来给B发送数据(反过来也可以说A给B发送了一个数据后A不承认这个数据是A发的),那么B应该怎么确认发来的数据肯定就是A发的呢?

    上述问题方案:A也使用数字证书
    解决的问题:不可抵赖性
    前提:参考上述申请数字证书方法也给A申请一张数字证书,同理B也获取了A真实的公钥
    工作原理:A将发送给B的hash值用A的私钥进行加密,B用A的公钥对hash进行解密。如果解密后的hash值与'AES+user_passwd+P_DATA'的hash相同,则能证明'AES+user_passwd+P_DATA'确实是A发来的

    产生的问题:如果B的私钥丢失,加密文件解不开了怎么办?

    
    
    上述问题方案:向CA机构申请补发证书
    解决问题:加密文件可挽救
    注意:证书申请时的注册秘钥信息用于补发证书与私钥,故要与证书、私钥分离保存
    工作原理:向CA机构提供原始注册秘钥信息,CA机构根据颁发记录生成一张与原来一致的证书与私钥反还给B

    产生的问题:B的私钥丢失后被C用来解密数据怎么办?

    上述问题方案:为私钥使用设立门槛
    解决问题:私钥丢失后的数据私密性保证
    场景:可能数字证书保存在U盘中,此时可对U盘设置密码(PIN码)
    工作原理:为保存私钥的介质加密防止别人拿来就用




    总结:此方案利用PKI体系依次解决了文件传输中的私密性、文件完整性、身份唯一性、不可抵赖性、加密文件可挽救、私钥丢失后的数据私密性保证



  • 相关阅读:
    android添加群组源码
    onItemClickListener不起作用解决办法2(原创)
    Android中layout过程详解
    android上一些方法的区别和用法的注意事项 (转载)
    Android中mesure过程详解
    AlertDialog dismiss 和 cancel方法的区别
    按Notification 回到正在运行的activity
    android添加联系人源码
    Use Eclipse
    数据区的内存模型
  • 原文地址:https://www.cnblogs.com/panchanggui/p/14664510.html
Copyright © 2011-2022 走看看