Note:基本加密連線隨想

本來就有在想要怎樣做安全的交換資訊, Google等公司很早就啟用了two-factor的驗證, 本來基於我粗淺的密碼學認識就是, 在設備內存一個hash init vector, 然後透過時間區段去做特定HMAC就可以得到一個隨時間變化的驗證碼, 只要保管好這個init vector就可以簡單作到相關應用, 這個key應該被存在 TEE的環境中,在Android 應該是Keystore 機制來實施, 可能的話, 顯示的UI也許也是要TUI(Trust UI)

設計一個安全的IoT系統基本上就是要有一個可靠的系統存放各種KEY(HASH), 目前可見TEE環境與TPM, 或是各種嵌入安全晶片會越來越多

交換資訊時, 需要驗證的地方需要加入Timestamp/DeviceID 當作salt 這樣可以避免 Capture/Replay 通訊封包就侵入系統, 這樣做的目的是該封包, 等於該時該裝置才能解密後檢驗有效. 再加強的話就把連線雙方資訊也加進去。

今天早時間看了一下Google Authenticator 看起來是透過這樣的方法實作出來的
TOTP (Time-Based One-Time Password Algorithm)
HOTP (An HMAC-Based One-Time Password Algorithm)

https://tools.ietf.org/html/rfc6238
https://tools.ietf.org/html/rfc4226

廣告

Note: How to testing a Wintel Modern PC on Manufacturer side

這一兩週因為一些需求, 對WinPE, Sysprep, DISM, 等等東西有了一些基本了解, 對於該怎樣快速的生產Wintel PC 也確定了一些方法, 現在影響PC生產的問題都是因為已經沒有DOS, 而且週邊裝置也不像以前那樣單純BIOS可以負責絕大多數的設備操作, 可以寫些很簡單的程式就可以進行周邊測試, 如果設備本身可以跑Linux而且包含全部Device, 用Linux當生產驗證實際上是個不錯的主意, 如果有Ethernet 甚至可以做PXE boot 自動下載測試程式, 然後搭配合適的測試治具, 可以作到幾乎全自動化的組裝後驗證測試, 可以節省大量人工操作與提昇測試速度

但是事情往往不是那樣簡單, 現在還是很多設備只有Windows driver & Factory mode, 基於裝置廠商的商業保密需求, 目前看起來WinPE還是一個最好的選擇可以簡單的安裝在USB Disk 上面, 生產時可以直接開機, (BIOS 可以做一個生產模式版本, 預設USB bootable), WinPE開機基於RAM DISK, 基本上API都可以用Driver 也可以動, 而且是在做image就可以加入的設計, 也一樣可以透過PXE遠端boot, 生產時自動執行相關測試程式完成後對裝置燒入出貨版本的BIOS與OS image 即可, 當然上面都需要養一兩個人做這些工作, 而且不同的設備可能需要重新re-configuration, 不過當設備大量生產時可以大量的節省成本這包含人物力與時間。

  1. prepare WinPE environments to add all relations driver for reference device
  2. to create a test application for verify interface/burn-in test and install  OS image. etc. should to include all test items.
  3. add customer script to auto launch the test application
  4. install the customization WinPE to USB flash disk or another bootable device.
  5. Plug the device on DUT, to Test device and install OS image by automation, will reduce most time on manual operation. so should to use fastest disk

Windows 安裝有下面幾個模式, 我所知道的是從XP就有, 更早之前懶的考了

OOBE, (Out of Box Experience), 中文翻譯成系統全新體驗, 基本上就是一般拿到Microsoft 的系統安裝檔案, 開機的安裝畫面下就是處於這個模式, 此時可以按 Ctrl+Shift+F3 讓 系統進入下一個模式
Audit, 這中文稱作審核模式, 它會直接進入Administrator 管理者帳號開機, 然後讓你安裝各種應用程式與驅動程式, 安裝好後一般透過Sysprep 去做一般化(generalize)讓你移除所有已經安裝的Driver, 系統帳號與安全辨識訊息設定, 這裡的移除Driver不是移除檔案, 是移除registry 內安裝掛載的資訊, 而檔案本身是保留在Windows 目錄下, 所以也可以作為當更新主機板時, 不想全部重灌系統時, 但是因為一般化會移掉使用者資訊與檔案記得備份或是另外設定跳過移除相關目錄

sysprep 預設有執行次數限制  透過底下方法可以Reset (https://www.symantec.com/connect/articles/how-sysprep-windows-vista-7-or-8-image-more-three-times)

1) Open up Registry Editor. (Start > Run > regedit)

2) Browse to HKEY_LOCAL_MACHINE\System\Setup\Status\Sysprep Status.

3) Change the value of CleanupState to 2. (0x00000002)

4) Change the value of GeneralizationState to 7. (0x00000007)

5) Browse to HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\SoftwareProtectionPlatform.

6) Change the value of SkipRearm to 1. (0x00000001)

7) Open an administrative command prompt. (Start > Run > cmd… right click on the cmd icon and go to Run as Administrator)

8) Type msdtc -uninstall and push enter.  Wait a minute and reboot.

9) Type msdtc -install and push enter.  Wait a minute and reboot.

10) Browse to c:\windows\system32\sysprep.  Delete the panther folder.

11) Run sysprep.  It should now complete, and you can capture the image.

Note:Auto-Recovery for Windows System Boot crash

