English 中文(简体)
Why are the .NET "Managed" Cryptography classes not permitted if Windows FIPS Compliance policy is enabled?
原标题:

I have been working on making our .NET application FIPS compliant, and have found that the Managed Cryptography classes (such as AESManaged) are not FIPS compliant. I have read several other articles and questions on which classes are compliant, such as When will C# AES algorithm be FIPS compliant? and http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/e0b4493f-6e20-4b75-a118-6b6e5d26a2a6. It looks like the CryptoServiceProvider classes ARE FIPS compliant, but the Managed classes are not.

I am just wondering if someone can explain the difference between the CryptoServiceProvider classes and the Managed classes? And if someone can explain why the CryptoServiceProvider classes are FIPS compliant, but the Managed classes are not, so I can explain to my boss why I have to rewrite our encryption methods. Are they fundamentally different under the hood? Or has MS just not subjected the Managed classes to NIST certification? If the Managed classes just wrap the CryptoServiceProvider classes, then why aren t the Managed classes automatically FIPS compliant? And if I write a class to wrap a FIPS compliant class into a more easily usable class of my own, is my software no longer FIPS compliant?

Thanks.

最佳回答

"FIPS-compliant" is wrong term - you are talking about FIPS-certified ones. The difference is that if the algorithm needs to be compatible with reference implementation and third-party implementations, then it needs to be compliant to corresponding FIPS that describes this algorithm. But certification is a different story.

CryptoServiceProvider classes call CryptoAPI (unmanaged Windows API) to perform actual crypto operations, and some CryptoAPI modules are FIPS-certified (for business purposes). Obviously there were not enough reasons to certify .NET managed classes - if you need certified modules, use CryptoAPI ones. Certification takes lots of time, efforts and significant amount of money.

Also I guess there can be technical reasons that prevent the managed modules from certification, but this is just a guess. It can happen that the nature of .NET (IL and virtual machine) contradict to some requirements defined for certification process, i.e. they just can t be certified.

As for your own wrapper classes - there exist several companies that provide personnel training and certification itself. They also offer consulting services. I hope that somebody from such service responds here, but you can contact them as well if you need.

问题回答

暂无回答




相关问题
Manually implementing high performance algorithms in .NET

As a learning experience I recently tried implementing Quicksort with 3 way partitioning in C#. Apart from needing to add an extra range check on the left/right variables before the recursive call, ...

Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

How do I compare two decimals to 10 decimal places?

I m using decimal type (.net), and I want to see if two numbers are equal. But I only want to be accurate to 10 decimal places. For example take these three numbers. I want them all to be equal. 0....

Exception practices when creating a SynchronizationContext?

I m creating an STA version of the SynchronizationContext for use in Windows Workflow 4.0. I m wondering what to do about exceptions when Post-ing callbacks. The SynchronizationContext can be used ...

Show running instance in single instance application

I am building an application with C#. I managed to turn this into a single instance application by checking if the same process is already running. Process[] pname = Process.GetProcessesByName("...

How to combine DataTrigger and EventTrigger?

NOTE I have asked the related question (with an accepted answer): How to combine DataTrigger and Trigger? I think I need to combine an EventTrigger and a DataTrigger to achieve what I m after: when ...

热门标签