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

Feature Request: signMessageWithoutRand api of kaspa wasm #586

Open
witter-deland opened this issue Nov 3, 2024 · 5 comments
Open

Feature Request: signMessageWithoutRand api of kaspa wasm #586

witter-deland opened this issue Nov 3, 2024 · 5 comments

Comments

@witter-deland
Copy link
Contributor

Is your feature request related to a problem? Please describe.

We have a scenario where we require a stable signature for verification purposes. Currently, the existing functionality in kaspa wasm does not provide a dedicated api for this specific need. Without the signMessageWithoutRand api, we face difficulties in achieving consistent and reliable signature verification, which is crucial for the integrity and security of our operations.

Describe the solution you'd like

We would like the addition of the signMessageWithoutRand api in kaspa wasm. This api should allow us to generate signatures in a stable and deterministic manner, without the randomness factor that may cause variability in the signature generation process. It should accept the necessary input parameters, such as the message to be signed and the relevant key information, and return a signature that can be used for reliable verification.

Describe alternatives you've considered

We have considered implementing our own custom signature generation mechanism outside of kaspa wasm. However, this would require significant additional development effort and may not integrate as seamlessly with the existing kaspa infrastructure. It also poses risks in terms of compatibility and security compared to having a native api within kaspa wasm. Another alternative was to look for workarounds within the existing api set, but we have not found a satisfactory solution that meets our stability and verification requirements.

Additional context

In our application, we have a process that relies on the verification of signatures to ensure the authenticity and integrity of data. The lack of a stable signature generation api has led to inconsistent results in our verification process, which can potentially lead to security vulnerabilities and incorrect data handling. We believe that the addition of the signMessageWithoutRand api would greatly enhance the reliability and security of our overall system.

apoelstra added a commit to rust-bitcoin/rust-secp256k1 that referenced this issue Nov 3, 2024
2d29116 feat: add sign_schnorr_no_aux_rand for Keypair (Witter)

Pull request description:

  #761
  kaspanet/rusty-kaspa#586

ACKs for top commit:
  apoelstra:
    ACK 2d29116; successfully ran local tests; thanks for iterating!

Tree-SHA512: 29556e315a2f046cb845bc625686ffa3151feee66e988912d026dcc994eb13b567063c246e4aa4e37f057fa01a94cd18443cb3fc1fd80f470ad34e59f6fe600f
@elichai
Copy link
Member

elichai commented Nov 5, 2024

In our application, we have a process that relies on the verification of signatures to ensure the authenticity and integrity of data. The lack of a stable signature generation api has led to inconsistent results in our verification process, which can potentially lead to security vulnerabilities and incorrect data handling. We believe that the addition of the signMessageWithoutRand api would greatly enhance the reliability and security of our overall system.

Can you explain more on this? how did it affect the results? how are you using those signatures? is it that you hash the data+signature and expect it to reproduce with a new signature? a bit more overview of the usecase would be great and can increase the odds of it merging into rusty-kaspa

@witter-deland
Copy link
Contributor Author

witter-deland commented Nov 5, 2024

One use case : use the signature of a specific message as the AES encryption key for some user data

@elichai
Copy link
Member

elichai commented Nov 5, 2024

One use case : use the signature of a specific message as the AES encryption key for some user data

Now that's insecure :) the signature is not uniform and should not be treated as "secret"
Why not derive an AES key from the private key and message? (via (H)MAC)

@witter-deland
Copy link
Contributor Author

witter-deland commented Nov 6, 2024

In the use scenario of the wallet, the third party will not be given permission to use the private key. Similarly, as long as the wallet application can provide the same message, the signature must be the same, and there is no need for uniform

Such as kasware-wallet/extension#5

One use case : use the signature of a specific message as the AES encryption key for some user data

Now that's insecure :) the signature is not uniform and should not be treated as "secret" Why not derive an AES key from the private key and message? (via (H)MAC)

@elichai
Copy link
Member

elichai commented Nov 6, 2024

In the use scenario of the wallet, the third party will not be given permission to use the private key. Similarly, as long as the wallet application can provide the same message, the signature must be the same, and there is no need for uniform

Got it, sounds similar to what StarkWare is doing (using the "deterministic signatures" as private key for their chain), IMHO you should try harder to avoid that and provide some kind of HMAC API, signatures are usually logged into log files by wallets and are not considered secrets

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

No branches or pull requests

2 participants