利用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体系依次解决了文件传输中的私密性、文件完整性、身份唯一性、不可抵赖性、加密文件可挽救、私钥丢失后的数据私密性保证

身份认证与加密浅谈(PKI)的更多相关文章

  1. 搭建私有CA并基于OpenSSL实现双向身份认证

    0x00 前言 互联网上的Web应用由于用户数目广泛,都是采用单向身份认证的,只需要客户端验证服务端的身份.但如果是企业内部的应用对接,客户端数量有限,可能就会要求对客户端也做身份验证,这时就需要一个 ...

  2. iOS - HTTPS接口加密和身份认证

    为什么要使用HTTPS代替HTTP HTTPS和HTTP的区别 https协议需要到CA申请证书,一般免费证书很少,需要交费. http是超文本传输协议,信息是明文传输,https则是具有安全性的SS ...

  3. 【推荐】JAVA基础◆浅谈3DES加密解密

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  4. 浅谈基于FormsAuthentication的认证

    一般情况下,在我们做访问权限管理的时候,会把用户的正确登录后的基本信息保存在Session中,以后用户每次请求页面或接口数据的时候,拿到 Session中存储的用户基本信息,查看比较他有没有登录和能否 ...

  5. 使用USB Key(加密狗)实现身份认证

    首先你需要去买一个加密狗设备,加密狗是外形酷似U盘的一种硬件设备! 这里我使用的坚石诚信公司的ET99产品 公司项目需要实现一个功能,就是客户使用加密狗登录, 客户不想输入任何密码之类的东西,只需要插 ...

  6. Shiro身份认证、盐加密

    目的: Shiro认证 盐加密工具类 Shiro认证 1.导入pom依赖 <dependency> <groupId>org.apache.shiro</groupId& ...

  7. 浅谈使用spring security中的BCryptPasswordEncoder方法对密码进行加密与密码匹配

    浅谈使用springsecurity中的BCryptPasswordEncoder方法对密码进行加密(encode)与密码匹配(matches) spring security中的BCryptPass ...

  8. Android应用安全开发之浅谈加密算法的坑

      <Android应用安全开发之浅谈加密算法的坑> 作者:阿里移动安全@伊樵,@舟海 阿里聚安全,一站式解决应用开发安全问题     Android开发中,难免会遇到需要加解密一些数据内 ...

  9. 【转】 浅谈Radius协议

    浅谈Radius协议 2013-12-03 16:06 5791人阅读 评论(0) 收藏 举报  分类: Radius协议分析(6)  从事Radius协议开发有段时间了,小弟不怕才疏学浅,卖弄一下, ...

随机推荐

  1. Asterisk 11 chan_sip.c: Failed to authenticate device 看不到IP的问题

    Asterisk 11 chan_sip.c: Failed to authenticate device 看不到IP的问题   没有验证过 原文地址 http://www.coochey.net/? ...

  2. #10072. 「一本通 3.2 例 1」Sightseeing Trip(floyd求最小环+路径)

    https://loj.ac/problem/10072 针对无向图 因为Floyd是按照结点的顺序更新最短路的,所以我们在更新最短路之前先找到一个连接点k,当前的点k肯定不存在于已存在的最短路f[i ...

  3. jQuery库介绍

    一.jQuery是什么 jQuery是一个轻量级,兼容多浏览器的JavaScript库 jQuery能够简化JavaScript编程 二.jQuery的优势 1.一款轻量级的JavaScript框架 ...

  4. javascript字符串方法总结

    一.单引号字符串内部可以使用双引号,双引号字符串内部也可以使用单引号 "hello 'world'" 'welcome "to" js' 二.多行和转义 如果要 ...

  5. Ngui分辨率适配

    必备知识点 1.分辨率适配必然是Orthographic Camera 2.Camera下对应的“Size”(图1)属性大小的理解:当前摄像机高度 = Size * 2 * UnityUnit(Uni ...

  6. CASUAL_NCT

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Da ...

  7. 使用TheFolderSpy监控文件夹的变化-邮件通知

    一.概述 当我们的文档或者代码文件发布在公网.共享文件夹中,其他用户具备访问或修改的权限时,就存在文档被覆盖或删除的分享.另外一个典型的场景,发布在Web服务器上的网页文件,在网站版本不更新的时间,服 ...

  8. kaldi的TIMIT实例二

    ============================================================================ MonoPhone Training & ...

  9. asp.net对接拼多多

    asp.net对接拼多多视频地址:https://www.bilibili.com/video/av43512047/?p=7

  10. itext实现合同尾部签章部分自动添加,定位签名

    使用的pom <!-- pdf处理 start--> <dependency> <groupId>com.itextpdf</groupId> < ...