Apple Pay 令牌 transactionId 是全球唯一的吗?

Posted

技术标签:

【中文标题】Apple Pay 令牌 transactionId 是全球唯一的吗?【英文标题】:Is Apple Pay token transactionId globally unique? 【发布时间】:2018-04-08 09:13:44 【问题描述】:

我正在调查是否有可能使用 Apple Pay transactionId 来保护replay attacks 跨越同一支付门。防御应该依赖于参与签名并且是唯一的字段。

但Payment Token Format Reference 将paymentData.header.transactionId 描述为

交易标识符,在设备上生成。

这不足以将其视为全球唯一。

【问题讨论】:

【参考方案1】:

这里是ApplePayJS token的测试示例:


    "paymentData": 
        "version": "EC_v1",
        "data": "...",
        "signature": "...",
        "header": 
            "ephemeralPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6jY12R9PoL7bzaC3/ibs6q6+g/cqjSkiO3GVFld2NVUA6kRlq0iJRT+XzfmGFvRs/G2qwgmWY8fKu7p6Ktgxug==",
            "publicKeyHash": "AJiEM3d+czut7s1t4QdtRBPjSOxw0D6iWSp1MUdXueM=",
            "transactionId": "f8f0c804922303decba1a8a4f7c503df1a6314e44e8db5ae7eb6b7fe0323513b"
        
    ,
    "paymentMethod": 
        "displayName": "MasterCard 1471",
        "network": "MasterCard",
        "type": "debit"
    ,
    "transactionIdentifier": "F8F0C804922303DECBA1A8A4F7C503DF1A6314E44E8DB5AE7EB6B7FE0323513B"

在实践中,它始终具有*** transactionIdentifier 字段匹配不区分大小写的嵌套 paymentData.header.transactionId

docs 说:

交易标识符

此付款的唯一标识符。

此标识符适用于收据。

Google 搜索还会找到How do I process returns with Apple Pay:

在日本,您还可以使用收据上的交易 ID 查找购买并处理退货。

transactionId 也是 64 个十六进制字符或 32 个完整字节长。比Unique Transaction Identifier format 长。所以有足够的空间成为真正的全球独一无二。

仍在寻找更直接可信的证据。

【讨论】:

以上是关于Apple Pay 令牌 transactionId 是全球唯一的吗?的主要内容,如果未能解决你的问题,请参考以下文章

Java中的Apple Pay支付令牌解密

Apple Pay 令牌 transactionId 是全球唯一的吗?

在 Apple Pay 流程之后,支付令牌变得未定义

Apple Pay - 如何将商家公钥与支付令牌中的 publicKeyHash 进行比较?

是否可以从 Apple Pay 令牌中获取卡类型?

Apple Pay - “付款未完成” - 使用 Stripe