标签: fips

是否可以使用ASP.NET ScriptManager来使用Windows FIPS安全策略?

如果在Windows中启用"使用FIPS兼容算法进行加密,散列和签名"安全策略选项,则尝试在.NET Framework中使用许多加密类将导致InvalidOperationException.默认情况下,ASP.NET使用AES加密ViewState blob,因此失败.您可以通过向web.config添加这样的键来解决此问题:

<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="3DES" decryption="3DES"/>
Run Code Online (Sandbox Code Playgroud)

这涵盖了ASP.NET的基本用法.我的问题是:我有一个庞大,复杂的ASP.NET Web应用程序,它大量使用ScriptManagers(ASP.NET AJAX的基础),需要由必须启用此FIPS策略设置的政府客户部署.任何带有ScriptManager的ASP.NET页面都会抛出此异常:

[InvalidOperationException: This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.]
   System.Security.Cryptography.SHA1Managed..ctor() +3607454
   System.Security.Policy.Hash.get_SHA1() +45
   System.Web.Handlers.ScriptResourceHandler.GetAssemblyInfoInternal(Assembly assembly) +85
   System.Web.Handlers.ScriptResourceHandler.GetAssemblyInfo(Assembly assembly) +99
   System.Web.Handlers.RuntimeScriptResourceHandler.GetScriptResourceUrlImpl(List`1 assemblyResourceLists, Boolean zip, Boolean notifyScriptLoaded) +525
   System.Web.Handlers.RuntimeScriptResourceHandler.System.Web.Handlers.IScriptResourceHandler.GetScriptResourceUrl(List`1 assemblyResourceLists, Boolean zip, Boolean notifyScriptLoaded) +910
   System.Web.Handlers.RuntimeScriptResourceHandler.System.Web.Handlers.IScriptResourceHandler.GetScriptResourceUrl(Assembly assembly, String resourceName, CultureInfo culture, Boolean zip, Boolean notifyScriptLoaded) +193
   System.Web.UI.ScriptReference.GetUrlFromName(ScriptManager scriptManager, IControl scriptManagerControl, Boolean zip) +306
   System.Web.UI.ScriptManager.RegisterUniqueScripts(List`1 uniqueScripts) +169
   System.Web.UI.ScriptManager.RegisterScripts() +407
   System.Web.UI.ScriptManager.OnPagePreRenderComplete(Object sender, EventArgs e) +200
   System.Web.UI.Page.OnPreRenderComplete(EventArgs e) +11041982 …
Run Code Online (Sandbox Code Playgroud)

.net asp.net scriptmanager fips

5
推荐指数
1
解决办法
1636
查看次数

如果启用了Windows FIPS合规性策略,为什么不允许使用.NET"托管"加密类?

我一直致力于使我们的.NET应用程序符合FIPS,并且发现ManagedCryptography类(例如AESManaged)不符合FIPS标准.我已经阅读了其他几篇关于哪些类符合的文章和问题,例如何时C#AES算法符合FIPS标准?http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/e0b4493f-6e20-4b75-a118-6b6e5d26a2a6.它看起来像CryptoServiceProvider类符合FIPS,但Managed类不是.

我只是想知道是否有人可以解释CryptoServiceProvider类和Managed类之间的区别?如果有人可以解释为什么这些CryptoServiceProvider类符合FIPS,但是托管类不是,所以我可以向老板解释为什么我必须重写我们的加密方法.引擎盖下它们根本不同吗?或者MS有没有让Managed类获得NIST认证?如果Managed类只包装CryptoServiceProvider类,那么为什么Managed类不能自动符合FIPS?如果我编写一个类将FIPS兼容类包装到我自己更容易使用的类中,我的软件是否不再符合FIPS?

谢谢.

.net encryption cryptography fips

5
推荐指数
1
解决办法
1955
查看次数

适用于Java的FIPS兼容SSH库

我想在我的Java应用程序中实现SCP(安全复制)功能,以将文件从SSH服务器复制到另一台机器.我的Java应用程序必须符合FIPS,因此它使用SunPKCS11提供程序与底层NSS密钥数据库进行交互.

为了实现SCP功能,我们可以使用以下任何SSH库来实现Java:

  • JSch
  • vngx-jsch
  • Apache MINA SSHD
  • Ganymed SSH-2
  • sshj
  • SSHTools

关于这些SSH库我有以下问题:

  1. 以上任何库都是FIPS认证的吗?
  2. 如果不是FIPS认证,那么算法(密码,密钥交换,MAC等......)是否符合FIPS标准?
  3. Java是否还有其他FIPS认证/兼容的SSH库?

以下链接似乎表明JSch不符合FIPS:

java ssh scp nss fips

5
推荐指数
1
解决办法
925
查看次数

启动SSH会话时FIPS完整性验证测试失败

我最近在CentOS 6下启用了FIPS模块(最小安装)。

确认模块正常工作

cat /proc/sys/crypto/fips_enabled 产量 1

openssl md5 somefile(失败)和openssl sha1 somefile(成功)。

openssl version 产量 OpenSSL 1.0.1e-fips 11 Feb 2013

当我尝试将ssh放入我每天连接的盒子中时,现在会看到一条说明:

FIPS完整性验证测试失败

会话继续进行,我能够连接到远程服务器。连接仍然安全吗?

ssh openssl centos fips centos6

5
推荐指数
1
解决办法
2万
查看次数

启用FIPS会导致libgcrypt错误

我有两台CentOS 6.7机器(服务器A和B).每个系统上都安装了相同的软件包版本.

上周我在服务器A上启用了openSSH FIPS 140-2模块,该系统完美运行(包括对SQL Server实例的tsql查询).

今天我在服务器B上执行了相同的步骤(在上面的链接中).重新启动后,fips显示已启用并已测试正常 - 但tsql(对于同一SQL Server实例)已停止使用以下错误:

[serverB ~]# tsql -S egServer80 -U myusername
Password: 
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Error 20002 (severity 9):
    Adaptive Server connection failed
There was a problem connecting to the server
Run Code Online (Sandbox Code Playgroud)

我查看日志文件并找到:

tsql: Libgcrypt warning: MD5 used - FIPS mode inactivated
Run Code Online (Sandbox Code Playgroud)

在freetds中启用调试会产生以下额外错误:

14:56:46.617196 3577 (net.c:1366):'''handshake failed: GnuTLS internal error.
Run Code Online (Sandbox Code Playgroud)

退出FIPS模块(从grub.conf中删除fips = 1)并重新启动设置回来,我又能够tsql进入我的SQL Server实例.

两个CentOS机器都使用相同的libgcrypt版本(1.4.5).

为什么(或如何)在grub中启用FIPS导致libgcrypt在这台机器上失败? 显然,机器之间的某些配置是关闭的,但我无法发现它,并且已经耗尽了资源以找到下一步的位置.


注意#1:

我可以 …

centos fips freetds libgcrypt

5
推荐指数
0
解决办法
291
查看次数

OpenSSL FIPS_mode_set 在 Python 加密库中不起作用

根据 Python 加密库的文档 [1],可以使用静态链接的 OpenSSL 构建自定义加密轮。我尝试使用使用 FIPS 对象模块构建的 OpenSSL 安装来执行此操作,并且能够成功构建轮子,但发现它没有 FIPS 功能(无法设置 FIPS_mode_set=1)。

我创建了一个可以重现相同结果的 Dockerfile。最后的 Python 代码应该显示“1”和“OpenSSL 1.0.2t-fips 10 Sep 2019”,但却显示“0”和“OpenSSL 1.0.2t 10 Sep 2019”(无-fips指定)。

令我困惑的是,当我调用openssl version我构建的 CLI 时,它正确地显示了带有后缀的版本-fips。因为,我猜测我在构建密码学的过程中犯了错误。

感谢这里的任何帮助!

FROM centos

# Install build dependencies
RUN yum groupinstall -y  "Development Tools" && \
    yum install -y python-devel libffi-devel

# Install Python dependencies
RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && \
    python get-pip.py && \
    pip install virtualenv setuptools wheel pip

# Build Fips object …
Run Code Online (Sandbox Code Playgroud)

c python openssl compilation fips

5
推荐指数
1
解决办法
4298
查看次数

如何以编程方式检查 JVM 上是否启用了 FIPS

Java 12 之后,删除了内部包 com.sun.net.ssl。有什么方法可以让我以编程方式检查 JVM 上是否启用了 FIPS?

java jvm fips

5
推荐指数
1
解决办法
2480
查看次数

处理 PKCS12 密钥库时 keytool 与 FIPS

背景:什么有效

有时我们必须使用一个读取 PKCS#12 密钥库的 Java 软件。对于这个特定的项目,我们必须根据需要创建公共/私有对,并将密钥存储在 PKCS12 文件中,因为它很稳定,而且几乎所有东西都可以读取该格式。

因为我们内部做了很多 Java 工作,keytool所以我们想,嘿,只需使用 keytool 来创建私钥和证书即可。一个典型的例子如下所示:

keytool -keystore MyLuggage.p12 -storepass 123456 -storetype pkcs12
   -alias "......"
   -genkeypair -keyalg RSA -keysize typically_2048_or_3072 -sigalg SHA256withRSA

   -ext "KeyUsage=dataEncipherment,digitalSignature,keyEncipherment"
   -startdate ....
   -dname "......."
Run Code Online (Sandbox Code Playgroud)

实践中实际-keysize值在 2048 到 8192 之间变化;出于这个问题的目的,使用什么似乎没有什么区别,但显然,如果我们要选择它们,我们会使用适合任务的密钥长度(通常由其他软件的约束决定,或者由交给我们的一些规定)。

这一直有效,因为其他软件(包括开头提到的 Java 软件)可以读取密钥库并使用其中的私钥。(并且公钥可以导出使用等)

这就是破坏的地方

该软件最近升级到使用 RSA 的 FIPS 140 认证 Java 库的版本。(“BSAFE”或“JSAFE”取决于您询问的人。)现在,尝试打开以前创建的 PKCS#12 文件失败,并显示

java.lang.SecurityException: Algorithm not allowable in FIPS140 mode: PBE/PKCS12/SHA1/RC2/CBC/40
    at ......
    at java.security.KeyStore.load(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

省略的 ...... 帧位于我们没有的 RSA 源代码中,并且希望使用在任何情况下都已被混淆的函数名称。因此,查看他们的来源并尝试找出到底是什么导致了这种情况的测试,并不是一种选择。

那么,什么原因造成这种情况呢?我们选择的唯一算法是“RSA”密钥生成和“SHA256withRSA”签名,这两种算法都是 FIPS …

java fips keytool pkcs#12

4
推荐指数
1
解决办法
6401
查看次数

在 golang Boringssl 中验证 FIPS 模式

如何验证 golang dev 无聊的加密分支中的二进制文件是否启用了 fips 模式?除了内部 golang 测试之外,我没有看到简单的方法

fips go boringssl

4
推荐指数
1
解决办法
3977
查看次数

BouncyCastle JSSE 和 BCTLS 没有 Cipher 凭据

将 BouncyCastle FIPS JSSE 和 TLS 提供程序用于我的服务器应用程序。

<dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcpkix-fips</artifactId>
        <version>1.0.3</version>
    </dependency>
    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bc-fips</artifactId>
        <version>1.0.2</version>
    </dependency>
    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bctls-fips</artifactId>
        <version>1.0.10</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

在应用程序中配置 FIPS 和 JSSE 提供程序,如下所示。

Security.insertProviderAt(new BouncyCastleFipsProvider(), 1);
Security.insertProviderAt(new BouncyCastleJsseProvider("fips:BCFIPS"), 2);
Security.setProperty("keystore.type", "BCFKS");
Run Code Online (Sandbox Code Playgroud)

SSL证书配置如下:

Server Cert - Public Key: RSA 2048 bit, Sign Algorithm: SHA256WithRSA
Issuing CA - Public Key: RSA 2048 bit, Sign Algorithm: SHA256WithRSA
Root CA - Public Key: RSA 2048 bit, Sign Algorithm: SHA1WithRSA
Run Code Online (Sandbox Code Playgroud)

使用 Zulu OpenJDK JRE 11。以下是与 TLS 相关的其他系统属性

-Djdk.tls.disabledAlgorithms="MD5, RC4, TLSv1, SSLv2Hello, …
Run Code Online (Sandbox Code Playgroud)

ssl bouncycastle jsse jce fips

4
推荐指数
1
解决办法
1514
查看次数