StackOverflow 上離開 Vim 方法的文章...

被拿出來當 PR 宣傳了:「Stack Overflow: Helping One Million Developers Exit Vim」。

由於 Vim 是 Unix-like 系統一定會內建的 editor,所以常常被拿來放在 tutorial 裡面 (考慮到普及性,但完全不熟的初學者就...),或是不小心在輸入 vipw 或是 visudo 之類的指令就中獎了:

可以看到 pageview 破一百萬次了 XDDD 而且流量也都很穩定:

依照地區來拆開的話:(不過沒有照人口數正規化...)

然後做交叉分析,看這些卡在 Vim 的人平常是看什麼其他的文章:

回到資料分析的角度來看,這些東西可以透過有 cookie 的 access log 做到。有 access log 後可以用 Google CloudBigQuery,也可以用 AWS 家的 Amazon Athena 做。

Facebook 用哪些資訊來決定投放給你的廣告

華盛頓郵報整理出來了 Facebook 的廣告所使用的 98 個個人資訊:「98 personal data points that Facebook uses to target ads to you」。

基本的個人資訊 (甚至是朋友的),以及使用什麼瀏覽器都可以預期;而 Like 或是參加的 Group 都會被計算也是意料中的事情,不過連信用卡的種類也都在內就頗特別的...

來檢視一下自己的防禦機制有哪些... 瀏覽器預設擋下第三方 cookie:

Ghostery 預設把所有外部元件擋下來,再用白名單開想要看的部份。用 uBlock Origin 擋下所有廣告。

另外用「Force Facebook Most Recent」強制 Facebook 轉到 Most Recent 的 Timeline 上。

不知道這樣夠不夠用...

最後來列出這 98 個條件:

  1. Location
  2. Age
  3. Generation
  4. Gender
  5. Language
  6. Education level
  7. Field of study
  8. School
  9. Ethnic affinity
  10. Income and net worth
  11. Home ownership and type
  12. Home value
  13. Property size
  14. Square footage of home
  15. Year home was built
  16. Household composition
  17. Users who have an anniversary within 30 days
  18. Users who are away from family or hometown
  19. Users who are friends with someone who has an anniversary, is newly married or engaged, recently moved, or has an upcoming birthday
  20. Users in long-distance relationships
  21. Users in new relationships
  22. Users who have new jobs
  23. Users who are newly engaged
  24. Users who are newly married
  25. Users who have recently moved
  26. Users who have birthdays soon
  27. Parents
  28. Expectant parents
  29. Mothers, divided by “type” (soccer, trendy, etc.)
  30. Users who are likely to engage in politics
  31. Conservatives and liberals
  32. Relationship status
  33. Employer
  34. Industry
  35. Job title
  36. Office type
  37. Interests
  38. Users who own motorcycles
  39. Users who plan to buy a car (and what kind/brand of car, and how soon)
  40. Users who bought auto parts or accessories recently
  41. Users who are likely to need auto parts or services
  42. Style and brand of car you drive
  43. Year car was bought
  44. Age of car
  45. How much money user is likely to spend on next car
  46. Where user is likely to buy next car
  47. How many employees your company has
  48. Users who own small businesses
  49. Users who work in management or are executives
  50. Users who have donated to charity (divided by type)
  51. Operating system
  52. Users who play canvas games
  53. Users who own a gaming console
  54. Users who have created a Facebook event
  55. Users who have used Facebook Payments
  56. Users who have spent more than average on Facebook Payments
  57. Users who administer a Facebook page
  58. Users who have recently uploaded photos to Facebook
  59. Internet browser
  60. Email service
  61. Early/late adopters of technology
  62. Expats (divided by what country they are from originally)
  63. Users who belong to a credit union, national bank or regional bank
  64. Users who investor (divided by investment type)
  65. Number of credit lines
  66. Users who are active credit card users
  67. Credit card type
  68. Users who have a debit card
  69. Users who carry a balance on their credit card
  70. Users who listen to the radio
  71. Preference in TV shows
  72. Users who use a mobile device (divided by what brand they use)
  73. Internet connection type
  74. Users who recently acquired a smartphone or tablet
  75. Users who access the Internet through a smartphone or tablet
  76. Users who use coupons
  77. Types of clothing user’s household buys
  78. Time of year user’s household shops most
  79. Users who are “heavy” buyers of beer, wine or spirits
  80. Users who buy groceries (and what kinds)
  81. Users who buy beauty products
  82. Users who buy allergy medications, cough/cold medications, pain relief products, and over-the-counter meds
  83. Users who spend money on household products
  84. Users who spend money on products for kids or pets, and what kinds of pets
  85. Users whose household makes more purchases than is average
  86. Users who tend to shop online (or off)
  87. Types of restaurants user eats at
  88. Kinds of stores user shops at
  89. Users who are “receptive” to offers from companies offering online auto insurance, higher education or mortgages, and prepaid debit cards/satellite TV
  90. Length of time user has lived in house
  91. Users who are likely to move soon
  92. Users who are interested in the Olympics, fall football, cricket or Ramadan
  93. Users who travel frequently, for work or pleasure
  94. Users who commute to work
  95. Types of vacations user tends to go on
  96. Users who recently returned from a trip
  97. Users who recently used a travel app
  98. Users who participate in a timeshare

