「面對愚蠢,眾神自己也徒勞奮戰。」——席勒(J.C. Friedrich von Schiller)

「狗轉過來吃牠所吐的,愚昧人行愚妄事也是如此。」——箴言 26:11

為什麼安全工程師必須懂銀行與帳務#

無現金支付產業是新冠疫情的贏家之一,因為全球的人都在放棄現金、改用卡片與手機支付。底層的銀行系統涵蓋從卡片處理、網路銀行、高額行間轉帳,到追蹤與清算這一切的後台帳務系統。

這類系統對安全工程師重要,有四個理由:

  1. 它們是核心的專業能力。 你必須理解交易處理才能對付更廣泛的詐欺問題;你也必須理解基於帳務的內部控制,因為它們不只在出錯時提早示警,也驅動企業風險管理。你必須能與財務長談 Gramm-Leach-Bliley、Sarbanes-Oxley 與 PCI DSS 才有可信度。

  2. 帳務驅動了電腦業。 軍方與學界之外的第一台電腦是 Leo,自 1951 年起為 Lyons 咖啡連鎖店做帳。銀行迅速成為計算最密集的應用領域,並自 1960 年代起透過帳務自動化擴散到其他公司。

    它也給了我們一個機密性幾乎不扮演角色、但紀錄的完整性(以及一旦寫下就不可變更)至高無上的、被充分理解的保護模型。

    一個銀行系統應該防止客戶互相欺騙、或欺騙銀行;防止行員欺騙銀行或其客戶;而它提供的證據應該好到讓他們誰也無法靠誣告他人作弊而脫身。

    銀行與帳務開創了雙人控制(dual control)的使用,如今也稱多方授權。

  3. 交易處理系統——不論是 50 美元的 ATM 提款還是一億美元的電匯——是讓商業密碼學成為軍事之外一門獨立學科的那個應用。 它們驅動了加密演算法與協定的發展,以及智慧卡這類支撐技術。許多有教育意義的錯誤,最早就是在金融密碼學領域被犯下(或至少被公開記載)。

  4. 本世紀我們建造的許多全球規模系統,都是設計來規避它們所取代之在地與人工系統中演化了數百年的制衡。

    Google 的使命是藉由破壞先前在地性、規模、信賴與著作權的隱性與顯性控制,讓全世界的資訊都能被取用。Uber 計畫藉由規避全球數千個城鎮的計程車法規來成為全球計程車公司。

    所以一家成功的新創往往必須重新發明控制,這一點也不奇怪——不論是在詐欺與濫用的壓力下,還是在立法者的壓力下。

帳務系統#

從泥球到複式簿記:帳務的八千年

帳務似乎在約公元前 8500 年於中東被發明,就在農業之後。 當人們開始生產剩餘糧食,他們就開始儲存與交易它。突然間他們需要一種方式來追蹤哪個村民把什麼放進了公共倉庫。

一開始,每一單位食物(羊、小麥、油……)由一個泥製代幣(bulla)代表,放進一個泥製信封中,用倉庫管理員的圖案滾壓封印,然後在窯中烘烤。當農夫想取回食物時,封印會在見證人在場的情況下被管理員打破。(這也許是已知最古老的安全協定。)

  • 約公元前 3000 年,這導致了書寫的發明;再過一千年,我們就找到本票、提單這類東西的對應物。
  • 大約同時,金屬錠開始被用作中介商品,往往由試金者封在泥球中。
  • 公元前 700 年,呂底亞的克羅伊斯王開始直接在金屬上打印,從而發明了硬幣。

下一項重大創新可追溯到中世紀。 隨著黑暗時代結束、貿易開始成長,有些商號變得太大而無法由單一家族管理。最早可辨識為現代銀行的機構就出現在這個時期;藉由在多個城市設分行,它們得以為貿易融資。

歷史學家已在十二世紀開羅的猶太商人紀錄中找到複式帳目,不過第一本論述它的書要到 1494 年才出現。

複式簿記背後的想法很簡單:每筆交易被登入兩本不同的帳簿,一本記貸方、一本記借方。

例如當一家公司賒銷 100 美元商品給客戶時,它在「銷貨」帳戶記 100 美元貸方、在「應收帳款」帳戶記 100 美元借方。當客戶付款時,它會貸記應收帳款(從而減少「應收款項」這項資產),並借記現金帳戶。(會計學校教的原則是「借記收受者,貸記給予者」。)

一天結束時,帳簿應該要平,也就是加總為零;資產與負債應該相等。在除了最小的公司之外的所有公司裡,帳簿由不同的職員保管。

我們把事情安排成每個分行都能個別結平。每位出納員在把現金屜鎖進金庫過夜前都會結平;現金帳的借方應恰好與他所收的實體鈔票平衡。

所以多數詐欺需要兩人以上串通,而這種責任分割原則(雙人控制/多方授權)由稽核互補。帳簿不只在年終被稽核,也有隨機稽核;督察可能毫無預警地降臨某分行,堅持所有帳簿在員工下班前必須結平。

技術在 1879 年到來,當時俄亥俄州代頓的 James Ritty 取得「不可腐化的出納員」專利,引入了帶鈴鐺與紙帶的收銀機。Ritty 是一位酒館老闆,他的員工偷他的錢。他把專利賣給 John H. Patterson,後者創立了國家收銀機公司(NCR)——它不只成為銀行與帳務設備的領先供應商,還分出了 IBM,而 IBM 主宰電腦業直到 1990 年代被微軟取代。

銀行中的帳務#

銀行是電腦記帳的早期採用者。從 1950 年代末、60 年代初的支票處理這類應用開始,他們發現即使當時緩慢又昂貴的電腦,也比一大隊職員便宜得多。

用於帳務的電腦系統通常宣稱實作了複式簿記主題的各種變體,但品質參差不齊。職責分離功能可能只是使用者介面上的一層皮,而底層資料仍對技術人員開放操弄。

例如若所有帳簿都只是同一個資料庫的視圖,那麼有實體存取權與資料庫編輯工具的人就可能繞過控制。員工也可能注意到漏洞並加以利用:有家銀行不稽核地址變更,直到一名出納員發現他可以改客戶地址、發一張額外的銀行卡、再把地址改回來。

傳統核心銀行系統的資料結構:

結構內容
帳戶主檔每位客戶的當前餘額,連同大約 90 天的歷史交易
各種帳簿(ledgers)追蹤現金與其他資產在系統中的流動
交易日記帳(journals)已從提款機、櫃員站、商家終端等收到、但尚未登入帳簿的交易
稽核軌跡記錄誰在何時做了什麼

所以一個想增加自己帳戶餘額的程式設計師,必須從別的帳戶把錢拿走,而不能只靠調整帳戶主檔憑空造錢。

正如傳統企業有由不同職員管理的不同帳簿,銀行資料處理部門也會有不同的開發團隊負責不同子系統。此外,所有程式碼都要接受內部稽核員的審視、以及獨立測試部門的測試。核准後,它會跑在沒有開發環境、只有核准過的目的碼與資料的正式機器上。

Clark-Wilson 安全政策模型#

這類系統自 1960 年代演化,但其安全政策的形式模型要到 1987 年才由 Dave Clark(電腦科學家)與 Dave Wilson(會計師)提出。

在這個模型中,某些資料項受到約束,只能被某一組轉換程序作用

  • UDI(無約束資料項)藉由特殊程序輸入,變成 CDI(受約束資料項);
  • **完整性驗證程序(IVP)**檢查任一 CDI 的有效性(例如帳有沒有平);
  • **轉換程序(TP)**在銀行案例中可視為保持平衡的交易;一般而言它們維持 CDI 的完整性,並把足夠的資訊寫入一個僅可附加的 CDI(稽核軌跡),以便重建交易。

存取控制透過三元組(主體, TP, CDI)進行,其結構使多方授權政策被強制執行。九條規則:

  1. 系統應有一個 IVP 來驗證任何 CDI 的完整性;
  2. 對任何 CDI 套用 TP 必須維持其完整性;
  3. CDI 只能被 TP 改變;
  4. 主體只能對特定 CDI 發動特定的 TP;
  5. 三元組必須對主體強制執行適當的職責分離政策
  6. 某些特殊的 TP 可以把 UDI 作為輸入、產生 CDI 作為輸出;
  7. 每次套用 TP 都必須讓足以重建它的資訊被寫入一個特殊的僅可附加 CDI;
  8. 系統必須認證試圖發動 TP 的主體;
  9. 系統只能讓特殊主體(即安全官)更改與授權相關的清單。

有幾件事值得一說:

  1. 不像 Bell-LaPadula,Clark-Wilson 模型涉及維持狀態。 除了稽核軌跡,這對雙人控制通常也是必要的,因為你必須追蹤哪些交易已被部分核准。
  2. 模型並不能做所有事。 它捕捉了「狀態轉換應保持某個不變式(如平衡)」的想法,但沒有捕捉「狀態轉換應該是正確的」。這個模型不會阻止你把現金存進錯的銀行帳戶。
  3. 困難的問題仍在:我們如何控制不誠實員工的風險?規則 5 說必須支援「適當的職責分離政策」,但對這是什麼意思隻字未提。

許多控制是形式合規而非真正的風險降低,有些甚至有害。 例如四大在 1990 年代抓住 NIST 的建議,要人們每個月換密碼;撰稿時(2020 年)他們仍在對稽核客戶推銷這件事——然而 NIST 早已在證據面前撤回該建議,而英國 GCHQ 也建議公司不要讓密碼老化。

設計內部控制#

從 COSO 到 SOX:法規背景
  • 美國有贊助組織委員會(COSO),一個由會計與稽核團體構成的群體。然而自我監理未能阻止網路泡沫時代的過度行為,而在 Enron 崩潰後,美國立法者以 2002 年的 **Sarbanes-Oxley 法(SOX)**介入。
  • SOX 規管所有美國公開發行公司:讓高階主管對財務報告的準確性與完整性負責(執行長必須簽署其真實性);保護吹哨者(他們是內部詐欺資訊的主要來源);並讓經理人負責維持「充分的財務報告內部控制結構與程序」。它也要求稽核師揭露任何「重大弱點」。SOX 的多數合規成本被認為來自內部控制。
  • 更早的 **Gramm-Leach-Bliley 法(GLBA, 1999)**在許多方面自由化了銀行監理,但要求銀行必須有安全機制保護資訊免於可預見的安全與完整性威脅。

