云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

服务器_java数据库同步_返利

小七 141 0

数据库备份_个人_为什么要人工智能

密码学是各种安全应用所必需的学科,对于所有其他安全学科中的军备竞赛并不陌生。现代密码学的目的是通过应用数学原理和计算机科学来创建保护信息的机制,而密码分析则旨在击败这种机制,以获得对信息的非法访问。密码学和密码分析之间的这种军备竞赛激励了各个时代更强大算法的发明——从古希腊和罗马到我们的数字时代甚至更远。有些算法由于通过密码分析发现的缺陷而无法使用;而另一些则仅仅是由于计算技术的进步,比较便宜的云服务器,使得它们在面对最新技术时失效。在这篇文章中,我们将定义密码学的安全支柱:机密性、完整性和真实性。然后,我们将比较和对比加密、哈希、编码和模糊处理,显示哪些操作提供了哪些安全属性。机密性是指保护信息不被未授权方访问,或者换句话说,就是要确保只有经过授权的人才能访问受限制的数据。完整性是指保护信息不被篡改,而真实性与识别信息的所有者有关。例如,个人医疗数据需要保密,这意味着只有医生或医务人员可以访问它。它的完整性也必须得到保护,因为篡改这些数据可能会导致错误的诊断或治疗,可能会给患者带来健康风险。真实性是这个例子意味着病人的数据应该与一个确定的个体联系起来,当医生修改数据时——因为他们有权这样做——知道是哪位医生以他们不能否认的方式做的至关重要。现在,我们将定义什么是加密、哈希、编码和混淆,主要集中在确定三个加密属性(机密性、完整性、真实性)中哪一个对每个属性都有效。什么是加密?加密被定义为以保证机密性的方式转换数据的过程。为了实现这一点,加密需要使用一个秘密,在密码学术语中,我们称之为"密钥"。加密密钥和任何其他加密密钥应具有以下属性:为了保持机密性,密钥的值应该非常难以猜测。它应该在单个上下文中使用,避免在不同的上下文中重复使用。密钥重复使用会带来安全风险,如果其机密性被规避,则影响更大,因为它"解锁"了更敏感的数据。加密分为两类:对称加密和非对称加密,其主要区别在于所需密钥的数量。在对称加密算法中,单个秘密(密钥)用于加密和解密数据。只有那些被授权访问数据的人才应该拥有一个共享密钥。另一方面,在非对称加密算法中,有两个密钥在使用:一个公共密钥和一个私有密钥。正如他们的名字所暗示的那样,私钥必须保密,而公开密钥是人人都知道的。应用加密时,使用公钥,而解密需要私钥。任何人都应该能够向我们发送加密数据,但只有我们能够解密和读取它!非对称加密通常用于在不安全信道上通信的双方之间安全地建立一个共同的秘密(密钥)。有了这个共享密钥,双方现在都切换到对称加密,这种加密速度更快,更适合处理大量数据。非对称加密:用法:TLS、VPN、SSH对称加密:用法:文件系统加密、Wi-Fi保护访问(WPA)、数据库加密,例如信用卡详细信息不幸的是,十大淘客软件排名,淘客app开发,许多公司使用专有或"军事级"加密技术进行加密。这些术语通常表示加密方法是私有的,并且基于"复杂"算法。这不是加密应该如何工作的。所有被密码界广泛使用和认可的加密算法都是公开的,因为它们基于数学算法,大数据分享,只有拥有秘密(密钥)或先进的计算能力才能解决这些问题。公开算法是通过竞争来选择的,物联网技术与应用,经过了密码界的审查,并通过广泛采用证明了它们的价值。回顾一下加密,它的主要重点是提供机密性。最近有一些加密算法也提供了真实性或完整性,但是这些加密属性可以用其他技术更好地解决,我们将在下面讨论。什么是哈希?虽然加密算法是可逆的(使用密钥),并且是为了提供机密性而构建的(一些较新的加密算法也提供了真实性),但是哈希算法是不可逆的,其构建是为了提供完整性,以证明特定的数据段没有被修改。也就是说,一些散列算法不能像其他算法一样保证数据的完整性,这可能是因为它不是出于安全目的而构建的,或者是由于计算技术的进步使得旧算法过时。哈希算法的前提很简单:给定任意输入,输出特定数量的字节。大多数情况下,这个字节序列对该输入是唯一的,并且不会给出输入是什么的指示。换句话说:仅给出哈希算法的输出就无法确定原始数据。给定一些随哈希算法输出的任意数据,可以验证这些数据是否与原始输入数据匹配,而无需查看原始数据!为了说明这一点,假设一个强大的哈希算法通过将每个唯一的输入放在自己的桶中来工作。当我们想检查两个输入是否相同时,我们可以简单地检查它们是否在同一个bucket中结束。例子提供文件下载的网站通常提供每个文件的哈希值,以便用户可以验证下载副本的完整性。例如,在Debian的图像下载服务中,您会发现其他文件,例如SHA256SUMS,其中包含每个可供下载的文件的散列输出(在本例中,来自SHA-256算法)。下载文件后,可以通过所选的哈希算法传递该文件,以查看您获得的哈希输出是否与校验和文件中列出的哈希输出匹配。在终端中散列文件的一种方法是使用openssl:$openssl sha256~/Downloads/debian-10.0.0-amd64-netinst.iso公司SHA256(~/Downloads/debian-10.0.0-amd64-netinst.iso公司)=3dbb597b7f11dbda71cda08d4c1339c1eb565e784c75409987fa2b91182d9240与SHA256SUMS文件的内容比较:3dbb597b7f11dbda71cda08d4c1339c1eb565e784c75409987fa2b91182d9240debian-10.0.0-amd64-netinst.iso公司强哈希算法将从任意输入生成唯一输出的任务发挥到极致,以保证数据的完整性。对于一个强哈希算法来说,如果给定两个不同的输入,则几乎不可能获得相同的输出。这称为碰撞,当针对哈希算法的碰撞变得实际时,就像MD5和最近的SHA-1一样,是时候转向更强大的算法了。回到我们的bucket类比,如果两个不同的输入最终在同一个bucket中,我们就会发生冲突。这是有问题的,因为我们无法区分冲突和这些是否是匹配的输入。一个强大的哈希算法几乎总是为每个唯一的输入创建一个新的bucket。资料来源:粉碎.io您可能听说过密码上下文中使用的哈希。在散列算法的许多用途中,这是最著名的一种。当你使用密码注册一个网络应用程序时,而不是存储你的实际密码,这不仅侵犯了你的隐私,而且对网络应用程序所有者来说也是一个很大的风险,web应用程序会对密码进行哈希处理,只存储哈希值。然后,在您下次登录时,web应用程序会再次哈希您的密码,并将此哈希值与先前存储的哈希值进行比较。如果哈希匹配,web应用程序可以确信您知道您的密码,即使web应用程序在存储中没有您的实际密码。注册:登录:散列的一个有趣的方面是,不管输入数据的长度如何,它的输出总是相同的,这就是理论上,碰撞总是在可能的范围内,尽管这种可能性是微不足道的。奇怪的是,编码并不是这样的,编码通常输出与输入数据量成比例的数据量,并且总是唯一的。但是,正如您将在下面看到的,编码永远不适合于与安全相关的操作。什么是编码?编码被定义为将数据从一种形式转换成另一种形式的过程,与密码学无关。它不保证机密性、完整性和真实性这三个密码属性中的任何一个,因为它不涉及秘密并且是完全可逆的。编码方法被认为是公共的,用于数据处理。例如,在互联网上传输的数据需要一种特定的格式,而对我们的数据进行URL编码将允许我们在互联网上传输这些数据。类似地,在HTML上下文中,需要对数据进行HTML编码以符合所需的HTML字符格式。另一种流行的编码算法是base64。Base64编码通常用于对需要存储或传输到用于处理文本数据的媒体中的二进制数据进行编码。上面的例子旨在指出,编码的用例只是数据处理,并没有为编码的数据提供保护。什么是混淆?与编码类似,混淆不保证任何安全属性,尽管有时它被错误地用作加密met