2007.10月號-165期 程式開發安全自我評量解答 解答名師/王寧疆、楊志強
◎科目:程式開發安全
保障資訊系統運作安全的各項措施中,資料加密與簽章是很重要的一環,不能給不相關的使用者檢視的內容需要加上加密保護,要能夠証明文件從原始編輯者編輯妥了之後,到文件檢視者檢視文件的內容時,期間都沒有其他的人竄改過文件,就要對文件加上簽章(或稱為簽署)保護,証明文件的內容千真萬確是原始編輯者編輯的內容,聲明文件的有效性。
中國古老的稗官野史流傳著一個傳說,說清朝的康熙皇帝當初屬意要將皇位傳位給[第十四皇子],所以在遺詔中著明在他駕崩之後,要由第十四個兒子繼承皇位,但是排行第四的皇子,因為覬覦皇位,想要登基當皇帝,於是找了奇人異士潛入皇宮,偷出康熙皇帝藏在正大光明匾額後面的遺詔,將遺詔中將皇位[傳十四皇子]的內容竄改成[傳于四皇子],因一字之差,造成皇位易手,第四皇子在康熙皇帝駕崩之後依據遺詔的內容成功登基成為繼任皇帝,成為歷史上著名的雍正皇帝。這個未經証實,但是卻廣為流傳的傳說証明了一件事,那就是沒有經過簽章的文件很容易因為被有心人士竄改,造成閱讀文件內容的人,因為無法驗証文件的內容是否為文件原始編輯者的本意,而盲目跟從文件的指示,造成迥異於文件原始編輯者本意的結果。
從這個例子可以看出,像皇帝遺詔這種重要文件,其內容因為沒有經過簽章的保護,遭到惡意竄改後,形成的結果也大大的不同。這雖然是一個未經証實的故事,但是可以明確地告訴我們,重要文件必須經過簽章處理,才能夠確保其內容的正確性。
保護文件的做法,除了執行簽章處理以外,不能夠被非當事人檢視的機密文件一定要加上加密的保護,在古代,因為尚未出現資料加密技術,所以有些機密文件會使用特殊的墨水,例如隱形墨水書寫,當事人收到文件之後必須將文件浸泡在水裏,或是拿到火上烤一烤,才能讓文件中原先使用特殊墨水書寫的內容現形,避免有心人士得知機密文件的內容。
在這一期的資訊安全大哉問中,我們設計了和機密文件加密與簽章有關的題目,有興趣的讀者可以試試看可以答對幾題。
正確答案:D
說明:
機密資料應該加上加密處理,讓未擁有解密金鑰的人無法將加密後的資料解密並得知其中的內容,確保機密資料的私密性。將資料加以壓縮並不能防止機密資料被偷窺,因為解壓縮被壓縮的文件並不需要使用金鑰,所以任何人都能夠將壓縮過的內容還原成未壓縮前的內容,因此將資料加上壓縮處理並不是能夠保護資料安全的可靠方法。程式設計師製作的.NET原始程式經過編譯程式編譯後會被翻譯成中間碼(一種非二進位碼的表示法),這種編譯成中間碼的程式很容易被還原成原始程式的內容,進而為害到程式開發者的智慧財產。
為了保障程式開發者的設計程式的智慧財產,最好對編譯成中間碼的程式進行混淆處理,將程式編譯後的內容處理成不容易被輕易還原的內容,以提升程式被還原成原始內容的難度。換句話說,經過混淆處理過的.NET程式並不是無法被還原,而是被還原的難度變高,想要還原程式的人必須花費更多的時間與心力才能夠將已經編譯成中間碼的程式還原成原始程式的內容。
雜湊(Hash)處理是一種特殊的加密方式,加密的時候不需要使用金鑰,而且經由雜湊處理過的資料無法還原成原來的內容,所以被稱為是單向(One-Way)的加密法。因為經過雜湊處理的內容無法經由任何方法還原,所以有很高的安全性,適合用來處理不需要還原的機密資料,例如欲存放到資料庫中的密碼。對機密資料加上加密保護的做法可以防範加密後的資料被有心人士還原,所以能夠有效確保資料的私密性。
正確答案:B
說明:
如果文件可以被任何人檢視,但是要能夠驗証文件的內容是否是原始編輯人所編輯的內容,則要對文件加上簽章處理。對文件簽章的做法是利用文件的內容計算出一組獨一無二的特殊結果,用來驗証文件的內容是否經過惡意竄改,因為只要文件的內容遭到竄改,我們只要再為文件的內容再計算一次獨一無二的特殊結果,然後與之前計算的結果比對,如果兩組內容相同,代表文件從原始編輯人編輯後到驗証文件內容是否遭到竄改之間,沒有被任何人竄改過,反之,如果兩組內容不相同,則代表文件從原始編輯人編輯後到驗証文件內容是否遭到竄改之間,已經被竄改過,其內容已非原始編輯人的原意,不可以被採信。這種對機密資料加上簽章保護的做法可以確保資料的完整性。
正確答案:C
說明:
如果網頁有需要將使用者的信用卡資料存放到使用者的電腦當做Cookie,必須對信用卡資料執行加密,以免存放在用戶端電腦的Cookie資料被偷窺,造成使用者的機密資料外洩,對使用者形成無可挽回的傷害。對Cookie資料加密不可以使用SHA1雜湊加密法,因為經過SHA1雜湊加密法加密過的信用卡號碼將無法還原成未加密之前的內容。
正確答案:C
說明:
將字串轉型成Base64格式的字串後的動作只能視為是一種編碼處理,而不是加密處理。Base64格式的字串可以很輕易地經由Convert類別的FromBase64String方法還原成原來的內容,不需要使用任何的金鑰,就可以將Base64格式的字串轉型回普通的字串,所以無法提供機密資料很好的保護。
正確答案:D
說明:
對稱式加密法,非對稱式加密法,以及雜湊加密法是三種標準的資料保護方法,Microsoft .NET Framework提供的System.Security.Cryptography名稱空間中提供有上述三種標準的資料加密方法,支援應用程式/網頁對機密資料進行加密與簽章的作業。
圖1所示即為.NET平台提供的System.Security.Cryptography名稱空間底下的SymmetricAlgorithm名稱空間提供的四種對稱式加密演算法。
圖1:.NET平台提供的對稱式加密演算法
從圖1可以看出.NET平台支援的對稱式加密演算法包括DES,RC2,Rijndael,以及TripleDES,而如果您要使用DES加密演算法對機密資料進行加密,您可以使用DESCryptoServiceProvider類別來達到所需要的功能。
圖2所示即為.NET平台提供的System.Security.Cryptography名稱空間底下的AsymmetricAlgorithm名稱空間提供的兩種非對稱式加密演算法。

