UPS 快買快裝記

上週六早上, 我一早起來 “拔草測風向", 收 email 看需不需要去加班? ….嗯, 好像一切都在控制之中, 還不錯! 正在得意之際, 9:10 am 那時忽然就停電了! 怎麼回事? 過了一會兒電就來了, 原來是跳電.

雖然只是小小的跳電, 我知道我的部落格主機掛了!  因為以前重灌怕了, 我已經在電腦採用 RAID 1 的設定. 即便如此, 每次不正常關機或是當機, 電腦一定會先說 BCD (Boot Configuration Data) error 開不起來. 這時候讓電腦有電, RAID 狀態就會從 normal 切到 verify, 它自救一段時間之後, 自然而然就恢復正常了. 不過若加上 check disk 這個步驟, 沒有半天的時間搞不定.

以前就曾想要買不斷電系統 (UPS = Uninterruptible Power Supply), 感覺這樣對電腦硬碟比較有保障. 但是畢竟幾年才會發生一次大颱風大地震, 對於突然停電的顧慮, 很容易地就被沖淡了. 這次有點不一樣, 完全不是什麼地震颱風, 充其量是下了一陣暴雨, 說不定只是有人偷接電….不過, 政府選前說不缺電, 選後說 “不保證不缺電", 萬一日後真的缺電了, 會不會變得常常跳電呢? 那是不是應該先買 UPS 概念股呢?

以前飛瑞做 UPS 很有名, 看一下股價適不適合吧!? 不查還好, 一查才發現它早就被併購下市了. 也罷! 我還是自己買一台 UPS 練功吧! 既然飛瑞被買了, 那家比較厲害呢? Google 的結果發現 APC 是世界第一大品牌, 那就是你了!

連飛瑞下市都不知道, 表示我的 database 已經完全不行了! 我發現在有多種規格, 主要是離線式 (off-line), 在線式 (on-line), 在線互動式 (line interleave)…等等選擇! 很快掃描完網路資訊後, 我認為這篇寫得最好 [1]. 雖然它 Google 排名不是很前面, 不過很專業地把我教懂了. “在線互動式" 聽起來很厲害, 但是在線式才是最好的選擇. 由於後者的成本較高, 退而求其次就是買在線互動式.

用簡單幾句話說明, 離線就是指 UPS 的電池平常離線, 外部斷電時才趕快切到電池供電, 在線就是電路永遠經過電池, 互動式就是用電路決定是否經過電池. 這個網站有圖可以看 [2].

再來要決定容量. 我在 1500VA, 1000VA, 700VA 三台當中瞄來瞄去, 不知道我的裝備到底需要幾瓦? 當初我可以買了號稱 900W 的電源供應器, 外加兩個磁碟櫃, 700W 好像不夠捏??? 不過, 等我買了中庸的 1000VA 回家, 它所附的軟體告訴我, 開部落格頂的狀況下頂多只要 120 W…哈!

APC-Watts-768x567

PC 怎麼讀到 UPS 的功耗呢? 主要是靠這根 USB 轉乙太網路的線. USB 端接到電腦, 乙太網路端接到 UPS, 再安裝廠商附的光碟片, 就可以用軟體設定各種使用情境.

bridge-port-1-768x557

以我的需求而言, 主要是希望若上班時間遇到停電, 電腦能夠被正常關機. 電池多大對我其實不重要. 馬上關機都可以, 其他都不用救了. 下圖顯示, 它可以在設定電池剩下幾分鐘電力的時候關機, 最多可選 8 分鐘, 最少是 5 分鐘. 我選多一點以免關不完…

power-off-plan-1-768x571

個人比較重視軟體, 其他硬體開箱事宜, 請看別人的開箱文就好 [3]. 周日凌晨兩點下定, 周一中午 UPS 到貨, 晚上 9 下班, 吃飽飯就趕快把它裝起來, 還順手就寫了這篇記錄, 所以名為"快買快裝". 原本用週日買是希望用到聯邦理財白金卡的 2% 回饋金, but 自從我用這張卡分 6 期繳所得稅之後, 也不算佔它多大便宜, 但現在它在線上購物時就一定刷不過了, 只能在店面用, 形同管制. 所以我還是沒用到它的 2% 回饋…

