未加密的SSL协议?

9

是否可能通过https发送未加密的消息?例如,要求进行证书验证和授权,但不加密实际发送到套接字上的数据?


我有点好奇这会被用在哪里?为什么不使用其他的身份验证方法呢?对我来说,似乎你只是想要验证一个有效的...主机?耸肩 - Jakub
这个问题没有意义,因为https是在标准端口443上运行的http的安全版本。标准规定所有加密和证书授权/认证都适用于此https协议。而且,无论如何,通过https发送的任何消息都是加密的。您能澄清一下您想要做什么吗? - t0mm13b
2
啊,我其实不想使用这个。我只是想确保如果我使用https协议,我不必告诉服务器加密它。这样,如果我使用https,我可以相信数据已经被加密了。 - bkritzer
@tommieb75 我也没有使用标准的443端口 - 我在7002上。在这种情况下它仍然强制使用加密标准吗? - bkritzer
@bkritzer:在您的情况下,如果https运行在7002端口上,则加密仍然得到执行。请参阅维基百科关于HTTPS协议的介绍http://en.wikipedia.org/wiki/HTTP_Secure。 - t0mm13b
4个回答

23

是的,TLS和SSL支持“无加密”模式。具体的客户端和服务器是否配置启用这种模式是一个不同的问题。

虽然可能性很小,但有些服务器可能会默认启用其中一种密码套件。更有可能的情况是服务器会默认启用弱密码套件(例如基于“出口级”DES的套件)。因此,您应仔细查看服务器的密码套件白名单,并且只保留少数值得信任、广受支持的算法。

您可以使用TLS_RSA_WITH_NULL_SHA密码套件等来保护流量的真实性和完整性,而无需进行加密。

在这种情况下,“RSA”是指密钥交换算法,“SHA”是指用于保护流量免受篡改的消息认证算法。“NULL”是加密算法,或者在这种情况下,是缺乏加密。

重要的是要意识到,尽管流量没有加密,但它被捆绑在SSL记录中。客户端和服务器必须启用SSL。

如果您正在寻找一种降级解决方案,在该解决方案中,一些数据是通过SSL交换的,然后关闭SSL,但应用程序流量继续,则也可以实现,但请记住,它对明文流量提供绝对没有安全保障;攻击者可以篡改。例如,使用SSL进行身份验证,然后降级到“明文”协议以接收使用通过SSL协商的身份验证的命令将是不安全的。


你好,我有一些关于 OpenSSL 的问题,你愿意看一下以下网址吗?http://stackoverflow.com/questions/2542156/openssl-ssl-encryption - deddihp

6
SSL/TLS规范定义了一个“NULL cipher”,您可以用它来实现。但由于明显的原因,大多数客户端和服务器软件都禁用了它。
然而,如果你正在编写自己的软件,你可能能够说服你的库来协商它。

-2

我认为你可以。

但这样做很愚蠢,你会失去身份验证的重点,并使自己暴露于攻击者的攻击之下,攻击者可以拦截和更改你的数据包。


5
隐私和完整性是两个不同的概念。你可以使用TLS而不保护隐私;攻击者可以读取你的数据包,但你会知道他们是否篡改了某个数据包。 - erickson
@erickson 我对 SSL 及其子类不是很了解,但为什么你要在传输数据上使用加密哈希,而不是简单地加密它呢? - AK_
我自己没有用过这个应用程序。我只是指出SSL可以保护数据包免受篡改,但简单的加密不足以防止数据包被篡改。 - erickson
@erickson 这个主题太广泛了,无法在这里讨论。简而言之,我的意见是,为了保证数据完整性,并不需要使用密码学的神奇力量或 SSL 这样的黑暗魔法。另外,值得一提的是,如果你使用完整的 SSL 功能,可以获得更好的真实性和安全性。此外,简单加密(只要操作正确)已经足以防止篡改。 - AK_
1
TLS带身份验证但不带加密的一个用途是允许透明缓存缓存您的非私有数据。这在视频或操作系统ISO方面尤其有用。此外,没有身份验证的加密根本不能保护免受篡改(尽管可以说,没有身份验证的加密并不是“正确”的方式)。 - Brendan Long

-4

不,协议不允许这样做。

一个解决方案是通过https连接,验证连接,然后使用会话cookie断开后续的HTTP连接。如果没有该cookie,则重定向回https,以便客户端始终连接到它。

但这可能与您无关,如果您提供有关您要解决的问题的更多信息,我们可以提供更多帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接