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

[RFC] Proposal for supporting FIPS 140-2 enforced mode #10268

Closed
terryquigleysas opened this issue Sep 28, 2023 · 2 comments
Closed

[RFC] Proposal for supporting FIPS 140-2 enforced mode #10268

terryquigleysas opened this issue Sep 28, 2023 · 2 comments
Labels
enhancement Enhancement or improvement to existing feature or request untriaged

Comments

@terryquigleysas
Copy link

Is your feature request related to a problem? Please describe.
Feature Request #1497

Describe the solution you'd like

Problem Statement

We would like to contribute to OpenSearch to support running in FIPS-140-2 compliant mode. We propose delivering this in several phases, as discussed in the feature request above, starting with core changes and aiming towards a desired state of providing configurable options.

This RFC is to ensure our approach would be seen as a feasible and acceptable contribution.

Phases

Phase 1: Remove hardcoded Bouncy Castle references

Security plugin

Update code, retaining current functionality

  • Proposed libraries: Bouncy Castle FIPS, Password4j, rfksystems Blake2b
    • Alternatively contribute to Password4j to expose Blake2b functionality and reduce the number of libraries brought in
  • Security policy changes
    • Complicated by the plugin structure
  • NB OpenSearch must still work for rolling upgrades

Performance Analyzer (potentially)

  • This codebase is separate from OpenSearch Security and may also lead us to have to make changes to OpenSearch core
  • Who do we liaise with?

Unknown unknowns (e.g. behavior of other plugins, scripts etc.)

  • Emphasis on not inadvertently breaking anything

Phase 2: Introduce FIPS-compliant alternatives as default for:

Bcrypt password hashing

  • PBKDF2

Blake2b for masking

  • e.g. SHA3

Certificate handling (potentially)

Cipher lists (potentially)

Any additional security policy changes

Add FIPS mode configuration flag

  • This may lead us to have to make changes to OpenSearch core

Phase 3: Testing and rework

By now we will be carrying out extensive testing and verification and expect that additional requirements may arise.

Additional work for any issues found in our testing

Extend unit tests

Extend integration tests

Phase 4: Configurability

Additional configuration options

  • Configure additional security providers
  • Configure hashing algorithms
  • Validation

Contingency for unknown unknowns

Phase 5: Documentation

All required configuration options and settings

JDK 11 requirement

Limitations

Not in scope

Changing an existing cluster from non-FIPS to FIPS compliant

Dashboards, Data Prepper etc. - our focus is on server only

Any, as yet unknown, OpenSearch plugins that require extensive work for FIPS-compliance

These could be actioned by the wider community

Help Required

We have accessed and used:

  • YouTube videos on developing and contributing
  • Documentation and GitHub pages
  • Blog items
  • Slack

We expect we will need some additional help with:

  • Processes
    • Proposal example
    • Creation of project stories / issues / epics / labels?
    • Backporting and releasing
    • Documentation
    • Tests
      • How do we ensure we don't break something unexpectedly?
      • Benchmarking
  • Wider impact analysis
  • Anything else we haven't thought of
@terryquigleysas terryquigleysas added enhancement Enhancement or improvement to existing feature or request untriaged labels Sep 28, 2023
@terryquigleysas terryquigleysas changed the title [RFC] Proposal for Supporting FIPS 140-2 enforced mode [RFC] Proposal for supporting FIPS 140-2 enforced mode Sep 28, 2023
@terryquigleysas
Copy link
Author

Moving to security plugin. Closing here.

@terryquigleysas
Copy link
Author

Raised as opensearch-project/security#3420

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Enhancement or improvement to existing feature or request untriaged
Projects
None yet
Development

No branches or pull requests

1 participant