3

我正在研究使用 Apple Pay transactionId 来防御跨同一支付门的重放攻击的可能性。防御应该依赖于一个参与签名并且是唯一的字段。

支付令牌格式参考描述paymentData.header.transactionId

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

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

4

1 回答 1

0

这是ApplePayJS 令牌的测试示例:

{
    "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

文档说:

事务标识符

此付款的唯一标识符。

此标识符适用于收据。

谷歌搜索还发现如何使用 Apple Pay 处理退货

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

也是transactionId64 个十六进制字符或 32 个完整字节长。比唯一交易标识符格式长。因此,有足够的空间成为真正的全球独一无二。

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

于 2017-10-26T20:53:13.097 回答