利用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. 【轻松前端之旅】HTML的块元素、行内元素和空元素

    块(block)元素 显示成一块,前后有换行.块元素常用于web页面的主要构造模块.例如:<div>,<p>,<h1>~<h6>,<blockqu ...

  2. print('{:15}|{:^9}|{:^9}'.format('', 'lat.', 'long.'))是什么意思?

    平台:win10 x64+Python3.7.0 先了解下——Python3 字符串格式化 Python字符串的格式化方法分为两种,分别为占位符(%)和format方式. 占位符方式在Python2. ...

  3. Chrome书签添加到百度网盘

    一:Chrome是最干净的浏览器了,但是无奈国内的环境导致书签不方便保存到云端,如果保存到本地那么就要经常自己备份之类的: 二:由以上的需求背景终于找到了可以将chrome打开的网页保存到百度网盘里[ ...

  4. 其于OpenXml SDK写的帮助类

    /// <summary> /// 其于OpenXml SDK写的帮助类 /// </summary> public static class OpenXmlHelper { ...

  5. google guava Multimap的学习介绍

    1.https://blog.csdn.net/gongxinju/article/details/53634434

  6. cobub razor 安装及使用

    server端安装及配置 apache2 + Mysql5.7 + php7 + redis 参见:http://docs.cobub.com/pages/viewpage.action?pageId ...

  7. zoj4110 Strings in the Pocket(manacher)

    传送:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=6012 题意:给定两个串$S$和$T$,可以翻转$S$串中的任意一个子段, ...

  8. Linux pwn入门教程(1)——栈溢出基础

    作者:Tangerine@SAINTSEC 原文来自:https://bbs.ichunqiu.com/thread-42241-1-1.html 0×00 函数的进入与返回 要想理解栈溢出,首先必须 ...

  9. 使用 Navicate 连接 Oracle9i 数据库

    Navicat Premium 是一个可多重连接的数据库管理工具,它可让你以单一程序同時连接到 MySQL.SQLite.Oracle 及 PostgreSQL 数据库,让管理不同类型的数据库更加方便 ...

  10. 从零搭建java后台管理系统(一)框架初步搭建

    框架搭建 一.初步设想,使用springboot,框架打算用到依赖 spring web,devTools,mysql,Aspect,Redis,Lombok,Freemark,Shiro,Rabbi ...