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

Add (and maintain) table with curves, signatures and credential schemes #769

Open
andrea-dintino opened this issue Nov 27, 2023 · 4 comments

Comments

@andrea-dintino
Copy link
Member

andrea-dintino commented Nov 27, 2023

To be added in ./docs and on zenroom.org

Based on: https://pad.dyne.org/sheet/#/2/sheet/view/vuub8UeTl-cpuLeh-EZ-3HqSmXB+7FtWHcms9nZL6Uc/

Shot:
ZenroomSigs2

@puria
Copy link
Member

puria commented Nov 27, 2023

I just copy pasted the image to chat-gpt see if you want to edit a good starting point:


Signatures Secp256k1 BLS12381 ed25519 P-256 Lattice (PQC)
ECDSA ✔️
EDDSA ✔️
Schnorr ✔️
Reflow (multisig) ✔️
Dilithium ✔️
Ethereum ✔️
Ethereum 2 ✔️
Bitcoin ✔️
BLS ✔️ ✔️ ✔️ ✔️
Credentials Secp256k1 BLS12381 ed25519 P-256
BBS ✔️
Coconut ✔️
SD-JWT ✔️

Signatures:

  • ECDSA (Elliptic Curve Digital Signature Algorithm):
    A widely used digital signature algorithm based on elliptic curve cryptography.

  • EDDSA (Edwards-curve Digital Signature Algorithm):
    Another digital signature algorithm based on elliptic curve cryptography, known for its efficiency and security.

  • Schnorr:
    A digital signature algorithm based on the mathematical concept of Schnorr signatures.

  • Reflow (multisig):
    Likely a reference to multisignature schemes, allowing multiple parties to jointly sign a single document or transaction.

  • Dilithium:
    A digital signature scheme designed for post-quantum cryptography.

  • Ethereum:
    Signature schemes specific to the Ethereum blockchain.

  • Ethereum 2:
    Signature schemes specific to Ethereum 2.0, the next iteration of the Ethereum blockchain.

  • Bitcoin:
    Signature schemes specific to the Bitcoin blockchain.

  • BLS (Boneh-Lynn-Shacham):
    A digital signature scheme based on bilinear pairing, used in various cryptographic applications.

Credentials:

  • BBS (BLS-based Signature):
    A signature scheme based on BLS signatures, often used for anonymous credentials.

  • Coconut:
    A threshold credential system allowing multiple authorities to jointly issue credentials.

  • SD-JWT:
    Likely a reference to Secure Data in JSON Web Tokens, a standard for representing claims securely between parties.

  • Lattice (PQC):
    This likely refers to lattice-based cryptography, which is a post-quantum cryptographic approach.

Each of these signature schemes and credential systems has its own use cases, strengths, and weaknesses, and the choice of which one to use may depend on the specific requirements of the application or system you are working with. If you have any specific questions about one of these schemes or need more detailed information, feel free to ask!

@jaromil
Copy link
Member

jaromil commented Nov 30, 2023

Wow nice! what is the prompt you used? Can we try with this too?
image

@jaromil
Copy link
Member

jaromil commented Nov 30, 2023

Tried it myself and came up with this. With some editing for brevity it can be useful for our docs.

Zencode Name Elliptic Curve Signature Standard Deterministic
ecdsa secp256k1 ecdsa
bbs bls12-381 bbs
schorr bls12-381 schorr
bitflow secp256k1 ecdsa (bip-143)
ethereum secp256k1 ecdsa
dilithium lattice qp dilithium2
schnorr bls12-381 schnorr
eddsa ed25519 eddsa
es256 secp256r1 ecdsa

Sure, here are the descriptions in markdown format:

  • ecdsa: This signature uses the secp256k1 elliptic curve and the ecdsa signature standard. It is not deterministic. It is defined in Standards for Efficient Cryptography (SEC) and can be used with the same curve with the same public/private keys.

  • bbs: This signature uses the bls12-381 elliptic curve and the bbs signature standard. It is not deterministic. The bls12-381 curve is a pairing-friendly curve that has been used for digital signatures and zero-knowledge proofs.

  • schorr: This signature uses the bls12-381 elliptic curve and the schorr signature standard. It is not deterministic. This curve is used in hardware for Internet-of-Things (IoT) security applications.

  • bitflow: This signature uses the secp256k1 elliptic curve and the ecdsa (bip-143) signature standard. It is deterministic. As mentioned earlier, the secp256k1 curve with this standard is used in Bitcoin's public-key cryptography as defined by BIP-143.

  • ethereum: This signature uses the secp256k1 elliptic curve and the ecdsa signature standard. It is not specified whether it is deterministic or not. Ethereum accounts use a SECP256K1 keypair.

  • Dilithium: Dilithium is a cryptographic signature scheme that has been selected as a winner in the NIST post-quantum cryptography standardization project. It is designed to be resistant to quantum computer attacks. Dilithium is used for protecting digital signatures when signing documents remotely. It was selected for its strong security and excellent performance, and NIST expects it to work well in most applications. This makes Dilithium a key player in the future of secure digital communications in the quantum computing era.

  • Schnorr: The Schnorr signature is a digital signature produced by the Schnorr signature algorithm that was described by Claus Schnorr. It is a digital signature scheme known for its simplicity, among the first whose security is based on the intractability of certain discrete logarithm problems. It is efficient and generates short signatures.

  • EdDSA: Edwards-curve Digital Signature Algorithm (EdDSA) is a digital signature scheme using a variant of Schnorr signature based on twisted Edwards curves. It is designed to be faster than existing digital signature schemes without sacrificing security. It was developed by a team including Daniel J. Bernstein, Niels Duif, Tanja Lange, Peter Schwabe, and Bo-Yin Yang.

  • ES256: ES256 stands for ECDSA for SHA-256 digests and keys created with curve P-256. This algorithm is described at RFC7518. ES256K is ECDSA for SHA-256 digests and keys created with curve P-256K. This algorithm is pending standardization.

@pedro-nonfree
Copy link

pedro-nonfree commented Dec 13, 2023

ecdsa: This signature uses the secp256k1 elliptic curve and the ecdsa signature standard. It is not deterministic. It is defined in Standards for Efficient Cryptography (SEC) and can be used with the same curve with the same public/private keys.

@jaromil remember new ecdsa implementation is deterministic see #632

ES256: ES256 stands for ECDSA for SHA-256 digests and keys created with curve P-256. This algorithm is described at RFC7518. ES256K is ECDSA for SHA-256 digests and keys created with curve P-256K. This algorithm is pending standardization.

elliptic curve is not P-256K but secp256r1

as seen here

The elliptic curves P-256 and P-384 of [NIST-SP-800-186] are referred to as secp256r1 and secp384r1 respectively in [SECG2]. In addition, this notation is sometimes used in ECDSA software libraries.

https://www.w3.org/TR/vc-di-ecdsa/#introduction

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

4 participants