稽核師的工作由國際審計與確信準則理事會的「國際審計準則 315(ISA 315)」驅動。 ISA 315 聚焦於「組織帳目中出現重大錯誤陳述」的風險,不論是因錯誤還是詐欺。稽核師應理解該事業及其內部控制系統;他們會識別重要帳戶(如現金)、每個帳戶的重要聲明(如存在性)、以及影響它們的重要業務流程(如銷貨)連同這些流程所含的控制。

如同我們在第三部會討論的,確保「對錯誤的安全」與「對攻擊的安全」有兩種基本取徑:

  • 由上而下:從你希望不要發生的壞事清單(例如「大額未授權電匯」)出發,列舉可能原因並識別緩解風險的控制;
  • 由下而上:從可能失效的東西(例如「某位員工被勒索」)出發,推導可能造成的傷害,再識別適當的控制。

識別出需要用職責分離緩解的風險後,你可以用兩種方式做:

方式說明經典例子
雙人控制(多方授權)兩個以上的主體共同授權一筆交易軍事:核武指管系統可能要求兩名軍官同時轉動距離遠到誰也搆不到兩把鎖的鑰匙。民間:銀行開立保證書
功能分離兩個以上的員工以互補的方式作用於一筆交易企業採購:主管做採購決定 → 採購部開採購單 → 倉管記錄到貨 → 發票到會計 → 會計職員比對三者並開支票 → 會計主管簽支票

如果你能讓 A 銀行為 B 銀行給你事業的貸款做保,那麼 B 銀行在監管你的帳戶,而冒風險的是 A 銀行的錢。握有偽造或以貪腐手段取得之保證書的騙子,可以慢慢地把 B 銀行的貸款帳戶掏空,而警報只有在他違約、B 銀行向 A 銀行要錢時才會響起。

而功能分離不止於此:主管的月報表上會出現該內部帳戶的借記,他的上司會檢視帳目以確保部門利潤目標可望達成,內部稽核部門隨時可能降臨稽核該部門帳簿,而外部稽核師一年一次會查隨機抽樣部門的帳簿。最後,當詐欺被發現時,公司律師可能全力追討。

對這三條腿的倚賴程度取決於應用:

  • 偵測可能延遲、因而復原困難之處(如貪腐的銀行保證書),你就在預防上投入額外心力,或許使用雙人控制。
  • 預防很難之處,你可以讓偵測夠快、復原夠猛,以形成嚇阻。經典例子是銀行出納員很容易拿走現金,所以你每天在他們下班前數錢。
為什麼「兩個工程師簽核」比「兩個銀行員簽核」難得多

設計內部控制系統是高度跨領域的。 財務主計、人事、律師、稽核師與系統人員都從不同方向切入問題、提供片面的解法、彼此不理解對方的控制目標,於是事情就從中間的洞掉下去。

必須讓控制與文化相配,並激勵人們使用它們;經營較好的銀行會把管理控制推銷給員工,說那是保護他們免於勒索與綁架的手段。

如第 3 章所述,組織中的員工只有這麼多遵循預算——他們只願意花這麼多時間精力做礙事的安全儀式。變成儀式的控制,可能在其目的被遺忘或不再相關後仍被實行多年。

而正如你會要求不只一位銀行員核准大額交易,你也可能想要求不只一位工程師核准要跑在正式系統上的程式碼。但這因若干理由而難以徹底做到:

  1. 許多介面提供單點失效。
  2. 分責的系統管理實在太乏味。
  3. 雙人控制往往需要持久狀態,這與程式設計師「讓交易保持不可分割以維持簡單」的願望緊張對立。
  4. 隨著公司把開發與營運整合為 DevOps、再加上安全變成 DevSecOps,它們可能最終有更多受信任的員工;至少信任的位置會改變,更多信任移往原始碼審查階段。
  5. 有緊急狀況。 ATM 系統週末當機,ATM 團隊的待命工程師從家裡取得正式系統存取權來修臭蟲。你記錄這類存取,並讓稽核師盯著日誌。
  6. 你最頂尖的工程師懂得遠比稽核師多,如果他們真的想,就能做壞事,這是無可避免的。

他們被抓到的地方,是平衡控制在一兩天後拉響警報,而他們匯錢過去那家銀行的反洗錢控制阻止他們拿走太多。

要點是:沿「預防-偵測-復原」模型的功能控制,往往比共享控制更重要,因為它們分開的不只是存取權,還有專門知識(know-how)。

在真實銀行裡,你可能會發現有三、四十個人是你就是必須信任的——執行長、首席交易員、頂尖系統管理員與其他若干人。知道他們是誰、把人數壓到最少、付他們好薪水、並低調地看著他們,這很重要。

內部人詐欺與高層詐欺#

多數公司的偷竊都出自內部人,而自動化似乎讓事件變得更罕見也更巨大。

回到多數銀行員在分行工作的年代,英語世界的銀行每年開除約 1% 的員工。典型犯行是損失數千美元的輕微侵佔。沒有人找到有效預測哪些員工會變壞的方法;先前忠誠的員工可能因離婚、或碰上一個實在受不了的新主管而脫軌。每年損失幾百名出納員只是做生意的成本。

這些數字現在正在下降,因為多數員工在客服中心工作,他們處理的客戶是隨機分配的,所以很難與朋友串通。員工現在也較難販售客戶個資,因為必須先陪客戶走過安全問題才能取得紀錄。

三個內部人案例
  • 英國近年最大的銀行詐欺由格拉斯哥東區的一名幫派分子 Feezan「Fizzy」Hameed 幹下,2016 年被判 11 年。他在 2013–15 年間從勞埃德銀行的企業客戶偷走至少 1.13 億英鎊,其中只有 4,700 萬被追回。

    他吸收了兩名員工,替他找出目標公司——通常是帳戶裡有超過一百萬英鎊的中型公司。Fizzy 接著會打電話給企業主或財務主管,宣稱來自銀行,藉由唸出幾筆近期交易來「認證」自己,然後要求對方用其第二因子裝置算出一組授權碼來「認證」自己。

    而在他這麼做之前,他已經以對方身分登入、設好了一批大額五位數的付款。他從受害者那裡拿到的碼,就釋放了那一整批付款。

  • HSBC 的一名密碼重設職員與身分不明者共謀,更改了 AT&T 用來存取其 HSBC 帳戶的密碼。新密碼被用來把超過 2,000 萬美元轉到境外公司,錢沒有追回。那名職員是個脆弱的年輕人,因內部考試不及格而被派去做密碼重設;法院憐憫他,只判了五年。

  • 2010 年代快速成長的一種銀行詐欺,是對中型公司的會計人員做魚叉式釣魚並接管兩個員工帳戶。擁有兩台職員的 PC 比策反兩名職員簡單,而如果一家公司的 PC 全都是相同的組態與更新狀態,那可能不太難。由於銀行可能對大額交易格外注意,遊戲往往是在公司注意到之前先做一大堆四位數的付款。

所有著名的大型金融詐欺(九位數以上)都涉及資深內部人。

霸菱銀行的崩潰是好例子:經理們因「流氓交易員 Nick Leeson 表面上的交易利潤所帶來的獎金」而目盲於貪婪,未能控制他。

其他例子包括 Equity Funding 醜聞(一家保險公司的管理層在電腦系統上造出數千個假人、替他們投保、再把保單賣給再保險公司),以及 Robert Maxwell 洗劫英國《每日鏡報》退休基金。要嘛受害者的高層嚴重過失(如霸菱),要嘛他們就是加害者(如 Equity Funding 與 Maxwell)。

而這些模式會重演:富國銀行在 2020 年因在客戶不知情下開立數百萬個帳戶而被罰 30 億美元——與 Equity Funding 案如出一轍。

誰真正揭發了企業詐欺?

經濟學家與會計學教授把這類議題分析為代理問題:委託人 A 僱用代理人 B 管理資產,問題是 B 的表現要如何被監控與評估。同樣的原則適用於「執行長 vs. 正在盤算詐欺的經理」,也適用於「股東 vs. 執行長與資深高層」。

理論上,內部控制與內部稽核部門是執行長用來追蹤下屬的工具,而外部稽核師是股東用來追蹤執行長與資深高層的工具。

實務由 Dyck、Morse 與 Zingales 在一份涵蓋 1996–2004 年間 230 起對美國上市公司之企業詐欺案的調查中分析:

在 Sarbanes-Oxley 之前,只有少數詐欺是由「應該發現它們的人」揭發的:

揭發者比例
稽核師14%
SEC6%
員工19%
產業監理者16%
金融分析師14%
媒體14%

他們對誘因的分析顯示:最有動機吹哨的行為者(如放空者)最不活躍,而最活躍的(員工)往往有負面誘因——他們會被開除。 這暗示主導因素是誰真正知道發生了什麼事

第二,獎勵促進揭露:除了 SOX 的效果,許多政府行為者(如稅務機關)會獎勵吹哨者,效果是正面的。

理論上外部稽核師由董事會稽核委員會任命,該委員會由外部董事主持;但誰任命外部董事? 依作者的經驗,外部董事往往與執行長友好,而稽核師則不遺餘力地討好財務長。

他們提供便宜的稽核以踏進門,然後從顧問業務賺真錢;這數十年來是個結構性問題,最終在 2020 年 2 月,英國財務報告委員會下令把稽核與顧問業務分離。

大型稽核公司對資訊安全世界有惡性影響:他們推銷自己最愛的控制清單,不管客戶的真實風險。他們靠吹毛求疵與合規來最大化收入;SOX 法規讓美國一般上市公司每年花超過一百萬美元的稽核費。

除了純經濟誘因之外,老闆們難以面對「資深同僚無能或不誠實」的證據。 關於資訊迴避有一整套文獻:人們不願學習會帶給自己痛苦、壓力或額外工作的事。

郵局案:唯一一次帳務系統受到真正的司法檢驗

高層也可能不願相信自己的帳務系統可能出了系統性問題。 即使起了疑,也有「面對批評時關起門來團結」的社會反射,而律師可能建議客戶全盤否認。

