簡體   English   中英

如果算法符合FIPS標准,Windows操作系統如何檢測?

[英]How can Windows OS detect if an algorithm is FIPS compliant?

當Windows設置為強制使用FIPS兼容算法時,如果有一個應用程序使用在該機器上運行的非FIPS兼容算法,並且在該應用程序中拋出異常,說它不是Windows FIPS實現的一部分。我看到有人通過在應用程序代碼中注釋掉這個檢查來繞過FIPS檢查。 如果可以做到這一點,這真的符合FIPS嗎?

Windows如何檢測應用程序是否使用FIPS兼容算法?

這些算法由Windows內置的庫或Microsoft提供的產品提供,它們包含投訴和非投訴算法。

當您的代碼調用那些內置庫時,這些庫包含對windows設置的檢查,如果設置了這些庫,則會拋出異常。

以下是Sha256Managed內部檢查的Sha256Managed

    public SHA256Managed()
    {
#if FEATURE_CRYPTO
        if (CryptoConfig.AllowOnlyFipsAlgorithms)
            throw new InvalidOperationException(Environment.GetResourceString("Cryptography_NonCompliantFIPSAlgorithm"));
        Contract.EndContractBlock();
#endif // FEATURE_CRYPTO

        _stateSHA256 = new UInt32[8];
        _buffer = new byte[64];
        _W = new UInt32[64];

        InitializeState();
    }

如果您使用第三方實現或編寫自己的算法實現,Windows將無法檢測到您在具有該設置集的系統上使用非FIPS投訴算法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM