There’s a server, a client, and a hacker in a network. For encryption, the client and the server need to share their private keys. Wouldn’t the hacker be able to grab those during their transmission and decrypt further messages as they please?

17 points
1 point

I don’t think DH is accurately relating to this. DH key exchange is used to generate a shared secret to use symmetric cryptography by two entities from (generally temporary) private keys, which are not specifically associated with a public key (this is not a public/private key pair)

To me, two examples of public/private key usage are RSA (asymmetric cryptography) and for example SSH authentication with a key pair. DH key exchange can be used in SSH to encrypt communication, before authentication even begins

permalink
report
parent
reply
2 points

Published in 1976 by Diffie and Hellman, this is the earliest publicly known work that proposed the idea of a private key and a corresponding public key.

https://en.wikipedia.org/wiki/Diffie–Hellman_key_exchange

permalink
report
parent
reply
16 points

The beauty of a private key is that it doesn’t need to be shared to be used

permalink
report
reply
11 points

Great question: it’s called asymmetric cryptography for a reason.

The key pair is built by the person wanting to receive private messages. The public part is made public an can be used to encrypt messages to the owner of the private key. Without it you cant read the contents.

As this method is not really performance friendly, thus method is usually used to establish a symmetric encryption key for both parties that can’t be intercepted this way.

In fact: if the attacker can switch out the public key for his own during transfer, he can use it to decrypt the messages and relay them to the first party, thereby revealing all the messages. This is called a man-in-the-middle attack. This is why authentication of the key is so important. This is usually done via a trusted third party.

Sorry to be so short, I hope I have given you enough words to Google for further reading.

permalink
report
reply
4 points
*

This is the video that finally explained it in a way that I totally understood.

TLDW: the actual key exchange works by using massive exponents that are very fast to run to get a result, but very hard to use that result to get the exponent you started with

permalink
report
reply
5 points

Adding on to your TLDR: There’s also asymmetric cryptography based on elliptic curves, so it’s not always an exponent of two massive primes.

permalink
report
parent
reply
1 point

Even of isogenies of elliptic curves

permalink
report
parent
reply
26 points

You’ve missed a key detail in how asymmetric encryption works:

  • For asymmetric encryption algorithms, you essentially have two keys - a “private” key, and a “public” key
  • If you know the private key it is trivial to calculate the public key, but the reverse isn’t true - just given the public key, it is essentially impossible to calculate the private key in a reasonable amount of time
  • If you encrypt something with the public key you must use the private key to decrypt it, and if you encrypt with the private key you can only use the public key for decryption
  • This means that my server can advertise a public key, and you can use that to encrypt the traffic so that only the server that knows the private key can decrypt it
permalink
report
reply
3 points

I used to know that and still struggle to understand how a handshake wouldn’t allow MitM. Later I found out that it requires a third party with a trusted and known certificate for signing handshake exchange messages in order to ensure there’s no man in the middle: https://stackoverflow.com/a/10496684

permalink
report
parent
reply
4 points

A big “It Depends” on that - plenty of applications of asymmetric crypto where you just hard-code the servers public key into the client and call it a day, and GPG has its own PKI scheme that is just kinda weird.

You also don’t have to use Diffie-Hellman - early versions of SSL just sent the ephemeral key (the symmetric key used for the actual AES session) directly. This works, but using DH also gives you “forward secrecy” - even if a malicious third party has captured the entire encrypted session, then later steals (or factors) your private key they still won’t be able to read the encrypted traffic because they can’t recover the ephemeral key because it wasn’t sent over the wire in the first place

permalink
report
parent
reply
2 points

Yes, that’s why https needs certificates (and sometimes shows a broken lock) and why you need to accept the fingerprint when first connecting to a server via ssh.

permalink
report
parent
reply
3 points
*

Accepting ssh key fingerprints on first ssh is a bad practice. Ssh ca’s and or sshfp are around and have been for decades. Accepting random host keys is like trusting random self signed ssl certificates.

Use ssh ca’s for user and host keys so you can revoke and rekey hosts without having to update authorized keys. And then you can revoke access to hosts for users as well and much more.

permalink
report
parent
reply
2 points
*

Just a nitpick:

If you know the private key it is trivial to calculate the public key, but the reverse isn’t true

The public key and the private key are just two big prime numbers. The “trivial to compute” part only works once more information has been shared over the network, like it happens during key exchange. If you were to swap the prime number before initiating any contact it would work the same way.

Edit: I probably confused different encryption concepts

permalink
report
parent
reply
2 points

In RSA, the private key is a pair of big semi-primes, and the public key is derived from those numbers. I think you are confusing DHKE and RSA with your other points, the private key is never transmitted over the network. For TLS you typically use an asymmetric crypto system to validate identities and encrypt the key exchange to prevent person-in-the-middle, but the key that is agreed using that process is a symmetric key for AES or similar, but that is specific to TLS.

Also, there are other asymmetric systems that don’t use primes at all - eliptic curve crypto is based on completely different math

permalink
report
parent
reply
1 point

Oh, I may actually have confused that. Thanks for pointing it out.

permalink
report
parent
reply
2 points

If you know the private key it is trivial to calculate the public key, but the reverse isn’t true

I didn’t believe this is true… In public/private key crypto there is no such thing as “private” and “public”. They’re just a key pair. You choose to make one public by sharing it and the other private by not sharing it.

permalink
report
parent
reply
2 points

It depends on the cryptosystem. The private and public halves of the pair are often not symmetrical and often have overlap.

The parent is likely confused because in most situations the “private key file” will also contain all of the public key. Whether by necessity or for convenience.

permalink
report
parent
reply
1 point

Ok, semantics - for RSA you generate a private key, then derive the public key from that private key, and you could publicly post your private key if you wanted to. “Public” and “private” are just names.

permalink
report
parent
reply
1 point

But how does the encryption work if you have the public key? Since your computer knows how to encrypt the data with the public key, couldn’t you use that same public key to run that algorithm in reverse? If not, since the public and private keys are not the same, how does the private key go about decrypting that data?

permalink
report
parent
reply
2 points

No. The encryption methods are designed in a way that using a public key will not decrypt the message.

permalink
report
parent
reply
3 points

The actual math is way beyond me, but the algorithm is “one way” - it exploits the fact that given two prime numbers (ie, the private key) it is trivial to multiply them together, but if you only know the result (ie, the public key) it is computationally very expensive to determine the original prime factors. If you pick big enough numbers, it becomes effectively impossible to undo the multiplication

permalink
report
parent
reply

Security

!security@lemmy.ml

Create post

Confidentiality Integrity Availability

Community stats

  • 54

    Monthly active users

  • 198

    Posts

  • 340

    Comments

Community moderators