2013-11-01 63 views
1

我試圖使用iTextSharp在我的ASP.NET WebForms應用程序中使用版本4.1.6生成PDF文檔,但它在啓用了FIPS合規性的登臺服務器上引發異常。是否有符合FIPS的iTextSharp版本?

有誰知道iTextSharp版本是FIPS兼容?

+1

如果你與你可能處理得非常強有力的標準FIPS(或堅韌的服務器管理員)處理和每個人似乎都認爲你可能要重新思考4.1.6這是不是免費:HTTP ://www.lowagie.com/license。我也想看看關於FIPS 5.1.2的這個討論:http://itext-general.2136553.n4.nabble.com/iTextSharp-5-1-2-and-FIPS-Compliance-td3990452.html –

回答

0

這其實更像是一個重要的評論,而不是一個答案。對不起...

在登臺服務器上拋出異常 已啓用FIPS遵從 已啓用FIPS驗證的加密。

因此,他們可能已經在使用效果HKLM\System\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy(Windows XP和Server 2003)或HKLM\System\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy\Enabled(Vista和Server 2008)。

或者,他們可能已通過How to restrict the use of certain cryptographic algorithms and protocols in Schannel.dll手動完成。


拋出一個異常...

你知道的例外是什麼?如果你知道這個例外,你可能會在iTextSharp中搜索它的使用。

一般來說,所有FIPS認可的算法和實現都在System.Security.Cryptography不受管理。 (更準確地說,一些System.Security.Cryptography類是CAPI調用的包裝,因爲CAPI模塊持有驗證)。

因此,您可能會嘗試在System.Security.Cryptography之內發現cryptograhy 而不是;或者在System.Security.Cryptography之內,但使用託管類。例如,RijndaelManaged會使您在這裏遇到麻煩,並且會導致一個錯誤。

EDIT:根據KB 811833,"System cryptography: Use FIPS compliant algorithms for encryption, hashing, and signing" security setting effects in Windows XP and in later versions of Windows

Microsoft .NET框架應用程序如Microsoft ASP.NET僅 允許使用由NIST 認證算法實現爲FIPS 140兼容。具體而言,可以實例化的唯一加密算法類是實現 FIPS兼容算法的算法類。這些類的名稱以 「CryptoServiceProvider」或「Cng」結尾。任何嘗試創建 其他加密算法類的實例(例如,名稱爲 的類以「Managed」結尾)會導致發生InvalidOperationException異常,從而導致發生 異常。


我想你可能僅僅是一個進退兩難的境地:

$ grep -R MD5 * | grep -v "\.svn" 
src/core/iTextSharp/text/ImgJBIG2.cs:     this.globalHash = DigestAlgorithms.Digest("MD5", this.global); 
src/core/iTextSharp/text/pdf/PdfSignatureAppearance.cs:   reference.Put(new PdfName("DigestMethod"), new PdfName("MD5")); 
src/core/iTextSharp/text/pdf/PdfSignatureAppearance.cs:   reference.Put(new PdfName("DigestMethod"), new PdfName("MD5")); 
src/core/iTextSharp/text/pdf/PdfEncryption.cs: /** The message digest algorithm MD5 */ 
src/core/iTextSharp/text/pdf/PdfEncryption.cs:  md5 = DigestUtilities.GetDigest("MD5"); 
... 
$ grep -R MD5 * | grep -v "\.svn" | wc -l 
128 

和:

$ grep -R SHA1 * | grep -v "\.svn" 
src/core/iTextSharp/text/error_messages/nl.lng:support.only.sha1.hash.algorithm=Enkel ondersteuning voor SHA1 hash algoritme. 
src/core/iTextSharp/text/error_messages/en.lng:support.only.sha1.hash.algorithm=Support only SHA1 hash algorithm. 
src/core/iTextSharp/text/pdf/PdfName.cs:  public static readonly PdfName ADBE_PKCS7_SHA1 = new PdfName("adbe.pkcs7.sha1"); 
src/core/iTextSharp/text/pdf/PdfName.cs:  public static readonly PdfName ADBE_X509_RSA_SHA1 = new PdfName("adbe.x509.rsa_sha1"); 
src/core/iTextSharp/text/pdf/AcroFields.cs:   if (sub.Equals(PdfName.ADBE_X509_RSA_SHA1)) { 
... 
$ grep -R SHA1 * | grep -v "\.svn" | wc -l 
188 

MD5在128個地方顯示出來和SHA-1所示188個地方。這些算法被挖掘到代碼中,並且可能很難刪除它們。

您可能必須在允許弱/受傷密碼的服務器上構建它,因爲它看起來MD5和SHA1可能是PDF規範的一部分(也許PDF專家可以在這裏提供幫助)。


FIPS遵從上

轉身快速注意這一點。您要麼使用經過驗證的密碼術,要麼您不使用經過驗證的密碼術。美國國家標準與技術研究院和美國國土安全部審計師對這些條款的使用非常精確。

符合FIPS,符合FIPS,已通過FIPS,已啓用FIPS,FIPS <此處最喜歡的詞>沒有任何意義。我知道NIST和DHS將一家供應商的網絡交換機從美國聯邦政府撤出,因爲供應商的營銷部門表示他們符合FIPS標準,而不是說他們提供了FIPS驗證的密碼術。

+0

* MD5和SHA1可能是PDF規範的一部分(也許PDF專家可以在這裏提供幫助)* - 爲了完全支持PDF規範,這兩種算法都是必需的,包括安全相關的(用於加密的密碼散列,用於登錄的文檔散列一些模式)而不是與安全相關的(校驗和等)上下文。 – mkl