加入收藏 | 设为首页 | 会员中心 | 我要投稿 阜阳站长网 (https://www.0558zz.cn/)- AI行业应用、低代码、混合云存储、数据仓库、物联网!
当前位置: 首页 > 站长资讯 > 动态 > 正文

WAF越来越让人失望?

发布时间:2021-02-16 16:00:52 所属栏目:动态 来源:互联网
导读:这个例子生成了一个 CSR 文档,并将该文档存储在文件 myserver.csr (base64 文本)中。这里的目的是:CSR 文档要求 CA 保证与指定域名相关联的身份,域名也就是 CA 所说的 通用名 common name (CN)。 尽管可以使用现有的密钥对,但这个命令也会生成一个新

这个例子生成了一个 CSR 文档,并将该文档存储在文件 myserver.csr(base64 文本)中。这里的目的是:CSR 文档要求 CA 保证与指定域名相关联的身份,域名也就是 CA 所说的通用名common name(CN)。

尽管可以使用现有的密钥对,但这个命令也会生成一个新的密钥对。请注意,在诸如 myserver.csr 和 myserverkey.pem 等名称中使用 server 暗示了数字证书的典型用途:作为与 www.google.com 等域名相关的 Web 服务器的身份担保。

然而,无论数字证书如何使用,同样使用这个命令都会创建一个 CSR。它还会启动一个问题/回答的交互式会话,提示有关域名的相关信息,以便与请求者的数字证书相连接。这个交互式会话可以通过在命令中提供基本的信息,用反斜杠来续行一步完成。-subj 标志提供了所需的信息。

 

为了了解验证失败时的情况,一个简短但有用的练习是将最后一个 OpenSSL 命令中的可执行的 client 文件替换为源文件 client.c,然后尝试验证。另一个练习是改变 client 程序,无论多么轻微,然后再试一次。

数字证书

数字证书digital certificate汇集了到目前为止所分析的各个部分:哈希值、密钥对、数字签名和加密/解密。生产级证书的第一步是创建一个证书签名请求certificate signing request(CSR),然后将其发送给证书颁发机构certificate authority(CA)。在 OpenSSL 的例子中,要做到这一点,请运行:

 

这种对密码学哈希函数的研究,为我们仔细研究数字签名及其与密钥对的关系奠定了基础。

数字签名

顾名思义,数字签字digital signature可以附在文件或其他一些电子工件artifact(如程序)上,以证明其真实性。因此,这种签名类似于纸质文件上的手写签名。验证数字签名就是要确认两件事:第一,被担保的工件在签名被附上后没有改变,因为它部分是基于文件的加密学哈希值。第二,签名属于一个人(例如 Alice),只有她才能获得一对密钥中的私钥。顺便说一下,对代码(源码或编译后的代码)进行数字签名已经成为程序员的普遍做法。

让我们来了解一下数字签名是如何创建的。如前所述,没有公钥和私钥对就没有数字签名。当使用 OpenSSL 创建这些密钥时,有两个独立的命令:一个是创建私钥,另一个是从私钥中提取匹配的公钥。这些密钥对用 base64 编码,在这个过程中可以指定它们的大小。

私钥private key由数值组成,其中两个数值(一个模数modulus和一个指数exponent)组成了公钥。虽然私钥文件包含了公钥public key,但提取出来的公钥并不会透露相应私钥的值。

因此,生成的带有私钥的文件包含了完整的密钥对。将公钥提取到自己的文件中是很实用的,因为这两把钥匙有不同的用途,而这种提取方式也将私钥可能被意外公开的危险降到最低。

接下来,这对密钥的私钥被用来生成目标工件(如电子邮件)的哈希值,从而创建签名。在另一端,接收者的系统使用这对密钥的公钥来验证附在工件上的签名。

现在举个例子。首先,用 OpenSSL 生成一个 2048 位的 RSA 密钥对:

 

例如,回忆一下 SHA256 哈希函数。对于一个任意长度为 N > 0 的输入位串,这个函数会生成一个 256 位的固定长度的哈希值;因此,这个哈希值甚至不会反映出输入位串的长度 N,更不用说字符串中每个位的值了。顺便说一下,SHA256 不容易受到长度扩展攻击length extension attack。唯一有效的逆向工程方法是通过蛮力搜索将计算出的 SHA256 哈希值逆向返回到输入位串,这意味着需要尝试所有可能的输入位串,直到找到与目标哈希值匹配的位串。这样的搜索在 SHA256 这样一个完善的加密哈希函数上是不可行的。

现在,最后一个回顾的知识点是有序in order。加密哈希值是统计学上的唯一,而不是无条件的唯一,这意味着两个不同的输入位串产生相同的哈希值是不太可能的,但也不是不可能的 —— 这称之为碰撞collision生日问题提供了一个很好的反直觉的碰撞例子。对各种哈希算法的抗碰撞性collision resistance有着广泛的研究。例如,MD5(128 位哈希值)在大约 221 次哈希之后,抗碰撞能力就会崩溃。对于 SHA1(160 位哈希值),大约在 261 次哈希后开始崩溃。

对于 SHA256 的抗碰撞能力的剖析,目前还没有一个很好的估计。这个事实并不奇怪。SHA256 有 2256 个不同的哈希值范围,这个数字的十进制表示法有 78 位之多!那么,SHA256 哈希会不会发生碰撞呢?当然可能,但可能性极小。

在下面的命令行示例中,有两个输入文件被用作位串源:hashIn1.txt 和 hashIn2.txt。第一个文件包含 abc,第二个文件包含 1a2b3c

为了便于阅读,这些文件包含的是文本,但也可以使用二进制文件代替。

在命令行(百分号 % 是提示符)使用 Linux sha256sum 实用程序对这两个文件进行处理产生以下哈希值(十六进制):


(编辑:阜阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读