MySQL 5.6 上線,以及 openSUSE 與 Fedora 對 MySQL 的反擊...

Oracle 正式將 MySQL 5.6 推上線 (GA,General Availability):「Oracle Announces General Availability of MySQL 5.6」。

在官方的「What's New in MySQL 5.6」有列出 MySQL 5.6 的進展。另外在 Percona 的創辦人 Peter Zaitsev 所整理的文章「MySQL 5.6: Improvements in the Nutshell」裡面也整理了一份資料。

在 Oracle 的工程師的 blog 上可以看到不少說明 InnoDB 在多 CPU 環境下的顯著進步,不過我是覺得看看就好... 進步是一定有,但實際用起來通常不會有官方說的那麼多 :p

可以預期不久後 Percona 應該會丟出對應的版本 (至少之前已經有風聲了),到時候就用 Percona 的版本吧。

另外一方面,openSUSEFedora 都已經決定將系統內的 MySQL 改用 MariaDB 代替:

原因的話就不詳細寫了,上面有一些無關痛癢的官方說法。在「Oracle who? Fedora & openSUSE will replace MySQL with MariaDB」報導裡寫的比較直接。

大家對 Oracle 沒什麼好感 (於是 Solaris 的事情又被拿出來婊),可以看到在 mailing list 上對 Oracle 的人酸溜溜的 XD

W3 Total Cache 0.9.2.6 的災情慘重...

W3 Total Cache 出了新版,升級上去後 WordPress 就爛掉了,最後是先 downgrade 到 0.9.2.5,然後再進系統把 W3 Total Cache 完全 deactive...

有看到升級資訊的人可以先等一下,這次的 0.9.2.5 到 0.9.2.6 不是 minor version upgrade:

-rw-r--r--   1 gslin  staff   854455 Feb  6 04:12 w3-total-cache.0.9.2.3.zip
-rw-r--r--   1 gslin  staff   915186 Feb  6 04:11 w3-total-cache.0.9.2.4.zip
-rw-r--r--   1 gslin  staff   915384 Feb  6 04:02 w3-total-cache.0.9.2.5.zip
-rw-r--r--   1 gslin  staff  1292961 Feb  6 04:11 w3-total-cache.0.9.2.6.zip

看起來這個作者沒什麼版本號的觀念,之後升級他的東西小心一點... XD

微軟提供的 IE{7,8,9,10} 測試環境...

微軟前幾天公開了 IE{7,8,9,10} 測試服務:「Testing made easier in Internet Explorer」。

測試服務包括:

  • 網站版本,可以測試公開網站。
  • 虛擬機版本,可以測試內部網站。這次除了提供 Virtual PCHyper-V 版本的映像檔外,還提供了 VMware PlayerVirtualBox 版本。

不過這些檔案會不會太大了點... 我是抓 VirtualBox 版本,IE10_Win8.zip 居然有 2.7GB,為了真實模擬,所以把整個 Win8 包進去嗎 XDDD

SSL/TLS 的問題...

這篇與「對稱式加密系統的爆炸歷史 (Authenticated encryption 的問題)」這篇相關,建議可以一起看一看。

TLS (Transport Layer Security),前身是 SSL (Secure Sockets Layer),是目前 HTTPS 所使用的加密協議。發展的順序上是 SSLv2、SSLv3、TLSv1、TLSv1.1、TLSv1.2。

然後有兩篇文章可以看:

第一篇文章講 Padding oracle attack,第二篇文章是酸 SSL/TLS 的修正愈修愈歪... XD

AES 這類的 block cipher 在加密或解密時會要求切齊 block size,以 AES 的要求就是 128bits (16 bytes)。

而對於不齊的資料要怎麼加密呢?其中一個方法是 PKCS#7:(圖片取自第二篇文章)

Padding

要想辦法補齊 128bits (16bytes),如果像上圖需要補 7bytes 進去,就都補上 x07 (剛好就是補上長度),另外在最後面會補上 padding 的長度,而問題出就出在這個設計先天就有缺陷:在 SSL/TLS 所使用的 MAC-then-Encrypt 中,MAC 只計算原文的值,沒有保護到 padding 的部份,於是就可以針對 padding 的部份想辦法找到洞鑽。

pseudo code 可能是這樣:

// Decrypt to plaintext + mac + padding
$plaintext_mac_padding = decrypt($ciphertext);
if (NULL != $plaintext_mac_padding) {

    // Now decode padding part
    $plaintext_mac = decode_padding($plaintext_mac_padding, $padding_length);
    if (NULL != $plaintext_mac) {

        // Now check MAC part
        $plaintext = check_mac(plaintext_mac);
        if (NULL != $plaintext) {

            // Now it's okay
        }
    }
}

攻擊者亂改 $ciphertext 會導致解出來的 padding 也亂掉,但早期的 SSL 會回傳「padding error」這種對攻擊者有利的資訊,而導致攻擊者可以利用這個資訊想辦法得知更多內容。

而 TLS 並沒有從根本改善,而是試著加上機制補西牆:當遇到錯誤時就跳過,不要傳回錯誤資訊。

但因為攻擊者亂改封包造成 decode_padding() 會失敗,而沒有呼叫到 check_mac()。這導致了大量的計算時間差與能量差,而使得攻擊者可以藉由這些資訊而得知是否成功。而官方在 TLSv1.2 的建議是再補上機制來補洞:

In general, the best way to do this is to compute the MAC even if the padding is incorrect, and only then reject the packet. For instance, if the pad appears to be incorrect, the implementation might assume a zero-length pad and then compute the MAC.

而官方認為雖然這樣還是有 timing channel,但已經小到會被雜訊覆蓋,所以「應該」可以解決問題:

This leaves a small timing channel, since MAC performance depends to some extent on the size of the data fragment, but it is not believed to be large enough to be exploitable, due to the large block size of existing MACs and the small size of the timing signal.

於是,只要覺得「應該安全吧」,就會「應該會被破」:「Lucky Thirteen: Breaking the TLS and DTLS Record Protocols」:

The attacks apply to all TLS and DTLS implementations that are compliant with TLS 1.1 or 1.2, or with DTLS 1.0 or 1.2. They also apply to implementations of SSL 3.0 and TLS 1.0 that incorporate countermeasures to previous padding oracle attacks. Variant attacks may also apply to non-compliant implementations.

這 SSL/TLS 的設計讓人補到快起笑了... XD

資安的東西通常是愈複雜就愈容易被抓問題出來,在 SSL/TLS 的歷史包袱下,不知道什麼時候才想換 Encrypt-then-MAC 來改善底層問題...

網站上 PNG 的使用率超越 GIF...

在「The PNG image file format is now more popular than GIF」這邊看到,針對 Top 1000 網站統計發現 PNG 的使用率 62.4% 比 GIF 的 62.3% 高了:

查了一些資料發現,雖然 GIF 的專利都已經過期很久了 (Unisys and LZW patent enforcement),但 PNG 還是有很多功能與支援度的問題,最主要的兩個:(Web browser support for PNG)

  • 不支援動畫。
  • IE 在 IE8 以及之前的版本對於 PNG 的進階功能 (大多圍繞在 Gamma 上) 有一卡車的問題。

第一點實在很傷啊,大家都愛動態 GIF... XDDD

AWS 又調降價錢了...

在「EC2's M3 Instances Go Global; Reduced EC2 Charges and Lower Bandwidth Prices」看到 AWS 又調降價錢了,這次調降是圍繞在 EC2 上面。

首先是第二代高記憶體用量的機器 (代號 M3) 從本來只有 us-east-1 可以用,現在在全世界都可以用了。然後高 CPU 用量與高記憶體用量的機器的費用也降價了,不過主要是將在非亞洲區。

另外一個蠻特別的降價是 AWS 自家機房內的傳輸頻寬,這包括跨區域以及 CloudFront

舉例來說,本來 us-east-1 傳資料到 us-west-1 是依照 us-east-1 Internet outbound traffic 算錢 (USD$0.12/GB for us-east-1),現在 AWS 則是將這種流量視為另外一種內部使用,而給予不同的收費標準 (USD$0.02/GB for us-east-1)。同理,CloudFront 到 EC2 或 S3 上抓資料也是類似的算法。

這對於 AWS-based 提供服務的公司來說應該是很不錯的消息?因為應該有些用戶是從 us-west-{1,2} (美西) 或是 eu-west-1 (歐洲) 連到大本營 us-east-1;而對 CloudFront 的節省應該有限,因為 cache 後就不會往後面再要資料了?