免规则采集器列表算法(构建一个面向公共网络的WEB系统中一定要做到的)
优采云 发布时间: 2021-11-18 21:10免规则采集器列表算法(构建一个面向公共网络的WEB系统中一定要做到的)
在面向公网的项目中,安全无疑是项目面临的巨大挑战之一。在公共互联网上,花花公子和无聊的人一直在嗅探我们的服务器。有些人想大显身手,也有些*敏*感*词*想监控截取我们的敏感信息,进入我们的宿主进行各种活动。各种破坏和盗窃。这些人一旦得逞,系统的稳定性就会降低,企业的敏感数据就会丢失,企业的信誉也会遭到破坏。因此,为用户提供可靠、稳定的服务,防止重要数据的丢失和被盗,是我们构建面向公共网络的WEB系统所必须做的。
构建安全的网络环境,首先要了解安全威胁从何而来。以下是可能造成安全威胁的应用场景:
1、用户A向用户B发送带有敏感信息的文件,用户C在局域网内*敏*感*词*和截获未加密的数据报。
2、 网管A远程向主机B发送命令(如添加用户的命令),攻击者C截获收录该命令的数据报,修改包中的命令,然后发送给主机 B。
3、 同场景2,主机B准备接受远程合法用户A的命令,但此时攻击者C构造了命令数据报发送给B,B认为是用户发送的命令A、执行此命令后,与场景2不同,攻击者C并没有拦截和修改数据报,而是直接构造数据报。
4、 客户A向TA的股票经纪人B发送了一条股票交易的消息,股票经纪人B按照A的要求进行了相应的股票操作,但是这个操作给客户A带来了损失,然后客户A拒绝发送这条消息给经纪人 B 的消息。
分析场景1,如果A发送给B的消息是加密的,即使C截获了消息,TA也不会知道消息的内容。这涉及到消息的机密性。场景二中,攻击者C篡改了消息,但主机B并不知道接收到的消息与合法用户A发送的消息不一致,因此该场景涉及到消息的完整性。场景三,主机B接受任何人发送的消息,无需验证消息来源,这涉及到消息的可验证性。在场景4中,很明显,客户A不承认消息被发送,所以涉及到消息的不可否认性。
针对上述场景,我们可以总结出来自互联网的安全服务大致可以分为以下几类:
1、保密
2、 完整性
3、不可否认性
对于不同的服务,我们需要不同的安全属性。一些比较敏感的信息,比如用户进行电子交易时,需要不同的安全服务同时护航。下面,让我们讨论一下系统是如何实现上述安全属性的,以及实现这些安全属性需要使用的软件。这些软件可以作为组件集成到系统中,为系统的安全提供保护。
保密
消息的保密性是为了确保只有合法的接收者才能阅读消息的内容。即使其他人通过非法方式获取消息,由于消息是加密的,他们也无法阅读内容。然后,仅允许合法收件人阅读消息是消息机密性的要求。加解密图如下(对称加密):
消息机密性的研究历史悠久。最早的经典加密技术是凯撒加密技术,它是一种单码替换技术,即将每个明文字母替换为另一个字母,形成密文。然后将替换规则提前通知合法用户,以便合法用户在获得密文后,按照预先约定的规则将密文翻译成明文。未来,传统的加密算法(对称加密算法)都是从凯撒加密技术演变而来的。然而,凯撒密码有一个弱点。在比较长的英文信息中,可以计算出某个字母出现的频率。比如“The”这个词出现的频率就比较高。破译者甚至计算了一个字母的频率。度分析表。这样,解密器就可以根据频率分析表猜出密文,并尝试将其转换为明文。如果可以读取转换后的明文,则消息将被解密。这种解密方法也称为频率分析。
频率分析表
为了抵抗频率分析,1854 年,查尔斯·惠斯通发明了一种称为 Playfair 的多重替代加密方法。使用时,首先需要编制一个5X5的矩阵密码表。加密和解密依赖于密码表。所以这个5X5的密码表相当于一把钥匙。它可以有效抵抗频率分析,当时被军方广泛使用,但在第一次世界大战期间被破解。然后出现了一些加密机制,其中最著名的是德国在二战中使用的旋转加密。在DES算法出现之前,最著名的加密算法就是它了。它通过多步替换加密形成密文,使密码分析更加困难。这就是密码的历史。
DES
DES的全称是Data Encryption Standard,是一种对称加密算法。对称加密算法的特点是加密和解密使用相同的密钥。回顾我之前说的,从经典的凯撒加密到旋转加密,加密和解密都依赖同一个密码表或规则,所以都可以做到。称之为对称加密。这些密码表或规则可以理解为所谓的“密钥”。在 DES 中,密钥是由计算机生成的字符序列。这个序列应该有一定的长度,使得攻击者很难通过暴力破解或者其他方式获取。否则,如果密钥是由第三方获得的,则加密的消息将没有任何安全性。因为密码的算法是公开的。
DES的算法可以在百度百科或其他文档中找到。这里只介绍一下它的特点(其实我只了解算法过程,并没有仔细研究算法本身-_-!),DES的密钥长度是56位。加密时,密钥和64位明文消息作为输入,传递给加密函数。函数经过处理后,会生成一个64位的密文,完成明文到密文的转换。这种转换方式称为块加密,整体转换由64位明文块进行。现代加密算法基本上使用这种块加密方法。另一种是流加密。所谓流加密,就是对一个字符或一个字节或逐位进行转换。例如,
DES加密方式,DES加密有不同的方式,方式的不同导致DES生成密文的安全性和速度不同,这里介绍三种不同的DES加密方式:
1、ECB(Electronic Codebook),在ECB模式下,对于同一个明文,如果用同一个key加密,生成的密文是一样的。例如,单词“The”是一个64位的块,通过相同的密钥加密后,生成的密文始终是“XUZ”。这种加密模式对密码分析的抵抗力会弱一些。
2、CBC(Cipher Block Chaining),为了克服ECB模式的缺点,CBC模式诞生了。CBC对同一个明文块生成不同的密文,所以比ECB模式强。
3、CFB(Cipher Feedback),由于DES本质上是基于块加密的,所以必须转换成整块,而CFB模式可以把块加密转换成流加密,这样密文就可以一个字节生成一个字节的大小达到了实时密文转换的目的,提到了密文生成的速度。
DES 加密的强度由 DES 密钥的长度决定。DES 的密钥长度为 56 位,这意味着有 2 次方的 56 次方组合。依靠单台计算机的计算能力来尝试暴力破解DES需要很长时间。这需要时间(或需要大量费用),但现在由于分布式计算的发展,解决一个 56 位的密钥可能没有那么困难。所以现在,DES 不被认为是一种非常安全的加密算法,DES 已经逐渐被其他加密算法所取代。
三重DES (3DES)
3DES是DES的升级版,对每个数据块应用3次DES加密算法。由于使用了三种DES加密算法,3DES中需要三个密钥,而这三个密钥也有不同的组合。
组合方式一:三个密钥是独立的,这种加密强度最高,相当于3x56=168个密钥位。
组合二:有两个独立的密钥,这种安全性稍低,有112个密钥位。
组合方式三:三个按键完全一样。这种模式实际上是为了兼容普通的DES而存在的。在安全性方面,与普通DES没有区别,只有56个密钥位。
主意
IDEA全称为International Data Encryption Algorithm,是一种对称加密算法。近年来有人提出取代DES。IDEA在现代安全系统中有着广泛的应用,其中PGP使用的是IDEA算法。
IDEA 使用 128 位密钥对 64 位块进行加密,同时加强了密码的混淆和扩散,提高了安全性。混乱度的增加使得通过明文定律找到密文定律变得更加困难,因为密文和明文并不是一一对应的。扩散使密文中的每一位都受到明文中许多位的影响,增加了密码分析的难度。
河豚
Blowfish 是一种基于块的对称加密算法。它具有以下特点:
快速:使用 32 位微处理器加密一个字节仅需 18 个时钟周期。
简单性:运行 Blowfish 所需的 RAM 少于 5K。
简单:Blowfish 的简单结构使其算法易于实现。
可变长度:Blowfish 的密钥长度是可变的。它可以生成高达 448 位的密钥,允许用户在高安全性和高加密速度之间做出权衡。
Blowfish 可能是最好的对称加密算法。它已在许多安全产品中实施。经过长时间的安全测试,Blowfish 的安全性不成问题。
下面是Blowfish与其他加密算法的效率对比:
加密演算法
每轮时钟消耗
转换回合
每字节加密消耗时钟
河豚
9
16
18
RC5
12
16
二十三
DES
18
16
45
主意
50
8
50
3DES
18
48
108
RC5
RC5 是一种基于块的对称加密算法。它具有以下特点:
它可以用软件或硬件实现:只使用处理器支持的原创算术运算。
快速:RC5的算法简单,每一次加密操作都是以字为单位进行的。
可变字长:RC5提供的第一个参数是用户可以设置一个字的长度,允许的值为16、32、64。RC5使用2个字作为一个块进行加密,所以RC5可以选择一个块大小为 32 位。64 位或 128 位加密。
可变轮数:加密轮数是RC5提供的第二个参数,允许用户在加密速度和高安全性之间进行权衡。
可变密钥长度:密钥长度是RC5提供的第三个参数。同样,它允许用户在加密速度和高安全性之间进行权衡。该参数以 8 位字节为单位,范围可选 介于 0 和 255 之间,因此密钥的最大长度为 2040 位。RC5 的发明者 Rivest 建议我们使用 64 作为一个块,12 轮迭代和 128 位长度的密钥作为加密的标称模式。
简单:RC5 的简单结构使其算法易于实现。
低内存消耗:低内存消耗使得RC5可以与一些硬件如智能卡一起使用。
高安全性:RC5 提供高安全性。
RC5还提供了几种加密方式,即:
ECB:同DES的ECB模式。
CBC:同DES的CBC方式。
CBC-Pad:在 CBC 模式下处理可变长度的明文。单个 RC5 块生成的密文比明文长。
CAST-128
CAST 是一种基于块的对称加密算法。它使用可变长度的密钥。密钥长度为 40 到 128 位,每 8 位递增。CAST 加密进行 16 轮迭代,输入一个 64 位的明文块,输出一个 64 位的密文块。CAST 将密钥分成两个子密钥。
RC2
RC2 是一种基于块的对称加密算法。它使用 64 位块和可变长度的密钥。密钥的长度从 8 位到 1024 位不等。RC2 用于 S/MIME 协议。S/MIME 使用 40、64 和 128 位的密钥长度。
上面讨论的加密算法都是为了确保消息的机密性而存在的。它们可以有效地确保加密的消息不会被第三方破解而泄露敏感信息。这些算法通常以模块的形式集成在一些系统或软件中,以支持一些安全协议或安全架构。如果SSL协议需要对消息进行加密传输,那么WEB服务器和浏览器就需要集成这些加密算法来支持SSL协议的应用。然而,对于对称加密技术来说,密钥的保护是一个难以忽视的问题。加密方和解密方都使用相同的密钥。如果密钥在传输过程中丢失或被攻击者窃取,那么该消息将失去其机密性。在加密系统中,除了上述对称加密机制外,还有一种非对称加密机制,也称为公钥加密。让我们在下面探索公钥加密。
公钥加密算法可以说是现代密码学的一次真正革命。它使用公钥和私钥进行加密和解密。公钥是公开的,任何人都可以使用,而私钥一般为解密者所有,必须保证机密性。明文用公钥加密,可以用私钥解密,用私钥加密,用公钥解密。因此,如果A想向B发送加密的消息,那么A只需要用B的公钥加密后发送给B,B就可以用自己的本地私钥解密。B的公钥流出没有风险,B的私钥不需要流出。这在一定程度上避免了丢失密钥的风险。公钥加密除了用于消息加密外,还可以用于“数字签名”和密钥管理。稍后将介绍数字签名。
那么,既然公钥加密算法出现了,还需要传统的对称加密算法吗?公钥加密算法能代替对称加密算法吗?我们应该注意一些错误的观点。有一种说法,公钥加密比对称加密提供更高的安全性。实际上,无论是公钥加密还是对称加密,安全性取决于密钥的长度,与公钥加密和对称加密无关。还有一种说法是,公钥加密可以作为一种通用的加密方法来代替对称加密。事实上,由于公钥加密的计算效率远低于对称加密,如果有大量消息需要加密,使用公钥加密是不切实际的。公钥加密更多的是对对称加密密钥进行加密以确保密钥的机密性,而不是对数据进行加密。
公钥加密图
公钥加密算法主要有RSA加密算法和椭圆曲线加密算法。其中,RSA是使用最广泛的公钥加密算法,经过了公众的长期测试。它是由 Ron Rivest、Adi Shamir 和 Lenard Adleman 提出的。RSA是他们三个姓氏的首字母的组合。椭圆曲线加密算法在系统开销上有一定的优势,但由于没有经过长时间的密码分析测试,应用范围不如RSA。还有一种密钥交换协议,叫做Diffie-Hellman,它本身不能加密和解密数据,但可以安全地使通信双方生成密钥,
完整性
在文章开头描述的网络安全威胁场景2中,消息在传输过程中可能被篡改,这就需要接收方验证消息的完整性,并确保接收到的消息是由发送方发送的原创消息发件人,否则可能会产生灾难性的后果。那么,如何保证消息的完整性呢?让我们通过下图来理解:
此图标显示了一种确保消息完整性的方法,称为消息验证码。缩写为MAC。发送方 A 将明文消息和密钥作为参数传递给一个称为 MAC 的函数(我们先这么称呼它)以生成一个固定长度的值,该值称为消息验证码。然后将消息验证码连同消息一起发送给接收者B。 B将收到的消息和与A相同的密钥传递给MAC函数,生成新的消息验证码,然后将新生成的消息验证码与消息验证进行比较A发来的code,如果一致,则证明消息没有被篡改,否则消息的完整性会被破坏,无法使用。MAC函数类似于加密函数,但是MAC函数是不可逆的,只能用于比较,不能通过关键参数解密。因此,MAC功能用于保证报文的完整性,比加密功能具有更小的风险因素。
除了MAC,还有一个叫做Hash的函数也可以用来保证消息的完整性。验证过程类似于MAC。Hash 函数可以将任意长度的消息转换为固定长度的哈希值,也称为消息摘要。那么我们可能会认为,由于Hash函数可以将任意长度的消息转换成定长值,如果以1000位消息作为输入,生成128位值,那么任意1000位消息的值不会 某些消息会产生相同的 128 位值吗?答案是肯定的。这种情况称为碰撞。如果攻击者发现冲突,消息的完整性将受到威胁。其实Hash算法虽然碰撞的几率很小,但是还是有几率的。山东大学王晓云教授》
MD5 允许任何长度的消息作为输入并输出固定的 128 位消息摘要。SHA-1全称为Secure Hash Algorithm,是一种安全的散列算法。它可以将最大长度为 2 的 64 次方的消息作为输入,并输出固定的 160 位消息摘要。因为它输出160位的消息摘要,比MD5大 SHA-1的安全性比MD5高,所以SHA-1正在逐渐取代MD5。此外,还有一种消息摘要算法称为 RIPEMD-160,它也输出 160 位的消息摘要。
不可否认性
消息的机密性和完整性保护通信方免受第三方的恶意攻击。但是,它不能保护通信方之间的一些争议。那么,通信双方之间会发生什么样的纠纷呢?让我们来看看以下场景:
1、A 和 B 是合法的通信方。此时,A伪造了一条消息,声称该消息来自B,因为A可以使用与B共享的密钥创建合法的消息验证码。
2、B 拒绝向 A 发送消息,因为 A 有可能从 TA 自己那里得到伪造的消息,并且没有证据证明 B 是否真的发送了消息。
和现实生活中一样,为了防止双方的这种否认,在任何交易之前,都会有一份纸质合同,合同上的签名是双方无法否认的证据。在网络通信中,也有像这样的签名形式来抵抗拒绝。我们称之为数字签名。数字签名必须具有以下属性:
1、必须能够验证签名的作者、日期和时间。
2、它必须能够在签名时验证消息的内容。
3、必须得到第三方的认可才能解决纠纷。
数字签名提供两种实现方式,与仲裁直接相关
直接的
直接数字签名只包括通信双方,并假定接收方知道发送方的公钥。数字签名可以是用发送方的私钥对整个消息进行加密的形式,加密后的内容被视为数字签名。也可以使用发送者的私钥对消息的哈希值进行加密。这样,如果接收方可以用发送方的公钥解密消息,就可以证明发送方发送的消息是正确的,因为只有发送方有私钥。
直接数字签名有一个弱点,即数字签名的安全性取决于发送者私钥的安全性。如果发件人有意否认TA发送了某条消息,则发件人可以声称TA的私钥丢失或被盗以致有人伪造TA的签名。另一个威胁是发送者的私钥在某个时间点 T 真的被盗,窃贼在 T 向接收者发送带有发送者签名的消息。
仲裁
为了解决直接数字签名的不足,仲裁数字签名应运而生。在仲裁数字签名中,增加了一个称为仲裁员的新角色。仲裁数字签名的过程如下:
首先,假设消息使用对称加密算法。假设发送者X与仲裁者A共享公钥Kax,接收者Y与仲裁者A共享公钥Kay。X的目的是向Y发送消息M。X首先计算M的哈希值,然后将 X 的标识符(假设为 IDx)和哈希值结合形成数字签名,然后用 Kax 对数字签名进行加密,并将消息 M 发送给仲裁器 A。 A 使用 Kax 对数字签名进行解密,并验证其完整性消息M通过哈希值防止消息在X发送给A时被篡改,然后A将X、IDx、消息M和时间戳T加密的数字签名连同Kay加密发送给接收者Y。 Y接收数据,Kay解密数据,得到消息M。X 加密的数字签名存储在 Y 的系统中并作为证据保存。因为数字签名是用Kax密钥加密的,Y没有这样的密钥,所以签名内容是不可篡改的。时间戳 T 是为了防止重放攻击。
示例中的仲裁数字签名过程也存在一个问题,即仲裁员的权限太高。发送方和接收方必须完全信任仲裁者,仲裁者也可以看到传输消息的明文。如果仲裁员被黑了,那么消息一目了然就会暴露在攻击者的眼中。为此,仲裁数字签名催生了另外两种模式,一种是基于对称加密对仲裁者消息透明的数字签名,另一种是基于公钥加密对仲裁者消息透明的数字签名。
基于对称加密的消息透明数字签名过程如下:
仍然假设发送者X、接收者Y和仲裁者A。在这种模式下,添加了一个新的X和Y的公钥Kxy。首先,X将IDx,Kxy加密的消息M,以及X的Kax加密的数字签名发送给A,其中数字签名有IDx,它由Kxy加密的消息M的哈希值组成。A收到数据后,使用Kax对数据进行解密,得到Kxy加密的消息M及其哈希值,这样A就可以在不知道消息明文M的情况下验证M的完整性。随后,A 将用 Kay 加密的数据发送给 Y。该消息由 IDx、消息 M 的数字签名和 Kxy 加密的 X 组成。发送给Y后,Y可以用Kxy密钥解密消息,得到明文。在这个过程中,即使仲裁者A被黑了,
基于公钥加密的消息透明数字签名的原理与基于对称加密的消息透明数字签名的原理类似,其目的是使仲裁者A能够在不知道消息明文的情况下对消息进行验证。
在文章的开头,我们谈到了网络安全的三种安全属性。消息的机密性、完整性和不可否认性,实现安全属性的基础是对称加密算法、公钥加密算法、MAC、Hash。大多数实现功能的安全架构、安全协议和安全系统都是由这些基本组件集成而成的。在安全协议中,有分布在传输层的IPSec协议、分布在会话层的SSL/TLS协议和SET协议。用于主机服务器相互认证的 Kerberos、用于密钥管理的 X.509 标准和 Linux PAM 认证模块。这些基本算法支持这些安全系统或协议实现的安全特性。上面,我们简单讲了网络安全的基本属性以及实现网络安全属性的基本方法。作为架构师,我们需要了解在不同的环境中哪些安全属性是需要的,哪些安全属性是不需要的,以及应该如何裁剪。并且我们应该知道使用哪些软件进行系统集成以实现我们的网络安全目标。后续也会陆续介绍一些安全模型的配置方法,希望能给大家做一个介绍和参考。以及我们应该如何定制它们。并且我们应该知道使用哪些软件进行系统集成以实现我们的网络安全目标。后续也会陆续介绍一些安全模型的配置方法,希望能给大家做一个介绍和参考。以及我们应该如何定制它们。并且我们应该知道使用哪些软件进行系统集成以实现我们的网络安全目标。后续也会陆续介绍一些安全模型的配置方法,希望能给大家做一个介绍和参考。