2011年2月12日 星期六

列印到 PDF

  1. 安裝 cups-pdf
  2. 新增印表機
列印後檔案放在 PDF 目錄下

Real-time Linux

Real-time 代表的不只是結果正確,還要在時限內完成,不然還是失敗,也就是事件有決定性 (deterministic)。或許只要使用夠快的硬體就能達到 real-time,但不同事情有不同的延遲要求,在較差的硬體,作業系統如何保證特定事情能在時限內即時完成?

作法是低優先權的 process 未完成前讓出 CPU 給高優先權 process 使用,叫做 preempty。程式在 userspace 原本就 preemptible,kernel 部份在 2.6 開始才有 CONFIG_PREEMPTY 支援,即使在執行 syscall,除了關掉 local interrupts (或持有 siplock),也可被高優先 process preempted。

preempty 時為了維持資料完整和正確,需要 critical section,lock 機制也會不同。uni-processor 的 spinlock,沒有 preempty 時用 no-op 就可以了,有 preempty 就不行。

preemption 可減少延遲,但也會減少 throughput,所以有個平衡點。

在 Linux 中有如下不同程度的 real-time 實作,從無到終極版 throughput 愈低,但愈具備決定性
  • CONFIG_PREEMPT_NONE:無
  • CONFIG_PREEMPT_VOLUNTARY:低優先權 process 自願讓出
  • CONFIG_PREEMPT:隱含在 spinlock, interrupt return code 裡讓出。使用 PREEMPT_RCU,前兩者則使用 CLASSIC_RCU
  • CONFIG_PREEMPT_RT:終極版,使用 preemptive 排程器
另外可導入真正的 RTOS,Linux 變成 RTOS 下的 idle task

參考
  1. Jserv's blog: 破除 Realtime GNU/Linux 的迷思 (Getting real (time) about embedded GNU/Linux 的譯註)
  2. Real-Time Linux Wiki
  3. Driver porting: the preemptible kernel
  4. Linux Device Drivers, Concurrency and Race Conditions
  5. https://www.codeblueprint.co.uk/2019/12/23/linux-preemption-latency-throughput.html
  6. CONFIG_SMP:Symmetric multiprocessing。SMP mutual exclusion 確保也可以用在 preemption。同一 CPU 內存取 per-CPU variables 要特別注意 preemption 時是否有 races 問題。其它 CPU 存取已處理,應該沒問題。
  7. CONFIG_HZ
  8. Spinlock 原始碼觀摩(—)
20200713 最後更新

2011年1月30日 星期日

WPA

在 2003,由於 WEP 的缺陷而面臨沒加密機制可用狀況下,Wi-Fi 聯盟在 802.11i 標準制定無法如期完成前,緊急推出 WPA,也就是 TKIP (Temporal Key Integrity Protocol),作為將來較安全但較複雜 WPA2 前的過渡,部份 WEP 設備可透過韌體更新使用 WPA。

WPA 相對於 WEP 的改進如下:
  1. IV (Initialization Value) 增長為 48-bit,並由 TKIP Sequence Counter (TSC) 產生,強制每個封包不同。
  2. 延續使用 WEP 的 128-bit RC4 stream 加密,但不再是簡單的 IV 接上固定的 WEP key,而是每個封包重新由 48-bit source MAC address, 128-bit Temporal Encryption key (TEK) 及 TSC 混和產生。由於 TSC 每個封包不同,所以每個封包加密的 key 也不同,可避免 replay attacks。
  3. 每個 MAC SDU (上層封包) 多加了 64-bit Message Integrity Check (MIC),採用 Michael 演算法。
封包 PDU 格式






← RC4 加密 →
802.11 Frame headerIVResExt.
IV
Key
ID
Extended
IV
PayloadMICICVFCS

