您现在的位置是:首页 > 正文

对称密码、公钥密码、单向散列函数、消息认证码、数字签名

2024-02-01 00:06:09阅读 2

据一项调查显示,有80%的企业和个人担忧电子邮件沦为泄密管道,致使机密资料误入他人之手。这并不是空穴来风,就在今年6月份网上出现了一份41G数据文件,包含14亿的明文邮箱密码,其中不乏Gmail、Hotmail、Yahoo、Sina、qq等知名邮箱,还涉及不少公司邮箱、大学和科研机构邮箱,以及政府邮箱。

据360互联网安全中心2017年发布的预警显示,电子邮件已成为网络安全的重灾区。邮件安全事件可能给我国半数以上企业造成重大经济损失,总额或超过50亿元。由此可见电子邮件已成为当前企业信息安全的重灾区,其安全防护将是势在必行。

http://www.arkteam.net/wp-content/uploads/2018/06/11.png

目前,电子邮件面临的信息安全威胁主要有哪些呢?

  1. 窃听、篡改:在网上跑的99%的邮件都是呈现“裸奔”状态,这些都为商业间谍提供了极大的发挥空间。如果电子邮件没有进行任何形式的加密处理,那么它在传输过程中是完全公开的,当它从一个发件人传输到收件人时,非常容易被他人截获甚至篡改,例如:账单、员工工资、设计图纸、商务合同、公司专利等重要机密信息。
  2. 伪装:在公开的wifi等不安全网络中,非法分子只需要修改计算机的一些配置就可冒用你的电子邮件地址轻松地发送邮件,在你毫不知情的情况下,在网络中肆意活动。
  3. 否认:发送方不承认向接收方发送过某一信件即对自己的行为抵赖。

   那么,针对不同的信息安全威胁,又有哪些可靠的密码技术可以运用呢,邮件君将通过图形来表示信息安全和密码技术之间的关系~

通常来说,邮件安全问题中有1)威胁保密性的窃听、窃取;2)威胁完整性的篡改、伪装、否认。其中窃听、窃取比较容易发生在邮件传输过程中,普通邮件传输的过程是明文的,可被很多技术手段拦截邮件的内容,如部署了上网行为管理网络监控设备就可以拦截内部收发的邮件。另外,黑客对邮件内容进行篡改,再传送给收件人,收件人无法判断信息的真实性。

针对窃听的信息安全问题,可以采用对邮件内容进行加密,具体加密技术下文将会介绍。

  • 对称密码:也称为共享密钥密码、私钥密码等,是指在加密和解密时使用同一密钥的方式。

如下图使用相同的密钥进行加密和解密。这种算法中,发送方使用加密密钥对原始数据( 称之为明文) 进行加密之后,把它变成第三方无法看懂的复杂信息( 称之为密文) 发送至接收方,接收方如果想看到原始数据,根据对称加密技术的原理,他必须通过此加密算法的逆运算对密文进行解密运算,从而变成可读的明文。

  • 公钥密码:也称为非对称密码,是指在加密和解密时使用不同密钥的方式。

在公钥密码系统中,加密和解密使用的是不同的密钥(相对于对称密钥,人们把它叫做非对称密钥),这两个密钥之间存在着相互依存关系:即用其中任一个密钥加密的信息只能用另一个密钥进行解密。这使得通信双方无需事先交换密钥就可进行保密通信。其中加密密钥和算法是对外公开的,人人都可以通过这个密钥加密文件然后发给收信者,这个加密密钥又称为公钥;而收信者收到加密文件后,它可以使用他的解密密钥解密,这个密钥是由他自己私人掌管的,并不需要分发,因此又成称为私钥,这就解决了密钥分发的问题。

针对篡改或者伪装问题,通常需要采用单向散列函数(也叫hash函数),对原文进行压缩产生消息摘要,然后利用数据签名对消息摘要进行真实性认证。也可以利用消息认证码对信息的完整性进行验证,

  • 数字签名: 通过使用数字签名,可以确认信息是由签名者发送的,并且信息在传输过程中未曾作过任何修改。这样数字签名就可用来防止冒用别人名义发送信息;或者发出信件后又加以否认等情况发生。

原文的发送方从原文文本中生成一个散列值(或原文摘要)。发送方用自己的私钥对这个散列值进行加密来形成发送方的数字签名。然后,这个数字签名将作为原文的附件和原文一起发送给接收方。

原文的接收方首先从接收到的原始原文中计算出散列值(或原文摘要),接着再用发送方的公开密钥来对原文附加的数字签名进行解密。如果两个散列值相同,那么接收方就能确认该数字签名是发送方的并且原文在传送的过程中没有被改动。通过数字签名能够实现对原始原文的鉴别,并具有不可抵赖性。

  • 消息认证码:消息认证码是一种确认完整性并进行认证的技术,英文名称为Message Authentication Code,简称为MAC。