值得研究的案例是英國郵局帳務系統的失敗。郵局不只寄信,也是重要的金融機構,其多數分支由分郵政局長經營——通常是店主,店裡有一個特許的郵局櫃檯。為了控制他們,郵局建了一套叫 Horizon 的帳務系統。

最終 587 名分郵政局長控告郵局,並在 2019 年 12 月贏得一份道歉與 5,800 萬英鎊。法官認定 Horizon「一點也不穩健」。

許多法律體系推定帳務系統運作正常,除非有人能提出反證,而這可能很難:大量法律工夫花在迫使郵局讓原告取得軟體與其文件,以便由他們的專家檢視。

順帶一提,特許經營者的總損失似乎在數億英鎊之譜;他們大概只會從 5,800 萬的和解金中拿到 1,100 萬左右,其餘歸律師與資助訴訟的避險基金。 郵局多數員工在此期間減薪,而身兼受任牧師的執行長卻大幅加薪。

生態效度:帳目也必須對應外部現實#

光檢查帳簿內部一致是不夠的。你還必須檢查它們對應到外部現實。

從 McKesson & Robbins 到 Wirecard

塑造現代稽核要求與實務的一系列醜聞,始於 1938 年 McKesson and Robbins 的崩潰——一家帳面資產 1 億美元的知名藥品與化學公司。結果 20% 的登記資產與存貨並不存在。

該公司總裁 Philip Musica 原來是個有前科的私酒販子;他與三個兄弟用一個涉及假貨運代理與假蒙特婁銀行的虛構外國藥品業務灌水帳目。

稽核師接下 McKesson 的案子時未對公司老闆做任何查詢;他們未能盤點存貨、未向客戶驗證應收帳款、也未思考公司內部的職責分離。

  • 1963 年的沙拉油醜聞:Allied Crude Oil Refining 公司破產,其執行長 Tino de Angelis 被 Robert F. Kennedy 起訴。Allied 以「大部分其實是水」的黃豆油槽為抵押,向美國運通等借了數百萬並大量炒期貨。 美國運通股價在吹哨者告知詐欺後跌了 50%,損失 5,800 萬美元。(巴菲特接著買下該公司 5% 股份,賺了一大筆。)
  • Enron(2001)導致 SOX 法案。
  • 2008 年金融危機部分肇因於交易「以近乎一文不值之房貸為基礎」的複雜金融衍生品。

所以當你看到一家銀行談論「用區塊鏈登記房貸、讓智慧合約促成金融創新」時,你或許該抱持一點懷疑。

本書 2020 年 9 月付印時最新的醜聞是 Wirecard。

它是一家支付服務公司,起初替色情網站、線上賭場與其他正常銀行不碰的商家處理卡片付款。它快速成長到把商業銀行擠出 Dax 30(德國最大 30 家上市公司指數),並在德國被歌頌為一家罕見的、能挑戰矽谷的本土公司。

(EY 三年來未曾向其銀行查證銀行對帳單,而是倚賴公司自己提供的「螢幕截圖」。)

該公司申請破產,執行長 Markus Braun 被捕。一連串用它處理付款的金融科技新創停止營運,讓德國內外數百萬持卡人無法動用自己的錢。

然而投資人與監理者忽略了無數的紅旗,最早可回溯到 2008 年。更糟的是,當《金融時報》2019 年發表一份對 Wirecard 可疑會計實務的分析——指出其杜拜子公司似乎沒有客戶、某個所謂菲律賓子公司的地址是一家小巴士公司、另一個是一位退休海員的家,而其新加坡子公司的吹哨者報告他們被命令做假帳——時,

這是歐洲史上最大的詐欺之一,摧毀了超過 200 億歐元的表面股東價值,以及公眾對德國金融監理的信心。 途中 Wirecard 還騙過了穆迪、瑞士信貸與軟銀這類公司。看到 McKesson and Robbins 的教訓被如此漠視實在令人震驚——查核海外現金餘額真的應該是稽核 101。

找出弱點#

如果你曾負責一個組織的安全,你不該只想「哪些元件的失效可能造成大到影響損益的損失」。你也必須想到人,以及他們的外部關係。

  • 你的哪些經理可能與客戶或供應商串通詐騙公司?
  • 分行經理會不會用偽造的抵押品借錢給他表哥經營的可疑事業?
  • 他會不會賣人壽保單給不存在的人、再偽造他們的死亡證明?
  • 營運經理會不會收供應商的賄賂?
  • 你的客服中心員工會不會把他們處理過之帳戶的資料賣給釣魚集團,讓後者冒充你的公司對付你的客戶?

記住那個「每年 1% 的員工落入誘惑」的老經驗。記住:受信任的人就是能傷害你的人。誰能傷害你、又如何?這正是控制維護者必須不斷思考的。

要學的教訓包括:

  • 在變動的環境中維持有效的控制很難,需要一位資深的人來擁有它。
  • 如果你倚賴客戶或員工的投訴來得知詐欺與系統失效,你最好有讓他們聯絡你、讓你聽見他們的好辦法。 許多公司靠「難以被聯絡」來削減成本,但那是有後果的。
  • 主要暴露來自公司自己的員工與承包商,所以你最好跟夠多人談,並問「如果你想詐騙公司,你會怎麼做?」
  • 不要只以交易與流程思考,也要思考人、誘因、社會規範,以及操弄或恫嚇他人的權力。 你是不是期待人們在沒有任何激勵結構、而吹哨者只有風險的情況下,彼此保持誠實?
  • 沒有任何安全政策能達到完全遵循,因為人們要應付真實生活就需要變通做法。
  • 這些變通做法自然會製造漏洞,所以你最好設計出人們能遵循的控制。
  • 你最好與公司高層有工作關係,好讓你理解他們哪些人正在承擔與你職責相關的風險,也讓他們理解你在做什麼。

行間支付系統#

當人們想到電子詐欺時,他們常想像好萊塢場景中狡猾的俄羅斯駭客破解銀行密碼、把千億美元匯到避稅天堂。轉帳系統確實是犯罪目標,而且已經當了一個半世紀。

電子商務的電報前史

許多人以為電子商務是 1990 年代中期發明的,但它可追溯得更早。

政府自古典時代起就使用視覺信號,包括日光反射信號機、旗語與旗幟。拿破崙戰爭後,法國政府把日光反射信號網路開放商用,而不久就發生了第一批詐欺。

在 1836 年被發現之前的兩年間,兩位銀行家賄賂一名操作員,靠在傳輸中製造他們能從安全距離觀察到的錯誤,來隱密地向他們發送股市動向。

1760 到 1840 年代,電報由若干先驅開發,其中最有影響力的是 Samuel Morse。他在 1842 年說服國會資助一條從華府到巴爾的摩的實驗線路。這讓人們印象深刻,於是認真的商業投資開始了;到那個十年結束時,已有 20 家公司經營一萬兩千英里的線路——這在許多方面就像 1990 年代末的網路熱潮。

銀行是第一批大用戶,並發現他們需要機制防止交易在途中被作弊的操作員更改(就是第 5 章談的測試金鑰系統)。電報也創造了全國市場:紐約的大宗商品交易員第一次能在幾分鐘內知道芝加哥的拍賣定了什麼價。

十九世紀的答案是可信中介者——主要是銀行,它們用推薦信、保證與信用狀協助企業管理風險。

到 1970 年代,銀行家開始意識到這套可敬的維多利亞系統該大修了:

  1. 多數測試金鑰系統易受密碼分析;觀察若干交易的人能逐步推出金鑰材料。
  2. 測試金鑰系統不支援雙人控制。秘密表格鎖在保險箱裡,兩名職員會一起計算測試值並核對;但實質上沒有什麼能阻止員工同時為未授權訊息算出測試值。
  3. 真正的顧慮是成本與錯誤。 使用人工密碼學意味著每筆交易至少被鍵入三次:一次進付款銀行的電腦(列印到電報室,在那裡人工計算測試值);一次送出電報給收款銀行(他們人工核對測試值);第三次由該銀行鍵入自己的電腦。錯誤比詐欺更成問題。

SWIFT#

一群銀行在 1970 年代設立了環球銀行金融電信協會(SWIFT),提供一個更安全、有效率、可控制的行間付款指令傳送機制。它可以被想成一個內建認證與不可否認服務、加上選配加密的郵件系統。 它每天被用來在全球運送數兆美元。

設計約束很有意思:

  • 銀行不願信任 SWIFT 到「其員工能偽造銀行交易」的程度
  • 認證機制必須獨立於機密性機制,因為當時若干國家(如法國)禁止民間使用密碼學做機密性;
  • 不可否認功能不能用數位簽章,因為那時還沒發明;
  • 銀行必須能對行間交易強制執行可稽核的雙人控制

SWIFT I 的設計:

  • 真實性靠在寄送銀行計算、在接收銀行檢查的訊息認證碼(MAC)保證。金鑰過去用雙邊金鑰交換管理:每當一家銀行在海外建立關係,談成它的資深經理就會與其對口交換金鑰。有兩個金鑰成分以最小化洩漏風險,每個方向各送一個(即使某位經理的信件在一端被罪犯讀了,也不太可能兩端都發生)。認證要到雙方都確認對方的金鑰已安全收到並安裝後才啟用。

  • 不可否認:各國銀行把訊息送到一個區域一般處理器(RGP),後者記錄並轉發給 SWIFT,SWIFT 也記錄並經由目的國的 RGP 送給接收者,該 RGP 同樣記錄。RGP 一般由不同的服務公司經營。

    因此任何想不誠實地否認交易的銀行家,不只必須顛覆本地的 SWIFT 應用及其周邊控制,還得顛覆兩個不同國家的獨立承包商。而日誌對法官來說比密碼學容易理解。

  • 機密性是選配的加值項,由銀行與 RGP 節點之間、以及這些節點與 SWIFT 主處理站之間的線路加密裝置提供。在機密性違法的國家,這些裝置可以省略而不損及真實性與不可否認機制。

  • 雙人控制由專用終端機或可與其他銀行系統整合的軟體套件提供。通常做法是三名不同員工做一筆 SWIFT 交易:一人輸入、一人核對、一人授權。還有進一步的功能控制:每天靠比對交易與對帳單來對帳。所以一筆通過輸入控制的假付款指令,應該會在下一個營業日觸發警報。

