Skip to content

[SPARK-47172][CORE][3.5] Add support for AES-GCM for RPC encryption #47060

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

Closed
wants to merge 3 commits into from

Conversation

sweisdb
Copy link
Contributor

@sweisdb sweisdb commented Jun 21, 2024

What changes were proposed in this pull request?

This change adds AES-GCM as an optional AES cipher mode for RPC encryption. The current default is using AES-CTR without any authentication. That would allow someone on the network to easily modify RPC contents on the wire and impact Spark behavior. See SPARK-47172 for more details.

Why are the changes needed?

The current default is using AES-CTR without any authentication. That would allow someone on the network to easily modify RPC contents on the wire and impact Spark behavior.

Does this PR introduce any user-facing change?

Yes, it adds an additional configuration flag is reflected in the documentation.

How was this patch tested?

Existing unit tests are all ensured to pass. New unit tests are written to explicitly test GCM support and to verify that modifying ciphertext content will cause an exception and fail.

build/sbt "network-common/test:testOnly"
build/sbt "network-common/test:testOnly org.apache.spark.network.crypto.AuthIntegrationSuite" build/sbt "network-common/test:testOnly org.apache.spark.network.crypto.AuthEngineSuite"

Was this patch authored or co-authored using generative AI tooling?

Nope.

sweisdb added 3 commits June 24, 2024 21:12
This change adds AES-GCM as an optional AES cipher mode for RPC encryption. The current default is using AES-CTR without any authentication. That would allow someone on the network to easily modify RPC contents on the wire and impact Spark behavior. See [SPARK-47172](https://issues.apache.org/jira/browse/SPARK-47172) for more details.

The current default is using AES-CTR without any authentication. That would allow someone on the network to easily modify RPC contents on the wire and impact Spark behavior.

Yes, it adds an additional configuration flag is reflected in the documentation.

Existing unit tests are all ensured to pass. New unit tests are written to explicitly test GCM support and to verify that modifying ciphertext content will cause an exception and fail.

`build/sbt "network-common/test:testOnly"`
`build/sbt "network-common/test:testOnly org.apache.spark.network.crypto.AuthIntegrationSuite"`
`build/sbt "network-common/test:testOnly org.apache.spark.network.crypto.AuthEngineSuite"`

Nope.

Closes apache#46515 from sweisdb/SPARK-47172.

Authored-by: Steve Weis <steve.weis@databricks.com>
Signed-off-by: Yi Wu <yi.wu@databricks.com>
@Ngone51
Copy link
Member

Ngone51 commented Jun 25, 2024

Error: Previously present field "1" with name "source_info" on message "RelationCommon" was deleted.
Error: buf found 1 breaking changes.

@HyukjinKwon Do you know how to reslove such breaking check failure? Note the breaking change is not introduced by this PR.

@HyukjinKwon
Copy link
Member

we can ignore it for now

Ngone51 pushed a commit that referenced this pull request Jun 27, 2024
### What changes were proposed in this pull request?

This change adds AES-GCM as an optional AES cipher mode for RPC encryption. The current default is using AES-CTR without any authentication. That would allow someone on the network to easily modify RPC contents on the wire and impact Spark behavior. See [SPARK-47172](https://issues.apache.org/jira/browse/SPARK-47172) for more details.

### Why are the changes needed?

The current default is using AES-CTR without any authentication. That would allow someone on the network to easily modify RPC contents on the wire and impact Spark behavior.

### Does this PR introduce _any_ user-facing change?

Yes, it adds an additional configuration flag is reflected in the documentation.

### How was this patch tested?

Existing unit tests are all ensured to pass. New unit tests are written to explicitly test GCM support and to verify that modifying ciphertext content will cause an exception and fail.

`build/sbt "network-common/test:testOnly"`
`build/sbt "network-common/test:testOnly org.apache.spark.network.crypto.AuthIntegrationSuite"` `build/sbt "network-common/test:testOnly org.apache.spark.network.crypto.AuthEngineSuite"`

### Was this patch authored or co-authored using generative AI tooling?

Nope.

Closes #47060 from sweisdb/SPARK-47172-3.5.

Authored-by: Steve Weis <steve.weis@databricks.com>
Signed-off-by: Yi Wu <yi.wu@databricks.com>
@Ngone51
Copy link
Member

Ngone51 commented Jun 27, 2024

Thanks, merged to branch-3.5.

@Ngone51 Ngone51 closed this Jun 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants