0

I am confused by the public key cryptography versions that I've read so far. Are the steps optional, dependable on the types of blockchain or they are referring to different methods?

Version 1 =========

Alice to Bob

Step 1. Content > Hash > Digest > Encrypt with Alice's private key > Digital Signature

Step 2. Digital Signature > Encrypt with Alice's private key + Bob's public key > Digest

Step 3. Send digest to Bob

In the above steps, Alice uses private key TWICE. First to encrypt the content's digest. Second time encrypt together with Bob's public key.

Is hashing optional?

Is the hash generated automatically once it is encrypted with Alice's private key?

Or encrypting with Alice's private key step is optional?

Is step 2 optional too? or are all the above steps automated?

Bob received

Step 1. Digest > Alice's public key > Content

Step 2. Digest > Bob's private key > Content

=

=

Version 2 =========

Alice to Bob

Step1. Alice generates the keys pair

Step2. Alice gives Bob her public key

Step3. Alice encrypts content with her own private key

In the above steps, Alice didn't hash the content first.

Bob received

Step1. Bob decrypts with Alice's public key

What if someone else has Alice's public key, aren't they able to decrypt it too?

=

=

Version 3 =========

Alice to Bob

Step1. Alice encrypts with Bob's public key

Bob received

Step1. Bob decrypts with his own private key

=

=

3

Questions like this cannot be answered without specifying the digital signature scheme you're using.

In general

In general, a digital signature scheme consists of 3 algorithms:

  • KeyGen() -> (PrivKey, PubKey): generates a private key and a corresponding public key.
  • Sign(PrivKey,Message) -> Signature: signs a message with a given private key.
  • Verify(PubKey,Message,Signature) -> Bool: verifies a signature against a public key and a message.

What the data types involved are depends on the specific scheme.

ECDSA

In ECDSA, the digital signature scheme used in Bitcoin, the private key is a number, the public key is a point on an elliptic curve, the message is a byte array, and the signature is a pair of two numbers.

ECDSA does require a hashing step. In fact, without the hashing step, it is completely broken.

However, nowhere is there any encryption involved. There is simply a signing algorithm, and a verifying algorithm.

RSA

The mistake you're making, calling signing "encrypting with the private key" is a very common one, because it is often how digital signature schemes are explained.

It is true for some specific signature schemes, but not all. Most notably it is true for RSA. The private and public keys are interchangeable there, so indeed, by swapping them, the encryption scheme turns into a signature scheme.

  • Pieter. Thanks. I am confused. After reading so many articles on blockchain uses public key cryptography. I have assumed all data on Blockchain are encrypted. Or blockchain will, by default, encrypts all data. Since encrypting is not part of the ECDSA, that means nothing is encrypted on Bitcoin? Is the hashing step an automated process triggered by the signing of private key? – Samantha Nov 27 '18 at 11:14
  • There is no encryption anywhere in the blockchain. That's not possible, since all data must be public. If data on the chain was encrypted, it wouldn't be possible to verify by everyone (which is the whole point, auditability). – Pieter Wuille Nov 27 '18 at 15:46
  • 1
    Both the signing operation and the verifying operation include a hash in ECDSA. – Pieter Wuille Nov 27 '18 at 18:31
  • I think I have to relearn most of the things I have been reading on blockchain. Most of the references I came across online referred to the keys to encrypt and decrypt data on blockchain. Do you happen to have some references that can help with understanding on how blockchain handles data? – Samantha Nov 28 '18 at 6:29
  • 1
    One piece of advice: ignore any writing that talks about "blockchain is X". Blockchain is a buzz word that may mean anything from "a database with hashes" to "a cryptocurrency whose security derives from economic incentives" to "adding some cryptography to business logic". Actually well-engineered systems often have no relation to the hype around blockchains. – Pieter Wuille Nov 28 '18 at 9:17

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.