拿到一個檔案,要將檔案透過一些處理方法,儲存在電腦中。經由這些處理,希望使檔案的儲存帶有保祕性和資料的完整性。儲存檔案的處理步驟依序為:
- 根據一個數LC,將每個位數數字加總得到另一個數字NC,將檔案分割為為NC份,檔案長度不足NC倍數則在尾端填塞一些虛資料。對這NC份檔案分塊,每一塊尾端都填塞固定長度的虛資料。如此,結果得到一份實、虛交錯的檔案。
- 根據一個數NB,將前一步的結果分為NB份檔案分塊。再根據另外二個數LRB和RRB,將每個檔案分塊依序左旋LRB個bytes或右旋RRB個bytes。如此,結果得到一份實、虛交錯又區塊位元組旋轉的檔案。
- 根據一串數列LST (數列長為LLST) ,將前一步的結果依序將每個bytes按照LST的數字左旋幾個bits。當LST數字用完時,再從LST的第一個數字開始使用。如此,結果得到一份實、虛交錯,區塊位元組旋轉之後,又讓每個bytes有左旋轉不同個bits的檔案。
- 根據一個數FC,以FC為代碼,不同的代碼對應不同NB, LRB, RRB和LST數列的順序。然後將FC, LLST和{NB, LRB, RRB, LST}等等資料排列成一個表,準備塞進最後的檔案。這個表格稱為EDT。
- 根據FC,如果FC是複數,則將前前一步的結果檔案逆向排列。如此,結果得到一份實、虛交錯,區塊位元組旋轉之後,又讓每個bytes有左旋轉不同個bits,並且可能又逆向排列的檔案。
- 令前一步的結果檔案長度稱為LF。根據LF和LC,求檔案中一個可插入表格EDT的位置點,稱為LP。LP的計算式約略是LC對LF取模數 (LC mod LF)。然後,將EDT插入LP位置。如此,結果得到一份實、虛交錯,區塊位元組旋轉之後,又讓每個bytes有左旋轉不同個bits,並且可能又逆向排列,之後插入了所有編碼參數的檔案。
經過以上複雜到極點的步驟,得到的檔案是一個經過編碼、並且本身攜帶著重要參數的檔案。據說,如此經過三個層次以上簡單檔案命令操作的這麼一個檔案,能保障相當好的檔案安全。而LC數字是編碼和解碼過程都要知道的一個參數,另外提交給資料庫,由帳號密碼權限控管。
解碼的步驟,是將以上編碼步驟依反序一一撰寫反函數程式。
這樣的方法顯然有二大問題:
- 本方法顯露一項矛盾是:計算LP值是用LC對未插入EDT表的檔案長度LF取模數。令EDT表的長度為LE,最後的檔案長度已經改變為LF+LE了。解碼程式只知道LC和LF+LE,卻不知道LF和LE分別是多少。因此,求LP值的公式缺乏了足夠的資訊。對於精通協定設計的專家們,設計這種根據某些參數計算正確LP值的公式並不困難。然而,目前本方法的發表人並沒有在此細節上詳細說明太多。
- 本方法固然是個好概念,然而,在資訊安全領域所講的保安方法通常是藉由隱藏關鍵數字 (key) 來達到保障的效果,而不是藉由複雜的程式過程。
我撰寫本文、提出這個方法的目的,是希望展示出在學術界,非深入此領域的人可能會將問題看得太簡單,因此也將解決辦法的設計太簡單或是有錯。而雖然這個方法可能在學術領域講得很簡單、並且在產業界也可能偷偷使用這種比較普通的方式做資訊安全,但其實做出來的結果卻不夠好 (方法複雜卻容易破解,並且協定的關鍵數值沒有設計好) ---雖然很多人只求足夠的結果即可。
No comments:
Post a Comment