[REF]

1.  UPS 不斷電系統的基本介紹與採購建議教學

2. http://www.joysong.com.tw/03_11.asp

3. 不斷電系統 APC Back-UPS Pro 1000 體驗測試與介紹 (BR1000G開箱文)

WAI-ARIA 小註解

所謂 WAI-ARIA 是指 Web Accessibility Initiative’s Accessible Rich Internet Applications, 究竟何謂也?WAI 的部分指 “無障礙網頁倡議" 或是 “可訪問性倡議”.  就字面上來看, 就是一種讓網路使用變簡單的提案.

根據 [1],  W3C 在  WCAG 2.0 裡將無障礙定義為: “縱使使用者能力不一,也能輕易使用網頁所提供的資訊和服務。 (Web Content Accessibility Guidelines (WCAG) 2.0 defines how to make Web content more accessible to people with disabilities. [2])

舉例來說, 網頁上放了一張圖, 那麼也要有文字說明. 如果使用顏色來區隔, 那麼也要有顏色以外的替代方案. 考慮到這些, 至少對於視障或是色盲的人上網比較方便. 同樣也有人行動不便, 那麼易於瀏覽或是輸入就對他們很重要.

WCAG 2.0 已經把可以用的招數分為 4 個 原則, 每個原則底下又有 guideline. 主要就是讓使用者可以容易感知, 操作, 了解, 並且穩固.
Perceivable – Information and user interface components must be presentable to users in ways they can perceive.
Operable – User interface components and navigation must be operable.
Understandable – Information and the operation of user interface must be understandable.
Robust – Content must be robust enough that it can be interpreted reliably by a wide variety of user agents, including assistive technologies.