SWIFT 出過什麼事

SWIFT I 運作了二十年,沒有一起針對系統本身的外部詐欺通報。 1990 年代中期在對 MAC 演算法的攻擊被發表後,它加入了公鑰機制:SWIFT II 仍用雙邊金鑰交換,但 MAC 金鑰改用公鑰密碼學在通匯銀行之間共享,而 MAC 本身再用數位簽章保護。

這引發了關於此架構安全性的爭論。撇開公鑰密碼學帶來的信任集中化(中央憑證機關可能虛假地認證某把金鑰屬於某銀行)不談,至少有一次早期部署因美國出口管制而採用了 512 位元公鑰,而到 2000 年,至少已有一把這種長度的 RSA 公鑰被一群學生私下分解。

一場政治風波在密碼學開始被強化、並預設提供機密性後爆發。《紐約時報》2006 年 6 月揭露 NSA 正在存取整個交易串流,於是 NSA 乾脆要求存取一切。 這與注重隱私的歐洲人形成對抗,但最終在歐巴馬繼任後,歐盟達成一項條約,讓美國財政部能對 SWIFT 發出傳票。

(相對於政府的)犯罪攻擊並未針對支付機制本身,而是針對周邊的商業流程。

銀行程式設計師不時會把一筆假訊息插入處理佇列,但通常失敗,因為他不理解商業流程。

國際電匯的實際運作方式是:銀行之間互相開戶,所以當 A 銀行匯錢給 B 銀行的客戶時,它其實是送出「請從我們在你處的帳戶支付以下金額給這位客戶」的指令。由於這些帳戶有餘額也有信用額度,而付款可能得經過一或多家通匯銀行,大額付款需要人為介入才能讓錢可用。 還有偵測大額交易以便向反洗錢機關通報的過濾器。

所以一個天真的程式設計師偷塞一筆假交易到他在瑞士銀行開的帳戶,通常會在他去領現金時被逮捕。

最著名的透過 SWIFT 進行的攻擊發生在 2016 年 2 月 4–5 日,北韓探員從孟加拉銀行竊走 6,300 萬美元。他們似乎用 Dridex 惡意程式竊取銀行員工憑證,然後下了四筆交易,把 8,100 萬美元從該行在紐約聯準會的帳戶轉到菲律賓,只追回 1,800 萬,其餘經由一家當地賭場洗白。 另有 30 筆總額 8.51 億美元的交易被聯準會標記為需人工審查而未送出;再一筆 2,000 萬送到斯里蘭卡,但因付款銀行注意到一個拼字錯誤而止付追回。

多數重大詐欺利用的是程序漏洞而非技術攻擊:

  • 1979 年,電腦顧問 Stanley Rifkin 從太平洋安全國家銀行侵佔超過一千萬美元。他藉由同意向一家俄羅斯政府機構在瑞士購買一大批鑽石來繞過控制。他觀察到向電匯部門口述轉帳時內部使用的授權碼,然後在電話上使用它——這是典型的系統介面處雙人控制崩潰。他還挑在美國銀行假日之前動手以爭取逃跑時間。他的錯誤在於沒有計畫拿到鑽石之後怎麼辦;如果他把石頭藏在歐洲、回美國協助調查,他很可能就逃掉了。
  • 1986 年倫敦-約翰尼斯堡之間的一起詐欺。當時南非政府有兩種匯率,某銀行中負責決定每筆交易適用哪種匯率的經理與倫敦一個富人共謀:他們以 7 蘭特兌 1 英鎊把錢匯到約堡,隔天再以 4 蘭特兌 1 英鎊匯回來。兩週後央行報了警。 該經理在交易室看到警察後,連外套都沒拿就開車越境到史瓦濟蘭、經奈洛比飛往倫敦。在那裡他向媒體吹噓自己如何詐騙了邪惡的種族隔離體制。由於英國沒有外匯管制,外匯管制詐欺不是罪,所以他不能被引渡。這大概是作者所知唯一一起「行為人不只帶著數百萬全身而退、還能公開吹噓」的案子。
  • 保證書詐欺:由於開立時沒有現金易手,平衡控制不起作用。如果一份偽造的保證被當成真的接受,「受益人」就能慢慢從承貸銀行借錢、洗白然後消失。 只有當承貸銀行意識到貸款壞掉、去向出具銀行要錢時,偽造才被發現。

這不只是系統管理、介面、甚至共享控制密碼學的技術問題;核心是商業流程設計。而且關鍵交易往往在隨意檢視下看起來並不關鍵。

適當的分責通常需要功能分離,而要做到那個,你必須真正理解該應用在其社會與經濟脈絡中的樣貌。

自動櫃員機(ATM)#

ATM 是二十世紀最有影響力的技術創新之一。它們由發明家 Luther Simjian 在 1938 年構思(他也想出了提詞機與自動對焦相機)。

他說服花旗 1939 年在紐約裝設他的「Bankamat」機器,但六個月後就撤了,理由是「唯一使用這些機器的人,是一小群不想面對面跟櫃員打交道的妓女與賭徒」。

它的回歸在 1967 年,當時巴克萊銀行在倫敦恩菲爾德裝了一台 De La Rue 製造的機器。據世界銀行,如今全球有超過 240 萬台,即每十萬名成人 41 台。

簡言之,ATM 是讓現代商業密碼學與零售支付技術起飛的「殺手級應用」。

基本運作#

多數 ATM 用的是 IBM 為其 1970 年代末 3624 系列現金機器開發之系統的某個變體。

PIN 的產生方式:

  1. 卡片磁條含客戶的**主帳號(PAN)**與到期日;
  2. 用一把叫「PIN 金鑰」的秘密金鑰加密 PAN;
  3. 把結果十進位化並截斷 → 得到自然 PIN
  4. 可以加上一個**偏移量(offset)**得到客戶必須輸入的 PIN。
PAN:                  8807012345691715
PIN 金鑰 KP:          FEFEFEFEFEFEFEFE
DES{PAN}KP 的結果:    A2CE126C69AEC82D
十進位化後:            0224126269042823
自然 PIN:              0224
偏移量:                6565
客戶 PIN:              6789

一個叫**硬體安全模組(HSM)**的密碼處理器放在銀行機房中,管理客戶 PIN 以強制執行雙人控制政策:

  1. 對客戶 PIN 明文值、以及保護它們之金鑰的操作,永遠在安全密碼裝置(SCD)中進行,於是銀行員工除了自己的 PIN 之外看不到任何 PIN。
  2. 卡片在一個有壓印機、磁條編碼機與晶片初始化機的設施中個人化,而 PIN 郵件在另一個含連接 HSM 之印表機的獨立設施中列印。它們相隔幾天寄出。
  3. 終端機主金鑰以兩份印出的成分供應給每台 ATM,由不同的人分別帶到分行、在 ATM 後方鍵盤輸入並合併成金鑰。(與 VISA 這類網路交換中心之間設定主金鑰則用三人的類似儀式。)
  4. 若 ATM 在本地驗證 PIN,PIN 金鑰就用終端機主金鑰加密後送到 ATM。金鑰存在本地 SCD——鍵盤旁的防篡改晶片——中,它要嘛在 PIN 輸入時驗證,要嘛加密它們以送到中央 HSM 檢查。
  5. 若該銀行的 ATM 要接受其他銀行的卡,PIN 會在 ATM 的 SCD 中加密後送到該銀行,該銀行解密後用與 VISA 這類交換中心共享的金鑰重新加密。這個「PIN 翻譯」功能完全在 HSM 內完成。

在兩萬家銀行之間做雙邊金鑰交換或財務清算是不可行的,所以每家銀行連到 VISA 這類交換中心,而這些交換中心的 HSM 翻譯流量。 交換中心也做帳,讓銀行能用一筆借記或貸記結清每天的交易。

工程師當年擔心的「末日情境」,以及它真的發生的那一次

1980 年代設計 ATM 網路與安全系統的工程師(作者是其中之一)假設罪犯會相對老練、對系統設計相當了解,且在攻擊方法的選擇上是理性的。

我們擔心過:

  • 許多銀行遲遲不買安全模組;
  • 銀行偷工減料,例如在授權回應上省略認證碼;
  • 加密演算法夠不夠強、防篡改 HSM 夠不夠防篡改、產生金鑰的亂數產生器夠不夠隨機;
  • 我們知道自己就是無法適當地強制雙人控制:銀行經理認為碰鍵盤有失身分,所以在維修後多數人不會自己輸入 ATM 主金鑰成分,而是把兩份成分都交給 ATM 工程師。

末日終於降臨。

2017 年 12 月,南非 Postbank 的一把金鑰在資料中心搬遷期間被存在筆電上而遭洩漏。不知怎的,它被複製到一支記憶棒上;執行長也有一份。副本本應在見證人面前銷毀,但不知怎的有一支棒子不見了。

2018 年 3 月到 2019 年 12 月間,5,600 萬蘭特(340 萬美元)在 56,000 筆交易中被偷走,多數來自發給貧困退休人士領取國家補助的卡片。2019 年 2 月,央行下令 Postbank 重發全部 1,200 萬張卡,花費 10 億蘭特(6,000 萬美元)。

出了什麼錯#

卡片支付系統有龐大的交易量、多樣的營運者,以及大量有能力且有動機的對手。 一波又一波的卡片詐欺中,漏洞被發現、被利用、最後被修補。整體模式是:卡片詐欺的金額隨時間增加,但佔交易的比例下降;系統在規模與經驗成長的同時,正緩慢變得更安全。

1990 年代第一波:Andrew Stone 與磁條卡的原罪

第一波在 1990 年代初,利用早期磁條卡系統糟糕的實作與管理。

在英國,一名多產的詐欺犯 Andrew Stone 三度因 ATM 詐欺被定罪,最後一次判了五年半。他偶然發現了「加密替換」的把戲:他把自己銀行卡上的帳號改成他妻子的,發現能用自己的 PIN 從她的帳戶提錢。事實上,他能用自己的 PIN 從該銀行的任何帳戶提錢——因為他的銀行把加密後的 PIN 寫到卡片磁條上,卻沒有把它與帳號連結。