24b5b1b2b32b
64b32b
  • Ext. IV 表示有 Extended IV 欄位,及每個 MAC SDU 的 MIC
  • IV + Extended IV 的 byte 依序為 TSC1, d, TSC0, TSC2, TSC3, TSC4, TSC5,組合成傳送的 TSC。d 為 dummy byte 避免較弱的 TKIP key

Michael 演算法是 WPA 設計者在大多數舊的網路卡也能使用的條件下找到的最強的演算法,然而它可能會受到偽造封包攻擊。為了降低這個風險,WPA 網路每當偵測到一個企圖的攻擊行為時就會關閉 30 秒鐘。

WPA 個人版是用 pre-shared key (PSK) 的方式,可以輸入 8 ~ 63 個 ASCII 字元的密碼產生 256-bit 的 Pairwise Master Key (PMK),或是直接輸入 64 十六進位數字。密碼產生 PMK 是用 PBKDF2 演算法 (JavaScript),SSID 作為 salt,執行 HMAC-SHA1 4096 次 。

PMK 加上兩者 MAC address、supplicant nonce 及 authenticator nonce 經過 SHA-1 產生 Pairwise Transient Keys (PTK),包括 EAPOL-key Encryption Key, EAPOL-key Integrity Key, TEK, 及 MIC key,這些每次 association 會重新產生。

而企業版是用 802.1X 認證伺服器來散佈不同的鑰匙給各個用戶。

安全性
  • 暴力破解 (brute force attack) 弱密碼需要兩三天
  • 解出達 596 bytes 以下的封包的 keysteam,例如 ARP,插入假的 ARP 將封包導到其他地方
  • 一種新形式的攻擊可解出所有到 client 的封包,但關掉 QoS 可避免。
參考
  1. CSE571S: Network Security (Fall 2007)對網路安全有不錯的講解
  2. Wikipedia: Wi-Fi Protected Access
延伸閱讀

2011年1月29日 星期六

FON2100

