
這裡最關鍵的就是軟體該如何確認 “這份資料是否是原廠提供,而非第三者偽造的假資料?” 這個問題。這類安全問題,最忌諱的就是讓一些搞不清楚狀況的工程師自己土炮一堆怪怪的 “加密” 方式,試圖混淆內容讓別人認不出來。這是很危險的,因為你靠的是 “演算法” 來保護資料,而不是靠 “金鑰” 來保護。如果你靠的是別人不知道你怎麼加密的,那麼將來這份程式碼你敢 Open Source 嗎? 你能不讓你的團隊其他成員 REVIEW 你的 CODE 嗎? 既然 CODE 不是絕對保密的,那麼你如何能證明你的資料是絕對安全的? 所以,比較可靠的方式,還是要靠那麼多人對密碼學的研究,用公開的演算法 + 只有你才擁有的金鑰,來保護你的資料才是上策。也因為這樣,請盡可能的採用廣為流通的加密方式及涵式庫。

這次直接跳到主題: 網站安裝授權開始吧。這東西的用途,就跟過去安裝軟體要輸入序號一樣的目的,輸入序號之後,軟體不用上網就要能知道你購買的是什麼版本,有哪些功能要被啟用? 在不連到 internet 的情況下,要單靠一段授權資料就達到這目的,最好是能簡單明瞭,資料結構清楚容易擴充維護,同時安全強度還要夠強 (防止偽造),這就是這次要解決的問題。
我的目的,不但要顧及功能性(安全強度),同時也要顧及程式碼及系統架構的層面,因此我拆成兩個部份來探討,一個就是最關鍵的資料安全問題,另一個就是如何用程式碼來表達及封裝這些功能?

The Architect, The Source (電影: The Matrix 3)
好久沒寫 [設計案例] 這系列的文章了。其實我一直注意到台灣的部落格 & 社群分享,講 “How To” 的遠多過講 “Why” ,過於注重 coding 的技巧,卻忽略了問題的思考。能挑選正確的技術與架構來解決 business 上碰到的問題,這才是 software / system architect 的核心能力啊… 這次我碰到適合的案例,就來補給篇文章吧,我想從我如何思考這問題的 solution, 到如何實作出解決方案的過程,從頭到尾交待一次,讓有興趣在軟體業走進 system architect 這角色的讀者們,有個可以參考的案例!
說到個人用的 server, 我是相當有經驗的 XD,從當年念大學開始,就開始把 PC 開著放宿舍連回去或是給同學用,這習慣一直到現在都有,只是設備從自己用的 PC,換到準備專用的 PC SERVER,再到 NAS .. 不過自從開始認真研究 docker, 加上想用 docker 認真的執行一些服務後 (例如這個 BLOG 用的 wordpress), NAS 貧弱的效能問題就被凸顯出來,所以前幾個月才弄了台要被報廢的 NoteBook 當作 Linux Server.. NB 當 server 有很多好處,但是畢竟不是長久之計,而這台 NB 的 CPU 也不怎麼樣,將來也是個瓶頸,於是就一直有在物色其他適合的替代方案,反正沒有立即的需求,就騎驢找馬有空就看看,直到….

前面幾篇,研究完記憶體管理的部分之後,接著就是來看看運算的效能了。這部分的測試方式,我想了很久,最後決定拿出老本行: 平行處理的部分來當作 .NET core 跨平台第二回合的主題!
如果單純只是要將各種平台的 .NET Core 比出個高下,那感覺有點像是拿 benchmark 在賽豬公而已,這樣的話找現成的 C# benchmark 應該比較快。因此,我把測試的目的定義清楚,我想藉由這些測試的進行,一方面了解不同平台的差異,我也想透過測試更熟悉這些環境,還有試圖從測試的結果挖出背後運作原理的不同。所以,上一個記憶體管理的主題,已經達到目的了,不這樣測試我還真的不曉得 Linux 預設會壓縮(?) 為初始化的記憶體… 算是值回票價。