2019-M03 關於 Idempotent 兩三事 - 資安

Charlotte avatar
By Charlotte
at 2019-11-14T10:26

Table of Contents

2019-M03 關於 Idempotent 兩三事

早上朋友丟了問我關於解決 idempotent 的問題 原因在於他那邊最近常常發現

存錢的 POST API 在 Server 端常常收到兩次的 Bug

這類型的問題常常發生在 Mobile + API 自動 retry

因為 Mobile 的特性 : 使用 WiFi 會因為移動導致斷線、自動重新連線

導致第一個 POST API 沒有收到正常的回傳值 而自動 retry

因此在很多 POST 等相關 API 都會加上 IDEMPOTENT 參數來避免重送攻擊



概念上很簡單:在 POST 的時候 Client 會帶上一個 IDEMPOTENT

如果 Server 端收到來自同一個 IDENPOTENT 的請求 第二次之後的操作視為 NOP

如果來自不同使用者 但 IDENPOTENT 相同的情況 則回傳 collision 錯誤

因此找到一個不會碰撞的 IDENPOTENT 的產生方式就極為重要



---- 以下是本文重點 ----
強者我朋友提出了 UUID[0] 的方式 也就是隨機產生一組 128bit 的隨機字串

但是他的長官認為 是否會有 collision 的狀況 ...

因此廢物我提出了一個 ULID[1] 解決方案用來解釋他很難發生 collision



在 ULID 的 SPEC 下定義使用 128bit 長度:前面 48bit 用來表示時間、後面 80bit 則為隨機

時間戳記本身為 ms 等級計算 因次發生 collision 的前提之一就是要在同一毫秒

而後者 80bit 的隨機數字則假設遭遇到生日攻擊法[2]

使用速算法來計算 collision 發生機率為百萬分之一 (~ 2^-20)

約需要 2^30。大概是 1ms 需要有一億次請求


#謹獻給強者我朋友的長官#


[0]: https://tools.ietf.org/html/rfc4122.html
[1]: https://github.com/ulid/spec
[2]: https://en.wikipedia.org/wiki/Birthday_attack

--
Tags: 資安

All Comments

中山大學驚傳師生電子郵件被監控長達3年

Carolina Franco avatar
By Carolina Franco
at 2019-11-12T13:48
※ 引述《CMJ0121 (不要偷 Q)》之銘言: : - ...

雲端備份file server資安管理

Andy avatar
By Andy
at 2019-11-11T12:28
公司約有20來個技術人員 近期將採購一個將近26萬的file server檔案管理伺服器 https://imgur.com/gjGPiHR 用來備份深度學習訓練檔、美術軟體檔案、架Odoo、防毒軟體中控、文檔管理中控、 備份軟體中控、還有一些其他程式的中控 4T硬碟容量不足 今年度我們可能需要用到20T ...

中山大學驚傳師生電子郵件被監控長達3年

Christine avatar
By Christine
at 2019-11-11T10:16
https://www.ithome.com.tw/news/134105 來自 Open WebMail 的漏洞 其實這篇我本來是不想轉的 因為這個故事的重點在於 中山大學使用了 https://openwebmail.org/ 這個軟體 他是 Open Source (這沒啥問題) 但最後一 ...

白帽菁英入門(三)台北教育訓練

Odelette avatar
By Odelette
at 2019-11-06T16:32
報名網址: https://www.accupass.com/event/1910240847068228620890 活動日期: 2019-11-09 13:00-18:00 活動地點: 台灣台北市中正區重慶南路一段77號3樓之4 活動內容: 想成為資安高手不再遙不可及,挑戰駭客不再 ...

白帽菁英萌芽計劃:台南場

Leila avatar
By Leila
at 2019-10-22T11:44
報名網址: https://www.accupass.com/go/White-Hat711 活動日期: 2019-11-02 13:00-18:00 開始報名: 即日起 截止報名: 2019-10-31 活動地點: 長榮大學 (第三教學大樓4樓 電腦教室 T30403) ...