2007.12月號-167期 程式開發安全自我評量解答  解答名師/王寧疆、楊志強

◎科目:程式開發安全

在上一期的IT基測題目中,我們針對確保機密資料安全的加密與簽章的做法設計了幾個稍微進階一點的題目,讓有興趣的讀者可以建立更深入的資訊安全知識。在這一期的文章中,我們設計了與資料加密與解密工具有關的資訊安全題目,帶領大家一探Microsoft在工具層面支援資料加密與解密的藍圖。

正確答案:

說明:
X509Store類別的物件可以用來代表X.509憑証的儲存容器,提供儲存和管理X.509憑証的功能。請注意這個類別是Microsoft .NET Framework 2.0版新提供的類別。 以下的C#範例程式碼將會示範如何開啟儲存X.509憑証的容器,執行新增/刪除憑証的動作,然後再關閉儲存X.509憑証的容器:
X509Store store = new X509Store ("teststore", StoreLocation.CurrentUser); //建立儲存X.509憑証的容器
store.Open (OpenFlags.ReadWrite); //開啟儲存X.509憑証的容器以便讀寫
X509Certificate2 certificate = new X509Certificate2 (); //建立代表X.509憑証的X509Certificate2類別物件 X509Certificate2

certificate1 = new X509Certificate2 ("X.509憑証檔案1"); //將憑証檔案讀到X509Certificate2類別的物件中 X509Certificate2
certificate2 = new X509Certificate2 ("X.509憑証檔案2"); //將憑証檔案讀到X509Certificate2類別的物件中 X509Certificate2
certificate3 = new X509Certificate2 ("X.509憑証檔案3"); //將憑証檔案讀到X509Certificate2類別的物件中

X509Certificate2Collection collection = new X509Certificate2Collection (); //建立X509Certificate2Collection集合
collection.Add (certificate2); //將代表X.509憑証的X509Certificate2物件加入到X509Certificate2Collection集合中
collection.Add (certificate3); //將代表X.509憑証的X509Certificate2物件加入到X509Certificate2Collection集合中

store.Add (certificate1); //將代表X.509憑証的X509Certificate1物件加入到儲存X.509憑証的容器中
store.AddRange (collection); //將X509Certificate2Collection集合中的憑証加入到儲存X.509憑証的容器中
X509Certificate2Collection storecollection = (X509Certificate2Collection)store.Certificates; //取出儲存X.509憑証的容器中的所有憑証

Console.WriteLine ("Store name: {0}", store.Name); //顯示儲存X.509憑証的容器的名稱
Console.WriteLine ("Store location: {0}", store.Location); //顯示儲存X.509憑証的容器的位置
foreach (X509Certificate2 x509 in storecollection) //取出X.509憑証的容器中的所有憑証
{
Console.WriteLine("certificate name: {0}",x509.Subject); //顯示憑証的名稱
}
store.Remove (certificate1); //移除第一個加入的憑証.
X509Certificate2Collection storecollection2 = (X509Certificate2Collection)store.Certificates; //取出容器中的所有憑証並放入集合中
Console.WriteLine ("{1}Store name: {0}", store.Name, Environment.NewLine); //輸出標題文字
foreach (X509Certificate2 x509 in storecollection2) //取出集合中的每一個憑証
{
Console.WriteLine ("certificate name: {0}", x509.Subject); //顯示憑証的名稱
}

store.RemoveRange (collection); //移除集合中的所有憑証
X509Certificate2Collection storecollection3 = (X509Certificate2Collection)store.Certificates; //取出容器中的憑証集合
Console.WriteLine ("{1}Store name: {0}", store.Name, Environment.NewLine); //輸出標題文字
if (storecollection3.Count == 0) //如果集合中的憑証數目為0
{
Console.WriteLine ("Store contains no certificates."); //輸出沒有憑証的訊息
}
Else //否則
{
foreach (X509Certificate2 x509 in storecollection3) //取出集合中的所有憑証
{
Console.WriteLine ("certificate name: {0}", x509.Subject); //顯示憑証的名稱
}
}
store.Close (); //關閉儲存憑証的容器
 

正確答案:

