mashbean 黃豆泥
mashbean.eth
豆泥的以太坊地址:mashbean.eth
狀態:未簽名
0x39d7d9b18f1d765bdacd3c2f25a30ba64dfccdcb430da9729fe6bd2a1de29c11
已簽名表示這篇文章已建立獨特的身分證字號(內容雜湊,contentHash)並且由豆泥簽署認證,簽署是採用以太坊區塊鏈的豆泥專用地址(signer.mashbean.eth)。只要內容一經修改,就會需要重新驗證換發新的身分證字號。但豆泥不是每天都在公所上班,所以偶爾會慢一點認證。

我用數位皮夾實現「離線驗證」了!✈️(這個 emoji 是飛航模式的意思)
簡單來說就是讓兩個數位皮夾,不需要連上網路,就可以互相驗證。
只要數位皮夾支援離線驗證,就可以說是成為數位皮夾究極全青眼白龍。
*
還記得兩三年前在數發部做前期研究、寫標規時,有把離線驗證的需求寫進去,忘記是要廠商做出來還是做可行性評估,總之截至目前為止,官方皮夾沒有這個功能。
不過好消息是我自幹出來啦,而且難度不高,連我都可以寫出來(我甚至只是一個 Vibe 仔),官方支援這項功能應該指日可待吧?台灣或許尤其需要,畢竟有備無患,哪天用到就阿彌陀佛,沒用到當然最好。
*
支援離線驗證的數位皮夾是數位韌性的重要拼圖,甚至可以在災難發生時成為領物資的好幫手,畢竟完全離線的數位驗證服務市面上罕見,沒讓頭商業公司也不會做。
離線驗證其實就是「有備而來」名稱的由來,任何服務都必須有備而來,包含數位身分服務。畢竟有 Bear 來,維尼熊一直虎視眈眈。(這梗玩好久了)
有備而來是打造理想數位皮夾的實驗計畫,用開源的方式一步步實證數位皮夾這樣做,真的可行!以此實證進行倡議,並且貢獻原始碼。今天就來分享離線驗證開發心得。
*
斷網了怎麼辦?無論是海纜斷掉、網路續線被剪掉、接收站被拆掉、基地台因為種種原因被干擾、機房大火等等,難然上網受阻,但只要手機還在,數位皮夾就一定沒事。
即使數位證件好好的躺在你的手機裡,如果要驗證時,驗證的服務還要連到伺服器(乃至於海外),這樣其實根本沒有做到離線驗證。當網路不穩時(如最近城鎮韌性演習的基地台網路降速),數位皮夾的使用就會出問題。
事實上,若使用官方數位憑證皮夾的門號電子卡來超商取貨,手機也要先連線回去官方的伺服器,而不是單純用超商的 POS 機進行驗證,雖然我不確定伺服器放在哪裡就是了。不過目前超商取貨的解決方案,不是真正的離線驗證。
我前天發佈的「請出示皮夾」也不是離線驗證,因為放在 Cloudflare,到時候也會一起連不上。
斷網時,也很有可能需要領取物資、證明某些身分資格,除了傳統的證件之外,手機不離身的我們其實很適合使用數位皮夾來收身分驗證,而且在許多場合可能比紙本證件效果更好,因為可以同步記錄分發方的手機端電腦裡。
但沒有電腦、網路,如何驗證?此時最好的方式,就是裝有數位皮夾的手機來互掃互認!因此,理想的數位皮夾除了要有收卡片的功能外,最好也要有發卡片的功能。在國外案例中,有些國家除了提供數位皮夾,也順帶開發了驗證皮夾的 App 給服務提供者。
因此這次打造了「離線驗證」的功能,讓手機不需要聯網,透過藍芽互聯的方式就可以來互相驗證(當然也可以用 NFC、區網 WiFi、或者動態 QR Code?!不過暫時沒做這塊)
*
說白了,其實就是把驗證模組移植到手機上面而已,難度不高。這次實驗了政府核發的卡片(門號驗證卡)、自發的數位身分證,也分別測試了一般官方驗證(OIDC4VP)與零知識證明隱私驗證,都成功了(淚目),零知識證明明顯比一般驗證困難很多。
三個小心得:
一、政府發行的卡片放到手機裡以後,真的創造了某種程度上的「數位韌性」。因為卡片就是扎扎實實地躺在自己的手機裡,所以萬一政府服務失靈,也可以拿手機裡的卡片驗證、或驗別人(當然官方皮夾還沒有這個功能)。此時後面要接著開發或許只接災難給付、現場登錄……等的服務,就是很簡單的事。
這樣的做法,就是「數位自主權」的效益,因為無需依賴過多的數位服務,無論政府還是商業服務。無形之中也強化了「數位主權」,因為國家發行的卡片有了更多應用與備援。自主權與主權聽起來很像繞口令,其實很簡單,自主權就是強調自身權益,主權就是強調國家的利益。
二、有一個夠好用、涵蓋廣泛的數位證件還是很重要的,這會下降「要驗啥」的門檻,不然驗的人、給驗的人根本不知道彼此要驗什麼。
初步梳理後,真的要驗的需求其實就是三組而已:「不是兒童、台灣人、真人」(屬性驗證)、「是否本人」(法定身分驗證)、「有沒有重複驗過」(唯一證明)。基於這三組類型,我還是認為有隱私保證的「身分證」是最佳解,不過依照現實條件,官方大概不會這樣做。
所以我用行動自然人憑證+MyData 組合拳,自己做自己發,之後文章來寫這塊。
三、離線驗證的「零知識證明」做得到,驗證時間當然也比一般驗證還要更複雜,不過我很納悶,現場驗證(離線驗證)真的有零知識證明的需求嗎?因為本人就在面前,要實現完全隱私,面對面的風險其實就很大了。我的初步心得是現場驗證,只需要選擇性揭露就可以涵蓋大多數的需求,這可以大幅度地降低開發難度與運算空間。
*
當然一如往常,所有的原始碼都已經開源。詳細的開發報告可以在「難題:有備而來」看到。順利的話接下來應該就下 2-3 篇,有備而來的奇幻旅程就結束了。