Это скорее большой комментарий, чем ответ. К сожалению об этом ...
бросает исключение на промежуточном сервере, который имеет
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 содержат проверку).
Вы пытаетесь найти cryptograhy не в пределах System.Security.Cryptography
; или в пределах 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 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.
Если вы имеете дело с FIPS, вы, вероятно, имеете дело с очень сильными стандартами (или с жестким администратором сервера), и вам может потребоваться переосмыслить 4.1.6, который не так свободен, как кажется всем: http : //www.lowagie.com/license. Я также рассмотрю это обсуждение 5.1.2 на FIPS: http://itext-general.2136553.n4.nabble.com/iTextSharp-5-1-2-and-FIPS-Compliance-td3990452.html –