說明:
MakeCert.exe命令列工具可以用來建立僅供測試使用的憑証。該工具能夠建立公開金鑰和私密金鑰組,以便進行數位簽章,並把產生的公開金鑰與私密金鑰組儲存到憑証檔案中。並且在金鑰組時會將所建立的金鑰組關聯到指定的發行者名稱,並在建立X.509憑証時繫結使用者指定的名稱到金鑰組中的公開金鑰。 MakeCert.exe命令列工具建立的私密金鑰不會存放到副檔名為.snk的檔案中。如果需要儲存私密金鑰,請在使用該工具時加上-sk參數指定儲存金鑰的容器名稱。
以下就是使用MakeCert.exe命令列工具建立測試用憑証並將憑証寫入名稱為testCert.cer的檔案中的範例: makecert testCert.cer

[特別注意] 你必須使用憑証容器來儲存使用MakeCert.exe命令列工具建立的憑証,將私密金鑰儲存到副檔名為.snk的檔案是比較不安全的做法,因此在建立或匯入.snk檔案中的金鑰檔案時要特別注意金鑰保管的問題。 

正確答案:

說明:
SignTool.exe命令列工具必須依賴電腦中安裝有CAPICOM 2.0元件才能夠正常工作,讀者有需要可以到以下的網址下載CAPICOM 2.0,並安裝電腦中供SignTool.exe命令列工具使用:http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdkredist.htm。 SignTool.exe命令列工具會驗証經過簽章的憑証是否是受信任的機構所發出,憑証是否已經撤消,或是憑証是否有效。 SignTool.exe命令列工具的傳回值為0代表執行成功,1代表執行失敗,2代表執行完畢,但是有產生警告訊息。
以下的範例會使用內嵌的憑証對名稱為MyFile.exe加上簽章: signtool sign /a MyFile.exe

[特別注意] Microsoft Windows NT、Windows Me、Windows 98、以及Windows 95並未支援SignTool.exe命令列工具。

正確答案:

說明:
CertMgr.exe命令列工具可以用來管理憑証,憑証信賴清單(CTL),以及憑証撤消清單(CRL)。CertMgr.exe命令列工具具有以下幾項基本功能:
‧ 顯示憑証、CTL、和CRL的資訊。
‧ 新增憑証、CTL、和CRL到憑証容器中。
‧ 自憑証容器中刪除憑証、CTL、和CRL。
‧ 自憑証容器中取出憑証、CTL、和CRL並儲存到檔案中。
CertMgr.exe命令列工具可以搭配StoreFile和system store等憑証儲存容器一起工作。使用CertMgr.exe命令列工具的時候並不需要指定存放憑証的容器,CertMgr.exe命令列工具會自動採用合適的憑証儲存容器。 執行CertMgr.exe命令列工具時不加上任何參數可以啟動CertMgr.exe命令列工具的圖形操作畫面,方便進行憑証管理的工作,例如匯入檔案格式的憑証、CTL、CRL到憑証儲存容器中。
以下的範例會使用CertMgr.exe命令列工具顯示名稱為my的憑証儲存容器的詳細內容: certmgr /v /s my

第五題答案

正確答案:

說明:
Cert2spc.exe命令列工具可以用來依據一個或多個憑証建立軟體發行者憑証(SPC)。Cert2spc.exe所建立的憑証只能供測試使用,要建立合法的SPC,必須向VeriSign或Thawte之類的CA(Certification Authority)進行申請。 以下的範例會使用Cert2spc.exe命令列工具依據檔案名稱為myCertificate.cer的憑証建立測試用的軟體發行者憑証,並存放到名稱為mySPCFile.spc的檔案中: cert2spc myCertificate.cer mySPCFile.spc

◎科目:資料庫

說明:
如果是使用SQL Server 6.5,需要升級到SQL Server 200之後,再升級到SQL Server 2005。

說明:
該工具可以針對現有舊版本的SQL Server 進行全面性檢查,包括SQL Server Engine、分析服務、DTS等等

說明:
有關跨語系升級,僅可以英文版變更成中文版,反之不可。此外,升級後的資料庫需要手動修改資料庫的相容版本,改成9.0。


說明:
DTSMigrationWizard.exe是升級DTS到SSIS,DTExecUi.exe是執行封裝的程式,CopyDatabaseWizard.exe是移轉SQL Server資料庫精靈。
 

說明:
若需要在SSIS環境中直接開啟DTS封裝,需要安裝SQLServer2005_DTS.msi的程式,才可以在SQL Server 2005的SSIS環境中,開啟舊版DTS封裝。


Copyright© FLAG INFORMATION CO., LTD. 旗訊科技(股)公司. All rights reserved. 本站圖文著作權所有 未經授權 不得任意轉載使用