akkadotnet / akka.net

Canonical actor model implementation for .NET with local + distributed actors in C# and F#.
http://getakka.net
Other
4.72k stars 1.04k forks source link

Using Akka.Net With Cluster on a server with FIPS-Compliance causes an exception and Akka fails to run #4082

Open scptre opened 4 years ago

scptre commented 4 years ago

Hi Everyone,

We are running into an issue with the implementation of the vector clock used in the Akka.Cluster.dll. If you try and run in a FIPS Compliant server where the Hash Algorithms are limited an exception is throw because MD5 is not FIPS compliant and the vector clock relies on MD5 Hashing.

Aaronontheweb commented 4 years ago

I had to look up FIPS compliance - we might be able to fix this, although doing it in a non-breaking way might be tricky. This is Windows-only, correct?

scptre commented 4 years ago

I believe so but I am sure there is some Linux US government regulations that force the use of certain hashing algorithms if not at the operating system level at least in writing

Aaronontheweb commented 4 years ago

Looks like it should be easier to test for this as of Visual Studio 16.4 https://docs.microsoft.com/en-us/visualstudio/releases/2019/release-notes#--visual-studio-2019-version-164

scptre commented 2 years ago

@Aaronontheweb are you ok with replacing the MD5 hash used in the vector clock from the dotNet SDK to a custom MD5 hash implementation to get around the FIPS os flag which throws an exception when you try to instantiate the MD5 in the dotNET SDK?

Aaronontheweb commented 2 years ago

@scptre if you can send in a pull request with those changes, I'll let you know - conceptually fine with it, but it might cause a rolling upgrade in Akka.Cluster to go nuts possibly. I'll just need to test it to verify it, which we can easily do now.