安全(六种核心安全机制-加密、密钥、签名与证书)
安全要解决什么问题
你都会的密码术
安全机制之对称加密
安全机制之非对称加密
安全机制之密钥交换
安全机制之消息摘要
安全机制之电子签名
安全机制之证书与PKI
一、在典型的场景中,安全主要用于解决4类需求:
1、保密(Security/Confidentiality)
希望通信中的信息对外进行保密(不想任何第三方来窥探你的信息)
例如:你是某个公司的高层领导,你有很多机密的文档。你可能放到了公司的保险箱或者家里的保险箱,只有你才有key(钥匙)才能打开看。
2、鉴别/认证(Authentication)
希望可以鉴别认证出与你通信的那个对端确实是所认为的那个对端。(例如跟你女朋友打电话,你怎么能确认和你打电话的那个人就是你女朋友)
例如:你怎么能确认打电话的就是你朋友呢?不是仿冒的人在这里。通过你女朋友的声音可以鉴别出是女朋友本人。
例如:组织上安排重庆地下工作者与上海地下工作者接头在某个地点,并出示了相关接口口号,只有口号对头才能鉴别是要接头的人。
例如:借钱的时候会写借条,写借条的技巧:用大小写,字体间隔非常小,防止篡改。
3、完整性(Integrity)
一旦某个信息产生了以后,你希望这个信息不能被谁来篡改;或者说它已经发生了篡改,你可以很方便的鉴别出它已经发生了篡改。
4、不可否认性(non-repudiation)
对于某一个信息,你可以很方便的确认这个信息是由谁产生的,并且一旦由某人产生了某个信息,将来在某一时刻他想否认都是不可以的。
例如:犯人进行签字画押;皇帝传位需要写诏书和盖龙印。
例如:电子文档签名。
二、密码术:
在日常场景中,其实你都在有意无意中利用密码术来完成特定的安全需求
1、字母加密
字母A用B代替,C用D代替,前面的一个字母用后面的一个字母替代。
2、藏头诗
诗里面藏了一些我要表达的含义。
例如:毛氏今有才人出,晓文晓理难晓伊。冬去春来秋月夜,爱却江山爱美人。
3、倒写文
例如:把书信完整的倒过来写。
4、任何规则都可以定义密码术
5、为什么不自己发明和使用新的密码术呢?
因为自己发明的密码术没有通过验证,没有黑客攻击过,很难考证它的安全强度。你有可能在密码术留下后门,将来用来盈利。
6、算法和秘钥的分离
算法公开,秘钥保密。算法公开的目的使用者的验证、专家的论证、黑客的尝试与破解。若干年后该密码术没有被黑客攻破或者专家破解,该密码术就会成为公开的算法。
三、安全机制之对称加密
1、典型的加密模型
密钥:分为加密密钥和解密密钥。
明文:没有进行加密,能够直接代表原文含义的信息。
密文:经过加密处理之后,隐藏原文含义的信息。
加密:将明文转换成密文的实施过程。
解密:将密文转换成明文的实施过程。
2、对称秘钥算法
对称的含义(Symmetric):加密端和解密端是用的同一个key
置换加密,转置换加密和乘积密码(算法的模型)
置换加密(顺序不变,原始的数据用其他数据替换,原始的字母用其他字母进行替换)
例如:
abcde ----> klmno
转置换加密(原始数据的信息不变,是数据顺序打乱变化)
例如:
123456789 ----> 253698174
乘积密码(置换密码和转置换密码的混合使用)
例如:
abcde ----> poklm ----> mlkpo
3、DES(Data Encryption Standard)数据加密标准
每取64bit (8byte)作为加密单元,经过19次的反复置换和转置换加密。秘钥其实是56bit。
后面出现的3重DES,就是DES经过了三次转换。
4、AES(Advanced Encryption Standard)高级加密标准
运用了复杂的数学书法,内部构造还是沉积密码。它的输入是128bit,以128bit为单元加密。秘钥是可选的,可以以128bit长度加密单,也可以以192bit长度加密,也可以用256bit长度加密,比较灵活。
四、安全机制之非对称加密
非对称加密模型
加密秘钥 K 称为公钥(public),解密秘钥 K ' 称为私钥(private)
加密秘钥可以任何人知道,解密秘钥需要保密(解密者保管)。
数学是科学基础,基础学科研究之物,虚虚实实,先虚后实。
公开秘钥算法的最重要两大数学基础。
1、建立在分解大数的困难度
2、建立在以大素数为模来计算离散对数的困难度。
RSA算法(非对称加密算法)
建立在分解大数的困难度
公钥/私钥长度 至少1024bit
五、安全机制之密钥交换
1、对称加密优缺点:
高效(相对于非对称加密来说,传输速度快)
秘钥交换问题(会话秘钥实时产生且周期性变化)
不如RSA的加密安全程度高,但是当选择256bit的AES,仍然能胜任绝大多数的安全领域。
2、非对称加密优缺点:
安全性足够高
没有秘钥交换的问题
效率低,对于大数据加密很慢(加密算法复杂)
3、其他秘钥交换方式:
Diffie-Hellman 秘钥交换协议
基于以大素数为模计算离散对数的困难度
对方各自选定key,然后以一定算法交换(使得key不以明文传输)后传输给对方
双方利用对方交换来的数据和自己选定的key做交换,获得一个一致的结果,作为会话秘钥
六、安全机制之消息摘要
1、HASH与散列函数的定义与特点
HASH翻译成散列或者哈希
HASH(散列)函数(算法)的定义是:变长的输入变换成定长的输出
常见的HASH算法:MD5(128bit)、SHA1(160bit)
HASH的特点:
易变性:即便原始信息发生1bit的变化,HASH的输出将会有不可预知的巨大变化。
不可逆:通过HASH结果构造出满足的输入信息是不可能的或者及其困难的。
2、消息摘要与数字指纹
人的指纹的特点:双胞胎的指纹不同;通过指纹猜不出它的主人。
与Hash的对应关系:易变性、不可逆
数字指纹由此而来
消息摘要:摘要窥/定全体
名字真多:HASH、哈希、散列、MD、消息摘要、数字指纹
3、HASH的应用场景:放篡改
基于易变性特性
可保完整性
示例:文件下载时的MD5、消息传送时尾部额外传MD
4、HASH的应用场景:防损坏
基于易变性特性
可保完整性
示例:
CRC校验的作用和不足
MD校验消息恶劣环境传输的完整性和未受损坏
应用程序中对于核心文件/数据库读写的鲁棒性保护、防止掉电和Crash
5、HASH的应用场景:认证
基于不可逆向性
可认证对端
示例:
HTTP的Basic和Diges认证(明文传输)
PPP的PAP和CHAP认证(明文传输)
手机登录密码和隐藏MMI的设计
6、HMAC:Hash-based Message Authentication Code
遇到的问题:
直接尾部附带消息摘要的问题(篡改内容的同时篡改摘要)
直接对密码做HASH传输的认证的问题(重放攻击)
HMAC怎么解决的
HMAC就是使用Key对原始消息变换后再近些HASH
七、安全机制之电子签名
1、签名要解决什么问题:
签什么:签的内容的完整性包含
谁在签:签名人的不可否认性
2、公钥密码术的两面性:
3、HASH+公钥密码术:成就电子签名
八、安全机制之证书与PKI
1、证书的作用:公钥的存储和交换
公钥作为一个字段存储于数字证书中
证书的交换和传输即可传输/交换公钥
2、证书的作用:现代信任基石
证书只是存储和交换公钥的吗?那我不可以把公钥直接作为一个文件来存储和交换吗?
另外,我不可以篡改证书吗?我作为第三者,篡改小李发给小王的证书,把里面的公钥改成我的,以此来HACK别人发给小李的信息。
利用签名来保护数字证书本身
人的信任关系:一个信任人的列表
数字时代的信任关系:一个受信任者的证书列表
3、证书链和PKI
人的信任链:孔子 -> 孔子的徒弟 -> 孔子的徒弟的徒弟
数字时代的信任链:证书链
证书签名的不同点:根证书的自签名,非根证书的父签名
证书的限制:约束、用途、有效期
PKI的概念
4、基于证书的认证
基于可信任证书的认证方式可被广泛的应用在现代安全领域,比如:wifi、https
在https中,典型的Client对Server的认证和鉴别基于可信任列表
安全(六种核心安全机制-加密、密钥、签名与证书)相关推荐
- 关于加密、签名、证书的作用及运用场景
面对MD5.SHA.DES.AES.RSA等等这些名词你是否有很多问号?这些名词都是什么?还有什么公钥加密.私钥解密.私钥加签.公钥验签.这些都什么鬼?或许在你日常工作没有听说过这些名词,但是一旦你要 ...
- Openssl ECC椭圆曲线算法 - 密钥/签名/验签/加密/解密/SM2密文 - 序列化反序列化导出导入 - C源码
. . . . 废话不多说,本代码继承自另外一位讲解Openssl ECC椭圆曲线算法大佬的源代码:https://blog.csdn.net/scuyxi/article/details/59182 ...
- 加密、签名以及苹果的双重签名机制
此篇文章来源于学习过程中的笔记,由于比较懒,直接复制过来了,没有重新进行排版.有误之处敬请指教!~ [加密与签名理解] [目的]: 加密: 保证信息传递过程中不发生信息泄露 签名: 保证信息来源的正确 ...
- 软件加密技术和注册机制加密基础(转)
软件加密技术和注册机制加密基础 本文是一篇软件加密技术的基础性文章,简要介绍了软件加密的一些基本常识和一些加密产品,适用于国内软件开发商或者个人共享软件开发者阅读参考. 1.加密技术概述 一个密码系统 ...
- iOS使用Security.framework进行RSA 加密解密签名和验证签名
iOS 上 Security.framework为我们提供了安全方面相关的api: Security框架提供的RSA在iOS上使用的一些小结 支持的RSA keySize 大小有:512,768,10 ...
- JSON 接口如何实现 RSA 非对称加密与签名
代码地址如下: http://www.demodashi.com/demo/14000.html 一.概述 1. 数字签名的作用:保证数据完整性,机密性和发送方角色的不可抵赖性,加密与签字结合时,两套 ...
- RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密
RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密 原文:RSACryptoServiceProvider加密解密签名验签和DES ...
- .NET Core 使用RSA算法 加密/解密/签名/验证签名
前言 前不久移植了支付宝官方的SDK,以适用ASP.NET Core使用支付宝支付,但是最近有好几位用户反应在Linux下使用会出错,调试发现是RSA加密的错误,下面具体讲一讲. RSA在.NET C ...
- “先加密后签名”是不是安全?看完这篇就秒懂!
先签名后加密是指先对消息进行签名,然后对消息的签名值和消息一起进行加密.如果采用先加密后签名的方式,接收方只能知道该消息是由签名者发送过来的,但并不能确定签名者是否是该消息的创建者.比如在发送一个认证 ...
最新文章
- C#动态加载DLL(转)
- Accent-Insensitive, Accent Sensitive, a ã, e é 模糊查询
- English sentences
- C++ STL标准模板库(queue)
- 第512章 河系量子计算机,第512章 河系量子计算机
- [转载] python hasattr函数_Python的hasattr() getattr() setattr() 函数使用方法详解
- 深度学习pytorch基础入门教程(1小时)-张量、操作、转换
- 注册测绘师的学习笔记
- linux下的json解析工具jq的使用笔记
- 基于时序哨兵数据的汛期监测(好文分享)
- 自由落体matlab代码,matlab仿真自由落体..doc
- Pytorch训练问题:AssertionError: Invalid device id
- #186-[栈]法力水晶
- 通过源码分析Mybatis运行原理
- ERR_NETWORK_CHANGED
- 怎么在oracle里执行sql语句,在Oracle中执行动态SQL的几种方法
- VS2013 EF6连接MySQL步骤
- torch-scatter, torch-cluster, torch-sparse, torch版本对应,cuda
- 苹果电脑已连接WIFI忘记WIFI密码
- 学完计算机网络基础及应用的感想,学习《计算机网络基础知识》心得体会