他的第二個方法是「肩窺」:站在受害者後面觀察輸入的 PIN,再撿起丟棄的 ATM 單據。當時多數銀行在單據上印出完整帳號,而一張卡片上沒有其他正確資訊也能用。

1990 年代初實際的「幽靈提款」似乎有三個成因:

  1. 單純的處理錯誤造成穩定的爭議背景噪音。已開發國家每人每月約四筆交易;光英國每月就是 2.4 億筆。即使錯誤率只有十萬分之一,那也是很多爭議。

    我們追查到的一個錯誤來源是:某大型銀行的 ATM 在「網路在收到銀行伺服器確認訊息前中斷」時會重送交易;而伺服器本身週期性當機並忘記未結交易,造成重複借記。 我們也找到帳戶被記入別的客戶交易的客戶,以及卡片交易從未被借記的客戶。(我們常戲稱這些是「董事卡」。)

  2. 郵件竊盜在 1990 年代被認為佔英國全部卡片損失的 30%,而郵務控制程序多年來仍然慘澹。2003–5 年磁條卡被晶片卡取代時,郵件竊盜又激增一次。主要修補是讓你必須打電話到客服中心或造訪網站啟用卡片才能使用。

  3. 不誠實或疏忽的銀行員工造成的詐欺是第三大成因。我們偶爾遇到 ATM 維修人員在 ATM 內部裝竊聽器記錄客戶卡片與 PIN 資料的案子,1990 年代還有一起作弊內部人以每次 50 英鎊替被竊卡片算出 PIN 的案子。近年則有更大的案子,罪犯想出如何社交工程銀行客服中心,把新卡發到他們控制的地址。

還有大量因粗心設計而起、或帶來技術教訓的詐欺:

  • 肩窺在 1980 年代中期首見於紐約,到 1990 年代中期在灣區仍然有效。到那時它已被自動化:灣區罪犯用帶動作感測器的攝影機窺探 PIN,不論是租下俯瞰 ATM 的公寓、還是把租來的廂型車停在那裡。視覺複製很容易阻止:如今標準是只印帳號末四位,而自 1990 年代初起卡片磁條上有一個絕不能被印出的三位數卡片驗證值(CVV)然而 CVV 並不總是被檢查。

  • 臭蟲與失誤造成的損失。 1980 年代賣出的一款 ATM 有個「測試出鈔」碼,只要在鍵盤輸入某個十四位數序列,就會吐出十張最小面額的鈔票。有家銀行把這個序列印在分行手冊裡,三年後突然爆發一波損失。(而儘管作者 1993 年就記載過這件事、2001 年第一版又寫了一次,類似事件遲至 2007 年仍被通報。)

  • 便利商店用的某些款式 ATM 可以被重新設定成「以為自己在吐 1 美元鈔票、其實在吐 20 美元鈔票」;只需要線上手冊裡印著的預設主密碼。 任何知道這件事的路人都能走到機器前重設鈔票面額、領走 400 美元,而帳戶只被扣 20 美元。

  • 許多銀行的作業安全程序糟糕透頂。 作為實驗,作者的妻子 1993 年帶著一名見證人走進他們銀行的一家分行,說她忘了 PIN。櫃員很熱心地從櫃檯後 PC 連接的印表機印了一份新的 PIN 郵件給她——就這樣! 那不是他們開戶的分行,沒有人認識她,而她提供的所有身分證明就只有銀行卡與支票簿。

  • 一個 40 年來一直有效、至今對許多 ATM 仍有效的技巧是「黎巴嫩迴圈」:騙子把一圈膠帶(也許來自舊錄影帶)裝進 ATM 吞卡口然後等受害者。卡片被圈住,受害者放棄它;騙子取回卡片,如果他設法看到了 PIN,就去購物。

  • 高科技手法是用假終端機或側錄器蒐集卡片與 PIN 資料。 第一份通報來自 1988 年的美國:罪犯做了一台會接受任何卡片與 PIN、並吐出一包香菸的販賣機。1993 年,兩名歹徒買了一台真 ATM 與其軟體開發套件,把它寫成竊取卡片資料與 PIN,並裝在康乃狄克州的購物中心。到 2000 年代中期,卡片側錄器在黑市上廣泛可得。2015 年一個羅馬尼亞幫派被抓到在墨西哥觀光景點操作 100 台 ATM,每月竊取 2,000 萬美元。磁條卡就是太容易複製,卡片技術必須改變。

  • 自 2010 年代中期起偶有「吃角子老虎(jackpotting)」攻擊:罪犯駭入 ATM 讓它持續吐鈔直到空為止,方式包括讓 ATM 感染惡意程式(線上或藉由實體接觸 USB 埠)、或實體插入流氓電子裝置。

近年 Acar、Fahl 等人的研究顯示,許多(若非多數)安全失敗可被視為程式設計師可用性失敗;正常的程式設計師應付不了資安宅所愛建造的複雜密碼 API 與存取控制機制。資安宅注意密碼學是因為數學有趣,但較不注意「無趣」的部分——例如創造非專家真正能用的工具。所以壞人很少需要破解密碼學。

有組織犯罪介入的第一個跡象是 1999 年在加拿大,數十名據稱的東歐組織犯罪人物因在多倫多地區部署動過手腳的銷售點終端機而被捕。關鍵因素是罪犯開始專門化與組織化。

誘因與不義#

Judd v Citibank、Munden 案,與「舉證責任在誰」

在美國,銀行承擔了與新技術相關的大量風險。

在一起歷史性案件 Judd v Citibank 中,銀行客戶 Dorothy Judd 主張自己並未做那些有爭議的提款,而花旗說既然其系統是安全的,她一定做了。

法官裁定他「不準備走到這一步:判定當一位可信的證人面對一台機器的不利『證詞』時,法律上也就面對了無法達成的舉證責任」——並把錢判還給她。

美國聯準會把這個觀點納入「Regulation E」,要求銀行退還所有有爭議的交易,除非它們能證明客戶詐欺。 這導致了一些輕微濫用,但通常少於破壞公物造成的損失。

在其他國家(如英國、荷蘭與挪威),銀行多年來得以宣稱其 ATM 系統絕對可靠。 他們主張幽靈提款不可能發生,而投訴的客戶一定是搞錯或說謊。

John Munden 案:他是作者當地的一名警員。1992 年 9 月他度假回來,發現自己在 Halifax 建屋互助社的帳戶空了。他要求對帳單,發現六筆共 460 英鎊他不記得的提款,於是投訴。Halifax 讓他被以「意圖以欺騙取得金錢」起訴。

審判中揭露:他們的 IT 相當破爛;有爭議的交易未被適當調查;而他們提出各種荒唐的主張,例如他們的 ATM 系統不可能有臭蟲,因為軟體是用組合語言寫的。

儘管如此,那是他的話對他們的話。他 1994 年 2 月被定罪並停職。 就在上訴即將審理前,檢方端出一份 Halifax 稽核師的報告,宣稱其系統安全。辯方要求同等地存取該行系統以供自己的專家檢視。Halifax 拒絕,於是法院排除了它所有的電腦證據。案子崩潰,John Munden 被判無罪並復職。

銀行真正需要的安全性質不是雙人控制,而是不可否認性——交易各方事後能證明發生了什麼的能力。裝 ATM 攝影機或許能提供這個;然而在 1992–4 年的 ATM 詐欺潮中,少數幾家裝了攝影機的銀行被其他銀行施壓而撤除——攝影機證據威脅到銀行「其系統絕對可靠」的集體立場。

信用卡#

信用卡自 1950 年代由 Diners Club 發明後多年,被多數銀行當成吸引高價值客戶的賠本商品。 最終商家與持卡人數量達到臨界質量,交易量起飛。

當你用信用卡在店裡付款時,交易從商家流到其銀行(收單銀行),後者在扣除通常略低於 2% 的商家折扣後付款給他們。若卡片由另一家銀行發行,交易接著流到 VISA 這類交換中心,再傳給發卡銀行付款。

每筆交易有兩個成分授權(你在商家出示卡片,他們想立刻知道要不要把貨給你)與清算(走另一套系統,通常兩三天後才把錢送到商家)。

信用卡詐欺的演化

從 1950 到 1990 年代,信用卡交易的處理方式是用卡片壓印在多聯單上做紙本銷貨單、寫上金額、讓客戶簽名,然後像支票一樣處理。

被竊信用卡的詐欺風險,傳統上靠熱卡清單與商家樓層限額管理。 1980 年代電子終端機被引入,讓店員能刷卡自動取得授權。罪犯的回應是偽卡洪流:1989 到 1992 年間,磁條偽造從偶發的困擾成長到佔總詐欺損失的一半。

郵購與電話銷售的引入,帶來了「無卡(CNP)」交易。 銀行用到期日當密碼、降低樓層限額、提高商家折扣,並堅持送到持卡人地址(授權時應檢查其數字部分)來管理風險。但主要的改變是轉移責任,讓商家承擔爭議風險。

VISA 對日增的卡片偽造與線上詐欺的回應,是卡片驗證值(CVV)——對磁條內容(帳號、版本號、到期日)計算的三位數 MAC,寫在磁條末端。

它們有效:1994 年第一季,VISA 的詐欺損失下降 15.5%,而 Mastercard 上升 67%。所以 Mastercard 也採用了 CVV。

罪犯轉向側錄:經營正當生意,但把真實客戶的卡片刷過一台額外的未授權終端機以取得磁條副本,再重新編碼到一張真卡上。

銀行的回應是入侵偵測系統,試圖靠關聯投訴客戶的購買歷史來識別作弊商家。到 1990 年代末,較聰明的作弊商家學會吸收客戶那筆交易的成本。

你在黑手黨開的小酒館喝一杯、出示卡片、簽單,然後沒注意到那筆錢從未出現在帳單上。一兩個月後,帳單上出現珠寶、電器甚至賭場籌碼的鉅額扣款。到那時你早已忘了那家小酒館,而銀行從來沒有它的紀錄。

2000 年代初,高科技罪犯隨著電子犯罪專門化而變得更有組織。 線上犯罪論壇(2003 年起於俄羅斯與烏克蘭)的出現,讓惡意程式作者、殭屍網路牧人、釣魚網站營運者與提領專家能互相交易並精進本業。論壇上提供記錄磁條卡與 PIN 資料的假終端機與側錄器。