圖2:.NET平台提供的非對稱式加密演算法
從圖2可以看出.NET平台支援的非對稱式加密演算法包括DSA與RSA,而如果您要使用RSA加密演算法對機密資料進行加密,您可以使用RSACryptoServiceProvider類別來達到所需要的功能。
圖3所示即為.NET平台提供的System.Security.Cryptography名稱空間底下的HashAlgorithm名稱空間提供的七種的雜湊加密演算法。

圖3:.NET平台提供的雜湊加密演算法
從圖3可以看出.NET平台支援的非對稱式加密演算法包括KeyedHashAlgorithm,MD5,SHA1,SHA256,SHA384,SHA512,以及RIPEMD160,而如果您要使用SHA1加密演算法對機密資料進行雜湊,您可以使用SHA1CryptoServiceProvider類別,或是SHA1Managed類別來達到所需要的功能。請注意其中的RIPEMD160加密演算法是.NET
Framework 2.0版開始才支援的功能,無法在1.1版的.NET平台中使用。
◎科目:資料庫
說明:
SQL Server Agent可以完成自動化作業,SQL Server Integration Services主要是實作出資料匯出匯入等作業,SQL Server
Browser是提供給應用程式搜尋SQL Server 2005資料庫引擎使用,SQL Server Reporting Services是實作企業級報表的平台。
說明:
D認證是屬於SQL Server在安全性的功能。
說明:
SQL Server Agent沒有所謂的失敗警示。
說明:
最後一個D是屬於資料庫郵件使用的角色權限。
說明:
一般遇到該種問題的時候,大部分是屬於SQL Server Agent的啟動帳戶,沒有足夠權限完成封裝的作業步驟。因此要解決這樣的狀況,可以先從D建立安全性的認證帳戶,接著B的設定SSIS封裝執行的Proxy,然後選擇C設定作業步驟的執行身份為Proxy。
|