← COMP5521 全部讲次
L01 · 第 1 周

L01 电子支付导论:你的卡号要在多少人手里过一遍

从物物交换讲到加密货币,一条主线:付钱时你把信息交给了谁。

一句话版

付钱这件事的历史,是一部让越来越少的人看到你卡号的历史。

一个类比:递钱包

在一家陌生的小店结账,你得把钱包往外递多远?69 页课件都在回答这一个问题。

最早那一级根本没有钱包。物物交换的瓶颈课件写得很直白——Double coincidence of wants(需求的双重巧合):我有米想换布,必须刚好碰上一个有布想换米的人。商品货币用公认价值的金银铜当中介,这个巧合就不必要了。再往上是商品本位,递出去的凭证背后压着发行方的存款。到法定货币这一级,课件给了三条:假设经济与政府高度稳定、凭证不再有存款背书、对发行方的信任取代了存款

之后钱包越递越远,也越递越假。刷卡时完整卡号经过商户;SET 把订单与支付信息隔离;3D-Secure 让发卡行认证持卡人;Apple Pay 付款时给商户的是设备 token 与交易 cryptogram,不是真实卡号,但加卡流程仍涉及真实卡号。扫码支付还要区分谁扫谁、金额由谁决定。最后,加密货币尝试改变集中记账模式。

类比在哪里失效:递钱包是一次性动作,支付是一套要持续清算的系统——p.7 那张图里买方从头到尾没把钱直接交给卖方,钱走的是两家银行之间的行间清算。递得远近也解释不了信用风险:持卡人事后不还钱跟卡号被谁看过毫无关系,这笔账落在发卡行头上,SET 和 3D-Secure 都管不了。加密货币那一级更不算”不递钱包”,它把全部交易摊在链上公开可查,更像把钱包摆在广场上,只是上面没写名字。

概念卡

1. 三条链路分离(Parties in E-Payment)

人话定义:一笔采购同时跑三条互不相同的链路——商流在买卖双方之间,物流走承运方,资金流走两家银行。

例子:p.7 那张图上五个参与方、八条消息,按链路分色看最省事。

五个参与方与三条链路:商流用实线连买卖双方,走 Catalog consultation、Purchase order 与 Response and invoice;物流用虚线,卖方发 Delivery order 给承运方、承运方发 Delivery notice 给买方;资金流用青绿线,买方发 Payment order 给自己的银行,两家银行之间做 Interbank exchanges,卖方银行发 Credit advice 给卖方

常见误解

以为买方的钱直接流向卖方 → 买方只向自己的银行下指令,卖方只从自己的银行收到入账通知,中间隔着行间清算。SET 的五方(p.14)和 3D-Secure 的三个域(p.17)都是这张图的细化版:Issuer 是持卡人那侧的发卡行,Acquirer 是商户那侧的收单行,这一对记反是最常见的失分点。

2. SET 与双重签名(Secure Electronic Transaction)

人话定义:1996 年由 Visa 和 MasterCard 建立的信用卡交易协议,最想做成的一件事是信息隔离——商户看不到客户的账号和密码信息

例子:八步里第 4 步是全协议核心(p.16):客户生成订单信息 OI 和支付信息 PI,双重签名关联两份摘要。下图 OI 明文送商户,PI 用会话密钥加密后转交网关;不要把签名关联和加密保密混成一步。p.59 把两层封装画了出来。

OI 含 OI 正文、OI digest 与 Dual signature,明文直传,商户读得懂;PI 含 PI 正文、PI digest 与同一个 Dual signature,用随机 DES 会话密钥加密,商户读不懂只能原样转走;会话密钥连同 PAN 卡号再用支付网关的公钥封一层,商户没有对应私钥

常见误解

以为 SET 还在用 → 课件评价很直白:今天已经不重要了,因为太复杂,1999 年试图复活也失败。三条批评是复杂、安全门槛设得太高、处理速度慢;根子在于它需要一整套 PKI,所有参与方都得拿到 X.509 证书。但课件保留了一句转折——它仍是彻底解决该问题的一个范本(p.13、p.16)。

3. 3D-Secure 的三个域(Three Domains)

人话定义:2003 年起替代 SET 的方案,核心动作只有一个:Payer authentication(付款人认证)。SET 保护的是数据,3D-Secure 只负责认人,范围小了所以活下来。