線上卡片詐欺#

1995 年起網路熱潮展開,企業趕著建網站。 當時有一種焦慮:在網際網路上使用信用卡會導致詐欺雪崩,因為「邪惡駭客」會攔截郵件與網頁表單、以百萬計地收割卡號。這種恐懼驅使微軟與 Netscape 引入 SSL/TLS 來加密信用卡交易。

攔截郵件與網頁流量確實可能(尤其在端點),但要大規模做很困難。許多網站多年來沒有加密、或只有弱加密,而真正的問題結果不是竊聽而是釣魚。

即使釣魚也要到 2004 年後才大規模展開;而在那裡(如第 3 章所述)問題更多是心理學而非密碼學。TLS 本身幫不上忙,因為能設中間人攻擊的壞人只要拿到憑證加密流量就行。網站的網域名會不同,但期待多數民眾注意到那件事並不合理,尤其銀行與商家自己也用各式各樣的變體網域。

VISA 多年來有規則禁止商家在交易處理後保留信用卡資料,但許多商家無視它們。 隨後出現了支付卡產業資料安全標準(PCI-DSS)。PCI DSS 規則要求持有持卡人資料(帳號、到期日)之系統要有基本衛生,而 CVV 與 PIN 這類敏感資料則完全不得儲存。

商家面對的真實誘因,第一是爭議的成本,第二是安全外洩揭露法。 揭露法造成了差別,因為通知客戶要花真錢,而發生外洩之公司的股價可能跌好幾個百分點。

至於爭議:許多國家的消費者保護法讓否認交易變得容易。基本上客戶只要打電話給信用卡公司說「我沒有授權那筆」,帳單就落到商家頭上。

這在「幾乎所有信用卡交易都在本地、多數金額顯著」的年代還行得通。如今許多交易是國際的、金額很小,而透過信用卡系統驗證海外地址並不牢靠。所以否認交易並全身而退的機會增加了。

遏制惡劣網站的主要煞車是信用卡退單(chargeback)。 銀行通常會為每一筆退單向商家收 100–200 美元的費用,外加從其帳戶扣回交易金額。所以若你網站上超過一小部分的交易被客戶質疑,你的利潤就會被侵蝕;若退單率超過約 10%,你的銀行可能終止服務。

這促使商家小心——留意奇怪的訂單(例如一次買四支手錶)、來自可疑國家的訂單、使用免費郵件服務的客戶、要求加急配送等等。

但把郵購交易的大部分責任留給他們並非最佳解:銀行對詐欺模式知道得多得多。共擔責任或許好得多,但法律體系不擅長那個。

兩種系統性攻擊:漸進猜測與憑證填充

漸進猜測:所有網站都必須要求主帳號與到期日,但商家也可能要求卡背的 CVV、以及持卡人地址中的數字。

從一個有效帳號出發,你在只檢查到期日的商家網站上猜到期日;然後在也檢查 CVV 的網站上猜 CVV;接著猜郵遞區號數字;最後從也檢查門牌號的網站猜門牌號。

外面有夠多網站讓這對 VISA 卡有效;Mastercard 有中央監控,大約十次失敗猜測後就會把卡號列入熱卡清單(不過這可能導致阻斷服務攻擊)。

憑證填充:壞人從被攻陷網站取得數百萬組郵件/密碼組合,拿到其他能榨出價值的網站試用。

3D Secure 與詐欺引擎#

**3D Secure(3DS)**是支付卡產業設計的單一登入系統。當商家擷取超過某門檻的付款交易時,會重導到銀行伺服器,邀請客戶用密碼或第二因子(如發到手機的簡訊碼)認證該筆交易。

客戶初次註冊多年來是弱點。 許多銀行起初讓 3DS 伺服器直接註冊其客戶,並在卡片首次於參與商家使用時索取密碼——這個過程叫「購物中啟用(ADS)」。有些甚至讓客戶在忘記密碼時重新註冊,所以系統起初很容易被駭。

它也讓客戶習慣在一個網址與銀行毫無關係的網站上輸入銀行密碼,而有一家銀行甚至讓客戶在那裡輸入 ATM PIN。

詐欺引擎:從 1990 年代中期起,人們開始研究更好的金融入侵偵測;如今所有有規模、接受無卡交易的網站,都有一個決定接受或拒絕每筆交易的詐欺引擎。

兩種取徑:

  • 異常偵測:用各種門檻等技術尋找不尋常的模式;
  • 濫用偵測:尋找已知的詐欺模式。

現代機器學習技術讓這類機制稍微沒那麼惱人,但現代支付系統每秒數萬筆交易的規模,意味著即使 0.1% 的偽陽性率也會製造出客戶投訴的消防水柱。

例如 FICO 維護一份最可疑 ATM 的清單。訂閱其服務的銀行在交易被拒時(不論因為卡被竊、PIN 錯誤還是帳戶空了)就通知它,該 ATM 因而在「熱 ATM 清單」上升。當騙子拿一疊被竊卡片到某台 ATM 時,它會在三四張卡內衝到清單頂端,然後拒絕任何由訂閱銀行發行的卡。騙子會以為那些卡都不能用而丟掉。目前全球超過 40% 的銀行(按發卡量)訂閱此服務。

如果安全是財務長的責任,他會把它看成成本中心並試圖最小化;但對行銷長而言,偽陽性率改善 25% 就等於「銷售增加 1%」,他們會樂意為此付真錢。

EMV 支付卡#

2003 年以來最大的投資是新卡片技術:銀行用 EMV 智慧卡取代信用卡與簽帳卡,接著是卡片與手機的非接觸式支付

EMV 標準規定晶片卡及其在 ATM 與零售支付終端機中的支撐協定,最初由 Europay、Mastercard 與 VISA 開發,後由 EMVCo 維護與擴充。晶片卡 2003–6 年在英國推出,然後是其他歐洲國家(多數在商店與 ATM 都用 PIN,因此系統被稱為「晶片與 PIN」)。在美國與新加坡,晶片卡搭配簽名使用,系統叫「晶片與簽名」。

基本協定#

C → T :  PAN, d1, CertKB(PAN, d1)
T → C :  N, t, X, d2, PIN
C → T :  d3, MACKCB(d3, T, N, t, X)
  1. 卡片把憑證送到 PIN 輸入裝置(PED)或終端機,含**主帳號(PAN)**與發卡銀行簽署的憑證;
  2. 終端機送出一個不可預測數(nonce)N、日期 t、請求付款金額 X,以及持卡人輸入的 PIN;
  3. 卡片檢查 PIN,若正確就計算授權請求密文(ARQC)——對 N、d3 與 X 的 MAC。

ARQC 用卡片與銀行共享的金鑰 KCB 計算。商家無法檢查它,所以必須要嘛接受離線付款的風險、要嘛透過支付網路把交易送到發卡銀行。銀行檢查 ARQC 與可用資金,若一切正常就回傳一個也含**授權回應密文(ARPC)**的回應。

EMV 的演化史:SDA → DDA → CDA,以及每一階段的攻擊

靜態資料認證(SDA):2011 年前在許多國家的預設變體。由於使用無法做公鑰密碼學的便宜卡片,沒有卡片公鑰,PIN 是明文送到卡片的。 所以它仍易受中間人裝置竊聽,就像它所取代的磁條卡一樣。

起初用在會為了可靠性與相容性而回退到磁條處理的本地 ATM;從 2000 年代末起,罪犯改把目標放在美國、泰國這類尚未採用 EMV 的國家。

2006–9 年的犯罪潮部分針對加油站。 對作者當地劍橋 BP 加油站的攻擊,涉及在天花板裝一台擷取 PIN 的閉路電視攝影機,加上一個取得卡片資料的竊聽器;超過 200 名當地人發現自己的卡片副本被用在泰國的 ATM。

作者團隊因此調查了一批 PIN pad,發現這類攻擊很容易。例如 2007 年英國部署最廣的終端機 Ingenico i3300 有一個使用者可觸及的隔間,能接觸到電路板底層。我們發現一個直徑 1 mm、承載序列資料訊號的過孔,只要用一根彎曲的迴紋針穿過塑膠上的孔就能輕易接觸,而不留下任何外部痕跡。

法國遭遇一波使用「yescards」的攻擊。 這些卡被寫成接受任何 PIN(因而得名),並用真卡的憑證參與 EMV 協定,但為 MAC 回傳隨機值。在低價值商品(點心、地鐵票)以離線交易販售的年代,它們運作良好。

另一族問題與認證方法有關。 每張卡、每台終端機都有一份偏好的**持卡人驗證方法(CVM)**優先清單。卡片可能說:「先試線上 PIN 驗證,若不支援就用本地 PIN 驗證,若不行簽名也可以,若連簽名都拿不到,那你就不需要認證客戶了。」

一旦你有中間人裝置,許多攻擊就變得可能。 作者的兩位學生為一個電視節目實作了中繼攻擊:咖啡館裡的假終端機用無線電接到一張假卡。當一位記者要在其中一位學生操作的收銀台付 5 英鎊買蛋糕時,交易被中繼到另一位學生在書店裡等著買 50 英鎊書的假卡。那筆 50 英鎊的交易成功通過了。

iCVV、DDA 與 CDA:

  • iCVV(積體電路卡驗證值):自 2000 年代中期起,銀行實作了讓晶片中的 CVV 不同於磁條上與簽名條上的版本。三者一旦都不同,只讀晶片的側錄器理論上就無法製作可用的磁條偽卡(這叫通道分離)。
  • 動態資料認證(DDA):EMV 目前的預設變體。DDA 卡能做公鑰密碼學,各有一把私鑰 KC。密碼學用於兩個功能:卡片首次插入終端機時被送一個 nonce 並簽署它,向終端機保證卡片在場;終端機接著送出一個含「不可預測數」與用卡片公鑰加密之 PIN 的區塊。這阻止了側錄器蒐集 PIN。
  • 組合資料認證(CDA):勞斯萊斯級的變體。像 DDA,但卡片還對 MAC 計算簽章,讓終端機能驗證交易,從而支援更安全的離線運作。

No-PIN 攻擊:

2009 年作者團隊收到數起可信投訴:受害者的卡片被偷後在商店使用,而銀行拒絕退款,宣稱他們的 PIN 被使用了——而受害者堅稱 PIN 不可能被洩漏。