現在這個年代只討論 UEFI, Legacy BIOS 也可以做但是透過Customization Bootloader會更好一點,  簡單想法是透過NVRAM 存一個Boot Count, 個人偏好 RTC的CMOS空間, 當然要寫再Flash 也不是不行這個東西不是為了頻繁開關機的環境下設計的, 所以不會有頻繁擦寫Flash 的問題 後來想到本來UEFI 就有一個Monotonic Counter 設計來給Secure Boot用的, 等於是做一個簡化類似的東西, 但是配合自己系統改變

然後在系統內裝一個Agent, 最好是一個Automation啟動的Service 讓它負責抹除Boot Count, 個人會設計啟動一個Thread在系統啟動差不多3~5秒後才抹除確保系統不是開機到一半當掉 XD

然後透過BIOS 在BDS前去讀取該變數, 譬如累加到3次, 代表已經開機三次不成功, 這時BDS跳到選擇做Recovery的Partition 啟動, 讓它自動進入Recovery 步驟
or 是透過PXE去啟動系統 直接網路Recovery

類似下面這個

Make your own automatic Windows restore partition
IT Geek: How to Network Boot (PXE) the WinPE Recovery Disk with PXElinux v5 & Wimboot

Note: Windows 裝置製造流程

之前任職某公司會有聽到製造端的需求, 需要更快的測試流程安裝流程等等, 甚至提出讓軟體幫它們客製化測試OS, 那時主管來問, 就請它們去看WinPE 但是過了一陣子沒回應, 結果之後提出讓軟體部門幫它們開發專用測試OS, 但是公司產品實際上是小量多樣化的設計, 反應無效後請對方找出使用的Device Driver or Datasheet 然後負責幫它們寫測試工具, 直到這樣才讓高層與工廠認同這樣是不切實際的, 畢竟公司規模不夠大, 供應商根本不可能提供一些它們認為的敏感資料, 或是公司內部有足夠人力資源與時間去完成驅動程式的開發.

不過今天一找, 實際上Microsoft 有針對這個製造流程有一些建議的實作方式,  主要透過Windows ADK/WinPE 等去配合產生安裝用的Image與裝置QC用的測試影像檔.

https://docs.microsoft.com/en-us/windows-hardware/manufacture/index

Note: 台北公車上的行車記錄器

上週五搭公車去某公司面試, 觀察了一下現在車上的行車紀錄器(新店客運)的約莫是7″ LCD, 然後在路線上顯示同時有大概7~8ch的輸入的設計。當公車靠站會自動切換靠車門的鏡頭, 算是有打到需求。鏡頭解析度應該還是D1以內規格

然後我就好奇了這樣的硬體設計要怎樣成本壓低, 想到可以用DragonBoard 410c 接兩路DSI Camera, 一路負責4 ch, 但是這樣的設計要需要有一個搭配CVBS (Colour, Video, Blank, and Sync) to DSI 的convertor/bridge 查了一下 Intersil  ISL79987 剛好適合, 而且NXP有一個for Linux 的patch camera surround view solution

這樣應該可以比較容易的設計出類似的需求而且可以相對壓低成本, 當然要便宜選Rockchip RK3288W 可能更合適

如果要導Automotive Ethernet 到是可以直接考慮 Allwinner T2 去當做Input source Bridge 成本會高一點但是可以更模組化設計擴充, 每顆T2 自帶有四個VideoInput, 配256/512MB RAM應該就夠了 不過如何作到 robust 倒是學問

 

ref.
1. 對岸倒是有直接推出用T2做比較低階的4 input 版本的設計N970WA(T2)
2. NXP 的IMX6 MIPI CSI2 文件 AN5305 講解了 CSI的DATA ID/Virtual channel
3. Backup – my collect
4. CVBS (Colour, Video, Blank, and Sync): Composite Video Signal

Ubuntu Dropbox 自動更新有問題

這一兩天 我的Dropbox client 一直出現更新但沒成功過, 也不會秀 error message

剛手動重新安裝才發現問題點所在 (目前版本是 2.6.18 )

因為我用的的是 Ubuntu 12.10 x64 所以下載 dropbox-lnx.x86_64-2.6.18.tar.gz 這個版本

下載完放到Home 下面, 然後執行 tar xvf dropbox-lnx.x86_64-2.6.18.tar.gz 他會解開到 ~/.dropbox-dist 目錄下

然後按照說明 執行 dropboxd 會出現一個錯誤

importing ‘/home/{your account}/pylinux/__pycache__/_cffi__xa0c4f46bx1d95b4de.so’: No module named _cffi__xa0c4f46bx1d95b4de

根據這個訊息可以找到一個 bugreport 參照裏面的解法, 發現應該是本來舊的程式移除不完全
在我的機器上要執行下列步驟

sudo rm -rf /var/lib/dropbox/.dropbox-dist ; 這步我不確定機器上到底有沒有這個folder
rm -rf ~/.dropbox-dist
tar xvf dropbox-lnx.x86_64-2.6.18.tar.gz ; 一樣是在 HOME 下執行, 會重新產生 ~/dropbox-dist
dropbox start -i

Note: an UNetbootin tip

Today I need to setup a host machine to run Ubuntu 10.04 for my work(Android development), so I download an Ubuntu 10.04.4 LTS (Lucid Lynx)  ISO and UNetbootin for Windows version. Just went make a USB disk for Ubuntu install.

But always got a “NTLDR is missing”message when use the Install USB Disk to boot system.

I to try again and again to fixed the issues until reformat the USB Disk and file system change to FAT32.

Keypoint:should check your USB disk is FAT system first when use UNetbootin or similar program