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

encrypts multisig server messages #5470

Merged
merged 1 commit into from
Oct 2, 2024

Conversation

hughy
Copy link
Contributor

@hughy hughy commented Oct 2, 2024

Summary

uses xchacha20poly1305 to encrypt all string fields in messages sent to multisig server

client decrypts string fields in messages received from multisig server

derives the client key from a passphrase and the session ID (uses the bytes of the session ID, which is a UUID, for the salt and nonce). ensures that any client in the session can derive the key if they have the passphrase.

adds passphrase flags and prompts to dkg:create and multisig:sign

NOTE: numeric fields, like minSigners, are not currently encrypted

NOTE also: this encrypts the fields rather than the entire message so that the server can still distinguish between identities, publlc packages, etc. in its session state

Closes IFL-3013

Testing Plan

manual testing:

  • ran 'dkg:create' with two participants using a passphrase

Documentation

Does this change require any updates to the Iron Fish Docs (ex. the RPC API
Reference
)? If yes, link a
related documentation pull request for the website.

[ ] Yes

Breaking Change

Is this a breaking change? If yes, add notes below on why this is breaking and label it with breaking-change-rpc or breaking-change-sdk.

[ ] Yes

@hughy hughy requested a review from a team as a code owner October 2, 2024 22:14
uses xchacha20poly1305 to encrypt all string fields in messages sent to multisig
server

client decrypts string fields in messages received from multisig server

derives the client key from a passphrase and the session ID (uses the bytes of
the session ID, which is a UUID, for the salt and nonce). ensures that any
client in the session can derive the key if they have the passphrase.

adds passphrase flags and prompts to dkg:create and multisig:sign

NOTE: numeric fields, like minSigners, are not currently encrypted

Closes IFL-3013
@hughy hughy force-pushed the feat/hughy/multisig-server-encryption branch from 94fd082 to 3108a63 Compare October 2, 2024 22:56
@hughy hughy merged commit b8ebc0d into staging Oct 2, 2024
9 checks passed
@hughy hughy deleted the feat/hughy/multisig-server-encryption branch October 2, 2024 23:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants