scapy.layers.tls package

用于处理TLS会话和数字证书的工具. 使用load_layer('tls')将它们加载到主命名空间.

Prerequisites:

  • 您可能需要"点安装加密"以加载模块.

主要特点:

  • X.509证书解析/构建.

  • RSA和ECDSA密钥签名/验证方法.

  • TLS记录和子层(握手…)解析/构建. 适用于SSLv2至TLS 1.2版本. TLS上下文可以增强此功能. 例如,如果Scapy读取版本为TLS 1.2的ServerHello以及使用AES的密码套件,则它将假定在数据之前存在IV. 有关实际示例,请参见test / tls.uts.

  • 具有许多密码套件的TLS加密/解密功能,包括一些可能被视为危险的套件. TLS上下文再次使Scapy在了解到会话机密后可以透明地发送/接收受保护的数据. 请注意,如果Scapy充当握手的一侧(例如,读取所有与服务器相关的数据包并构建所有与客户端相关的数据包),则它将确实计算会话机密.

  • TLS客户端和服务器基本自动机,用于测试和调整. 这些构成了非常原始的TLS堆栈.

  • 此外,在tls / examples / pki_test中提供了基本测试PKI(CA,客户端和服务器的密钥+证书).

单元测试:

  • 各种加密检查.

  • 读取Firefox客户端和GitHub服务器之间的TLS握手.

  • 从RFC草案的测试向量中读取TLS 1.3握手.

  • 在没有PFS的情况下读取s_client和s_server之间的SSLv2握手.

  • 使用不同的密码套件针对s_client测试我们的TLS服务器.

  • 针对我们的TLS服务器测试我们的TLS客户端(s_server无法编写脚本).

待办事项清单(可能被好心人遗忘了):

  • 要在加密库中添加(或等待)的功能:

    • RFC 7748中的X448(尚不支持openssl);

    • 压缩的EC点格式.

  • 关于自动机:

    • 通过会话ID或会话票证添加恢复支持.

    • 添加各种检查以检查客户端和服务器之间的差异. ServerHello密码套件可以吗? SKE参数呢? 等等.

    • 添加一些示例,说明如何使用自动机. 通常,我们可以通过Heartbleed展示它.

    • 允许服务器存储一个RSA密钥和一个ECDSA密钥,并根据ClientHello套件选择要使用的正确密钥.

    • 寻找一种在不同时破坏单元测试的情况下正确关闭自动机插座的方法.

  • Miscellaneous:

    • 增强PSK和会话票证支持.

    • 定义几个证书透明对象.

    • 添加扩展的主密钥并加密-然后-mac逻辑.

    • 大部分未使用的功能:DSS,固定的DH,SRP,char2曲线...