4个版本

0.1.1 2024年2月9日
0.1.0 2024年2月8日
0.0.2 2024年1月26日
0.0.1 2024年1月25日

#422密码学

26 每月下载量

GPL-3.0 许可证

200KB
3K SLoC

paysec

paysec 是一个Rust库,旨在促进与零售支付交易中的支付安全标准相关的开发和测试。它为需要遵守此类标准的金融机构和支付服务提供商提供资源。

重要免责声明:

paysec 的当前设置主要用于在 测试环境 中生成测试数据。此版本 不推荐用于生产环境,特别是在需要硬件安全模块(HSM)的场景中。此限制的一个重要方面是随机数种子处理:它们必须通过接口明确提供,这使得库适合确定性测试。这种方法与在生产环境中使用的强加密随机生成器和加密硬件加速形成对比,这对于生产环境中的稳健安全至关重要。

您应该知道,虽然该库提供了与支付安全标准一致的工具和功能,但其生产环境中的实用性有限。在现实世界的高安全环境中部署解决方案时,至关重要要集成额外的安全措施和硬件能力。

目录

功能

paysec 提供与支付安全标准一致的功能,主要关注支持至少AES安全级别的标准。虽然可能实现了基于TDES(三重数据加密标准)的其他版本的部分,但它们不是主要关注点。

  • ASC X9 TR 31-2018:根据TR-31密钥块格式包装和展开加密密钥。当前支持版本 D,它使用密钥块绑定方法,特别是AES-CMAC从密钥块保护密钥派生出加密和认证密钥。这包括以下功能:

    • 生成具有包括密钥使用、算法和使用模式在内的完整头信息的密钥块。
    • 支持扩展元数据的多个可选块,例如证书或时间戳。
    • 安全包装加密密钥
    • 解包密钥块以检索原始加密密钥和头信息,确保密钥的完整性和真实性。
    • 最终化密钥块头以符合块大小要求,包括自动填充块插入。
    • 根据TR-31规范验证密钥块结构和头内容。
  • ISO 9564格式4 PIN块:使用ISO 9564格式4标准对PIN块进行编码和加密。这包括以下功能

    • 编码个人识别号码(PIN)字段。
    • 编码主要账户号码(PAN)字段,以便将PIN块与PAN绑定。
    • 使用AES加密对PIN块进行加密和解密,将PIN与PAN绑定以增强安全性。
  • ISO 9564格式3 PIN块:使用ISO 9564格式3标准对PIN块进行编码和解码。请注意,功能编码和组合PIN和PAN字段,但不加密生成的PIN块。编码的PIN块将在单独的步骤中使用如Triple DES等算法进行加密。

使用方法

安装

要开始在Rust项目中使用paysec,您可以使用Cargo安装它。在项目目录中运行以下命令

cargo add paysec 

或者,您可以将以下行手动添加到您的Cargo.toml文件中,位于[dependencies]

paysec = "0.1.1" 

文档和示例

paysec在其模块中配备了全面的文档注释。这些注释不仅提供了关于函数及其用途的详细说明,还包括了doc测试示例,这些示例清楚地说明了如何有效地使用模块。

此外,更详细的文档,包括API参考和更多示例,可在Rust文档网站上找到。请访问paysec文档页面https://docs.rs/paysec/0.1.1/paysec/index.html

PIN块Web工具

PIN块Web工具是此库的实际应用,使用WebAssembly(Wasm)提供用户友好的界面,根据ISO 9564 PIN块生成测试数据。该工具展示了paysec库的多功能性和其在基于WebAssembly环境中的潜在应用。

密钥块Web工具

密钥块Web工具提供了另一个基于此库的Web界面,以便更方便地进行密钥块测试,并举例说明TR-31模块的使用。

未来开发

paysec正在积极开发中,计划包括更多支付安全功能,例如

  • 集成流行的支付网关和协议。
  • 非对称密钥块保护格式(TR-34)
  • ANSI X9.143和ISO 20038对TR-31的扩展
  • 根据要求的其他TR-31版本(A、B、C)。
  • CVV卡验证值生成
  • EMV相关加密
  • 密钥管理Web界面(可能基于Wasm绑定作为独立项目)
  • HSM模拟接口

paysec根据GNU通用公共许可证版本3(GPLv3)许可,这是一个广泛使用的免费软件许可证,确保用户有权运行、研究、分享和修改软件。GPLv3是一个copyleft许可证,这意味着从paysec创建的任何衍生作品也必须以相同的许可证条款分发。有关完整的许可证详情,请参阅源代码中包含的LICENSE文件,或访问GNU通用公共许可证版本3,2007年6月29日页面。

《paysec》实现的版权归David Schmid所有(邮箱:[email protected])。

还应考虑项目内使用的任何相关库的许可证。每个库可能有自己的许可条款,应予以尊重并遵守。

《paysec》的实现可能引用支付安全领域的各种标准和协议。这些基础标准的版权和使用权归各自的组织所有。用户应确保符合这些标准,并尊重其知识产权。

对于与测试无关的商业环境使用案例,或关于超出GPLv3范围的其他许可安排或权限的询问,请联系作者David Schmid,邮箱:[email protected]

依赖项

~135KB