Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FIPS 140-2 encryption using Istio #11723

Open
gyliu513 opened this issue Feb 13, 2019 · 38 comments
Open

FIPS 140-2 encryption using Istio #11723

gyliu513 opened this issue Feb 13, 2019 · 38 comments
Labels
area/security lifecycle/staleproof Indicates a PR or issue has been deemed to be immune from becoming stale and/or automatically closed

Comments

@gyliu513
Copy link
Member

Describe the feature request
Some discussion here https://groups.google.com/forum/#!topic/istio-users/Zk82Wxu4Zrc

Describe alternatives you've considered
Envoy already support FIPS with x86, we should enable Istio use the latest envoy to support FIPS encryption. Checkout here https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/ssl#fips-140-2 for detail.

FYI @morvencao @clyang82 @linsun

@linsun
Copy link
Member

linsun commented Feb 13, 2019

cc @johnma14

@gyliu513
Copy link
Member Author

@johnma14 @linsun can you please share some plan or progress for this? Thanks.

@johnma14
Copy link
Contributor

@gyliu513 I haven't gotten a chance so far to look at this in detail since I have been trying to complete some PR's for the 1.1 release. I hope to start work on this next week onwards if that is ok.

@linsun linsun added this to the Nebulous Future milestone Apr 11, 2019
@linsun
Copy link
Member

linsun commented Apr 11, 2019

Target this for post 1.2 given it is not in 1.2 roadmap and requires a need and socialize with security WG.

@dghant1024
Copy link

@linsun Thanks for the heads up ... I know that dates are irrelevant in what we do, but I'm curious when you think FIPS 140-2 will make it into an RC?

@clyang82
Copy link
Member

Guidance about how to enable FIPS support for power - envoyproxy/envoy#7221

@linsun
Copy link
Member

linsun commented Jun 12, 2019

chatted with @PiotrSikora offline and he has done some investigation on this, looking forward to seeing those.

Also, added this topic to the security WG agenda tmr for folks who are interested in it.

@coreywagehoft
Copy link

Any movement on this being added to the Istio roadmap?

@linsun
Copy link
Member

linsun commented Jul 23, 2019

A quick update on this topic:

A couple of us have discussed this topic at an Istio security WG mtg few weeks back:

  • Build envoy and istio proxy with the boringssl=fips option.  Note: this option is only avail on Linux-x86_64.  This will use BoringCrypto module (which is open source, a general purpose cryptographic library that provides FIPS 140-2 approved cryptographic algorithms to serve boringSSL and other user-space application).   If we go with this option, need to ensure using only approved algorithms at runtime.  Is specify at build time sufficient?  Seems not.  This will require changes in Pilot to do the proper sidecar configuration.

(An alternative being discussed: Redhat has an open source github repository that is a fork of envoy proxy and replaced boringSSL with openSSL for FIPS 140-2 compliance. And in this mode, no sidecar config is needed thus no pilot code change is needed.)

  • Need to ensure private keys are generated by a module operating in FIPS-approved mode.  
    a.    We are using crypto/rsa module to generate private keys.  see related code:  https://github.com/istio/istio/blob/master/security/pkg/pki/util/generate_csr.go#L35.  Based on discussion in security WG meeting, this is not FIPS approved yet.
    b.    Need to rebuild pilot, citadel, mixer and galley with crypto module that pass FIPS 140-2 certification.

  • Dependency issue: since istio also talks to K8s API, it is also needed to ensure k8s API pass FIPS 140-2 certification.

@gramidt
Copy link

gramidt commented Jul 23, 2019

Thank you so much for the update, @linsun!

@stale
Copy link

stale bot commented Oct 21, 2019

This issue has been automatically marked as stale because it has not had activity in the last 90 days. It will be closed in the next 30 days unless it is tagged "help wanted" or other activity occurs. Thank you for your contributions.

@stale stale bot added the stale label Oct 21, 2019
@istio-policy-bot istio-policy-bot added the lifecycle/stale Indicates a PR or issue hasn't been manipulated by an Istio team member for a while label Oct 30, 2019
@linsun linsun added lifecycle/staleproof Indicates a PR or issue has been deemed to be immune from becoming stale and/or automatically closed and removed lifecycle/stale Indicates a PR or issue hasn't been manipulated by an Istio team member for a while labels Nov 4, 2019
@linsun
Copy link
Member

linsun commented Nov 4, 2019

Marking as staleproof as this issue still exists.

@gramidt
Copy link

gramidt commented Feb 12, 2020

@linsun - I would love to help drive this forward, as FIPS 140-2 compliance is becoming increasingly more important for industry-wide adoption. Is the Security WG owning this?

@jeffb4
Copy link

jeffb4 commented Mar 20, 2020

Dependency issue: since istio also talks to K8s API, it is also needed to ensure k8s API pass FIPS 140-2 certification.

This isn't a true dependency. For audit purposes if you care about istio using a FIPS 140-2 crypto module you probably also care about apiserver/kubelet/etc. using a FIPS module, but istio itself doesn't need to be concerned with whether the endpoint it connects to is itself FIPS.

Which is convenient because there's not really a way to ensure that an endpoint a FIPS module client connects to is using a FIPS module server.

@coreywagehoft
Copy link

Azure Kubernetes Service is now FedRAMP moderate and high authorized. I agree with @jeffb4 that FIPS 140-2 certification of the k8s API server should not be a concern for Istio.

@chaturvedia
Copy link