Murdoch、Drimer 與作者調查後發現:一個中間人裝置能告訴終端機「卡片已接受 PIN」,同時告訴卡片「終端機發起的是晶片與簽名交易」。

協定中,卡片資料 d3 含一個標示 PIN 是否被驗證的旗標,而終端機也分別回傳同樣資訊的旗標給收單銀行。然而卡片旗標是發卡機構專屬的、而非 EMV 標準,所以預設不被檢查。

2011 年 5 月四名罪犯在法國被捕。No-PIN 攻擊的做法是把被竊卡片的晶片切下來、黏在一張業餘者用智慧卡的晶片底下,然後把後者寫成執行中間人攻擊。 該幫派用 40 張改造卡在 7,000 筆交易中偷走約 60 萬歐元。

直到 2017 年,該攻擊才在英國確定失效。然而若卡片或商家終端機由非英國銀行發行,攻擊可能仍然有效。

疊加式智慧卡可能在 2018 年底於中國、也許還有義大利被用於這類攻擊。這些是厚約 180 微米、上下都有接點的極薄智慧卡,原本在中國被開發來支援手機漫遊。這類裝置是攻擊的理想工具:廣泛可得、省下製作精細客製硬體的麻煩,而且容易使用(用 Java Card 寫程式)。

預播(preplay)攻擊#

從馬約卡到巴塞隆納:兩起案件揭開的漏洞

2011 年 6 月 29 日,一位在馬約卡度假的匯豐馬爾他客戶發現自己帳戶被扣了四筆 ATM 交易——而他當時卡片就在身上。 他前一晚在一家他覺得員工可疑的餐廳吃飯,懷疑卡片被複製。匯豐拒絕退款,於是他聯絡了作者團隊。

我們建議他要求交易日誌。結果發現 ATM 產生的「不可預測數」只是一個每 3 分鐘循環一次的 16 位元計數器。

對 DDA/CDA 卡,EMV 的認證步驟是:

T → C :  T, N, t, X, d2, {PIN}KC
C → T :  d3, MACKCB(d3, T, N, t, X)

如果我知道某台終端機明天會產生哪個「不可預測數」N,而我今天手上有你的卡,那我就能算出一個明天能在那台機器上生效的 ARQC。

Bond、Choudary、Murdoch、Skorobogatov 與作者因此改裝了一張支付卡(黏上微型微控制器、記憶體與時鐘晶片),調查了劍橋周邊的 ATM。

我們回頭查 EMV 規格,發現終端機的測試程序只要求測試者抽三個「不可預測數」並確認它們不同。

2012 年 9 月,一名蘇格蘭水手在巴塞隆納蘭布拉大道的酒吧點了杯酒,用 EMV 卡付了 33 歐元(他以為如此)。他昏了過去,隔天早上醒來,當天稍晚發現自己在勞埃德銀行的帳戶被扣了十筆各 3,300 歐元——當時共 24,000 英鎊。

銀行宣稱既然晶片與 PIN 被使用,他要負責。他委任律師並聘請我們,取得了銀行的交易日誌。

我們把它命名為「預播攻擊」:其精髓不是重播舊交易,而是錄下你將在未來記帳的交易。 如果會用同一台終端機,那麼「由終端機產生不可預測數」這件事就讓攻擊變得容易。

此後我們在歐洲若干國家看到預播攻擊的案例,通常針對脫衣舞俱樂部與其他性產業公司的顧客。

2014 年,英國伯恩茅斯一家鋼管舞俱樂部的顧客投訴店員把他灌醉、在 13 筆交易中扣了他 7,500 英鎊。經媒體報導後,超過十幾位其他受害者出面,包括在回到家上床後才被扣款的人——這暗示是預播攻擊而非單純的妓女洗劫醉客。

然而我們無法說服警方突襲該俱樂部尋找證據,它最終拿回了完整執照。

預播問題因此持續存在,而作者擔心我們終究會遇到一起命案。 做預播攻擊的皮條客常在受害者的飲料中下藥,而如果你把喝醉的人麻醉、留他們在妓院沙發上睡,同時洗劫他們的銀行帳戶,那麼遲早會有人吸入嘔吐物。

如果你口袋裡有那麼多現金,你大概不會走進治安不好的區域,甚至沒有幾個大塊頭朋友陪著就不敢走在大街上。支付卡遮蔽了這種審慎反射,讓我們能花掉遠多於冷靜清醒時會花的錢。

非接觸式支付#

非接觸式支付由 Mobil 1997 年在美國開創,2000 年代被從倫敦到東京的多個運輸系統採用。巴克萊 2007 年發行第一批非接觸式銀行卡;VISA 與 Mastercard 開發了 EMV 的非接觸式變體;Google 2011 年推出 Android Pay。

2020 年疫情造成又一次從現金到非接觸的大規模轉換:英國 ATM 交易從一月的 2.32 億筆掉到四月的 9,100 萬筆,現金交易從三分之一掉到十分之一,而非接觸限額從 30 英鎊提高到 45 英鎊。

基本想法很簡單:終端機產生「不可預測數」N,卡片用 KC 對選定的交易資料產生一個 3 位數的動態 CVV,連同 N 送給發卡銀行。風險靠交易限額緩解(2020 年美國 100 美元、英國 30 英鎊)。

如同一般 EMV,N 由終端機而非銀行產生,所以預播攻擊是可能的,但在多數國家因交易限額而不成問題。

然而非接觸支付從卡片延伸到手機,帶來了額外的複雜度,而我們現在的系統是兩家卡片組織競爭提案的混搭。

非接觸的實作失敗與 Tesco Bank 案

非接觸卡推出時有常見的實作失敗:

  • 在某些商店,如果你用接觸式交易付款、卻把裝著另一張非接觸卡的錢包留在終端機附近,你可能被收兩次錢。

  • 研究者也想知道騙子能否在街上擦身而過時,靠與受害者卡片做 RFID 交易來收割卡號、安全碼與到期日——或不拆信封就讀取郵寄中的卡片。

    紐卡索的 Martin Emms 等人證明這是可能的,並發現了更有趣的瑕疵:一家英國銀行甚至讓你猜一次 PIN;在另一些銀行,現金限額對外幣交易失效。

2016 年 11 月 5 日,這導致了對英國 Tesco Bank 的重大詐欺:巴西的罪犯在行動裝置上用非接觸介面送出磁條資料,張貼高額交易。假交易金額達 8,261 個客戶帳戶的 220 萬英鎊;雖然最終損失只有 70 萬英鎊,該攻擊製造了大量詐欺警報,而該行週末的工作程序應付不了。 直到 11 月 7 日才擋住假交易串流,許多合法交易也被擋,正常客戶服務到 9 日才重啟。監理機關為此開罰 1,640 萬英鎊。

2019 年,Galloway 與 Yunusov 發現你可以靠假裝成手機把非接觸限額從 30 英鎊提高到 5,500 英鎊,而且還有可利用的預播攻擊。這些攻擊利用了手機/卡片/終端機的複雜度:Android 手機可能依「螢幕是否關閉」與「使用者是否近期認證過」而有多個限額,而手機與終端機互相發送未認證的旗標。

2020 年,Basin、Sasse 與 Toro 發現一個改良的中間人攻擊:交易從一張被竊卡片經由兩支手機路由到非接觸終端機,該終端機接受了「持卡人已用手機自身的認證機制(如生物辨識)驗證」的主張。

這在倫敦是個問題:若你進站後未出站刷卡,會被收最高票價。若進出站閘門在你錢包裡看到不同的卡,你最後付的是最高票價的兩倍。

近期發展是 SPoC(商用現成裝置上的軟體 PIN),它把「近乎明文的磁條 + 強加密的 PIN」這個舊假設倒過來:SPoC 規則是——PIN 無法被強保護的裝置,絕不能得知相關的卡片資料。

如果 PIN 是在商家的 iPhone 上輸入(如今在 Apple 商店可見),就會有另一個叫**安全讀卡機-PIN(SCRP)**的元件插進手機、接受客戶卡片。即使手機 app 被攻陷,壞人也不知道那個 PIN 可以用在哪張卡上。

網路銀行#

1985 年,世界第一個居家銀行服務由蘇格蘭銀行提供,其客戶可用英國電信經營的專有郵件系統 Prestel 付款。當 Steve Gold 與 Robert Schifreen 駭入 Prestel 時,媒體與銀行家嚇壞了,但實際風險很小:該系統只允許指定帳戶付款——你只能在自己的帳戶之間、以及向已通知銀行的帳戶(如瓦斯與電力供應商)匯款。

釣魚與其後的軍備競賽#

第 3 章總結了釣魚從 1990 年代起源到 2003 年被用於線上銀行帳戶的歷史。壞人從 http://www.barqlays.com 這類粗糙的誘餌,發展到 http://www.barclays.othersite.com 這類欺騙性誘餌;銀行最初的反應是責怪客戶。

隨著約 2005 年起地下犯罪論壇興起、支援日增的專門化(就像正常經濟一樣),幫派迅速變得更老練。一個幫派寫惡意程式、另一個養殭屍網路,而我們開始看到接受贓款並洗白的專家。

慣用手法是洗劫你能洗劫的任何客戶帳戶,並把錢送到復原速度最慢的那家銀行的被攻陷帳戶。英國銀行 2006 年損失的 3,500 萬英鎊中,超過 3,300 萬由單一家銀行損失。

第二個戰場是資產追回:詐騙者試圖迅速把錢弄出國外並洗白,而業界與執法機關試圖阻止他們。

直到 2007 年 5 月,首選路線是 eGold(在佛州營運但法律註冊在加勒比海的公司,提供未受規管的電子支付)。eGold 被 FBI 突襲關閉後,歹徒開始把錢經由芬蘭的銀行送到其波羅的海子公司再到俄羅斯。第三個選擇是西聯匯款這類電匯公司:釣魚者以「在家工作、擔任外國公司代理人賺取佣金」的職缺招募車手。

監理者在打地鼠:一個通道被關掉,另一個就開了。洗錢容易的銀行——業界稱之為「車手銀行」——甚至詐欺較少,因為大幫派希望它們在鏈條中作為第二環節能有用得久一點,所以避免鎖定其客戶。