WCAG 2.0 將符合規範的程度 (Conformance Level) 分為 3 級: level A~ level AAA. 不過, 即使是到了最高級的 AAA, WCAG 2.0 也說不能保證沒問題. (“Note that even content that conforms at the highest level (AAA) will not be accessible to individuals with all types, degrees, or combinations of disability, particularly in the cognitive – 認知 language and learning areas.")

至於 ARIA 有 1.0 和 1.1 [3] 兩個版本, 他們描述了如何具體實踐 WAI. 根據 [4], [5], ARIA 最明顯的實現方式在於加入 role 屬性 (landmark roles). 所謂的 role 就是角色, 在既有的 HTML 網頁當中, 額外描述這段 HTML 的功能. 例如: 

  • role=”banner”
  • role=”navigation” (e.g., a menu)
  • role=”main” (the main content of the page)
  • role=”complementary” (e.g., a sidebar)
  • role=”contentinfo” (meta data about the page, e.g., a copyright statement)
  • role=”search”
  • role=”form”
  • role=”application” (a web application with its own keyboard interface)

如果一個網頁中有兩個同樣的 role, 就要進一步用不同的 (aria-)label 來區隔.

  • <div role=”navigation” aria-label=”Main menu”>
  • <div role=”navigation” aria-label=”User menu”>

除了 role 之外, 另外一個特色是多了 state (狀態) 和 property (屬性). 重要的有下面這些:

state 的好處是, 讓使用者可以知道這個控制項的狀態, 例如 aria-checked 的狀態有 true, false, mixed 三種, 我們就知道 checkbox 點了沒有? 至於 propoerty 可以描述一個欄位允許的最大值, 最小值. 這的確也是很重要. State 和 property 的細節, 以及略過不提的其他特點等等, 可多參考中文的 [5], 這裡就先略過了.

最後來看一眼和我們工作有關的部分. 增加了 WAI-ARA 的支援之後, 它需要強大的底層支援, 如果要把文字敘述唸出來給視障的人聽, 系統就要具備文字轉語音 (TTS – Text to Speech) 的能力. 這些基礎建設相當於下圖 (來自[2]) 最右邊的方塊, 這個 Assistive Technology 就是系統要提供的了.

ARIA-Model-1-768x464

[REF]

  1. 建置 無障礙網頁 的小秘訣
  2. WCAG 2.0
  3. Accessible Rich Internet Applications (WAI-ARIA) 1.1
  4. ARIA Landmark Roles
  5. WAI-ARIA 介紹之二
  6. Roadmap for Accessible Rich Internet Applications (WAI-ARIA Roadmap)

FDE 小破解

此處的 FDE 是指 Full Disk Encryption.

根據 [1] 這篇文章, 他在 Qualcomm 的系統中找到了 FED 的漏洞. 下面我把這篇文章的重點摘要出來, 細節就略過了.

首先我們都知道加密需要密碼, 因此好用的方式就是把硬體上的唯一密碼 (unique HW key) 和使用者輸入的密碼 (Passcode key) 做運算, 得到一個沒有人知道的新密碼. 下圖是 Apple iOS 用的方法. (KDF = key derivation function)

Apple’s FDE KDF

試想, 如果我把整個 FLASH (eMMC or SD Card) 裡面的資料都加密了. 那我換了密碼之後, 是否要把整個資料重新加密一遍? 當然不可能, 新的密碼只能用來加密 “File key", 而加密真正資料 (file contents) 的 key 是不變的.

Android 的做法也類似 [2].

Androids-FDE-1-768x487
Android FDE’s KDF
  1. 首先裝置隨機產生一個 16 byte 的 master key (Device Encryption Key – DEK), 然後準備一把鹽巴調味 (16 byte = 128 bit random-generated salt).
  2. 用 user password 加鹽巴 scrypt 出 32 byte (=256 bit) 的中間 key 1 (IK1 = intermediate key 1).
  3. 把 IK1 前面加一個 zero byte, 後面加 233 個 zero byte 墊成 256 bit (padded IK1) , 這是因為裝置上的 key (hardware-bound private key = HBK) 就是 256 byte.
  4. 用 HBK 去sign padded IK1. 產生 256 byte IK2.
  5. 用 IK2 加鹽巴 scrypt 出 32 byte IK3.
  6. 用 IK3 的前 16 byte 當 KEK (key encryption key), 後 16 byte 當 IV ( initialization vector).
  7. 把 DEK 用 AES-CBC 加密, 其中 KEK 和 IV 取材自上一步.

除了這些複雜的 key, iOS 和 Android 都有防止嘗試錯誤的軟體機制, 錯愈多次就要休息愈久. 所以破解方法就要用外部的硬體來做, 這也就是 Android 網頁上 [2] 所說的, 把產生 key 的方法複雜化, 以對抗 off the box 的破解. “In order to make the key resilient against off-box attacks, we extend this algorithm by signing the resultant key with a stored TEE key." 然而, 這樣還是被破了.

在 [1] 當中提到, 破壞的關鍵在於 key master module. 在 TEE (Trusted Execution Environment) 架構裡面, 有安全顧慮的動作, 都會由 REE (rich execution environment, non-secure world) 送到 TEE (secure world), 然後再把結果回傳 REE. Key master 本身長在 secure world, 理論上夠安全才對.

access-to-keymaster

不過, 畢竟 TEE 需要 SW 實作, 所以從 binary code 可以被反組譯, 再搭配公開的 data structure, 就可以找出 HMAC (Keyed-Hash Message Authentication Code) [7]. 下圖中間的 QSEE 就是 Qualcomm Secure Execution Environment. 破解的流程如下:

  • Enable the DACR (ARM 裡面的 Domain Access Control Register) in the TrustZone kernel to allow us to modify the code cave.
  • Write a small shellcode stub in the code cave which reads the keys from the KeyMaster application.
  • Hijack the “qsee_hmac" system-call and point it at our shellcode stub.
  • Call the KeyMaster’s key-generation command, causing it to trigger the poisoned system-call and exfiltrate the keys into the shared buffer.
  • Read the leaked keys from the shared buffer.

All-Android-System

作者認為 FDE 雖然已經被公認是安全可靠加密方式, 但是在 Android + QSEE 的組合之下, 還是被找到了漏洞. QSEE 使用 SHK (hardware key) 衍生的 key 來加密, 作者認為不如直接用 SHK 比較好, 因為 SHK 反而保證是 SW 不能讀取的. 不過在其他的使用案例, 這樣又會有別的問題 [1].

[REF]
1.  Extracting Qualcomm’s KeyMaster Keys – Breaking Android Full Disk Encryption
2.  https://source.android.com/security/encryption/
3.  Nikolay Elenkov’s blog, “Android Explorations"
4. Dan Guido’s superb post about the technical aspects of Apple v. FBI,
5. Matthew Green’s great overview on Apple’s FDE
6. iOS Security Guide
7. https://en.wikipedia.org/wiki/Hash-based_message_authentication_code

網路修修

前幾天老婆一直抱怨樓下的網路慢, 我在手機裝了 APK 測試一下, 發現下載大概 3 Mbps, 上傳大概 100 Kbps 而已. 不過在小烏龜上測試, 上傳可以有 38 Mbps 的水準, 這未免也差太多了.

看了網友的文章 [1], 似乎是 AP 裡面設定的問題 – 需要手動設定上傳頻寬. 不過我的 AP 和他的不同牌子, 調了半天也沒有起色. 尤其 Tenda W309R 的韌體快 3 年沒更新了, 不由得令我惡向膽邊生, 決定把這樓上樓下的這兩個 AP  淘汰掉.

畢竟我們產品線 OTT box 兼著做 AP router 都號稱 AC1200 了, 不如趁機進版到 802.11ac wave 2 吧! 很快爬了 802.11ac router 的文章, 確認 ACXXX 的數字並不見得是愈大愈好 [2], 於是我把目標放在一位香港人小 U 推薦的品牌 [3]. 他比較重視 CP 值, 這樣應該不至於冤枉花了大錢.

在此先回頭講一下 ACXXX 是怎麼來的? 首先, 一定要把 2.4GHz 和 5GHz 的數字加在一起, 然後再灌水到整數. 不過數字大了之後, AC3200 和 AC5300 可以視為沒直接灌水! 話說 2.4G 真的可以和 5G 同時用嗎? 可以的, 根據 [2], 11ac 的部分會掉 30~40%, 11n 的部分掉 0~25%.

Mbps 2.4G 5G 5G Total
1T1R 433 433
AC600 150 433 583
AC750 300 433 733
2T2R 867
AC1200 300 867 1167
3T3R 1300 1300
AC1750 450 1300 1750
4T4R 1734 1734
AC1900 600 1300 1900
AC2350 600 1734 2333
AC2400 600 1734 2333
AC2600 800 1734 2533
AC3100 1000 2167 3100
AC3200 600 1300 1300 3200
AC5300 1000 2167 2167 5333

上表要怎麼解讀呢? 在 5 GHz 的 80MHz 頻寬的 11ac 部分 1T1R 就是 433 Mbps, 接著 2T2R, 3T3R, 4T4R 都比照辦理, 所以最高就是 1734 Mbps [4]. 除非頻寬長到 160 MHz. 那 Asus RT-AC88U (AC3100) 的 5 GHz 跑到 2167 是怎麼回事呢? 因為它是 1024-QAM, 不是 256-QAM, 速度比 1734 快 25%, 所以應該是 802.11ax 的規範 [5] .

至於 5 GHz 的部分有時候出現兩欄, 這就是所謂的 3 頻 ( 1 個 2.4 G, 2 個 5G). 一個 5G 給高速使用, 1 個 5G 給低速使用. 兩者各占一個頻寬通道, 理論上速度可以相加. 但事實上就沒那麼理想.

那麼 2.4GHz 的速度從 150~1000 Mbps 要如何解釋呢? 150 Mbps 是 11n 的 1T1R, 依此類推, 2T2R/3T3R/4T4R 就是 300/450/600 Mbps. 至於 800 Mbps 是 4T4R 的 200 Mbps, 它恰好是 11ac 的 256-QAM 在 40MHz 頻寬的速度. 而 1000 Mbps 就是 800 Mbps 快 25% 的 1024-QAM.

總結起來, AC2400 的 4T4R 應該就很夠用了. 所以買個兩台 7~8K NTD 的路由器, 應該可以讓我們家的網路升級到前所未有的地步!!! 於是我點開 PChome 的網頁, 滑鼠準備要按下去的時候, 忽然看見下方 “看此分類的人也看了…." 裡面有 “最新★1000Mbps速率“, 靠腰! 2005 年我買過左邊這個, 還放在抽屜裡面沒丟掉. 若干年後, 我又買過右邊這個 500 Mbps 的. 理論上的速度已經快了 35.7 倍.

現在居然已經進步到 1800 Mbps, 價錢只比 1/3 台高級路由器多一點點, 而且一次有兩支. 那…那…只好不讓公司 6 月業績創新高了 (各少賣了兩顆 802.11n 和 ac 的 IC), 我先買 HomePlug 頂著吧, 這樣一樓的網速可以先上到 20 Mbps. 畢竟這產品的效能打 0.1 折都堪用了.

buy-powerline1800Mbps

2016/6/5 實測結果 OK. 這樣就符合期待了.

DrSpeed-1-768x623

[REF]

  1. 光世代上傳速度過慢排除
  2. AC2400! AC3200! 是數字遊戲還是越大越好?分析最新AC WIFI製式、明白什麽規格才適合自己
  3. 嚴選性價比: 小U網販路由器/接收器五虎將列陣!- 刺激一下行貨代理吧^_^
  4. 無線傳輸速率
  5. https://en.wikipedia.org/wiki/IEEE_802.11ac

Ultra HD Premium 小註解

所謂的 UHD (Ultra HD) Premium 是由 UHD Alliance [1] 提出的規範, 主要在於和一般的UHD (4K 解析度) 劃清界線, 以便提高自身的價值. 不然大家都是 4K / UHD, 那麼比較厲害的 4K 就很可能被普普的 4K 打壞名聲.

達到 UHD Premium 的條件在今年 (2016) 的 CES 宣布底定, 內容包括:

[Content 與 device]

  1. 解析度達到 4K (3840×2160)
  2. 支援 10 bit / BT2020 / HDR

[TV]

  1. 涵蓋 DCI P3 [3] 的色域達 90% 以上.
  2. 符合下面的亮度規範之一:
    1. 最亮達到 1,000 nit [4], 最暗低於 0.05 nit.
    2. 最亮達到 540 nit, 最暗低於 0.0005 nit.

涵蓋 DCI P3 的色域達 90% 以上 – 這是甚麼樣的概念呢? 其實 DCI P3 也就比 BT.709 更寬廣一點 (更多的綠, 略多的紅). DCI P3 能涵蓋可視頻譜的 50% [5], BT.709 只有 35%. 而 BT.2020 高達 75%. 換言之, 符合 BT2020 就比 DCI-P3 大了 [6], 這條規範有點放水.

為何 TV 電視可以有雙重標準呢? 因為 OLED TV 的明暗表現遠勝於 LCD TV, 所以它整個相對區間都下降了, 理論上這樣比較不傷眼, 只是螢幕容易烙印~~~

[REF]

  1. http://www.digitaltrends.com/home-theater/uhd-alliance-explained/#:HRpZC9sXRmFE0A
  2. http://www.whathifi.com/advice/ultra-hd-premium-what-are-specs-which-tvs-support-it
  3. https://en.wikipedia.org/wiki/DCI-P3
  4. nit = cd / m2, cd = candle = 1 燭光, 除以單位面積就是 Luminance (輝度)
  5. 根據 [3],  精確地說是 CIE 1931: 45.5%, CIE 1976: 41.7%. CIE (International Commission on Illumination) 是指 CIE 的規範
  6. http://www.rtings.com/tv/tests/movies/hdr/wide-color-gamut-rec-709-dci-p3-rec-2020