Blind Signature...

最近看到電子投票的事情,想起之前研究所時所學的密碼學... 是否有辦法找出一個合理的密碼系統,可以在密碼學這層解決電子投票要處理的問題:

  • 正確性:一人一票、無法偽造、無法更改。
  • 匿名性:無法得知單一的投票內容。
  • 可驗證性:自己可以驗證自己的投票內容、任何人都可以驗證全體的投票總數。
  • 其他要求:...

有很多人試著去建立這樣的系統 (在「Cryptography - Electronic Voting」這篇可以看到),但目前沒有完美的系統可以做到...

其中 Blind Signature 在這樣的系統內常常被拿出來當工具... 之前沒仔細看懂,週末花了一些時間發現 Blind Signature 還蠻有趣的。

Blind Signature 想要與一般的 signature 一樣,讓對方簽 message m,取回 signature s。但多了一個要求:要在對方不知道 m 的內容情況下達到相同的效果。

在 Wikipedia 上有說明用 RSA 的作法,看懂以後覺得還蠻有趣的...

Mozilla Firefox 與 Google Chrome...

我家裡與公司的 Mozilla FirefoxGoogle Chrome 都是在 Ubuntu 上面跑,至於家裡的 Mac Mini 就沒換了,還是跑 Chrome。來講一下我對這兩個瀏覽器的的感覺。

從安裝開始,在 Ubuntu 下面我是透過 ppa 裝 release 前一個 channel (兩個都叫做 beta)。安裝的方式很簡單,設好 ppa 後 apt-get update; apt-get dist-upgrade 就會把系統的 Firefox 與 Chrome 升級到新版。

對於套件的相容性,Firefox 有很明顯的改善,現在從 Release 升級到 Beta 的時候不會直接把所有的套件標成不相容,會有一些機制處理,這方面算是跟 Chrome 有得玩。

另外一方面 Chrome 也支援更多 API 讓套件使用,現在套件可以做很多網路層的操作,接下只要 Chrome 把 UI API 設計完整一點就可以了... (Chrome 上面套件的設定畫面相較於 Firefox 是有需要再改善的,瀏覽器對 UI API 支援太陽春算是原因之一...)

同步的問題因為 Chrome 可以綁定 Google 帳號,就算是 Two-Factor 時也可以用 application password,而 Firefox 的同步功能我試了三次都沒成功過...

效能方面,可以發現兩個瀏覽器的效能都很好了,Twitter 算是 script 很多,可以感覺到比較頓的網站 (參考「bandwidth」這篇),兩個瀏覽器用起來都不會有明顯的不順暢。

操作方面是還是可以感覺到 Firefox 在某些地方卡住:

  • focus 在 Flash 時,Ctrl-W 無法關閉視窗 (因為 Ctrl-W 被 Flash 抓走了)。
  • Firefox 的 Firebug (yeah,跟 Firefox team 無關,但這剛好對應於 Chrome 內建功能) 沒辦法用 Ctrl-W 關閉。
  • 在 address bar 輸入 url 有時會被 suggestion 卡到 lag,這之前有提過了,在 bugzilla 上也有 ticket 在追這個問題...

最後要談的是穩定性,兩者的穩定性都已經可以接受,只是很明顯 Firefox 遇到複雜的 script 還是不太穩,無論是 Facebook 還是 Twitter,偶而會出問題,這時候把 browser 關掉再開就好了...

Firefox 大概還會再用一陣子吧... 算是測試不同的 browser。

用 hjkl 表示左下右上,以及 ~ 表示 home 的原因...

OSNews 上面看到:「Why vim uses the hjkl keys as arrow keys」,引用了「Here is why vim uses the hjkl keys as arrow keys」這篇文章,提到為什麼 vi 使用 hjkl 表示左下右上四個方向,以及用 ~ 表示 home directory 的原因。

首先是 Bill Joy 發明 vi 時所使用的 ADM-3A terminal 鍵盤的樣子:

再來是 ~ 這個鍵上面寫著 HOME:

既然有人定義好,那就直接拿來用 :p

AMD CPU bug 問題...

去年年底時 Matthew DillonDragonFly BSD mailing list 上的說明:「Buildworld loop seg-fault update -- I believe it is hardware」,以及今年三月從 AMD 確認問題「AMD cpu bug update -- AMD confirms! (additional info)」。

可以從 mailing list 上看到他想辦法重製問題的方法 (從兩天才能重製,到小於 60 秒就能重製),讓他覺得最棘手的原因是無法引入工具:

Debugging the issue in userland (and kernelland) is extremely difficult because most debugging mechanisms caused the problem to stop occuring.

當故事看還蠻... 有趣?(當事人大概不這麼覺得)

AWS EC2 全面支援 64bits,並補上產品線...

之前用 AWS EC2 的人常遇到的狀況是,t1.micro 記憶體太小會常常 out of memory (用 EBS 硬撐當 swap 效能不好),但 m1.small 只能跑 32bits,為他做完整的 32bits image 維護成本實在不划算,因為等到之後變大後又得改做一份 64bits 的 image,如果從 t1.micro 改用 m1.large 又嫌太大台...