這強調了「預防-偵測-復原」模型的重要性:在認證本身無法完成任務、而你又找不到殺傷鏈中其他脆弱點時,你必須強化互補它們的入侵偵測機制。

CAP、銀行惡意程式與手機第二因子

CAP(晶片認證程式):2006 年銀行宣布了基於 EMV 的雙因子認證標準,隔年推出。它是一台可插入你 EMV 銀行卡的手持密碼計算機。你輸入 PIN,裝置讓卡片檢查它,然後你可以做三件事之一:取得登入用的一次性密碼、回答登入挑戰、或認證一串數字(通常來自收款帳號與金額)。

銀行惡意程式:隨著銀行用越來越精緻的認證機制讓簡單釣魚變難,有些壞人就更努力於說服(即使在德國——銀行發給客戶印好的一次性密碼清單——騙子也說服了一些客戶一口氣把它們全部輸入)。其他壞人轉向自動化:從 2007 年起,Zeus、Torpig、SpyEye、EMotet、Trickbot 與 Dridex 等一系列惡意程式,從全球銀行與其客戶偷走數億美元。

這就是為什麼審慎的銀行現在會用 CAP 這類第二因子,至少認證任何新收款人帳號的末四位數字。

手機作為第二因子:對 2000 年代中期釣魚潮的另一個回應,是用客戶的手機當第二因子。發送確認訊息似乎很自然:「若您確實要匯 7,500 美元給俄羅斯房地產公司,請在瀏覽器輸入 4716。」

該銀行向電話公司投訴,對方不表同情:電話公司賣的是通話分鐘,不是銀行認證服務。

這類詐欺從南非傳到奈及利亞,然後約 2014–5 年傳到美國(起初用來偷 Instagram 帳號),2018 年起用來洗劫人們在比特幣交易所的帳戶。

這類攻擊現在涉及電話公司內部人。 2019 年一起案件中,亞利桑那州土桑的一名 AT&T 承包商協助一個 SIM 交換幫派從 29 名受害者偷走 200 萬美元。

2020 年 Kevin Lee 等人嘗試在五家美國電話公司各交換十張 SIM,發現這很容易:對大公司而言每次都成功。 漏洞包括靠詢問近期通話與近期儲值來認證身分——兩者都能被攻擊者操弄。

數萬名客服人員都處於「可能粗心、被駭或收賄」的位置。

但如作者在 2007 年第二版所寫:「雙通道認證的安全性倚賴通道的獨立性……如果每個人都開始用 iPhone、或透過無線接入點做 VoIP 通話,那麼獨立性的假設就崩潰了。」

撰稿時(2020),歐洲央行的看法是「只要你使用執行期應用自我保護(RASP),兩個 app 是可以的」——那意味著用 1980 年代為軟體防拷、1990 年代為 DRM 開發的技術把 app 程式碼混淆。

這讓有經驗的安全工程師皺眉,因為這類機制的歷史並不好看。很難對「一個混淆方案要多久才會被破解」取得任何保證;必須預期它隨時被破,而使用者最好準備好在那發生時立刻打補丁。

責任歸屬與授權推送付款詐欺#

一項針對 25 國 30 家銀行「銀行詐欺補償條款」的研究顯示,安全建議五花八門,其中許多含糊、不切實際甚至互相衝突。

你很想叫他們滾開,但如果你這麼做,重新啟用或更換支付卡會很麻煩。而即使把安全儀式弄得更複雜,釣魚者仍能引導目標走完它,必要時作為中間人(或瀏覽器中間人)攻擊。

授權推送付款(APP)詐欺指客戶被誘騙做出的銀行轉帳。2018 年的數字達 3.543 億英鎊,僅次於遠端購買詐欺,比其餘全部加起來還多。

一起案件中,一位 92 歲的退伍軍人接到假冒 A 銀行的騙子來電,告訴他該行被駭,所以他必須把畢生積蓄 12 萬英鎊轉到 B 銀行保管。兩天後兒子來訪才得知發生了什麼事。(在這個特定案例中,他們的律師要求 B 銀行出示開立車手帳戶時的 KYC 文件,幾天後 B 銀行不好意思地退還了錢。)

在英國這成了痛處,以致國會財政委員會指出**「快速且不可撤銷的付款根本就是錯的預設值」**,而支付服務監理機關改了規則,讓銀行現在承擔部分責任。

針對公司的類似詐欺也在穩定成長,稱為商業郵件入侵(BEC),現在每年造成數十億美元損失。

監理機關已命令英國銀行實作收款人確認:當你首次向一個新帳戶付款時,會被要求輸入帳戶持有人姓名,若不符就會收到警示。

而審慎的做法現在是把公司銀行帳號寫死在商業合約中,這樣若 A 公司付給騙子 C 而非 B 公司,就沒有爭論誰的錯的空間。在德國——公司自 20 世紀就使用直接銀行付款——法律多年來就要求公司在信頭上印出銀行帳號。

非銀行支付#

除了銀行之外,還有許多支付方式。PayPal 是網路泡沫時期興起之若干郵件支付服務商的倖存者,如今實質上已成長為一家銀行。更傳統的服務是 hawala,指服務南亞與中東移民社群、協助他們匯錢回家的換錢商。他們與西聯匯款(隨維多利亞時代電報網路成長起來)競爭。

這些服務有些被網路罪犯使用,最著名的是 PayPal 與西聯匯款。西聯對執法特別棘手,因為罪犯可以把錢寄到它眾多分支中的任何一個並提領現金。

M-Pesa、AliPay/WeChat Pay 與 Sofort

M-Pesa 是肯亞的手機銀行服務,2007 年由 Vodafone 推出。它迅速起飛,而營運它的 Safaricom 現在是肯亞最大的金融機構。超過 200 個類似服務已在低度開發國家推出,並在其中約 20 個造成轉型性影響;目前最大的可能是孟加拉的 B-Kash。

一旦手機普及,人們就開始把買通話時間當成價值移轉手段,而從那裡到移轉實際價值只是一小步。

關鍵成功因素是:電話公司建立了數萬個銷售代理網路,能把現金換成數位額度再換回來——這些網路觸及最小的村落,而傳統銀行做不到。

其他手機支付系統:直到 2013 年,世界領先的手機支付系統是 PayPal。此後領先的是阿里巴巴集團的 AliPay,緊追其後的是騰訊的 WeChat Pay;2020 年它們分別佔中國行動支付市場的 54% 與 39%。

智慧手機支付在中國迅速起飛(如 M-Pesa 在肯亞),因為主要城市之外的銀行服務過去並不令人滿意。它們已成為中國的預設支付機制,並使用視覺支付通道:商家顯示一個 QR 碼,客戶掃描以把正確金額送到正確帳戶。

AliPay 與 WeChat Pay 不只作為商業平台、也作為國家基礎設施運作,自 2018 年起受到嚴密規管:中國人民銀行取得所有交易資料的副本。 而兩個 app 現在都支援刷臉支付。

Sofort 與開放銀行:

德國傳統上不使用信用卡,這在人們開始網購時很不方便。Sofortüberweisung(德文的「立即付款」)著手解決這個問題——用一種工業化的中間人攻擊。

要買機票時,你在航空公司的結帳頁點「sofort」按鈕,該服務打開一個框讓你輸入銀行名稱與帳號。Sofort 接著以你的身分登入你的銀行,並向你呈現銀行的認證挑戰。一旦你通過,它就進入你的帳戶、確認錢夠、並把款項匯給自己。 然後它重導回航空公司,你就拿到機票。

效果是讓網購更容易,但也剝奪了銀行的卡片交易手續費(商家付的大約只有卡片交易的三分之一)。

銀行控告 Sofort 不公平競爭、以及誘使客戶違反銀行服務條款。他們敗訴了,因為德國聯邦反托拉斯局主張銀行的服務條款妨礙競爭、且旨在排除 Sofort 這類新商業模式。Sofort 取得了銀行執照,其他銀行只好競爭。

結果就是歐盟的第二號支付服務指令(PSD2),也叫「開放銀行」。 自 2018 年 1 月起,銀行必須開放其系統:不只在客戶要求時以標準格式向其他受規管金融機構釋出交易資料,還要允許該機構像客戶一樣行動。

壞處是詐欺與洗錢正迅速遷移到開放銀行通道。 如果騙子在 A 銀行開戶、灌入贓款、授權金融科技公司 B 的帳戶操作它,然後用 B 讓 A 匯錢給 C,A 不被允許拒絕該交易。結果是傳統的詐欺與洗錢控制變得有效性大減。所以安全工程師的工作機會會更多。

小結#

銀行系統對安全工程師至關重要,因為那是贓款移動的方式——而它在其他方面也引人入勝。

  • 帳務給了我們一個成熟的例子:一個導向真實性與問責、而非機密性的系統。Clark-Wilson 安全政策提供了這種取徑的模型,它演化了數百年。要讓它在實務上運作良好,意味著精緻的功能分離,而其設計需要許多學科的投入。威脅模型特別強調內部人。
  • 支付系統透過在第一代 ATM 系統中的使用,在密碼學的發展中扮演了重要角色;而基於智慧卡的支付之採用,又一次改變了詐欺地景。
  • 自 2000 年代中期以來,我們看到數波對電子銀行系統的攻擊:釣魚帳戶憑證、專門惡意程式的瀏覽器中間人攻擊、對作為第二認證因子之手機的 SIM 交換攻擊,以及社交工程客戶直接把錢送給壞人。

這些攻擊漸進地探索了高科技與低詭計的各種可能組合,並教導了「對詐欺緩解採取整體取徑」的重要性。

研究問題#

作者一向不信任大型會計師事務所的卡特爾——從 1980 年代的八大,經過三次合併與 Arthur Andersen 在 Enron 醜聞中的倒閉,減到現在的四大。

作者與一名學生曾研究過「成為大型會計師事務所的客戶是否為不法行為的訊號」,但簡短分析未發現任何方向的證據。此後每當作者服務於治理機構或稽核委員會時,他總是提議使用本地事務所(因為比較便宜),但只成功促成過一次改變(而且是從一家大公司換到另一家)。

他曾以為德國人可能好些,因為其規則禁止稽核師販售顧問服務,但 Wirecard 醜聞戳破了那個幻想。