使用 MAC 验证消息完整性的具体过程是:假设通信双方共享密钥 K,发送方用消息认证码算法将密钥K和消息 M 计算出消息验证码 Mac,然后将 Mac 和 M一起发送给接收方。接收方收到 Mac 和 M 后,利用 M 和 K 计算出新的验证码 Mac*,若 Mac*和Mac 相等则验证成功,证明消息未被篡改。由于攻击者没有密钥 K,攻击者修改了消息内容后无法计算出相应的消息验证码,因此接收方就能够发现消息完整性遭到破坏。

数字签名与消息认证码的区别在于,MAC不能保证消息的不可抵赖性,而数字签名可以保证。因为数字签名使用的是公钥密码体制,私钥只有你自己才知道;而MAC使用对称加密,既然一方能够验证你的MAC,就能够伪造你的MAC,因为发送方和接收方的秘钥是一样的

随着信息技术的发展,邮件加密技术也经历了由简单到复杂、愈加成熟的不断发展过程,本文所介绍了加密技术入门的基础知识,希望对各位小伙伴了解信息安全有所帮助,有不对的地方请多多指教~

 

网站文章

  • 全球及中国工程担保行业项目规模分析与投资战略决策报告2022版

    全球及中国工程担保行业项目规模分析与投资战略决策报告2022版

    全球及中国工程担保行业项目规模分析与投资战略决策报告2022版════════════════《修订日期》:2022年2月《出版单位》:鸿晟信合研究院《对接人员》:周文文【内容分析有删减·了解详情可查...

    2024-02-01 00:06:05
  • Java StringBuffer int codePointCount(int index1,int index 2)方法,包含示例

    StringBuffer类int codePointCount(int index1,int index 2) (StringBuffer Class int codePointCount(int i...

    2024-02-01 00:05:57
  • 「双指针技巧解决一些数组问题」

    「双指针技巧解决一些数组问题」

    「双指针技巧解决一些数组问题」

    2024-02-01 00:05:28
  • cmake 链接已编译好的 *.so 库踩坑总结(一)

    cmake 链接已编译好的 *.so 库采坑总结

    2024-02-01 00:05:22
  • [CF套题] CF-1163

    CF-1163 传送门 # Penalty A B1 B2 C1 C2 D E F 3 (483) 464 +0 0:06 +1 01:13 +3 01:12 + 01:57 + 01:56 A 第一个人离开时候不增加,第二个人离开时候隔一个走开 当m=0时,答案为0 n为偶数时,如果2m<=n那么答案为m,否则为n-m n为奇数时,如果2m<=n那...

    2024-02-01 00:05:16
  • 提升效率!Django 中鲜为人知的内置命令

    提升效率!Django 中鲜为人知的内置命令

    【导语】:在我们使用Django框架开发应用或者网站的过程中,通常会用到许多命令进行管理,例如常用的runserver, makemigrations, migrate, shell等。此外,许多第三方包也提供了一些命令,我们可以在项目中使用这些命令,来简化开发流程。今天我们一起来学习一些有用的新命令。如果你还不熟悉Django,这里有一篇简单易上手的教程。1. diff...

    2024-02-01 00:04:48
  • 过河(动态规划)

    有一条河,河中有n块石头,现在从河的一边只能通过走石头到达对岸,每一步可以跨越至多3个石头。但是不幸的是,有一块石头被上一个过河的人踩松后被踩松了,所以为了安全后来的人就不能再踩这一块石头了。若现在有一个人想要到河的对岸去,他有多少种方法?注:若我们将石头从1到n进行编号的话,那么被踩松的石头编号为k。输入格式:多组输入对于每组输入在一行中给出2个整数n和...

    2024-02-01 00:04:43
  • 小波变换原理

    小波变换原理

    https://www.cnblogs.com/warmbeast/p/7809286.html 从傅里叶变换到小波变换,并不是一个完全抽象的东西,可以讲得很形象。小波变换有着明确的物理意义,如果我们...

    2024-02-01 00:04:35
  • C++:容器的基本功能与分类

    C++:容器的基本功能与分类

    容器的基本功能与分类容器类是容纳、包含一组元素或元素集合的对象。基于容器中元素的组织方式:顺序容器、关联容器按照与容器所关联的迭代器类型划分:可逆容器和随机访问容器容器的基本功能与分类容器unorde...

    2024-02-01 00:04:27
  • 前端安全知识

    前端安全知识

    原文连接 https://jkchao.cn/article/59d... XSS xss: 跨站脚本攻击(Cross Site Scripting)是最常见和基本的攻击 WEB 网站方法,攻击者通过注入非法的 html 标签或者 javascript 代码,从而当用户浏览该网页时,控制用户浏览器。 xss 主要分为三类: DOM x...

    2024-02-01 00:03:57