La Fonera (FON AP) 的第一版
My Hacking (參考 sylphidsu's FON Hacking)
  1. 變回出廠的 firmware -- 果真要三次,我的出廠版本是 0.7.1 r1
  2. 打開ssh (La Fonera: nuovo hack per il firmware 0.7.1r1) -- 連上MyPlace,登入管理介面後,submit那兩個下載的html,然後就可以 ssh root@192.168.10.1 了 (預設密碼是 admin)
  3. 把 dropbear (ssh server) 加入預設會開的 service
    1. /etc/firewall.user  中把 port 22 那兩行 uncomment
    2. cp /etc/init.d/dropbear /etc/init.d/S50dropbear
  4. 重設internet
Firmware Upgrade
  • FON 的 image 是經過 RIPEMD-160 加密的,由 Pablo Martin 寫的 /bin/fonverify 確認後才會寫到flash (參考 Rex Tsai's Free your La Fonera)
  • 不想自動更新firmware的話
    1. mv /etc/init.d/N40thinclient /etc/init.d/thinclient
    2. /etc/crontabs/root 裡面 thinclient 那一行 comment 掉
  • thinclient script -- executed when boot and .... It will “ssh” into the download.fon.com:1937 to get the config scripts from FON.com. We can use dnsspoof and some program to make the router download some script we want it to run. (參考 Rex Tsai's Free your La Fonera)
RS-232
JTAG
ToDo
References
  1. Rex Tsai's Hacking Fonera
  2. sylphidsu's FON Hacking
比較
  • FON2200:也是 FON 1.0,但改善了散熱,天線接口多了擋板,變壓器也不同。
  • FON2201, FON 1.5, FON+:多了 LAN 介面,是用 Marvell 88E6060 擴充的
  • FON2202, FON 2.0:多 USB 介面
  • FON=5V*2A=10W, FON+=7.5v*1A=7.5W 應該可以用太陽能板

2011年1月22日 星期六

WEP

Wired Equivalent Privacy 意思是提供跟有線相當的隱私,主要是防止竊聽,附帶防止未經授權的存取。因有缺陷,2003 年由 WPA 取代,2004 年再由 WPA2 所取代。

雙方知道 WEP key,傳送端用 WEP key 加上一串亂數用來加密資料,傳送亂數跟加密資料。這個亂數稱為 Initialization Value (IV),有 24-bit。接收端用 WEP key 跟封包裡的 IV 就可以解密。不固定的 IV 讓 WEP key 較不容易破解。

WEP key 有下列長度。
  • 64-bit WEP (WEP-40): 24-bit IV + 40-bit key (10 位十六進位數字)
  • 128-bit WEP (WEP-104): 24-bit IV + 104-bit key (26 位十六進位數字)
  • 256-bit WEP: 24-bit IV + 232-bit key (58 位十六進位數字),部份機器有

封包格式



← RC4 加密 →
802.11 Frame header24-bit IVKey
ID
PayloadICVFCS
  • ICV (Integrity Check Value):Payload 的 CRC-32
  • 24-bit IV (Initialization Value):依不同實作方式可以每個封包用不同值。前面串 WEP key 形成 RC4 key,用來產生跟 Payload 加 ICV 等長的虛擬亂數,然後一起 XOR,稱為 RC4 加密
  • Key ID:範圍為 0 ~ 3,用來選 4 組 WEP key 其中一個,但一般只用一組。
  • 認證
    • Open System:開放認證,WEP 只用在後續的資料傳輸
    • Shared Key:WEP 用於認證,但反而變成弱點。採用 4-way challenge-response handshake:
      • client 送認證要求給 AP
      • AP 回送一個 clear-text 的 challenge.
      • client 用 WEP 加密 challenge 送回給 AP
      • AP 檢查是否對回送 positive 或 negative response.
  • 缺陷:WEP 是一個安全攻擊很好的訓練場地,幾乎所有地方都有弱點
    • IV collisions
    • 攻擊者故意讓 IV 相同,讓 WEP key 容易破解。
    • ...
延伸閱讀

RC4 加密

  • RC4 是一種廣泛使用的 stream cipher (串流密碼),用於 SSL/TLS, WEP, WPA 等,Wikipedia 有不錯的說明。
  • stream cipher 密文產生的方式是原本明文的資料跟一樣長的虛擬亂數一起 XOR;密文再跟一樣的虛擬亂數 XOR 就變回原來的明文,屬於對稱式加密演算法。「虛擬亂數」近似隨機,但不是真的隨機,虛擬亂數的值可完全由虛擬亂數產生器的初始值決定,也就是這一小段初始值就可以決定整個隨機亂數的值。所以只要知道虛擬亂數的產生方式及使用的初始值,就可以加密、解密。
  • 許多 stream cipher 或虛擬亂數是基於 LFSR 產生,很適合用硬體實現,但用軟體效率不好。而 RC4 是為軟體而設計的虛擬亂數產生器,只需要 byte manipulations。
  • RC4 有兩個演算法 -- key-scheduling algorithm (KSA) 及 pseudo-random generation algorithm (PRGA) -- 依序進行來產生虛擬亂數。RC4 的 key 一般 5 ~ 32 byte 間,KSA 先由 key 產生 256 bytes 的排列 -- S[256],PRGA 再產生所需要的虛擬亂數長度。Wikipedia 頁面有個 C 語言的範例,相當簡單,但相對地破解的運算也一樣簡單。

2011年1月18日 星期二

median filter

median filter (nonlinear)
輸出最近 L 筆資料的中間值,對移除 impulse noise 效果很好,但常無法有效地減低寬頻雜訊。折衷方法是跟另一個線性的濾波器,例如 Hanning filter,結合使用。

其它文章:

SIP header Via

所有 SIP 訊息 都要有 Via,縮寫 v。一開始的 UAC 和後續途經的每個 proxy 都會疊加一個 Via 放傳送的位址,依序作為回應的路徑。 格式 sent-protocol sent-by [ ;branch= branch ][ ; 參數 ...] s...