現在這個問題總算是解決了:「Announcing three new Amazon EC2 features」,EC2 這次提供新功能包括:

  • 推出新的 instance 種類 m1.medium,收費是 m1.small 的兩倍,所以規格大致上也是 m1.small 的兩倍,其中記憶體是 3.5GB RAM。
  • m1.small 與 m1.medium 除了可以跑 32bits 以外,也可以跑 64bits。

於是本來的問題可以用不同方向解決:

  • 本來做的 32bits image 當 m1.small 不夠用時也可以先拿 m1.medium 擋著。
  • 既然所有 EC2 instances 都可以跑 64bits,以後只要做 64bits image 就好了。
  • 同樣的,現在用 m1.large 嫌太大台的可以降到 m1.medium 或是 m1.small。

另外這次提供 Java SSH client,可以讓你直接在 Web Console 上面一貫作業,這個就比較用不到了...

GitHub 要求全面檢查 SSH Key

GitHub 被攻擊成功後 (參考 GitHub 官方所說的「Public Key Security Vulnerability and Mitigation」這篇),官方除了把漏洞修補完以外,接下來做了更積極的措施:暫停所有的 SSH key 存取權限,一律等到用戶 audit 確認過後才開放:「SSH Key Audit」。

這次 GitHub 除了修正問題、audit key 以外,另外還提出了新的機制讓用戶更容易發現異常存取行為,包括了:

  • 新增 SSH public key 時要輸入密碼。
  • 新增 SSH public key 成功後會寄信通知。
  • 新增「Security History」頁面可以看到帳戶的安全狀況。

算是很積極補救的作法。

另外說明,要如何 audit key,也就是要如何取得你的 public key fingerprint:

ssh-keygen -lf .ssh/id_rsa.pub (如果你是用 RSA)
或是
ssh-keygen -lf .ssh/id_dsa.pub (如果你是用 DSA)

出現的訊息就是你要比對的值。記住!既然是 audit,請一個一個比對確認 fingerprint 全部都正確。

附上原始信件:(好像還沒在 blog 上說明)

A security vulnerability was recently discovered that made it possible for an attacker to add new SSH keys to arbitrary GitHub user accounts. This would have provided an attacker with clone/pull access to repositories with read permissions, and clone/pull/push access to repositories with write permissions. As of 5:53 PM UTC on Sunday, March 4th the vulnerability no longer exists.

While no known malicious activity has been reported, we are taking additional precautions by forcing an audit of all existing SSH keys.

# Required Action

Since you have one or more SSH keys associated with your GitHub account you must visit https://github.com/settings/ssh/audit to approve each valid SSH key.

Until you have approved your SSH keys, you will be unable to clone/pull/push your repositories over SSH.

# Status

We take security seriously and recognize this never should have happened. In addition to a full code audit, we have taken the following measures to enhance the security of your account:

- We are forcing an audit of all existing SSH keys
- Adding a new SSH key will now prompt for your password
- We will now email you any time a new SSH key is added to your account
- You now have access to a log of account changes in your Account Settings page
Sincerely, The GitHub Team

--- https://github.com support@github.com

AWS EC2 (以及使用 EC2 的加值服務) 降價,以及提昇存取 AWS S3 的效能...

AWS 宣佈 EC2 以及使用 EC2 的服務 (包括 RDS 與 ElastiCache) 降價:「New, lower pricing for Amazon EC2, RDS, and ElastiCache」,降價幅度在 Reserved Instances 比較大,但 On Demand Instances 的部份也有降一些。

Amazon.com 的 CTO Werner Vogels 也寫了一篇「Driving Compute Cost Down for AWS Customers」可以看看。

另外在「Amazon S3 Performance Tips & Tricks + Seattle S3 Hiring Event」這邊有 Doug Grismore (Director of Storage Operations for AWS) 寫了一篇客座文章,說明當量很大的時候要怎麼提昇對 AWS S3 存取的效能。這篇文章裡面有提到一些內部實做的結構,藉著了解這些內部結構,規劃檔案名稱,藉此提昇效能。

PHP 5.4

PHP 5.4 前幾天正式釋出了:「PHP 5.4.0 released!」,新增與改變了很多東西。

有些蠻值得注意的地方:

  • safe mode 與 magic quote 都消失了,升級後需要重新檢查 php.ini
  • array_combine(array(), array()) 不再傳回 FALSE 了,總算是傳回 array()
  • 可以用 [] 表示 array() 了。
  • function 傳回 array 後可以直接對 array 取值,也就是 foo()[0] 變合法語法了。
  • new 完後可以直接 call function 了,也就是 (new Foo)->bar() 變合法語法了。
  • 內建 web server。

另外記憶體使用量以及效能都有巨大的改善,尤其是對物件的 method 效能改善很多,這對 framework 是好消息。

不過應該還是等 5.4.1 之後再用吧,剛出來的這幾個版本應該有不少人會踩到地雷需要修正...

滲透測試...

Slashdot 上看到「Stealthy Pen Test Unit Plugs Directly Into 110 VAC Socket (Video)」這東西...

看圖片與規格資料,應該是接一個 110 伏特的電,然後插入一張 3G SIM 卡,就可以透過 3G 的頻寬管理這顆盒子。理論上可以完全被動收無線網路訊號,把收到的資料透過 3G 丟出來... 超棒的滲透工具?XD

無線網路強制上 VPN 應該是常見的解法了...