2013年3月23日 星期六

Apple iOS UDID 替代方案

摘譯:
UDID 是一組辨識裝置(比如 iphone, ipad devices)的字母與數字組合字串,原本 iOS 的 UDID 優點是可以跨 服務供應商,分析廠商 辨識單一裝置。

可能的替代方案:
1. Wifi module 的 MAC address,但這做法一直有泄漏隱私的疑慮實作方式可以參考 UIdevice_with_UniqueIdnetifier-for-iOS5

2. Apple 官方建議改用 CFUUID (Core Foundation University Unique Identifier),由 iOS 的應用程式取得,但跟 Apple UDID 差異是可能會被刪除,非永久有效。使用者清除裝置(wipe/restore)資料時也會消失。另一個可能可以用的 id 是 advertisement identifier

3. OpenUDID 由 AppsFire 在 2011 年八月開發,但跟 Apple UDID 有同樣的隱私疑慮,可能要考慮被停用的風險。

4. 較新的是 SecureUDID 跟 OpenUDID 一樣是開源做法,但是多提供防止多個應用程式開發者共同存取同一個 SecureUDID 的功能,也讓使用者有機會取消 SecureUDID
5. mobile Cookies,已經有許多 Gmail, eBay, Facebook 之類的應用程式可以在 Android/iPhone/Blackberry 等手機平台上辨識你的登入資訊,當然也同樣可以儲存類似 UDID 等資訊。StrikeAd 已經採用並可以彙整資訊到 Google Analytics 或 Omniture(?) 等資訊中。

參考:

The End of UDIDs - what it means for mobile advertising

2013年3月15日 星期五

https 加密 http uri 與 response data

常有人好奇我們的瀏覽器 https 究竟保護了哪些資料呢? 而 http 的 GET/POST/DELETE 等 method 在 header 有沒有加密?

從 OSI model 來想,tls(ssl) 在 session layer, http 在之上的 application layer,因此知道 tls(ssl) 完整保護了 header 跟 response body data

從 python socket programming 來看,會是先建 socket 到 server host/ip 以及 port 443,再加上 ssl wrapper 後,才對 server 送出 GET /PATH/TO/URI 然後收到 response 資料,因此也可以理解 https 連線保護了 http uri 跟傳輸的網頁內容,竊聽者除了知道我們跟哪一台主機、跟 port 連線外(tcp/ip header),除非真正解密,或找到其他安全漏洞,否則無法知道連線內容。

參考程式碼:
    https://github.com/sjh/python/blob/master/demo_https_ssl_encryption_parts.py