Google Chrome 上面清 Cookie 的機制

T客邦 上面看到講 Google Chrome 上清 cookie 的機制,提到了「Vanilla Cookie Manager」這個套件:「【Chrome安全技巧】如何自動清除網站的 cookie 以保護個資?」。

現在應該已經不需要用這個套件了,至少在 2012 年的時候 Google Chrome 就已經內建這個功能了:「Google Chrome 上的 Cookie 隱私機制...」,在 2012 年提到的問題已經消失了,現在用起來都很正常,而且可以透過 Google Chrome 內建的機制同步到不同電腦上。

先到「設定」裡面,展開「顯示進階設定...」後可以看到這個:

點「內容設定」後可以看到「Cookie」的部份,選擇「將本機資料保留到您關閉瀏覽器為止」,可以在關閉瀏覽器時自動把 cookie 都清掉,另外選擇「封鎖第三方 Cookie 和網站資料」可以防止不少廣告系統的個人化追蹤,造成隱私問題

但我不希望每次重開瀏覽器都要重新登入 FacebookTwitter 這類網站,那麼就點「管理例外狀況」後輸入白名單,這樣就可以避免了:

nginx 的 TCP Fast Open

在「Enabling TCP Fast Open for NGINX on CentOS 7」這邊看到 nginxTCP Fast Open (TFO,RFC 7413) 的支援早在 1.5.8 就有了,而 Linux Kernel 也是 3.7 之後就全面支援了。

TCP Fast Open 利用第一次連線後產生的 TCP cookie,在第二次連線時可以在 3-way handshake 的過程就開始傳輸,藉此大幅降低 latency。

設定方法不難,先在 kernel 設定 net.ipv4.tcp_fastopen=3,再加上 fastopen=number 就可以了,像是這樣:

listen 80 fastopen=256

不過目前 NGINX Mainline 上的版本好像沒有編進去,暫時沒辦法測...

Mozilla 維護的 Public Suffix List

在「域名小知识:Public Suffix List」這邊看到由 Mozilla 維護的 Public Suffix List,記錄了哪些 suffix 屬於 top-level:

  • Avoid privacy-damaging "supercookies" being set for high-level domain name suffixes
  • Highlight the most important part of a domain name in the user interface
  • Accurately sort history entries by site

所以 supercookie 阻擋機制是從這邊來的...

Firefox 擋 Canvas Fingerprint 的套件

在「How to block Canvas Fingerprinting in Firefox」這篇終於看到擋 Canvas Fingerprint 的延伸套件了:「CanvasBlocker」。

關於 Canvas Fingerprint,可以參考之前「用 Canvas Fingerprint 取代部份 Cookie」這篇文章。

截圖看起來有點陽春 (設定的方式很 geek),不過算是個開始,之後應該會愈改愈好:

用 Canvas Fingerprint 取代部份 Cookie

Canvas Fingerprint 已經很久了,在「The Web never forgets: Persistent tracking mechanisms in the wild」說明了 Canvas Fingerprint 的歷史:

Canvas fingerprinting is a type of browser or device fingerprinting technique that was first presented by Mowery and Shacham in 2012.

原始論文可以在「Pixel Perfect: Fingerprinting Canvas in HTML5」這邊看到。原理是利用不同機器對字型 render 不一樣的原理再對產生出來的圖片 hash 後當作 cookie 替代品。

兩個禮拜前突然紅起來是因為被發現廣泛使用在很多服務以及網站上,像是 AddThis (於是一堆網站中獎),以及 WhiteHouse.gov (喔喔!),然後還有 YouPorn.com (XDDD):「White House Website Includes Unique Non-Cookie Tracker, Conflicts With Privacy Policy」、「Meet the online tracking device that is virtually impossible to block」。

