📜 [專欄新文章] [ZKP 讀書會] Trust Token Browser API
✍️ Yuren Ju
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Trust Token API 是一個正在標準化的瀏覽器 API,主要的目的是在保護隱私的前提下提供跨站授權 (Cross-domain authorization) 的功能,以前如果需要跨站追蹤或授權通常都使用有隱私疑慮的 Cookies 機制,而 Trust Token 則是希望在保護隱私的前提下完成相同的功能。
會在 ZKP (Zero-knowledge proof) 讀書會研究 Trust Token 主要是這個 API 採用了零知識證明來保護隱私,這也是這次讀書會中少見跟區塊鏈無關的零知識證明應用。
問題
大家應該都有點了一個產品的網頁後,很快的就在 Facebook 或是 Google 上面看到相關的廣告。但是產品網頁並不是在 Facebook 上面,他怎麼會知道我看了這個產品的頁面?
通常這都是透過 Cookie 來做跨網站追蹤來記錄你在網路上的瀏覽行為。以 Facebook 為例。
當使用者登入 Facebook 之後,Facebook 會透過 Cookie 放一段識別碼在瀏覽器裡面,當使用者造訪了有安裝 Facebook SDK 來提供「讚」功能的網頁時,瀏覽器在載入 SDK 時會再度夾帶這個識別碼,此時 Facebook 就會知道你造訪了特定的網頁並且記錄下來了。如此一來再搭配其他不同管道的追蹤方式,Facebook 就可以建構出特定使用者在網路上瀏覽的軌跡,從你的瀏覽紀錄推敲喜好,餵給你 Facebook 最想給你看的廣告了。
不過跨站追蹤也不是只能用在廣告這樣的應用上,像是 CDN (Content Delivery Network) 也是一個應用場景。CDN 服務 Cloudflare 提供服務的同時會利用 Captcha 先來確定進入網站的是不是真人或是機器人。而他希望使用者如果是真人時下次造訪同時也是採用 Cloudflare 服務的網站不要再跳出 Captcha 驗證訊息。
雖然 Cloudflare 也需要跨站驗證的功能來完成他們的服務,但是相較於 Google 或 Facebook 來說他們是比較沒那麼想知道使用者的隱私。有沒有什麼辦法可以保護使用者隱私的狀況下還能完成跨站驗證呢?
這就是今天要講的新 API: Trust Token。
Trust Token API - The Chromium Projects
Trust Token / Privacy Pass 簡介
Trust Token 其實是由 Privacy Pass 延伸而來。Privacy Pass 就是由 Cloudflare 所開發的實驗性瀏覽器延伸套件實作一個驗證機制,可以在不透漏過多使用者隱私的前提下實作跨站驗證。而 Trust Token 則是標準化的 Privacy Pass,所以兩個運作機制類似,但是實作方式稍有不同。
先看一下 Privacy Pass 是如何使用。因為這是實驗性的瀏覽器延伸套件所以看起來有點陽春,不過大致上還是可以了解整個概念。
以 hCaptcha 跟 Cloudflare 的應用為例,使用者第一次進到由 Cloudflare 提供服務的網站時,網站會跳出一些人類才可以解答的問題比如說「挑出以下是汽車的圖片」。
當使用者答對問題後,Cloudflare 會回傳若干組 blind token,這些 blind token 還會需要經過 unblind 後才會變成真正可以使用的 token,這個過程為 issue token。如上圖所示假設使用者這次驗證拿到了 30 個 token,在每次造訪由 Cloudflare 服務的網站時就會用掉一個 token,這個步驟稱為 redeem token。
但這個機制最重要的地方在於 Cloudflare 並無法把 issue token 跟 redeem token 這兩個階段的使用者連結在一起,也就是說如果 Alice, Bob 跟 Chris 都曾經通過 Captcha 測試並且獲得了 Token,但是在後續瀏覽不同網站時把 token 兌換掉時,Clouldflare 並無法區分哪個 token 是來自 Bob,哪個 token 是來自 Alice,但是只要持有這種 token 就代表持有者已經通過了 Captcha 的挑戰證明為真人。
但這樣的機制要怎麼完成呢?以下我們會透過多個步驟的例子來解釋如何達成這個目的。不過在那之前我們要先講一下 Privacy Pass 所用到的零知識證明。
零知識證明 (Zero-knowledge proof)
零知識證明是一種方法在不揭露某個祕密的狀態下,證明他自己知道那個秘密。
Rahil Arora 在 stackexchange 上寫的比喻我覺得是相對好理解的,下面簡單的翻譯一下:
假設 Alice 有超能力可以幾秒內算出樹木上面有幾片樹葉,如何在不告訴 Bob 超能力是怎麼運作並且也不告訴 Bob 有多少片葉子的狀況下證明 Alice 有超能力?我們可以設計一個流程來證明這件事情。
Alice 先把眼睛閉起來,請 Bob 選擇拿掉樹上的一片葉子或不拿掉。當 Alice 睜開眼睛的時候,告訴 Bob 他有沒有拿掉葉子。如果一次正確的話確實有可能是 Alice 幸運猜到,但是如果這個過程連續很多次時 Alice 真的擁有數葉子的超能力的機率就愈來愈高。
而零知識證明的原理大致上就是這樣,你可以用一個流程來證明你知道某個秘密,即使你不真的揭露這個秘密到底是什麼,以上面的例子來說,這個秘密就是超能力運作的方式。
以上就是零知識證明的概念,不過要完成零知識證明有很多各式各樣的方式,今天我們要介紹的是 Trust Token 所使用的零知識證明:DLEQ。
DLEQ (Discrete Logarithm Equivalence Proof)
說明一下以下如果小寫的變數如 c, s 都是純量 (Scalar),如果是大寫如 G, H則是橢圓曲線上面的點 (Point),如果是 vG 則一樣是點,計算方式則是 G 連續相加 v 次,這跟一般的乘法不同,有興趣可以程式前沿的《橢圓曲線加密演算法》一文解釋得比較詳細。
DLEQ 有一個前提,在系統中的所有人都知道公開的 G 跟 H 兩個點,此時以下等式會成立:
假設 Peggy 擁有一個秘密 s 要向 Victor 證明他知道 s 為何,並且在這個過程中不揭露 s 真正的數值,此時 Victor 可以產生一個隨機數 c 傳送給 Peggy,而 Peggy 則會再產生一個隨機數 v 並且產生 r,並且附上 vG, vH, sG, sH:
r = v - cs
所以 Victor 會得到 r, sG, sH, vG, vH 再加上他已經知道的 G, H。這個時候如果 Victor 計算出以下兩個等式就代表 Peggy 知道 s 的真正數值:
vG = rG + c(sG)vH = rH + c(sH)
我們舉第二個等式作為例子化簡:
vH = rH + c(sH) // 把 r 展開成 v - csvH = (v - cs)H + c(sH) // (v - cs)H 展開成 vH - csHvH = vH - c(sH) + c(sH) // 正負 c(sH) 消掉vH = vH
這樣只有 Peggy 知道 s 的狀況下才能給出 r,所以這樣就可以證明 Peggy 確實知道 s。
從簡易到實際的情境
Privacy Pass 網站上透過了循序漸進的七種情境從最簡單的假設到最後面實際使用的情境來講解整個機制是怎麼運作的。本文也用相同的方式來解釋各種情境,不過前面的例子就會相對比較天真一點,就請大家一步步的往下看。
基本上整個過程是透過一種叫做 Blind Signature 的方式搭配上零知識證明完成的,以下參與的角色分為 Client 與 Server,並且都會有兩個階段 issue 與 redeem token。
Scenario 1
如果我們要設計一個這樣可以兌換 token 來確認身分的系統,其中有一個方法是透過橢圓曲線 (elliptic curve) 完成。Client 挑選一個在橢圓曲線上的點 T 並且傳送給 Server,Server 收到後透過一個只有 Server 知道的純量 (scalar) s 對 T 運算後得到 sT 並且回傳給 Client,這個產生 sT 的過程稱為 Sign Point,不過實際上運作的原理就是橢圓曲線上的連續加法運算。
SignPoint(T, s) => sT
等到 Client 需要兌換時只要把 T 跟 sT 給 Server,Server 可以收到 T 的時候再 Sign Point 一次看看是不是 sT 就知道是否曾經 issue 過這個 token。
Issue
以下的範例,左邊都是 Client, 右邊都是 Server。 -> 代表 Client 發送給 Server,反之亦然。
// Client 發送 T 給 Server, 然後得到 sT
T -> <- sT
Redeem
// Client 要 redeem token 時,傳出 T 與 sT
T, sT ->
問題:Linkability
因為 Server 在 issue 的時候已經知道了 T,所以基本上 Server 可以透過這項資訊可以把 issue 階段跟 redeem 階段的人連結起來進而知道 Client 的行為。
Scenario 2
要解決上面的問題,其中一個方法是透過 Blind Signature 達成。Client 不送出 T,而是先透過 BlindPoint 的方式產生 bT 跟 b,接下來再送給 Server bT。Server 收到 bT 之後,同樣的透過 Sign Point 的方式產生結果,不一樣的地方是情境 1 是用 T,而這邊則用 bT 來作 Sign Point,所以得出來的結果是 s(bT)。
Client:BlindPoint(T) => (bT, b)
Server:SignPoint(bT, s) => sbT
而 Blind Signature 跟 Sign Point 具備了交換律的特性,所以得到 s(bT) 後可以透過原本 Client 已知的 b 進行 Unblind:
UnblindPoint(sbT, b) => sT
這樣一來在 Redeem 的時候就可以送出 T, sT 給 Server 了,而且透過 SignPoint(T, s) 得出結果 sT’ 如果符合 Client 傳來的 sT 就代表確實 Server 曾經簽過這個被 blind 的點,同時因為 T 從來都沒有送到 Server 過,所以 Server 也無法將 issue 與 redeem 階段的 Client 連結在一起。
Issue
bT -> <- s(bT)
Redeem
T, sT ->
問題:Malleability
以上的流程其實也有另外一個大問題,因為有交換律的關係,當 Client 透過一個任意值 a 放入 BlindPoint 時產生的 a(sT) 就會等於 s(aT):
BlindPoint(sT) => a(sT), a// a(sT) === s(aT)
此時如果將 aT 跟 s(aT) 送給 Server Redeem,此時因為
SignPoint(aT, s) => s(aT)
所以就可以兌換了,這樣造成 Client 可以無限地用任意數值兌換 token。
Scenario 3
這次我們讓 Client 先選擇一個純數 t,並且透過一種單向的 hash 方式來產生一個在橢圓曲線上的點 T,並且在 redeem 階段時原本是送出 T, sT 改成送出 t, sT。
因為 redeem 要送出的是 t,上個情境時透過任意數 a 來產生 s(aT) 的方法就沒辦法用了,因為 t 跟 sT 兩個參數之間並不是單純的再透過一次 BlindPoint() 就可以得到,所以就沒辦法無限兌換了。
Issue
T = Hash(t) bT -> <- sbT
Redeem
t, sT ->
問題:Redemption hijacking
在這個例子裏面,Client 其實是沒有必要傳送 sT 的,因為 Server 僅需要 t 就可以計算出 sT,額外傳送 sT 可能會導致潛在的 Redemption hijacking 問題,如果在不安全的通道上傳輸 t, sT 就有可能這個 redemption 被劫持作為其他的用途。
不過在網站上沒講出實際上要怎麼利用這個問題,但是少傳一個可以計算出來的資料總是好的。Client 只要證明他知道 sT 就好,而這可以透過 HMAC (Hash-based Message Authentication Code) 達成。
Scenario 4
步驟跟前面都一樣,唯一不一樣的地方是 redeem 的時候原本是傳 t, sT,現在則改傳 t, M, HMAC(sT, M),如果再介紹 HMAC 篇幅會太大,這邊就不解釋了,但可以是作是一個標準的 salt 方式讓 Hash 出來的結果不容易受到暴力破解。
這樣的特性在這個情境用很適合,因為 Server 透過 t 就可以計算出 sT,透過公開傳遞的 M 可以輕易地驗證 client 端是否持有 sT。
Issue
T = Hash(t) bT -> <- sbT
Redeem
t, M, HMAC(sT, M) ->
問題:Tagging
這邊的問題在於 Server 可以在 issue 階段的時候用不一樣的 s1, s2, s3 等來發出不一樣的 sT’,這樣 Server 在 Redeem 階段就可以得知 client 是哪一個 s。所以 Server 需要證明自己每次都用同樣的 s 同時又不透漏 s 這個純亮。
要解決這個問題就需要用到前面我們講解的零知識證明 DLEQ 了。
Scenario 5
前面的 DLEQ 講解有提到,如果有 Peggy 有一個 s 秘密純量,我們可以透過 DLEQ 來證明 Peggy 知道 s,但是又不透漏 s 真正的數值,而在 Privacy Pass 的機制裡面,Server 需要證明自己每次都用 s,但是卻又不用揭露真正的數值。
在 Issue 階段 Client 做的事情還是一樣傳 bT 給 Server 端,但 Server 端的回應就不一樣了,這次 Server 會回傳 sbT 與一個 DLEQ 證明,證明自己正在用同一個 s。
首先根據 DLEQ 的假設,Server 會需要先公開一組 G, H 給所有的 Client。而在 Privacy Pass 的實作中則是公開了 G 給所有 Client,而 H 則改用 bT 代替。
回傳的時候 Server 要證明自己仍然使用同一個 s 發出 token,所以附上了一個 DLEQ 的證明 r = v - cs,Client 只要算出以下算式相等就可證明 Server 仍然用同一個 s (記住了 H 已經改用 bT 代替,此時 client 也有 sbT 也就是 sH):
vH = rH + c(sH) // H 換成 bTvbT = rbT + c(sbT) // 把 r 展開成 v - csvbT = (v - cs)bT + c(sbT) // (v - cs)bT 展開成 vbT - csbTvbT = vbT - c(sbT) + c(sbT) // 正負 c(sbT) 消掉vbT = vbT
這樣就可以證明 Server 依然用同一個 s。
Issue
T = Hash(t) bT -> <- sbT, DLEQ(bT:sbT == G:sG)
Redeem
t, M, HMAC(sT, M) ->
問題:only one redemption per issuance
到這邊基本上 Privacy Pass 的原理已經解釋得差不多了,不過這邊有個問題是一次只發一個 token 太少,應該要一次可以發多個 token。這邊我要跳過源文中提到的 Scenario 6 解釋最後的結果。
Scenario 7
由於一次僅產生一個 redeem token 太沒效率了,如果同時發很多次,每次都產生一個 proof 也不是非常有效率,而 DLEQ 有一個延伸的用法 “batch” 可以一次產生多個 token, 並且只有使用一個 Proof 就可以驗證所有 token 是否合法,這樣就可以大大的降低頻寬需求。
不過這邊我們就不贅述 Batch DLEQ 的原理了,文末我會提及一些比較有用的連結跟確切的源碼片段讓有興趣的人可以更快速的追蹤到源碼片段。
Issue
T1 = Hash(t1) T2 = Hash(t2)T3 = Hash(t3)b1T1 ->b2T2 ->b3T3 -> c1,c2,c3 = H(G,sG,b1T1,b2T2,b3T3,s(b1T1),s(b2T2),s(b3T3)) <- sb1T1 <- sb2T2 <- sb3T3 <- DLEQ(c1b1T1+c2b2T2+c3b3T3:s(c1b1T1+c2b2T2+c3b3T3) == G: sG)
Redeem
t1, M, HMAC(sT1, M) ->
結論
Privacy Token / Trust Token API 透過零知識證明的方式來建立了一個不需要透漏太多隱私也可以達成跟 cookie 相同效果的驗證方式,期待可以改變目前許多廣告巨頭透過 cookie 過分的追蹤使用者隱私的作法。
不過我在 Trust Token API Explainer 裡面看到這個協議裡面的延伸作法還可以夾帶 Metadata 進去,而協議制定的過程中其實廣告龍頭 Google 也參與其中,希望這份協議還是可以保持中立,盡可能地讓最後版本可以有效的在保護隱私的情況下完成 Cross-domain authorization 的功能。
參考資料
IETF Privacy Pass docs
Privacy Pass: The Protocol
Privacy Pass: Architectural Framework
Privacy Pass: HTTP API
Cloudflare
Supporting the latest version of the Privacy Pass Protocol (cloudflare.com)
Chinese: Cloudflare支持最新的Privacy Pass扩展_推动协议标准化
Other
Privacy Pass official website
Getting started with Trust Tokens (web.dev)
WICG Trust Token API Explainer
Non-interactive zero-knowledge (NIZK) proofs for the equality (EQ) of discrete logarithms (DL) (asecuritysite.com) 這個網站非常實用,列了很多零知識證明的源碼參考,但可惜的是 DLEQ 這個演算法講解有錯,讓我在理解演算法的時候撞牆很久。所以使用的時候請多加小心,源碼應該是可以參考的,解釋的話需要斟酌一下。
關鍵源碼
這邊我貼幾段覺得很有用的源碼。
privacy pass 提供的伺服器端產生 Proof 的源碼
privacy pass 提供的瀏覽器端產生 BlindPoint 的源碼
github dedis/kyber 產生 Proof 的源碼
[ZKP 讀書會] Trust Token Browser API was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
「前提為假結論為真」的推薦目錄:
前提為假結論為真 在 高虹安 Facebook 的最佳貼文
【美選出乎意料的激烈戰局:比民調更重要的是人心】
2020美國總統大選投票日已經過了三天,贏家仍未確定。
開票過程峰迴路轉,從一開始的德州開藍、夜間的威州、密州翻藍,到昨晚的賓州、喬州拉鋸…拜登與川普激戰到如此地步,倒是選前主流媒體與各家民調普遍沒有預料到的情況。難道如同四年前大選民調翻車的情況再度出現了嗎?
#傳統民調與現實的差距
四年前的美國總統大選,主流媒體與傳統民調組織,多顯示希拉蕊大幅領先,但結果川普打破所有主流輿論和各家民調的分析入主白宮,雖然有「選舉人團」的制度因素助攻,但當時「民調嚴重失真」的問題已經被各界學者專家紛紛提出來檢討,甚至出現「#民調已死」的聲音。
近年來,許多國際媒體與機構的民調確實普遍表現不佳,誤差範圍甚至逐漸擴大。從2012年歐巴馬競選連任、2014年美國期中選舉、2015年英國國會大選、2016年英國脫歐等,結果都與事前民調預測完全相反。
一份由史丹佛大學、哥倫比亞大學與微軟在2016年發布的研究報告〈Disentangling Bias and Variance in Election Polls〉顯示:1998年到2014年間美國各州總統、國會與州長選舉總共4,221份選前民調,將它們與開票結果相比,1,000人的調查平均誤差範圍達正負7%,而不是一般民調宣稱信心標準的正負3%。
根據《報導者》在2016年大選的專題說明,在排除刻意造假的情況下,民調不準確的原因通常包括:
1.抽樣代表性不足、2.民調回覆率過低、3.民調設計不良、4.受訪者不願吐實、5.游離票比例過高。
#害羞川粉的逆襲
而在2016和今年的美國總統大選中,除了上述1-3的工具性因素外,特別常被提出來討論的就是「受訪者不願吐實」這項因素,回歸現實情況,其實就是在談「隱性/害羞的川普支持者」(Shy Trump Voter)這群人。
根據美國政治網路媒體《POLITCO》一篇6月時分析民調可能失準原因的報導當中,就提到 #四年前對於川普潛在支持者分析不足 的問題今年可能依然存在:
川普總統指責民調刻意造假以對抗他的問題雖然並不為真,但民調機構人員確實仍在設法他們四年前遇到的困擾,包括搖擺州調查抽樣較少、而各州內的民調其實高估了拜登的優勢等等,這些恰恰都是2016年曾經發生過的問題:全國民調在很大程度上誤差並不大,但是州範圍的民調太少了,未能收集到準確的數據,特別是來自關鍵搖擺州「#沒有大學學位的白人選民」(被廣泛認為是潛在川普支持者)。
四年前學到教訓的各家民調認為,既然川普的支持者(藍領階級較低收入白人和低教育程度選民)被系統性低估,那就針對這些族群做統計上的加權 (weighting by education and lower-income)。這是美國公共民意研究協會 (American Association for Public Opinion Research)在 2016大選結束後所出產的官方報告當中的結論,也是近年來美國民調機構努力的方向。然而,從大選開票結果與民調的差距來看,上述提到的這些問題今年依然沒有完全解決。
而今年選前號稱美國智庫的「民主研究所」(Democracy Institute)做出幾份民調顯示,有77-78%的川普支持者不會願意向自己周遭的親朋好友承認自己其實支持川普。不過因為該機構被認為缺乏專業嚴謹與公信力,原本並未有多少主流媒體報導這項數據。
然而,由於今年開票到現在與選前主流民調預期民主黨大勝的景況差距太大,部分專家指出,這幾乎是在重演2016年大選民調低估了川普支持率的現象,「因為川普支持者擔心,表達真實意見會引起異樣眼光,比較傾向說謊。」
至此,「隱性/害羞川粉」的理論重新受到各方注意。
#害羞川粉所面臨的社會期許壓力
英國前首相卡麥隆的顧問希爾頓(Steve Hilton)表示:「由於幾乎所有媒體對川普及其支持者都流露出相當的恨意,所以人們比較不想對民調公司承認自己支持川普,而民調公司根本沒考慮到這點。」
另一名準確預測川普4年前當選的民調機構「特拉法爾加」(Trafalgar Group)創辦人卡哈利(Robert Cahaly)則指出:「今年這些『害羞的川普支持者』比之前(2016年)還要多。然而,人們不想表明支持川普,因為只要你戴錯帽子就會被揍,車尾貼上錯的標語就會被騷擾。」
卡哈利認為傳統的民調公司忽略了一個事實,就是:
「#受訪者傾向講出訪問者想聽的話,而不是表達自己的真實想法。」
這提醒了我們關於大家熟知的「#沉默螺旋理論」(Spiral of silence),在傳播過程或參與傳播的過程中,如果發現自己的看法不被主流意見認可,人們就多半不願意公開表達自己的看法,聲音就愈來愈小。
而即便是廣受主流媒體與台灣國內採用、追蹤的兩大權威民調「538」(FiveThirtyeight)與「真清晰政治」(Real Clear Politics),它們的創辦人在這兩天也都對川普支持率失真的原因表達了類似的觀點。
538(FiveThirtyeight)網站主編西爾瓦(Nate Silver)指出,有關川普支持度的民調失準,可能肇因於「#社會期許誤差social desirability bias」,即受訪者回答問題時,傾向以不實意願取代真實意願,以符合社會期許。「真清晰政治」(Real Clear Politics)聯合創始人兼總裁湯姆·貝凡(Tom Bevan)在前天接受福斯新聞(Fox News)訪談時公開指出:「所有專家和預測者都錯得離譜。」
澳洲國立大學講師宋文笛也在選前提出過說明,為何低收入者會基於「社會期許」回答與現實不同的答案:「低教育程度往往代表離美國社會主流的所謂『有文化階層』 (polite society) 的世界觀和價值觀的距離越遠,而所謂『社會期許』往往是後者所定義的。」
這些 #保守川粉 有不少人是美國的經濟、教育與文化層面的社會弱勢,廣泛分佈於中西部的工業區與內陸鄉村。由於教育程度和經濟能力往往成正比,加上工作繁忙、在家時段不固定,也造成這群人比較缺乏時間接受冗長的民調訪談,加上川普有意識地宣傳「主流媒體不可信」的說法,也讓共和黨支持者的拒訪率和訪問失敗率過高,都造成民調方法無論如何改進,都 #測不到這群人的意見。
簡單說,由於社會環境與科學工具有限的因素,導致民主黨的民調容易被高估、共和黨的民調容易被低估,我稱之為「#藍色泡沫」。從上屆到今年的大選,可以看出民主黨的全國民調與某些州的領先程度普遍被高估了5-8%。
#民調產業的未來在哪裡?
很多人在選前開玩笑說,如果這次再不準,「所有的民調公司都要關門了!」如今結果一出,由於各家民調模型、抽樣範圍與加權方式不同,得出來的預測結果也南轅北轍,雖然不能說民調完全不準確(許多民調在個別州與全國範圍的領先差距都在誤差範圍,變化趨勢也大致符合現實),但美國大眾對於民調的信任可能很難回到從前。
注重趨勢預測的產業如金融業對此就感到非常困擾,根據《路透社》報導指出,許多華爾街的資深經理人與分析師對於民調預測連年出錯、毫不可靠的情況感到困惑與憤怒:「我們為什麼還要相信這些民意調查?」更有人形容這是「民調產業的滑鐵盧。」
也有投資者認為,未來傳統的民意測驗方式可能消失,而更多依賴網路搜索相關的大數據來衡量選民的意圖。
原因是現代人很少在家接電話,即便是透過手機,也很少人願意接起不明來電或陌生號碼。
確實,數據分析的專業如果能夠被應用在商業領域的消費者購物調查,沒有理由不能應用在探測大家的公共事務傾向。去年虹安團隊開發的系統每天自動研讀分析爬蟲下來的數十萬筆台灣網路輿情,再加上情緒分析、自然語言處理、模型預測等科學方法,充分掌握了數據趨勢,也因此能夠正確預測台灣總統大選的票數差距達到0.1%。
當然,台灣的選制與選情相對單純,是否能夠將這樣的技術運用在實際上類似於50+1個不同地理與社會環境小國家的美國選舉加總,將會是很大的挑戰。結合大數據探測與傳統民意分析的方法論,也許會是民調產業的下一波改革浪潮。
#民調的背後更重要的是人心
民調的本質是探測與分析的工具,雖然是科學,但終究偵測的是千變萬化的難測人心。
而依賴民調作出解讀和預測的也是人,是人就會犯錯,也不能因此就輕易導出「民調無用」的結論。
雖然民調在上次和這次大選很難探詢到一些特定族群的意見,但我們更該思考:
#是什麼原因讓他們選擇沈默 或回答符合社會主流想像的說法?
選舉是我們實踐民主的過程,但如果我們的民主讓某群人感到害怕、不願意說話,
這實際上是傷害了言論自由,也是傷害了民主。
衷心祝福美國總統大選可以順利落幕,分裂與對立的美國可以重新合眾為一。
(圖片摘自 foxnews.com )
----
📒延伸閱讀:
1.美國大選民調再失準 隱性川普支持者成關鍵
https://udn.com/news/story/121687/4993275
2.美大選民調又失準 專家分析原因:太仰賴電話
https://news.ltn.com.tw/news/world/breakingnews/3343519
3.美國大選|為何民調又失準?川粉不能說的祕密
https://tw.appledaily.com/international/20201104/STCC3SAYF5DLNGAJMZUJEIOE3E/
4.【外媒綜合】這次美國民調為何失準?凸鎚六個關鍵點
https://money.udn.com/money/story/12937/4990802
5.從美國總統大選看民調「測不準」現象
https://www.twreporter.org/a/presidential-election-polls
6.Trump has a point about the polls, POLITICO
https://www.politico.com/news/2020/06/17/trump-polls-biden-324210
前提為假結論為真 在 香功堂主 Facebook 的最讚貼文
《智能社會:進退兩難》:我們都可以冷靜一下嗎?
.
圖文好讀版:http://mypaper.pchome.com.tw/hatsocks75/post/1380462990
.
記錄一下《智能社會:進退兩難》的一些談話內容,有很多可以討論與思考的部分。在這個時間點看《智能社會:進退兩難》,很難沒有共鳴,片中提到的問題都是現在進行式,而我們正身處其中,更能感受到問題的嚴重性與需要被解決的急迫性。
.
假新聞能夠快速傳播,一是煽動性,可以有效挑動他人的情緒(無論是攻擊或是同仇敵愾),二是宣洩性,透過傳播訊息來表達內心的不滿。不論分享文章的大家是怎樣的心情,我在分享一則新聞或是消息前,總希望自己可以先冷靜想想:這消息是真的嗎?有被證實嗎?它可能造成的影響為何?對於釐清事情真相有什麼幫助?我只是單純在散佈一種激烈的情緒,引發更大的對立嗎?
.
#這是我對自己的期許但我知道有些時候我依然做不到
.
面對社群媒體能怎麼做?當情緒過於激動時,不要第一時間回應與傳播自己看不順眼或覺得有爽度的文章,冷靜過後,再來決定該如何面對。關掉臉書或IG或Line通知,我們不必要隨傳隨到。當你發現自己的讚數變少時,不要一直問自己:「是不是我哪裡不夠好?」讚數的多寡不代表你這個人(或文章)的價值。多看新聞,並且注意出處。在網路上與人交談時,不要自行腦補對方在想什麼,不要貼標籤,也不要因為別人貼你標籤,而合理化去貼別人標籤這件事。不要時刻處於攻擊與防備的姿態,盡量闡述自己的觀點,並試著理解對方的觀點,若是對方不願深談,不要窮追猛打,因為最後很可能會變成雙方不在討論事情,而只是各說各話。
.
#誰是買家誰是賣家產品又是什麼
.
「由於我們並沒有花錢買我們使用的產品,所以我們用的產品是由廣告主買單,廣告主才是客戶,我們才是被賣的商品。」
.
「如果你沒有花錢買產品,你自己就是產品。」
.
免錢的才最貴,當我們使用社群媒體時,我們是在提交出個人的資料,社群媒體利用演算法分析「使用者」的興趣,讓客戶的產品可以投放到適合(準確)的目標族群。社交媒體的使用者鮮少意識到他們在網路上展現的性格、興趣、習慣等,即是被販售的產品。
.
「這是所有公司自古以來的夢想,能夠保證只要刊登廣告,就會有效果,這是他們的業務,他們賣的是確定性,為了在這一行成功,你必須有很強的預測能力,預測能力要強就必須有一個前提,你需要大量的資料。」
.
「很多人以為這些大型公司出賣我們的個資,臉書交出這些資料必會有商業利益,重點是他們拿資料去幹嘛?」
.
電腦如何監控我們?光是你在一張照片上停留多少時間,就會成為一組數字。你是開心或難過,你晚上沒睡覺時在看什麼東西,你按了什麼文章的讚等等。透過這些看似無關緊要的數字追蹤,去預測我們的行為,並建構使用者的性格數據。而且越來越能精準預測我們的喜好,進而開始有效投遞「我們會喜歡的物件或議題」。
.
#科技只要夠進步看起來就會像魔術
.
「你把手機向下拉就能更新,最新資訊就會出現在最上面,向下拉就又能更新又有新資訊,每次都是,這在心理學有個術語叫做”間歇正增強”。」
.
「你不知道何時會得到或者會不會得到某樣東西,原理就跟賭城的吃角子老虎一樣,你不能只是有意識地使用產品,我要深入挖掘人的腦幹,把潛意識習慣植入你的大腦,從你的大腦深處控制你,你甚至不會知道。每次你看桌上的手機,光是看著手機就知道只要伸手過去,就可能有新消息,就好像玩吃角子老虎試手氣,對吧?這不是意外,這是一種設計技術。」
.
「另一個例子是照片標註,如果你收到一封電子郵件,說你朋友剛剛在照片上標註你,你當然會點那封電子郵件來看照片,你沒辦法放著不管。他們完全利用人類的深層人格。你要問自己一個問題:為什麼郵件裡沒有那張照片?這樣看照片不是更簡單?」
.
我覺得社群媒體最變態的設計就是打字的時候會出現「刪節號」,暗示你對方正在回覆留言,那會給你一種期待感,會想著:「對方要留言給我,那我就在這裡待一下吧。」久而久之,你使用社交媒體的時間就會拉長,更無法離開網路世界。
.
#我們成了實驗室的白老鼠?
.
「臉書進行他們所謂的”巨幅感染型實驗”我們要怎麼在臉書網頁上用最低限度的暗示,就能讓更多人在期中選舉投票?他們發現真的有辦法做到,其中一個結論就是我們現在知道的:人類在真實世界的行為和情緒,的確會受到影響。而且使用者完全不會察覺。他們什麼都不知道。」
.
「人類在真實世界的行為和情緒,的確會受到影響。」這件事在過去幾年的感受更為深刻,無論是年初的台灣總統大選或是近期的美國總統大選,我們發現網路言論變得越來越失控,很多時候人們不再「好好談話」而是發出各種情緒化的言論,到處貼標籤,醜化彼此。其實早在網路發展初期,這樣的問題就已經發生,但激化與對立的狀況依然是一年比一年往上增強,而我們也在不知不覺中變得更為偏執、情緒化、暴力...
.
「我們拿這些人工智慧系統對付自己,用逆向工程的方式,找出怎麼做才能讓人類做出回應。幾乎就像刺激蜘蛛的神經細胞,看看怎麼讓蜘蛛的腿抽動。這就像一種監獄實驗,我們把人帶進這個數學矩陣,利用他們的一舉一動,搜刮大量金錢和資料,中飽私囊。用戶卻完全不曉得。」
.
「腳踏車面世時,沒有人受害,對吧?如果大家都開始騎腳踏車,沒有人會說:天啊,我們毀了這個社會。或者腳踏車會影響大家,讓大家都不照顧小孩、毀了民主基石,導致大家無法分辨真相等等。我們絕對不會說腳踏車有這些問題。如果某樣東西是工具,就只會靜靜躺在那裡,耐心等待。如果某樣東西不是工具,就會跟你要東要西,引誘你、操弄你、要你提供東西。我們已經不是在工具型的科技環境,而是進入成癮和操弄型的科技環境。改變的是這個:社群媒體並非被動讓人使用的工具,而是有其目標,有自己實現目標的方式,利用人類心理對付人類。」
.
社群媒體透過心理學去改變人類的行為,這其實跟《全面啟動》的概念非常相似,科技不再停留在淺層表面,而是進入深層的意識裡,植入一個想法(習慣),改變人們對一件事或一個人的想法。
.
#你在看我嗎?
.
「全世界只有兩種產業把客戶稱為使用者,一個是毒品,一個是軟體。」
.
「人類演化後,開始在意其他部落同胞喜不喜歡我們,因為這很重要。但是我們有演化成在意一萬個人的想法嗎?我們並沒有演化成每隔五分鐘就需要一點點社會認可,這不是人類與生俱來能夠應付的體驗。」
.
「我們根據公認的完美標準改變生活,因為這種短期訊號就像一種獎勵,大心、按讚、豎起拇指,我們認同這種價值,以為這就是真理。但這都是虛假、稍縱即逝的人緣,不但無法長久,而且承認吧,這種生活反而讓你比以前更空虛。因為你被迫進入這種惡性循環,心裡想著:接下來該做什麼?因為我還想要這種感覺。想想看,這種情形對二十億人的影響,再想想大家對別人的觀感如何反應,大事...真的不妙。」
.
記得去年的南美旅行,有個小鎮的網路超弱,在那裡我只能發簡單的臉書訊息。在小鎮待上兩天時間,一方面感到焦慮「網路這麼慢,我會不會錯過什麼重要訊息?」一方面卻也發現,當你無法使用網路時,你不會一直被手機制約、不會一直想要知道網路上誰誰誰又說了什麼、不會一直想要分享你看到了什麼或拍了什麼照(因為那讓我們覺得自己很重要)。當生活沒有非必要讓他人知道我們的一舉一動時,或許我們才能回過頭看見自己的真正需求。
.
諷刺的是,觀賞《智能社會:進退兩難》時,我一邊紀錄下劇中有意思的對白,一邊不由自主地產生:「哇,這段話講好好,我要記下來發到網路上,這樣可能會賺到很多讚。」想法。在社群媒體的時代,我們已經被訓練成無時不刻都在思考如何贏得他人的目光,如何索求他人的認同...即便,我正在觀看一部探討網路媒體對人的影響的作品。
.
「整個新生代都被我們訓練和制約成只要覺得不舒服、寂寞、不確定或者害怕,就可以拿數位奶嘴麻痺自己,這會削弱我們處理負面感覺的能力。」
.
#生命會找到出路
.
「你給電腦一個目標:我要這個結果。然後電腦自己學著怎麼達成,”機器學習”這個名詞就是這樣來的,所以系統每天都精進一點,用最佳順序挑選最佳貼文,讓你用這套產品的時間越來越長。其實沒人知道人工智慧用什麼方法達到那個目標。」
.
「這些公司裡只有少數人,不管是臉書、推特還是其他公司,只有幾個人瞭解這些系統的運作方式,連他們都不見得完全瞭解特定內容會變成怎麼樣,所以我們人類幾乎無法控制這些系統,因為這些系統控制我們看到的資訊,系統對人的掌控能力,超出人控制系統的能力。」
.
人類創造社群媒體,利用心理學掌控使用者,社群媒體在短短幾年內迅速發展,創造者甚至難以控制它的成長速度。這讓我想起《侏羅紀公園》的經典對白:「生命會找到自己的出路。」人類的好奇心為社會帶來便利與多種可能性,但同時間,人類的發明卻也常常讓自身陷入險境。看似無生命的社交媒體,其實是有機體,依靠人類的寂寞、孤單、自戀、恐懼、喜悅、悲憤等情緒,變得越來越強大而有殺傷力。
.
#資訊客製化的恐怖
.
「我要向大家解釋臉書的動態消息功能到底有多糟糕時,其中一個例子就是要大家看維基百科,你登入維基百科網頁,看到的東西都跟別人一樣。這是網路上少數大家都一樣的東西。假設維基百科說:我們要讓每個人有不一樣的客製化定義,而且我們是拿錢辦事。所以維基百科會監視你,維基百科會計算:”我要怎麼做才能讓他改變一點點,以便達到商業利益呢?”結果維基百科就改變詞條內容。你能想像嗎?你應該可以想像得到,因為臉書、Youtube動態消息就是如此。」
.
「就算是兩個很親近的朋友,他們的朋友也幾乎重疊,他們想:我去看臉書上的動態消息,就會看到同樣的更新。但其實完全不是這樣,他們會看到完全不同的世界,因為電腦會根據計算結果,顯示最適合他們的內容。」
.
#同溫層侷限你的視界
.
「你可以想像27億個《楚門的世界》,每個人都有自己的真相,自己的...事實。久了以後,你會以為大家都同意你的看法,因為動態消息裡的每個人都跟你有同感,一旦你處在那個狀態,就很容易被操弄,就跟你被魔術師騙了一樣,魔術師表演撲克牌技法時會說:隨便選一張牌。你不知道的是他們早就設計好了,所以你選的是他們要你挑的牌。臉書就是這樣,臉書說:你挑選你的朋友、你挑選要點的連結等。其實都是胡扯,就像魔術師一樣,臉書控制你的動態消息。」
.
「你看到另個陣營,就會開始覺得:”這些人怎麼這麼笨?你看我經常看到的大量資訊,他們怎麼會看不到同樣的東西?”答案是:“他們真的看不到同樣的東西。”。」
.
#演算法下被操弄的人偶(人類)
.
「我擔心自己開發的演算法反而造成社會的兩極化,但從這個觀點來看,兩極化現象確實是讓用戶上線,非常有效率的方法。」
.
「大家以為演算法的設計是提供民眾自己想要的東西,錯了,演算法只是想找幾個夠棒的幻境,找個和用戶興趣最接近的幻境,如果你開始看這類影片,系統就會一直推薦下去。」
.
「麻省理工學院有項研究,推特上的假新聞傳播速度,比真的新聞還快六倍。如果一個人的優勢比另一個人強上六倍,這個世界會怎麼樣?」
.
「我們打造的系統讓假消息更有優勢,這不是我們故意的,只是因為假消息比真消息更能讓公司獲利,真相太無聊了。」
.
#假新聞現在式
.
「所謂的第三人並不是以駭客手法操作選舉,俄國人並沒有駭掉臉書,他們只是利用臉書為合法廣告主,並合法使用用戶開發的工具。差別是:他們的用意非常邪惡。這就像遙控戰爭,一個國家操弄另一個國家,卻不必真的侵犯實體國界。」
.
「重點不再是你要投票給誰,而是讓社會徹底混亂、民眾分裂,目的是讓兩派人馬,再也聽不到對方的聲音,再也不想信任對方。」
.
「我們要把社會賣給出價最高的人嗎?我們要把民主體制整個賣掉,讓你潛入每個人的心理,讓特定族群相信謊言,然後造成文化大戰嗎?我們要這樣嗎?」
.
「如果我們對於何者為真沒有共識,或者認為世界上沒有真相,那就完了。這是其他問題底下的根本問題,因為如果我們對何者為真沒有共識,那就根本無法解決任何問題。」
.
「科技並不是人類的生存威脅,而是科技擁有把社會黑暗面激發出來的能力,社會最黑暗的一面,就是生存威脅。」
.
「會不會未來世代的孩子,再也不知道網路幻境出現前,這個世界原本的樣貌?如果你不知道自己身在母體裡,要怎麼從母體裡醒過來呢?」
.
#經濟至上的危機
.
「我們發明"讚"按鈕時,動機是把正能量和愛散播到全世界,然而這個初衷現在反讓青少年因按讚數太少而感到憂鬱,或者可能造成政治兩極化。我們當時完全沒有想到這些...」
.
「我認為很多人都被商業模式、經濟誘因和股東壓力給卡死了,幾乎不可能有別的做法。」
.
「我覺得大家必須認同企業努力賺錢其實沒有關係,有關係的是沒有規範、沒有規則、沒有競爭...導致公司變成實質上的政府,然後他們說:"我們可以自律"這根本是胡說八道,離譜至極。」
.
#Netflix
.
網飛推出《智能社會:進退兩難》這部記錄片,請求人們思考社交媒體存在的問題,但同時間,我們在 Netflix 上看的每一部影片,也會成為一組數字,Netflix 的演算法會根據觀看者的類型偏好,推薦特定的影片。好處是:使用者比較不會踩雷。缺點是片單會越來越偏,最後侷限在特定的類型上。其實...我們已經深深陷入演算法的蜘蛛網中,很難從中逃離。
前提為假結論為真 在 紫煙亭- 【前提錯,結論自然錯?】... - Facebook 的推薦與評價
學過邏輯,應該懂得自己找例子。 * * * P.s. 「真前提」指全部前提皆真,「假前提」指至少一個前提假。 ... <看更多>
前提為假結論為真 在 思辨方法(四):推理前提 - 何幻 的推薦與評價
大概是由于斯多亚学派的影响。 蕴含式是一个命题,它可以为真,也可以为假。 而推论则是一种预先定义的规则,有前提就有结论。 ... <看更多>
前提為假結論為真 在 [請益] 演繹論證中的真確性- 看板logic 的推薦與評價
目前在自學彭孟堯老師的基礎邏輯
在第一章習題中有點問題,故來請教版上各位先進!
判斷下列各題的說法是否正確
Q1.如果一個論證的所有前提和它的結論是一致的,則該論證是有效的。(答案:否)
我的想法:
"前提與結論是一致的"與前提、結論的真假值無關,只與命題是否為內在矛盾有關。
而有效的論證,即代表不可能出現前提皆真而結論為假的狀況。
但其中的"結論為假"並不代表結論是"內在矛盾的"
即,一個"前提皆真而結論為假"的論證,只要為假的結論不是內在矛盾,
則此論證雖是無效的,但仍可視為一致。 (不知這樣的想法是否正確?)
Q2.一個演繹論證的所有前提實際上為真,且結論實際上為真,則它是真確的。(答案:否)
我的想法:
一個論證是真確的,即代表:(1)該論證是有效的,且(2)該論證的所有前提皆真
因此,我認為
"所有前提實際上為真"-->符合(2)
"所有前提實際上為真,且結論實際上為真"-->符合(1)"有效的"的定義
所以我覺得這題答案應該是正確的...orz
以上,感謝各位版友的解惑~!!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.230.62
※ 文章網址: https://www.ptt.cc/bbs/logic/M.1423389063.A.A65.html
... <看更多>