HyperAI超神经
Back to Headlines

### Python 新 ASN.1 API:提升性能、减少差异性、现代化接口 这个标题简洁明了,涵盖了文章的核心信息:新 API 的三个主要优点(性能提升、减少差异性、现代化接口),同时保持了科技新闻的风格和吸引力。

1 天前

Python 通常用于处理密码学、PKI(公共密钥基础设施)方案以及低级别的网络编程任务,其中必不可少会遇到 ASN.1。ASN.1 是一种描述数据结构的语言,与 Internet 核心协议如 LDAP、SNMP 和 3GPP 以及每项 TLS 握手(通过 X.509 路径验证)的底层实现密切相关。尽管对安全贡献良多,但其复杂的实现和编码规则导致了诸多内存破坏和拒绝服务漏洞。Python 社区目前提供了 pyasn1、asn1 和 asn1tools 多个优秀的 ASN.1 解析库,但它们都是纯 Python 实现,容易导致性能瓶颈和跨库解析差异带来的安全风险。 为此,PyCA Cryptography 团队在 Alpha-Omega 的资助下开始着手开发一个全新的 ASN.1 API。该 API 将使用纯 Rust 编写的高性能 ASN.1 解析器,既能提高性能,又能减少代码库中解析器间的差异,最终降低安全风险。同时,新的 API 采用了现代的数据类风格接口,充分运用了 Python 3 的类型提示功能,使得操作更直观、更符合 Python 的风格,也更易于与其他类型检查工具兼容。 具体来说,新 API 将使开发者能够更轻松地定义和操作复杂的 ASN.1 数据结构。例如,一个简单的 ASN.1 定义如: Doohickies ::= SEQUENCE { tschotchkes OCTET STRING, baubles INTEGER, knickknacks UTF8String, whatchamacallits SEQUENCE OF OBJECT IDENTIFIER, gizmos SET OF GeneralizedTime OPTIONAL } 通过新的 API,对应的 Python 代码可以简化为: from datetime import datetime from cryptography.hazmat import asn1 @asn1.sequence class Doohickies: tschotchkes: bytes baubles: int knickknacks: str whatchamacallits: list[asn1.ObjectIdentifier] gizmos: set[datetime] | None doohickies = Doohickies.from_der(b"...") print(doohickies.tschotchkes) doohickies.to_der() # b"..." 基于这一新 API,开发者可以更高效地处理诸如 Sigstore 生态系统中出现的自定义 X.509 扩展。Sigstore 是一个基于 RFC 5280 的 PKI 系统,用于代码签名和验证。例如,Sigstore 日志条目中的某些扩展可能需要从 Python 代码中提取和解析: raw_cert = b"..." cert = x509.load_pem_x509_certificate(raw_cert) ext = cert.extensions.get_extension_for_oid(x509.ObjectIdentifier("1.3.6.1.4.1.57264.1.16")).value ext_value = Doohickies.from_der(ext.value) print(ext_value.knickknacks) 这个新 API 的开发初衷是解决现有 Python 工具中的几个关键问题: 1. **性能**:纯 Python 实现的解析器在处理大量数据时可能成为瓶颈。使用 Rust 可以实现接近原生的高性能解析。 2. **减少差异风险**:不同的解析器在解析相同的数据时可能会产生不同的结果,增加安全漏洞的风险。PyCA Cryptography 本身已经使用 Rust 解析器来处理其 X.509 API,新的 ASN.1 API 将进一步统一解析器,减少风险。 3. **现代化**:采用现代数据类风格接口,使得 API 更符合 Python 开发者的习惯,同时也兼容类型检查工具。 尽管目前 Python 开发者接触 ASN.1 的频率较低,但它在某些特定场景中(如代码签名和自定义证书扩展)依然非常必要。现有的解析库虽然功能强大,但更新频率较低,且在某些情况下并不完全符合现代开发标准。新 API 的开发不仅能提升特定场景下的开发效率和安全性,还能促进 Python 生态系统在密码学和供应链安全方面的整体进步。 Alpha-Omega 资助了这一项目,PyCA Cryptography 团队也提供了技术支持和设计审查。该团队在 X.509 路径验证等领域的先前工作得到了 Sovereign Tech Fund 的支持,这表明他们有扎实的经验和技术背景。如果您对这一项目感兴趣或希望资助类似的工作,请与 PyCA Cryptography 团队联系。 业内专家对这一项目持乐观态度,认为这将显著提升 Python 在处理复杂数据结构时的性能和安全性。PyCA Cryptography 作为知名的密码学库,一直致力于提高 Python 生态系统的安全性,此次新 API 的开发更是其对这一目标的延续。

Related Links