例子:三个域分别是 Issuer domain(持卡人、发卡银行及 ACS 访问控制服务器)、Acquirer domain(商户和收款方银行)、Interoperability domain(卡组织提供的基础设施,包括目录服务器和图示的认证历史服务器;ACS 不属于此域)。这里是课件的 3DS 1.x 历史流程,不是现代 EMV 3DS 2.x 全流程。顺序先 VE 后 PA:VEReq/VERes 问这张卡有没有注册 3D-Secure,注册了才发 PAReq/PARes 做真正的认证,最后 MPI 发出的 capture request 才是真正扣款(p.17、p.18、p.60)。谁属于哪个域,看 p.18 那张结构图最直接。

三个竖栏分别是 Issuer domain、Interoperability domain、Acquirer domain。左栏是持卡人与 ActiveAccess 访问控制服务器,中栏是 DServer 目录服务器与 Authentication History Server,右栏是 ActiveMerchant 插件、Acquirer Plug-in 与 Payment Gateway。报文 CRReq/CRRes、VEReq/VERes、PAReq/PARes、PATransReq/PATransRes 分别在哪两方之间跑,图上逐条标出
图片来源:COMP5521 Lecture 1 Introduction, p.18
常见误解

把 “3-D” 当成三维 → 它就是 three domains 的缩写,这是最容易被拿来出题的点。另一处值得记的是 PAReq/PARes 经过持卡人浏览器转发,付款时跳出的银行页面就是它;p.19 那张 Verified by Visa 弹窗里的 Personal Message 是反钓鱼设计——持卡人在发卡行预设一句只有自己知道的话,用来反过来验证这个窗口真的来自银行。

4. Tokenization 的双层结构

人话定义:加卡时系统生成一个 virtual account number(虚拟账号),真实卡号永远不会给到商户;支付时手机发的是令牌化卡号加一个起密码作用的 cryptogram,由卡组织验证。

例子:p.23 的 Apple Pay 泳道图里,生成 cryptogram 的是 SE(secure element,安全元件),不是 iOS。指纹校验通过后才轮到 SE 出手,商户系统拿到的是加密后的客户与支付信息。这和 p.11 网银 USB Key 的思路一样——私钥不可被读出,签名运算在硬件里完成。

上排是加卡时只做一次的流程:真实卡号输进手机,发卡行验证信息并决定是否允许加入,签发 virtual account number 即长期绑设备的 token;下排是每笔支付都重来的流程:Touch ID 通过后 iOS 交棒给 SE,SE 生成一次性绑交易的 cryptogram,商户最终收到的是 token 加 cryptogram

常见误解

以为偷到 token 就能重放支付 → cryptogram 是一次性的,每笔交易都不同。记住双层分工:token 长期、绑定设备;cryptogram 一次性、绑定交易(p.24)。另外加卡时决定放不放行的是发卡行,不是 Apple(p.22)。

把它们串起来

主线藏在 p.36 的四条弱点:网络安全风险、交易不匿名、中心化的卡组织/银行系统、商业成本高。它们和 p.38 加密货币宣称的四条优势一一对应——Non-anonymous 对 Untraceable,Centralized 对 Decentralized nature,成本高对 Fast, safe and cheap,安全风险对 Transparent and neutral。讲完六讲传统支付才跳到比特币,理由全在这一页。

前半讲的三个方案,是同一个问题的三次不同解法。SET 把信息切开,代价是全员配证书,太重所以死了;3D-Secure 不碰信息只认人,范围小所以活了;移动支付让真卡号根本不出现,用硬件和 token 降低商户接触真卡号的风险,不能据此说整个系统不再使用 PKI。“为什么 SET 死了而 Apple Pay 活了”这道题,答案就在这条递进上。而按 p.31 的说法,ApplePay is a wallet、AliPay is a pay:前者只是卡的载体、钱仍在银行卡里,后者是第三方支付、资金进入自己的账户体系——两种模式都只是换了个中心。

课件里的坑

  • [历史版本] 课件 p.46 那张 Bitcoin vs Ethereum 对照图把以太坊标成 Proof of Work → p.48 自己写着它已切换到 Proof of Stake;同图的出块时间 15 秒也与 p.48 的 12 秒冲突,市值数字更停留在 2016 年前后(p.46)
  • [术语纠正] p.16 的“CA 私钥加密”应理解为 CA 签名(sign)、用可信 CA 公钥验签(verify)。验签不是一般意义上的“公钥解密”,不要混用这两组英文术语。
  • [历史版本] 课件 p.48 写以太坊挖矿主要靠显卡 → 这是 PoW 时代的残留说法,转 PoS 之后不再有挖矿(p.48)
  • [适用范围] p.38 的 Untraceable 不适合概括比特币:其地址是化名,交易图公开,可能被关联分析。但隐私与透明并非抽象意义上的逻辑矛盾,应具体说明系统公开了什么、保护了什么。
  • [读图提醒] 课件 p.32 标题写 9 个电子钱包对比 → 表里只有 7 列,Apple Pay 与 G Pay 合并、UnionPay 与 QuickPass 合并(p.32)
  • [页码提醒] 课件 p.50 与 p.51 右下角都印着页码 50 → 页码笔误,不影响内容(p.50)