chaturvedia commented Jun 16, 2020

Is there more progress and update on Istio support for FIPS 140-2? What are the steps to build and enable it via Istio?

@gramidt
Copy link

gramidt commented Jun 26, 2020

I'll be making rounds and communicating with all of the Security WG and Networking WG leaders to help provide an update on this.

@ntap-joshuap
Copy link

@gramidt

Any news to share ?

@jennbergs
Copy link

I would also be very interested in hearing updates on the status of this!

@nilesh27602816
Copy link

I second @jennbergs. FIPS compliance is becoming important as we move critical and sensitive workloads to our applications running on K8S. I am wondering if K8S itself is FIPS compliant, meaning is K8S using only BoringCrypto algorithms for key/token/secret management and API authentication ?
We are trying to avoid maintaining our own version of Istio just to be FIPS compliant.
Thank you and appreciate your time.

@nilesh27602816
Copy link

Any update on this ?

@antweiss
Copy link

Redhat has an open source github repository that is a fork of envoy proxy and replaced boringSSL with openSSL for FIPS 140-2 compliance. And in this mode, no sidecar config is needed thus no pilot code change is needed.

@linsun would be very grateful for a link to that github repo. Couldn't find it myself.

@coreywagehoft
Copy link

Banzai Cloud have FIPS 140-2 working in the latest version of Istio..

https://banzaicloud.com/blog/istio-fips/

Unfortunately it doesn't seem like they will be offering this open source..

@howardjohn howardjohn added this to P1 in Prioritization Sep 4, 2020
@alexbklein91
Copy link

I see that this was prioritized as a P1, any idea, on relative timeframe when this would be supported?

@johnma14 johnma14 removed their assignment Sep 16, 2020
@dcberg
Copy link
Contributor

dcberg commented Oct 20, 2020

Circling back to this one once again. We need to get this item prioritized for an upcoming release.
Do we know what is required? Is the primary work to build the sidecar proxy (envoy) using the proper FIPS module? Anything else?

@sdake
Copy link
Member

sdake commented Oct 20, 2020

Ensuring the proper fips library is in the container built properly is another challenge.

@linsun
Copy link
Member

linsun commented Oct 21, 2020

@dcberg @sdake I looked at this 1 year ago, and I think what needs to be done remains the same, except we have istiod vs a few cp components. Also, this is just to use FIPS 140-2 compliant modules which doesn't mean it has FIPS 140-2 compliant certification.

#11723 (comment)

@san360
Copy link

san360 commented Nov 3, 2020

Any tentative plan to incorporate this in upcoming release?

@uromahn
Copy link

uromahn commented Nov 4, 2020

Redhat has an open source github repository that is a fork of envoy proxy and replaced boringSSL with openSSL for FIPS 140-2 compliance. And in this mode, no sidecar config is needed thus no pilot code change is needed.

@linsun would be very grateful for a link to that github repo. Couldn't find it myself.

@antweiss while this might not be a RedHat repo, I think this is what you might be looking for: https://github.com/envoyproxy/envoy-openssl

I haven't really checked if the referenced OpenSSL is FIPS 140-2 compliant but that should be relatively easy to do.

Also, if you don't care about QUIC, Envoy can now be build with a FIPS 140-2 compliant BoringSSL version as described here: https://www.envoyproxy.io/docs/envoy/v1.16.0/intro/arch_overview/security/ssl.html?highlight=fips#fips-140-2

@infa-jowoods
Copy link

Hi, instead of recompiling Istio linking against a FIPS mode version of BoringSSL, would it not be possible to simply, restrict the crypto used by Istio to FIPs primitives.. i.e. (AES, ECDSA, RSA, SHA2), for example by changing ciphersuites... or indeed, is Istio using non-compliant crypto elsewhere that is non-configurable?

@ntap-joshuap
Copy link

Hi, instead of recompiling Istio linking against a FIPS mode version of BoringSSL, would it not be possible to simply, restrict the crypto used by Istio to FIPs primitives.. i.e. (AES, ECDSA, RSA, SHA2), for example by changing ciphersuites... or indeed, is Istio using non-compliant crypto elsewhere that is non-configurable?

No. It is not sufficient to limit algorithms and cipher suites. You must use a library that has been certified by NIST's Cryptographic Module Validation Program. See below link. Note that there are both BoringSSL and OpenSSL modules which have been validated.

https://csrc.nist.gov/Projects/cryptographic-module-validation-program/validated-modules/Search

@infa-jowoods
Copy link

Thanks @ntap-joshuap .

@dshuvar
Copy link

dshuvar commented Jan 25, 2021

Any tentative plan to incorporate this in upcoming release?

UP. Same question, anybody knows when boringssl will be provided as an option in upstream?

@deva26
Copy link
Contributor

deva26 commented Feb 11, 2021

Tetrate offers open source FIPS compliant istio and supported much longer. For details please take a look at - https://getistio.io/getistio-cli

@nirajshrestha
Copy link

They also have distroless fips enabled version if someone is looking for distroless. Just need to use tag 1.9.0-tetratefips-v1-distroless

@darkdatter
Copy link

Is there any update on official istio FIPS images as of yet? I see there are 3rd-party offerings and such

@jeesmon
Copy link

jeesmon commented Feb 10, 2023

If you are looking to build one from source: #37118 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/security lifecycle/staleproof Indicates a PR or issue has been deemed to be immune from becoming stale and/or automatically closed
Projects
Status: P1
Development

No branches or pull requests