SSL 1.0 是什么?

信息安全 tls 密码学 历史的
2021-08-23 05:43:19

SSL 1.0 是什么?

SSL 2.0 和 3.0 是众所周知的并且有据可查。但是 SSL 1.0 协议是什么样的呢?维基百科说有一个 SSL 1.0,但没有说明它是如何工作的。为什么 SSL 1.0 被取代/替换?它有安全漏洞吗?如果是这样,它们是什么?

4个回答

引用SSL 和 TLS:理论与实践 - Rolf Oppliger说:

在 1993 年美国国家超级计算应用中心 (NCSA) 发布 Mosaic 1.0(第一个流行的 Web 浏览器)后不久,Netscape Communications 开始开发 SSL 协议。八个月后,即 1994 年年中,Netscape Communications 已经完成了设计对于 SSL 版本 1 (SSL 1.0)。该版本仅在内部(即 Netscape Communications 内部)流传,因为它有几个缺点和缺陷。例如,它没有提供数据完整性保护。结合使用流密码 RC4 进行数据加密,这允许攻击者对明文消息进行可预测的更改。此外,SSL 1.0 没有使用序列号,因此容易受到重放攻击。后来,SSL 1.0 的设计者添加了序列号和校验和,

这个问题和其他一些问题都必须解决,并且在 1994 年底 Netscape Communications 提出了 SSL 版本 2 (SSL 2.0)。

菲利普哈勒姆贝克写道:

SSL 的实际历史是 SSL 1.0 非常糟糕,以至于当 Marc Andressen 在 MIT 会议上介绍它时,Alan Schiffman 和我在十分钟内就打破了它。

http://www.metzdowd.com/pipermail/cryptography/2013-October/018041.html

不过,没有关于这些缺陷到底是什么的进一步细节。

SSL 1.0 -> 1994 年左右使用 Mosaic,一年后因为 ssl 2.0 而被扔进垃圾箱。所以 ssl 1.0 是初稿,没有任何 RFC,非常以马赛克为中心。

不幸的是 SSLv1 还没有死。OpenSSL 仍然支持 v1 的根证书,例如在crypto/x509v3/v3_purp.c. 警告,前面的可怕评论!

static int check_ca(const X509 *x)
{
        /* keyUsage if present should allow cert signing */
        if(ku_reject(x, KU_KEY_CERT_SIGN)) return 0;
        if(x->ex_flags & EXFLAG_BCONS) {
                if(x->ex_flags & EXFLAG_CA) return 1;
                /* If basicConstraints says not a CA then say so */
                else return 0;
        } else {
                /* we support V1 roots for...  uh, I don't really know why. */
                if((x->ex_flags & V1_ROOT) == V1_ROOT) return 3;
                /* If key usage present it must have certSign so tolerate it */
                else if (x->ex_flags & EXFLAG_KUSAGE) return 4;
                /* Older certificates could have Netscape-specific CA types */
                else if (x->ex_flags & EXFLAG_NSCERT
                         && x->ex_nscert & NS_ANY_CA) return 5;
                /* can this still be regarded a CA certificate?  I doubt it */
                return 0;
        }
}