是否有符合FIPS标准的iTextSharp版本?

时间:2013-11-01 19:33:33

标签: itextsharp fips

我正在尝试使用 iTextSharp 在我的ASP.NET WebForms应用程序中使用版本4.1.6生成PDF文档,但它在启用了FIPS兼容性的登台服务器上引发了异常。

是否有人知道符合FIPS标准的 iTextSharp 版本?

1 个答案:

答案 0 :(得分: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 not ;或者在System.Security.Cryptography内但使用托管类。例如,RijndaelManaged会让您遇到麻烦,并且会导致出现。

编辑:根据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 Framework应用程序,例如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合规性

关于此的快速说明。您可以使用经过验证的加密技术,也可以不使用经过验证的加密技术。 NIST和DHS审核员对这些术语的使用非常准确。

符合FIPS标准,符合FIPS标准,FIPS认可,支持FIPS,FIPS<此处最喜欢的字词>什么都没有。我知道NIST和DHS将一个供应商的网络交换机从美国联邦中撤出,因为该供应商的营销部门表示他们是FIPS兼容的,而不是说他们提供了FIPS验证加密。