课后 10 分钟:考点复习

这 10 分钟怎么用:合上页面,先默写三条——传统支付四级阶梯、SET 双重签名为什么要拆成两份、三种码的区分维度;再把下面的「变式题」做一遍;最后回查两个最容易错的地方——以为买方的钱直接流向卖方、以为偷到 token 就能重放支付。三步做完再往下看答案。

必背

  1. 传统支付四级阶梯:物物交换(瓶颈是 double coincidence of wants)→ 商品货币 → 商品本位 → 法币;法币靠「对发行方的信任」取代存款背书。
  2. 三条链路分离:商流在买卖双方之间、物流走承运方、资金流走两家银行清算,买方从不直接把钱交给卖方。
  3. SET 五方:Cardholder / Issuer(发卡行)/ Merchant / Acquirer(收单行)/ CA;八步分三段:1–4 认证与完整性,5–7 支付授权,8 支付捕获。
  4. SET 的核心是双重签名:双重签名关联 OI 与 PI 的摘要,使两边验证同一交易;保密性由各自的加密封装负责;PAN 用支付网关的公钥加密。
  5. 3-D 即 three domains:Issuer(持卡人 + 发卡行 + ACS)/ Acquirer(商户 + 收单行)/ Interoperability(目录与认证历史等基础设施);报文顺序 CR → VE → PA → PATrans → Capture。
  6. Tokenization 双层:token 长期、绑设备,真实卡号永不给商户;cryptogram 一次性、绑交易,由 SE 硬件生成。
  7. 支付宝三模式的区分维度是「谁扫谁 + 金额谁定」:User-Presented 商户扫用户、Order Code 用户扫动态码金额已含、Entry Code 用户扫固定码自己输金额。
  8. 电子支付四条弱点:网络安全风险、交易不匿名、中心化的卡组织/银行系统、商业成本高;课件给的两条解法(加强监管、去中心化加密货币)方向相反。

完整例题

这一讲没有要动笔的公式,换一道对比题——课件 Exercise-2 原题:支付宝提供三种付款方式,说明它们的区别。

第一步别急着背步骤,先立两个区分维度:谁扫谁金额谁定。三种模式在这两个维度上刚好落在三个不同位置。

User-PresentedOrder CodeEntry Code
谁扫谁商户扫用户用户扫商户用户扫商户
码在哪用户手机上商户屏幕上的动态码商户张贴的固定码
金额谁定商户在收银端商户,已嵌在码里用户手动输入
码里含订单吗否,码是身份凭证否,码是商户入口
步骤数699
典型场景超市收银台自动售货机、餐厅路边摊、出租车

第二步按图展开。User-Presented(p.26)六步:商户扫用户付款码 → 商户向 Alipay 请求支付订单 → Alipay 转 Alipay+ MPP → MPP 返回订单 → MPP 向付款码侧展示结果 → Alipay 向商户返回结果。Order Code(p.27)九步的关键在前三步:商户先 Request order、Alipay 返回二维码,用户再扫这个码,金额已经在码里,用户只需确认。Entry Code(p.28)九步的关键在第 2 步:扫完固定码跳转到第三方页面,用户自己输入金额再下单。

第三步补一句场景就够了。只罗列步骤而说不出区分维度,是这道题最主要的失分方式。

变式题(先自己做)

给两个场景,各判一下是哪种码,并说出判据:

  1. 路边早餐摊墙上贴着一张塑封的二维码,一整年没换过。顾客扫完,自己在跳出来的页面里输入 8 元。
  2. 自动售货机的小屏幕上跳出一个码,扫完页面直接显示”可乐 5 元”,顾客点确认就付掉了。
提示

上面那张表的六行不用全背,抓住前两行就够判:谁扫谁、金额谁定。两个场景在第一行上是一样的,真正的分界在第二行。

参考答案与自检(非官方评分标准)

