加密、数字签名和数字证书看这一篇就够了
yuyutoo 2024-10-13 00:33 1 浏览 0 评论
加密、数字签名和数字证书看这一篇就够了
互联网时代设备之间交换数据频繁,安全技术原理很重要。先思考以下几个问题:
- 你以为将消息加密以后就能安全的在互联网上传输了吗?
- 签名过的消息就能确认消息发送者的身份吗?
- 如何证明CA认证机构的合法性?
本文将介绍网络安全的基础知识:
- 对称加密
- 非对称加密
- 混合加密
- 数字签名
- 数字证书
深入研究网络传输数据时的窃听、假冒、篡改和事后否认行为是怎么形成的,以及如何防范这些非法行为。
建议点赞+收藏+关注,方便以后复习查阅。
安全和算法
互联网设备之间传输数据可能会经常发生的四个问题:
- 窃听
- 假冒
- 篡改
- 事后否认
窃听
A给B发送消息的过程中,中间人X偷听了它们之间的消息。
假冒
- A向B发送消息,中间人X装作B接收了;
- 中间人X装作A将消息发送给B,B接收“A”的消息实际上是X假冒的。
篡改
即使B接收到的消息确实来自于A,但在消息传递的过程中,中间人X将消息的部分内容做了改动,这就是篡改。
还有一种情况,当网络不稳定导致通信故障时,数据丢包损坏了,也属于一种篡改。
事后否认
事后否认这个行为经常会在交易或者签署合同的时候发生。假设A向B下订单之后否认自己发送过此类消息,这就是事后否认。
解决方法
四种安全问题及其解决方法总结如下表所示:
“事后否认”问题虽然可以使用“数字签名”技术来解决,但是存在“不能确认公钥制作者是谁”的问题,即中间人有可能会将公钥替换成自己的,该问题的解决办法是使用“数字证书”技术。
哈希函数
哈希函数是一种可以将任何给定数据转换成固定长度的无规律数据的算法,转换后的数据可以作为数据摘要验证数据是否被篡改或者验证签名者的身份。
哈希函数转换后的哈希数值多使用十六进制表示。
特征
哈希函数有如下几个特征:
- 转换后的哈希值长度固定。无论输入数据大小多大,文本、音频或者视频,输出的哈希值长度始终不变。
- 输入相同,输出必定相同。这个特征有一个前提,那就是必须使用相同的算法,否则即使输入相同,输出也可能不同。
- 输入相似,输出不一定相似。哪怕输入只相差一个bit,输出也有可能天差地别。
- 输入完全不同,输出也有可能相同。这种情况发生概率较低,称作“哈希冲突”。
- 哈希计算相对容易。
- 由输出的哈希值无法逆推算出输入的数据。这一点和加解密非常不同。
哈希算法
比较有代表性的哈希算法有:
- MD5 (Message Digest Algorithm 5)
- SHA-1 (Secure Hash Algorithm)
- SHA-2
SHA-1是160位的哈希值,SHA-2则有不同位的哈希值。
SHA-2是目前运用较为广泛的一种哈希算法,MD5和SHA-1因为存在安全隐患所以不推荐使用。
对称加密
“对称加密”又称为“共享加密”,因为它是一种加密和解密共用一套密钥的加密方式。在网络传输数据时,为了保证数据不被窃听所以需要把数据进行加密以后再发送。
常见算法
常见的对称加密算法有:
- 凯撒加密
- AES (Advanced Encryption Standard)
- DES (Data Encryption Standard)
- 动态口令
AES是使用最为广泛的对称加密算法。
密钥分配问题
前面说了,对称加密是发送方A加密、接收方B解密的算法,A和B共用一个密钥。如果没有条件在线下将共享密钥传给对方,密钥就会有被窃听的风险。
所以,对称加密最大的问题就是无法解决安全传输密钥的问题,即“密钥分配问题”。解决“密钥分配问题”的方法是采用“非对称加密”。
建议点赞+收藏+关注,方便以后复习查阅。
非对称加密
“非对称加密”又称作“公开密钥加密”,它是一种加密和解密使用不同密钥的加密方法。一般情况下,加密时使用“公开密钥”,简称“公钥”;解密时使用“私有密钥”,简称“私钥”。
如下图所示(P表示公钥,S表示私钥)。消息接收方B为了能够安全的接收消息,会事先生成一对密钥对,B将能够解密的私钥留在自己手上,而公钥则发送给任何想要给B发送消息的主体,也就是说只要谁想要给B发送消息,持有B的公钥即可。但是除了B以外,其他任何人都不能解密消息,因为私钥只掌握在B一个人手里。
因此一般情况下,公钥可以理解为多数人持有的密钥;私钥可以理解为少数人持有的密钥。这里加了一个一般情况的限制条件是因为在数字签名的时候正好相反,后面介绍数字签名的时候会介绍。
常见算法
常见的非对称加密算法有:
- RAS。RAS算法是由其三个发明者名字的首字母而来的。
- 椭圆曲线加密算法
使用最为广泛的非对称加密算法是RSA算法。
非对称加密的优点
非对称加密算法不存在“密钥分配问题”。消息接收方B可以将公钥直接在互联网上公布,即使窃听者X得到了B的公钥,它也只能对数据进行加密操作,并不能得到解密后的数据。
此外,非对称加密相对于对称加密来说还有一个优势就在于可以节省密钥的数量。在多人传输数据时,数据接收方只需要准备一套密钥对即可,而对称加密算法的密钥数量则根据人数的增加呈指数上升。例如,有n个人之间相互传递消息,使用非对称加密算法最多只需要n个密钥对即可,只需要保证每个人手里都持有自己的私钥就行了。而使用对称加密时,需要的密钥数量 = n(n - 1) / 2。
非对称加密的缺点
非对称加密虽然很好,但它依然有不足的地方。
- 无法解决“中间人攻击”的问题
- 无法解决篡改问题
- 比对称加密更好耗时
中间人攻击
“中间人攻击”(man-in-the-middle attack)是一种将通信双方的密钥替换为中间人自己的密钥的一种攻击方式。为什么中间人攻击会使公开密钥的可靠性得不到保证呢?因为公钥接收方A无法判断其接收到的公钥是否来自于公钥发送方B。
中间人攻击的过程如下图所示。其过程可以理解为以下几个步骤:
- A想要向B发送消息,所以A需要得到B生成的公钥
- B生成密钥对并向A发送公钥
- 中间人X拦截B的公钥,并向A发送X自己的公钥
- A得到X的公钥以为是B的公钥,A使用公钥对消息加密并发送给B
- 中间人X拦截A发送的消息并使用自己的私钥对消息解密,X再用B的公钥对消息原文加密
- 中间人X伪装成A将加密后的消息发送给B
- B接收到消息后,使用自己的私钥进行解密
没有中间人攻击的过程如下图所示。
性能问题
非对称加密比对称加密要更加耗时,所以非对称加密在需要频繁发送消息并加解密的场景里并不适用。既要保证数据安全又要一定的加解密性能,解决的方法就是使用“混合加密”。“混合加密”顾名思义就是将对称加密和非对称加密结合起来使用。
混合加密
非对称加密存在密钥分配问题,但是加解密性能很好;对称加密不存在密钥分配问题,但是加解密性能不好。二者一拍即合就形成了混合加密。
在数据传输的场景里大致有两种:
- 传输密钥。传输频次低。
- 传输消息。传输频次高。
传输密钥的场景一般只会在消息发送前的密钥分配阶段发生一次,所以传输密钥时采用非对称加密解决了密钥分配问题;
传输消息的场景会发送多次,所以采用对称加密解决了耗时的性能问题。
混合加密的流程如下图所示。A作为消息发送方事先要准备消息的加解密密钥;B作为消息接收方事先要准备共享密钥的加解密密钥对。
虽然混合加密算法结合了对称加密和非对称加密二者的优点,但是依然没有解决“中间人攻击”的问题。因为公钥接收方A还是不能判断其接收到的公钥是否来自于B本人。解决中间人攻击问题的方法是使用“数字证书”,后面会介绍到。
消息认证码
消息认证码 MAC(Message Authentication code)可以防止消息被篡改。其工作原理是:
- A向B发送消息。消息由密文和 MAC 组成,MAC 是密钥和密文组成的字符串哈希值。
- B接收消息并使用密文和密钥计算MAC。如果计算的MAC与A传过来的不一致,则表示密文被篡改过。
计算 MAC 的常见算法有:
- HMAC (Hash-based MAC)
- OMAC (One-key MAC)
- CMAC (Cipher-based MAC)
HMAC是目前应用最为广泛的。
MAC 虽然可以解决篡改问题,但是无法防止A事后否认其发送给B某消息的事实。因为A和B都能通过 MAC 算法计算得出相同的 MAC,A就可以声称“此消息是B捏造出来的”。解决“事后否认”的问题可以通过数字签名来解决,因为数字签名可以保证A发出来的签名B捏造不出来。
数字签名
前面提到了混合加密的缺点之一是不能防止消息被篡改,即中间人X可以随意拦截消息发送者A的消息,并使用消息接收者B提供的公钥进行消息加密然后替换A发送的消息。说的通俗一点就是B提供了公钥,那么谁都可以利用其公钥加密消息然后发送给B,但B却不能证明发送而来的消息没有进行过加工处理。这就是为什么需要使用消息认证码对消息的一致性进行认证。
混合加密的缺点之二是事后否认。B证明不了B接收到的消息肯定是A发送而来的,如果涉及到合同或金钱等纠纷,A就可以推卸责任说某某消息不是其发送过去的。
这就好比你向某人借钱打了一张借条却没有按盖章手印,对方拿着借条来讨债,法律是根本不会承认借条的合法性的。因为你提供的这张借条上没有能够证明借条是你本人开出的身份信息,更不能证明借条的金额、借款人、出借人等重要信息是否被人篡改过。所以一般在借条上都需要在金额、借款人、出借人这些地方按手印,并在借条的落款日期上盖章。在网络安全领域,消息认证码就是按手印,数字签名就是盖章。数字签名既可以是手印也可以是盖章,因为它既能防止篡改又能防止事后否认。
我们来看一下数字签名是如何运作的?
假设A要向B发送消息
- A生成密钥对。A需要生成签名证明消息的合法性,所以A生成密钥对并保留私钥,即只有A能生成签名。
- A发送公钥给B。B需要解密签名并验证消息的一致性。
- A使用私钥加密消息作为签名并发送消息和签名。这里其实还隐藏了一步就是A发送的消息其实是密文,而加密消息的密钥使用的是之前B提供给A的公钥。注意这里的公钥和A发送给B的公钥不是一个。
消息加密和制作签名可以看作是两个相反的过程,A和B都各自生成了密钥对并将公钥发送给对方,两对密钥互不干扰。消息加密的过程是A使用B的公钥加密消息,B使用自己的私钥解密消息;数字签名的过程是A使用自己的私钥加密消息生成签名,B使用A的公钥解密签名。
虽然数字签名进一步提升了网络安全的等级,但它依然无法解决中间人攻击的问题。前面介绍过中间人攻击的实质是A想要给B发送消息,首先B需要生成密钥对并将公钥发送给A,这个过程中A无法证明接收到的公钥一定是B提供的,即中间人可以篡改公钥。也许你会问数字签名不是可以防止公钥被篡改吗?别忘了,数字签名能够实现的前提是公钥能安全的送达到对方的服务器里。
如何防止中间人攻击?这就需要用到数字证书了。
数字证书
“数字签名”和“公钥加密”都不能保证公钥来自于消息的发送方,这就会造成“中间人攻击”。而马上要讲的“数字证书”就能保证公钥来源的合法性。
数字证书的原理是通过持有第三方认证中心颁发的数字证书,来证明持有证书的一方的身份属实。这些认证中心要具有一定的权威性,一般是由政府机构或者一些大型企业来担任。在数字证书的加持下,A想要将自己的公钥发送给B需要经过如下的步骤:
- A生成自己的密钥对,将公钥、个人资料和邮箱发送给认证中心CA。
- CA通过A的个人资料及邮箱验证A确实是A。
- CA生成自己的密钥对,使用自己的私钥对A的公钥、邮箱和个人资料进行签名。
- CA将签名和A的公钥、邮箱和个人资料打包成数字证书,发送给A。
- A得到数字证书之后将其发送给B。
- B获取CA的公钥,利用CA的公钥对A的数字证书进行验证。
- B对数字证书进行解密得到A的公钥。
如此一来,A的公钥就安全的送达到了B的手里,B就可以使用A的公钥对消息进行加密,并将密文发送给A了。
防止中间人攻击
现在,加入了数字证书的流程之后,我们回头再来看下中间人X是否还能替换A发送给B的公钥?
假设中间人X想要冒充A向B发送公钥Px。
但是B不信任发送给它的任何没有数字证书的公钥。
中间人X为了冒充A,也去认证中心CA申请自己的公钥,但是X无法使用A的邮箱,所以X不能获取A的数字证书。
认证中心的合法性
细心的读者应该能找到以上数字证书工作原理的一个漏洞,那就是B在获取CA发送而来的公钥时,如何确认没有受到中间人的攻击?因为只要是在网络上发送公钥,都需要证明该公钥的来源。
事实上,接收来自于CA发送来的公钥,也都需要以数字证书的形式,而CA的数字证书是由更高级别的CA颁发的。
这就形成了一个认证圈子,就像下图中的认证树结构一样,最顶端的认证中心RCA被称作“根认证中心(Root CA)”。根认证中心的正当性由它自己来证明,一旦根认证中心无法证明自己的合法性,整个数字证书体系就玩不转,所以根认证中心一般由大型企业或者有政府背书的企业来担任。
由于篇幅的关系,关于安全算法相关的其他细节我就不一一展开了。对此感兴趣的朋友可以评论区留言说说你的看法,提出你的疑问,想要通过思维导图学习的朋友我这里也整理了一份,评论区留言索取。
建议点赞+收藏+关注,方便以后复习查阅。
相关推荐
- 《亲爱的》特效真厉害,一块绿布贯彻全集,不得不佩服李现的演技
-
说起《亲爱的热爱的》这部电视剧,相信很多人并不陌生,这部电视剧让男演员李现因此爆红,其实李现是一个非常有潜力的男演员,他的表现也非常的精彩。但是大家都知道,在每一部电视剧中都有特效的存在,这部电视剧也...
- 充分运用AI特效,京剧电影《大唐贵妃》正式开机
-
“当唱到‘在天愿为比翼鸟,在地愿为连理枝’的时候,会从演员身后飞起一只巨大无比的比翼鸟,鸟在空中盘旋,刮起的风甚至会吹过角色的脸……”11月10日,电影《大唐贵妃》在上海车墩影视基地正式开机,这是第一...
- 工业光魔:没有PS的年代,特效怎么做?
-
大家好,我是戴着眼镜拿着话筒的阿拉斯加,片片。昨天,我给大家简单介绍了传奇特效公司——工业光魔的起源。...
- 价值13亿的“爽片”上映,每一帧都是钱砸出来的特效,却无缘国内
-
在七月二号的时候;美国在网络上面上映了一部大制作的“爽片”《明日之战》。...
- 影视特效是怎么制作出来的?来,一起体验吧!
-
电影是人们生活中不可缺少的一部分,是视觉与听觉相结合的现代艺术。悲剧、喜剧、亲情、友情、爱情都是它所能展现的内容。影视艺术有哪些独有的特征?什么是蒙太奇?全息影片又是什么意思?最近,少儿频道的一档节目...
- ps五分钟学会自己制作“特效”
-
嗨,欢迎观看本期的摄影后期教学。那就是教大家一个特别炫酷,特别实用的ps“特效”光!有同学会问,“啊,特效光是不是特别难,我一点ps都不会!”咳咳不要着急,karry的教学都是针对ps零基础的同学的,...
- 抖音这个特效太扎心,无数网友看着看着就哭了……
-
2078年的你,会是什么样子?最近,抖音上一款特效火了。它可以让你看到自己从现在到2078年的容貌变化,你可以一点点看着皱纹爬上眼角,白发布满双鬓。看着看着,很多网友就哭了。有人说,一辈子很长却也很短...
- 《爱情公寓》的特效有多好?这集花了300万,网友看不出来特效
-
对于有些电视剧来说,特效那可是相当重要的一个部分了。尤其是对那些科幻片和一些玄幻类的电视剧就更加了。一部剧或者是影片特效的好坏,直接就影响了这个作品的质量。首先就让我们来看一下电视剧孤芳不自赏吧!里面...
- 窗花剪纸、鸭头滤镜、潜艇王者…… 揭秘抖音特效那些事儿
-
更多往期「Byte漫来了」系列漫画,可点击阅读:...
- 原来影视剧中的“光头”全是这样弄的 观众被骗了许多年
-
不管是电影还是电视剧,都会有光头因为是剧情的需要,那么她们的光头会是怎么弄的呢?一直都以为那些演员都是要真的剃光头,看到这些照片后,才知道深深的被骗了许多年。在影视中,常常看到演员有光头的戏,她在外出...
- 这些特效给几分?春晚舞台显示技术盘点
-
[中关村在线投影机频道原创]从1983年开始,春晚成为国人大年三十晚上最期待的一场精神盛宴。直播式节目播出方式,各类表演大师云集舞台,相声小品歌舞欢聚一堂,这是很多家庭一年中最欢乐的时刻,而春晚,则是...
- 11 款六元秒杀特效对比,哪个赢了不知道,貂蝉一眼输了
-
已经上线了11款六元秒杀皮肤,其中部分是升级后的“伴生皮”,也就是英雄的首款皮肤,首周六元之后恢复原价488点券。无论是何种形式的六元皮肤,不得不说他们的质量都非常好,这11款皮肤的特效对...
- 《半条命2 RTX》上架Steam 光追特效+4K效果
-
《半条命2RTX》现已在Steam平台正式上架,这款屡获殊荣的游戏以其沉浸式的故事、惊险的战斗和令人费解的物理特性吸引了全球数百万玩家,游戏现已经新增全面光追、物理纹理以及增强的多边形效果进行了彻底...
- 微信又有新玩法?多种好看特效可选择,赶快安排上
-
今日分享:手机特效适用系统:安卓今天小雷又发现了一个好玩的东西,就是手机加上特效也太好看了吧!早上上班的时候发现同事打开微信后,微信页面居然下起了樱花雨。看了同事的微信页面小雷我真的觉得太好玩太好看了...
- 判若两人!揭秘好莱坞的特效化妆过程
-
好莱坞的特效化妆牛到什么程度呢?可以把美人化妆成丑八怪,把黑人化妆成白人,把年轻人化妆成老人,把女人化妆成男人,把男人化妆成女人,把普通人化妆成怪物、外星人甚至异鬼……来见识一下这些神奇化妆术的“变...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)