拿 canvas fingerprint 去各瀏覽器的 extension 上找,目前 Google Chrome 上可以安裝「CanvasFingerprintBlock」來擋,Firefox 的沒找到?

EFF 的 Privacy Badger

EFF 推出新的延伸套件 (有 Firefox 與 Google Chrome 版),透過演算法阻擋嘗試追蹤你的單位:「Privacy Badger」。

在官網上有比較技術面的說明:

At a more technical level, Privacy Badger keeps note of the "third party" domains that embed images, scripts and advertising in the pages you visit. If a third party server appears to be tracking you without permission, by using uniquely identifying cookies to collect a record of the pages you visit across multiple sites, Privacy Badger will automatically disallow content from that third party tracker. In some cases a third-party domain provides some important aspect of a page's functionality, such as embedded maps, images, or fonts. In those cases Privacy Badger will allow connections to the third party but will screen out its tracking cookies.

技術上的作法是分析 third party domain 的行為,用演算法阻擋可能的追蹤。與 Ghostery 這類工具使用人力建立清單的方法不太一樣。

裝起來跑看看,感覺還蠻有趣的...

4chan 前端頁面的調校... (cookie-free domain 的重要性)

Chris Poole (4chan 的創辦人) 寫了一篇「Small things add up」,說明針對前端頁面的調整帶來的效能改善...

YSlowPageSpeed 都反應靜態內容 (像是圖片) 是從帶有 cookie 的 domain (4chan.org) 提供服務。

所以 Chris Poole 打算把靜態內容換到一個新的網域下。

首先是選擇新的 cookie-free domain 名稱,由於不需要好記 (因為是程式在用),所以在選擇時愈短愈好,這可以讓 html 內的大小會少一些 (即使是 gzip 後還是有差),所以 Chris Poole 選擇了 4cdn.org

而更大的改善其實是在 cookie 這塊。4chan 平均的 cookie 大小大約是 1KB,這表示每一個到 4chan.org 的 request 都要送出 1KB 的 cookie 資訊。對於行動用戶來說,上傳的頻寬就這樣被浪費掉了,在搬移到新的 4cdn.org 後可以省下大量的上傳頻寬:

By migrating to the new domain, end users now save roughly 100 KB upstream per page load, which at 500 million pageviews per month adds up to 46 terabytes per month in savings for our users. I find this unreal.

NSA 與 GCHQ 對抗 Tor 的方式

衛報網站上公開了 NSA (美方) 以及 GCHQ (英方) 如何對抗 Tor 的方式,包含了內部的投影片:「'Tor Stinks' presentation – read the full document」。

投影片上可以看到,居然還有 workshop 可以參加...

下面列出這份投影片的內容,要注意這是 2012 年的資訊了。

事實的介紹

先說明了不可能辨識出所有 Tor 使用者,只能透過人工找出少數的使用者。

接下來說明了目前的概況。目前只能掌握少數的 Tor 節點,其中 entry node 與 exit node 會是辨識出 Tor 使用者的重點,如果能夠增加這些節點的數量,會對於辨識有很大的幫助。

要如何分析這些資訊

透過 cookie 的交叉比對,有機會將 Tor 使用者與真實世界的流量連接起來,像是透過 DoubleclickID 這個值。

接下來是想辦法建立資料庫,將 IP 與時間點的對應建立起來。利用這些資訊才有辦法知道這個 IP 的情況。

技術分析

接下來可以看到各種技術分析。包括對 Hidden Service 的攻擊 (2012 年當時沒有進度),另外試著用 Timing Attack 攻擊 (2012 年當時也沒有進度,不過有在研究了)。

另外在 AWS 上建立節點也是 2012 年當時就進行的項目。

攻擊 Tor

各種攻擊手段,包含了如果有 ISP 可以配合攔截封包時的作法。以及攻擊不屬於自己的節點的方式。再來就是有沒有辦法癱瘓 Tor 節點...

總結

情報單位其實花了非常多力氣研究 Tor,但沒有很好的成果。Tor 算是直接再技術上 (數學上) 抵抗的相當頑強。這部內部文件流出後可以預期會有不少「應用」(只要是英美政府不喜歡的「應用」) 會往上發展。

多增加 Tor 的節點看起來會是目前最直接的抵抗方式,而且這個抵抗方式對於一般人相對容易,達到了擴散容易的效果。