自检要点:① 判据必须落在「谁扫谁 + 金额谁定」两个维度上,只答名字不足以展示判断依据;② 要点明两题在「谁扫谁」上其实相同,分界在金额由谁定、码里带不带订单;③ 可补充第三种模式作对照;这不是官方评分要求。

  1. Entry Code。固定张贴、一年不换 → 码里不可能带订单;金额由用户手输 → 码只是商户入口。对应课件 p.28 九步里第 2 步跳转第三方页面那一段。
  2. Order Code。屏幕上动态生成、金额已嵌在码里、用户只做确认 → 对应 p.27 九步,商户先 Request order 拿到码,用户后扫。
  3. 两题都是用户扫商户,所以「谁扫谁」这一维分不开它们,必须靠金额归属来判。剩下那种 User-Presented 方向正好反过来——商户扫用户,典型场景是超市收银台。

闪卡自测

1. 什么是 double coincidence of wants?后面哪一级解决了它?

物物交换里我有米想换布,必须刚好遇到有布想换米的人。商品货币用公认价值的物品(金银铜)做中介,这个巧合就不再必要(p.4)。

2. 法币和商品本位的关键差别是什么?

商品本位发行的凭证有发行方存款背书,法币的凭证不再有存款背书,课件原话是对发行方的信任取代了存款;前提假设是经济与政府高度稳定(p.4)。

3. 信用卡的三类风险各是什么?分别落在谁头上?

Operational risk(卡被偷)、Credit risk(持卡人不还钱)、Legal risk(交易有瑕疵)。操作风险和法律风险主要落在商户/收单方,信用风险落在发卡行;SET 和 3D-Secure 只解决前两类(p.12)。

4. SET 八步怎么分段?哪一步是清算?

step 1–4 是客户与商户之间的认证、机密性与完整性;step 5–7 是商户与银行之间的支付授权;step 8 是支付捕获,代表商户发起清算请求(p.15、p.16)。

5. SET 第 4 步为什么要用两个不同的会话密钥?只用一个会怎样?

两个密钥才能做到商户只解得开 OI、银行只解得开 PI。只用一个,拿到密钥的一方就能同时看到订单和支付信息,商户看不到卡号这条设计目标直接落空(p.13、p.16)。

6. 第 6 步银行为什么要比对 XID?不比对能构造出什么攻击?

XID 是商户在第 1 步发出的唯一交易号。银行核对 XID 与 PI 里的是否一致,是把 OI 和 PI 绑成同一笔交易;不绑定的话可以把 A 订单的 OI 和 B 订单的 PI 拼接起来(p.16)。

7. VEReq/VERes 和 PAReq/PARes 各在问什么?为什么必须先 VE 后 PA?

VE 是 Verify Enrollment,问这张卡有没有注册 3D-Secure;PA 是 Payer Authentication,才是真正的认证请求与结果。先确认卡在体系里,再发起认证(p.18、p.60)。

8. cryptogram 在哪个部件里生成?为什么不在 iOS 层做?

在 SE(secure element)里生成。敏感运算下沉到独立硬件,操作系统被攻破也拿不到密钥,和网银 USB Key 私钥不可读出是同一个思路(p.11、p.23)。

9. 为什么说 ApplePay is a wallet、AliPay is a pay?对资金流向意味着什么?

Apple Pay 只是卡及信息的载体,资金仍在银行卡里,走卡组织清算;支付宝是第三方支付机构,资金进入它的账户体系,清算在内部完成(p.31)。

10. 电子支付的四条弱点是什么?课件给的两条解法为什么互相矛盾?

弱点是网络安全风险、交易不匿名、中心化的卡组织/银行系统、商业成本高。两条解法一条是加强对网络和电子支付的监管,一条是基于区块链的加密货币,方向正好相反(p.36)。

11. 比特币和以太坊在共识、出块间隔、吞吐上分别是什么?

比特币用 Proof of Work、区块 1 MB、平均 10 分钟出块、SHA-256、约 4.6 TPS;以太坊已切换到 Proof of Stake、区块大小可变、平均 12 秒、约 25 TPS(p.48)。

12. 稳定币的稳定机制与储备要求,为什么不能只看一个抵押率?

课件按法币资产支持、加密资产抵押、算法调节区分机制,不能只按抵押率分类。补充:HKMA 指引要求储备市值至少覆盖流通面值,还限制资产质量、流动性和风险;合资格资产可含现金、短期存款及指定债券等,不等于「全部现金」。具体资格须按指引判断,不能凭代币名称断言。见 HKMA 指引 §2.2–2.3

下一讲

下一讲转进 Number Theory,整节课不再出现支付场景,从 φ(p) = p − 1 和欧拉定理开始,为第 3 讲的 RSA 铺地基。

下一讲 →
L02 L02 数论:一圈 n 格的表盘,和绕不回起点的那些步长

个人整理的学习笔记,不是官方材料;数字与结论以课件和讲师为准。