LabVIEW 開發人員會在安全的機密區域中建立程式碼。若要將程式碼移至非安全區域,必須不含任何保密內容:程式碼、資訊或資料。保密程式碼可能包含可執行保密作業的演算法、用於程式碼中的輸入資訊,以及應用所收集並儲存於檔案中的資料。將程式碼移出機密區域之前,必須由經驗豐富且了解 LabVIEW 程式碼且熟悉機密資訊的人員檢視並核准。
解析 LabVIEW 程式碼的方式與任何程式設計語言相同:
依據良好的說明文件實務來開發程式碼。
手動檢視程式碼,確保所有敏感資料都已移除。
消毒程式碼中的任何保密資訊。
記錄分類流程,包含所使用的工具、所採取的步驟以及結果。
取得合格安全人員的核准。
本文件概述下列建議與最佳實務,以盡可能簡化 LabVIEW 程式碼的去類別化作業。
盡可能減少在安全環境中開發的程式碼數量
透過模組化程式碼,將保密開發作業與非保密開發作業區分開來
清楚記錄程式碼,識別機密與非機密資訊
使用 VI 分析儀在程式碼上執行靜態分析
使用 Print VI 手動檢視程式碼
已完成文件步驟
向受過訓練的安全人員展示結果
使用機密程式碼時,通常更容易避免將程式碼從機密環境移至非機密環境。盡可能在非保密環境中開發程式碼,然後將完成的程式碼移至保密環境。LabVIEW 採模組化特性,可透過定義輸入與輸出的預留位置 subVI 進行程式碼開發,但會將機密程式碼的開發作業保留在保密區域內。在理想情況下,移動後唯一會發生程式碼變更的,就是執行程式碼的保密部分。不過,由於這項做法並非一律可行,因此在保密環境中工作的 LabVIEW 開發人員應遵循部分最佳實務,如本文件其他部分所述。
在 LabVIEW 中使用 subVI,可將程式碼與保密資訊分開。架構程式碼,讓分類程式碼的開發作業可與個別的 subVI 隔離。
開發程式碼時,請考慮在最上層 VI 中建立預留位置的演算法。在開發實際演算法之前定義演算法的輸入和輸出,接著從程式碼區段建立 subVI,如圖 1 所示。
圖 1. 在編輯功能表中建立 SubVI 選項
建立 subVI 後,請開啟並執行其他演算法。
儲存 subVI。您可能會將所有分類的 subVI 儲存在個別資料夾中,以便更輕鬆地從程式碼中移除。
說明文件是簡化解析流程最重要的步驟。如果安全人員無法了解程式碼的功能,就無法將程式碼清除以進行解密。LabVIEW 提供多種層級的說明文件選項。
標記每個人機介面控制項、指示元件與常數,讓資料類型與功能盡可能清楚。如您標註,請考慮控制元件中的資料是否會在未來某些時候歸類為資料。如果資料可能會遭到機密化,請使用 NSA 色彩編碼找出機密資訊的潛在問題。
圖 2 的影像來自人機介面,表示部分輸入可能包含保密資訊。在解密流程中,可以清楚了解應檢查哪些容器。
圖 2.彩色編碼控制標籤
在可能的情況下,請避免將保密資訊直接放入程式方塊圖常數中,因為在檢視程序期間,可能會忽略常數。此外,移除常數以解析程式碼也更為困難。您可以考慮從資料檔案匯入輸入,並將保密資訊保存在該檔案中。在解密流程中,將該檔案從 LabVIEW 程式方塊圖分開,LabVIEW 程式方塊圖中將不會有任何保密資料。
這種做法並非一律可行,因此,當常數確實包含保密資料時,請務必標記該常數,如圖 3 所示。根據 NSA 的彩色代碼,對標籤進行彩色編碼以識別資料類型。
圖 3.LabVIEW 常數使用色彩編碼識別分類
在 subVI 層級中,您可以開啟 subVI 的 VI Properties (VI 屬性),並選擇「檔案 > VI Properties」(檔案 > VI 屬性)。
開啟此對話框後,請從下拉式選單中選擇「Documentation」(說明文件),如圖 4 所示。
圖 4.根據 VI Description 屬性分類記錄 VI
VI 說明中的評論會出現在幾個實用的位置,但僅在這些評論記錄在此對話框後才會出現。
使用適用於分類的 subVI 的通用描述子也非常實用,例如前述範例中的 **CLASSIFIED**。接著您可以使用自動化工具,在解除分類流程中搜尋這些註釋。
註解會出現在 內容說明視窗中。在 subVI 上滑鼠時,會出現包含說明文件的說明,如圖 5 所示。
圖 5.在 LabVIEW Context Help 視窗中檢視 VI 說明
新建立的 subVI 在右上角顯示預設圖示,如圖 6 所示。
圖 6.LabVIEW VI 的預設圖示
雙擊此圖示即可開啟「LabVIEW Icon Editor」對話框。此圖示編輯器可用來識別 subVI 的函式。您也可以使用圖示的顏色,快速識別函式是否包含保密資料,如圖 7 所示。
圖 7.使用圖示顏色辨別程式碼分類
這樣的色彩使用方式讓您很容易就能在解密期間檢閱程式碼,即使修改人員不是 LabVIEW 程式設計人員也一樣。
當您雙擊 LabVIEW 程式方塊圖或人機介面的空白空間時,即可建立文字書籤。在文字成為書籤之前,包含 1 個哈希標 (#)。
自動化工具會尋找這些書籤。您可以指定要尋找的書籤。如圖 8 所示,將程式碼的每個部分標記為 #CLASSIFIED 或 #UNCLASSIFIED,是非常實用的做法。您將學會如何自動掃描這些書籤。
圖 8.分類程式碼區段適用的 LabVIEW 標籤
您可以使用「書籤管理員視窗」查看程式碼中的所有書籤,包括 subVI。若要啟動 Bookmark Manager Window,請從 LabVIEW 人機介面選擇「檢視 > Bookmark Manager」。
圖 9 顯示範例,說明書籤管理員視窗可如何搜尋此指南所示的程式碼。
圖 9.LabVIEW 書籤管理工具
在這個視窗中,您可以雙擊所列的任何標籤,將您帶到該區段的程式碼進行檢視。您也可以將此清單匯出為文字檔案,以將程式碼中的所有分類程式碼區段顯示給評估人員。
下一節將討論如何使用 VI Analyzer 在程式碼中尋找書籤。
VI Analyzer 隨附於 LabVIEW 專業版。VI Analyzer 可自動檢視程式碼,以尋找經檢驗人員定義的程式碼問題。
下一個畫面會如圖 10 所示,用於定義執行的測試。您可以定義測試,並從 <使用者指定的> 測試中加以選擇。VI 分析儀主要用於執行程式碼品質測試,因此,這裡有許多測試無法適用於資料去分類。
圖 10. LabVIEW VI Analyzer Window
以下是解析流程中最實用的測試:
說明文件 > 開發人員 > 註解使用方式:識別沒有註解的 VI。
第一次搜尋會傳回列表中沒有的任何書籤。若將 #CLASSIFIED 保留在清單中,搜尋將會傳回包含此標籤的所有程式碼區段清單。如圖 11 所示,將加入 #UNCLASSIFIED,將忽略未被判定為保密的程式碼區段。
第二次搜尋會找出沒有註釋的程式碼區段,讓開發人員在進行程式碼檢閱前,在每個區段中放置書籤。
圖 11.使用 VI 分析儀忽略經核准的書籤標籤
調整測試之後,按一下「儲存」按鈕,每次執行測試時就會縮短設定時間。
點擊「分析」以執行測試。結果產生的報告將顯示 #CLASSIFIED 書籤,如圖 12 所示。
圖 12. VI 分析儀結果
在解密流程中,儲存 VI 專案與 subVI 的副本。移除 VI、執行此測試,並確認程式碼中沒有標記為 #Classified 的區段。
執行程式碼自動檢視作業後,請執行詳細的手動檢視作業,以確保記錄程序期間沒有遺失任何保密資料。
使用標準的文件工具 (例如 Microsoft Word) 開啟檔案。此檔案將包含所有與 VI 有關的資訊,包含螢幕截圖。請注意,影像的大小會比頁面大,且可能會顯示成片段中斷,但可以縮小影像大小,使其適合頁面。
請注意,您的所有 subVI 說明文件將隨即顯示。這份說明文件可讓您的安全人員檢視程式碼,以利解除保密。使用 NSA 分類顏色就能立即清楚知道程式碼中的哪些部分包含機密資訊。
在解密流程中,最好將 VI 儲存到新的位置、移除所有保密區段,然後執行這個流程。若執行正確,則程式碼中不會保留標示為分類的內容。
就任何安全程序而言,說明文件至關重要。說明文件是確保安全人員確實遵循安全步驟以保護機密環境中的資訊的重要條件。此外,說明文件也能簡化流程,讓您依循由安全人員核准的流程,並讓安全人員了解您採取的行動。盡可能詳細說明保護資訊的流程。
如果您已採行我們所列的步驟,可以信心十足地聯絡安全人員,確保保機密資訊不會離開安全區域。使用良好的編碼實務、建立完整的說明文件,以及使用程式碼檢視工具,有助於證明您已完成必要的工作以保護機密資訊。