HMAC explained | keyed hash message authentication code

แชร์
ฝัง
  • เผยแพร่เมื่อ 31 ธ.ค. 2024

ความคิดเห็น • 148

  • @jgoebel
    @jgoebel  3 ปีที่แล้ว +45

    What do you think about this video?
    Was the explanation about HMAC clear?

    • @arsenmkrtchyan4832
      @arsenmkrtchyan4832 3 ปีที่แล้ว

      pretty much

    • @kusharora1435
      @kusharora1435 3 ปีที่แล้ว +1

      clear

    • @Ms_Oszy
      @Ms_Oszy 3 ปีที่แล้ว +1

      it is great

    • @ppcuser100
      @ppcuser100 2 ปีที่แล้ว

      Exacly what is needed, Comprehnsive and short

    • @jgoebel
      @jgoebel  2 ปีที่แล้ว

      @@ppcuser100 thx, great to hear 👍

  • @waelaltaqi
    @waelaltaqi 3 ปีที่แล้ว +4

    Solid vid on hashing and HMAC ... one of the best vids I've seen on the topic period. Thanks!

    • @jgoebel
      @jgoebel  3 ปีที่แล้ว

      thx Wael, I'm glad it was understandable 👍

    • @princeroshan4105
      @princeroshan4105 3 ปีที่แล้ว

      Really

  • @SabreToothGaming1
    @SabreToothGaming1 หลายเดือนก่อน

    Great job explaining the pieces of a HMAC and the practical use cases. Thank you!

  • @romankovrigin240
    @romankovrigin240 10 หลายเดือนก่อน

    The best explanation I have seen so far, thank you!

    • @jgoebel
      @jgoebel  10 หลายเดือนก่อน

      Glad it was helpful!

  • @MrJohn360
    @MrJohn360 3 ปีที่แล้ว +11

    This was really helpful. The explanation was clear and concyse. Thank you

    • @jgoebel
      @jgoebel  3 ปีที่แล้ว

      thx Jaime I'm glad it was helpful!

  • @akhileshgupta5713
    @akhileshgupta5713 3 ปีที่แล้ว +9

    Thanks for a simple and clear explanation!
    here is a question I have, would appreciate your response:
    HMAC looks quite similar to a signed data. only difference i see is with signed data hash is encrypted by a ASYM private key and in HMAC there is rather a secret key known to both parties used!

    • @jgoebel
      @jgoebel  3 ปีที่แล้ว

      Hi Akhilesh, yes that is pretty much the main difference.

  • @captainnemonic
    @captainnemonic 2 ปีที่แล้ว

    Clear as newly Windexed glass! I found this helpful. Thanks for putting this out there.

  • @message59
    @message59 2 ปีที่แล้ว

    the best explanation that I could find & way better than in my script
    thank you for the effort :)

    • @jgoebel
      @jgoebel  2 ปีที่แล้ว

      Glad it helped!

  • @AlHoussem
    @AlHoussem 3 หลายเดือนก่อน +2

    Well explained and good presentation, Thanks

  • @thornwebdesign
    @thornwebdesign ปีที่แล้ว +1

    Very good explanation, well done.

    • @jgoebel
      @jgoebel  ปีที่แล้ว

      Glad you liked it!

  • @aghiadalzein3069
    @aghiadalzein3069 7 หลายเดือนก่อน

    Great video ,simple and directly into the point thanks a lot.

    • @jgoebel
      @jgoebel  7 หลายเดือนก่อน

      Glad it was helpful!

  • @siddharthjain3592
    @siddharthjain3592 2 ปีที่แล้ว +3

    This is very helpful. I have a rudimentary question. The difference between the Hash function and HMAC is the secret. The output for both is fixed. Then in the example what additional security does that key provide. Because is HMAC is changed when Hello World changes to Hello Bob. Won't also the Hash function output change in that case? And even then Bob would know that the message has been tampered with. Additionally, in case of HMAC when Bob gets the hacked message, is he also getting the HMAC output , which I am assuming is not tampered, to compare it against his own calculation of HMAC?

    • @rajaaekant
      @rajaaekant 2 ปีที่แล้ว

      I have the same question and to be honest it seems no different than a JWT

    • @1337soundeZ
      @1337soundeZ ปีที่แล้ว

      A MiTM could intercept and change the message and then hash it again and attach the new hash together and bob wont notice any changes

    • @1337soundeZ
      @1337soundeZ ปีที่แล้ว

      @@rajaaekant A MiTM could intercept and change the message and then hash it again and attach the new hash together and bob wont notice any changes

    • @dougsaylor6442
      @dougsaylor6442 10 หลายเดือนก่อน

      For HMAC to work, the key must be secret, and only known by senders and receivers. If this is the case, then MITM is ineffective, because the attacker presumably doesn't have the key. This means that if the message and/or hash is tampered with, then the hash won't match.

  • @binr_9817
    @binr_9817 3 ปีที่แล้ว

    Explanation made sense Helped me to undersand HMAC better Thank your for the Tutorial

    • @jgoebel
      @jgoebel  3 ปีที่แล้ว

      you're welcome Shan 👍

  • @or1equalsto1
    @or1equalsto1 10 หลายเดือนก่อน

    Brilliantly explained cheers bro 👊

    • @jgoebel
      @jgoebel  9 หลายเดือนก่อน

      Glad it helped

  • @ABLyonary
    @ABLyonary 3 ปีที่แล้ว +1

    Great explanation but sometime I notice in these videos is that no actual practical examples are shown. It would be cool to actually see it in action

    • @jgoebel
      @jgoebel  3 ปีที่แล้ว

      thx, I saw in my analytics that people hop off after a short period of time. That's why I thought I keep the video as short as possible

  • @hemantmadan8110
    @hemantmadan8110 3 ปีที่แล้ว +1

    very clear and very precise...really liked it!!

    • @jgoebel
      @jgoebel  3 ปีที่แล้ว

      thx Hemant 👍

  • @peter9910
    @peter9910 2 ปีที่แล้ว

    How do I do the SHA512 HMAC recursively? i.e.does the key stay the same?

  • @FrankGraffagnino
    @FrankGraffagnino 3 ปีที่แล้ว +1

    question... the HMAC is supposed to provide authentication (meaning know "who" sent the message). But if someone is listening to the messages, couldn't they replay that message from anywhere and make it look like it came from Alice?

    • @jgoebel
      @jgoebel  3 ปีที่แล้ว +1

      Hi Frank, just HMACing the message would indeed not protect against replay attacks. Theoretically you could protect against replay attacks by including the MAC or the previous message in the current message and then HMACing this (crypto.stackexchange.com/questions/39640/can-i-use-a-hmac-for-replay-attack-protection)
      Another option would be to just work with idempotency keys in each message so replaying is essentially useless

  • @maciejwodecki9294
    @maciejwodecki9294 2 ปีที่แล้ว

    Thanks man. Very clear explanation. This is what I was looking for.

    • @jgoebel
      @jgoebel  2 ปีที่แล้ว

      Glad it helped

  • @RandomAlias1
    @RandomAlias1 2 ปีที่แล้ว

    well deserved subscribe.. Great explanation. Well done sir

  • @KirkRivkin
    @KirkRivkin 5 หลายเดือนก่อน

    Excellent explanation, thank you!

    • @jgoebel
      @jgoebel  5 หลายเดือนก่อน

      Glad you enjoyed it!

  • @Alex-nq7uh
    @Alex-nq7uh 2 ปีที่แล้ว

    Useful explanation- thank you very much

  • @liecretsev
    @liecretsev 3 ปีที่แล้ว

    How do you pass a shared secret key over the network? Is it safe enough to put it inside custom header?

    • @jgoebel
      @jgoebel  3 ปีที่แล้ว

      you would need to share the secret upfront with the other party manually. For security reasons, you cannot send it in the request itself

  • @josephnour6888
    @josephnour6888 2 ปีที่แล้ว

    thank you so mush for you help. keep going don't stop

    • @jgoebel
      @jgoebel  2 ปีที่แล้ว

      thx, I'm glad you found it useful

  • @ouss0539
    @ouss0539 9 หลายเดือนก่อน

    best of best explanation ever

    • @jgoebel
      @jgoebel  7 หลายเดือนก่อน

      thx

  • @hugo565
    @hugo565 2 ปีที่แล้ว

    Very nice explanation, thanks !

    • @jgoebel
      @jgoebel  2 ปีที่แล้ว

      Glad it was helpful!

  • @munidinesh9775
    @munidinesh9775 3 ปีที่แล้ว

    thanks that was helpful, but am sorry, a random doubt why is it always bob and alice
    ?

    • @jgoebel
      @jgoebel  3 ปีที่แล้ว

      A few people came up with the names and people have been using it ever since. How can Alice send a message to Bob is a little bit less abstract than "how can person A send a message to person B". It's sort of similar to "Hello World" examples in programming languages: en.wikipedia.org/wiki/Alice_and_Bob

  • @gonzalocruz6653
    @gonzalocruz6653 2 ปีที่แล้ว +4

    It was a very good brief explanaition of HMAC fairly helpfull. I was wondering what is the minimum key size that can be used for HMAC and that is considered secure and not broken?

  • @ricp
    @ricp ปีที่แล้ว

    Great explanation, to the point. Thanks

    • @jgoebel
      @jgoebel  ปีที่แล้ว

      thx Ric

  • @WildMemo
    @WildMemo 8 หลายเดือนก่อน

    Explained well! Thank you.

    • @jgoebel
      @jgoebel  8 หลายเดือนก่อน

      Glad you liked it

  • @adnantatlis3225
    @adnantatlis3225 2 ปีที่แล้ว

    H(M) is the SHA-256 hash...
    of the message (M)
    what dose mean of the massage here can u explaine ?
    i dont now what is massge mean

    • @jgoebel
      @jgoebel  2 ปีที่แล้ว

      message is whatever you want to hash

  • @sezgingurel3942
    @sezgingurel3942 2 ปีที่แล้ว

    Das war eine tolle Erklärung.

    • @jgoebel
      @jgoebel  ปีที่แล้ว

      danke dir

  • @hfasihi
    @hfasihi 8 หลายเดือนก่อน

    Well done. Good explanation

    • @jgoebel
      @jgoebel  8 หลายเดือนก่อน

      Glad it was helpful!

  • @mohamedishhaq9197
    @mohamedishhaq9197 3 ปีที่แล้ว

    Very clear Explanation

    • @jgoebel
      @jgoebel  3 ปีที่แล้ว

      thx Mohamed 👍

  • @tuxieo
    @tuxieo ปีที่แล้ว

    thank you for helping me understand it. it made zero sense when I read about it in class

  • @KrisMeister
    @KrisMeister ปีที่แล้ว

    I'm interested in hmac for cloud architecture, so internal http api calls can be verified who sent it and the payload was not modified.
    If you could describe in a part two, the actual oath recomendation for hmac for parakeet and payload validation that would be really cool.

    • @jgoebel
      @jgoebel  ปีที่แล้ว

      For security reasons, I would recommend to use digital signature schemes instead of HMAC to avoid having shared secrets

  • @janithmalinga5765
    @janithmalinga5765 2 ปีที่แล้ว

    This is really good explanation, Thanks

    • @jgoebel
      @jgoebel  2 ปีที่แล้ว

      you're most welcome

  • @rukshanaaly7794
    @rukshanaaly7794 2 ปีที่แล้ว

    How does the sender share the key with the recipient?

    • @jgoebel
      @jgoebel  2 ปีที่แล้ว +1

      that would be a manual operation

  • @fgh7832
    @fgh7832 3 ปีที่แล้ว

    This makes sense and assisted me in my research

    • @fgh7832
      @fgh7832 3 ปีที่แล้ว

      Thanks!

    • @jgoebel
      @jgoebel  3 ปีที่แล้ว

      you're most welcome 👍

  • @northmania5332
    @northmania5332 2 ปีที่แล้ว

    Thank you for the video! Does HMAC take part in TLS/SSL? When the client and the server pass the TLS handshake and create a common SESSION key, do they also HMAC is message that is being sent out for data integrity?

    • @jgoebel
      @jgoebel  2 ปีที่แล้ว

      No with TLS you use asymmetric cryptography. HMAC would not be suited for this because it requires a shared secret.

    • @northmania5332
      @northmania5332 2 ปีที่แล้ว

      @@jgoebel TLS uses both asymmetric and symmetric cryptography. After they exchange public keys, server or client/(depending on the TLS version), for TLS 1.3 after it receives the TLS ClientHello request the server creates a new session key, and it encryprts it with the public key of the client, send it back to the client, and decrypts it with its private key. Now both have a common SESSION Key, and the encryption becomes symmetric. HMAC is added to each message to keep data integrity with the common key.

  • @champsurapong2694
    @champsurapong2694 3 ปีที่แล้ว

    Excellent, ez to understand

    • @jgoebel
      @jgoebel  3 ปีที่แล้ว

      thx Champ 👍

  • @michaelulloa12
    @michaelulloa12 3 ปีที่แล้ว

    Exactly what I was looking for, thank you!

    • @jgoebel
      @jgoebel  3 ปีที่แล้ว

      thx Michael 👍

  • @ferbe666
    @ferbe666 ปีที่แล้ว

    Really good explanation. So the MAC function, is the same as the HMAC function but without the "Hash function" input, right?

    • @jgoebel
      @jgoebel  ปีที่แล้ว

      No, HMAC is a subtype of a MAC. There are also other MACs that are not based on hashes, e.g. CMAC or Poly1305

    • @ferbe666
      @ferbe666 ปีที่แล้ว

      @@jgoebel yes thats what i meant. HMAC is a version of MAC which adds the input "hash function"

    • @jgoebel
      @jgoebel  ปีที่แล้ว

      @@ferbe666 ah sry, I didn't get it at first what you meant

  • @shakirel
    @shakirel 2 ปีที่แล้ว

    Thank you for this explantion.

    • @jgoebel
      @jgoebel  2 ปีที่แล้ว

      Glad it was helpful!

  • @dmha1655
    @dmha1655 2 ปีที่แล้ว

    It did make sense - thank you

  • @kebman
    @kebman 2 ปีที่แล้ว

    A great example is when you want to prevent replay attacks. JWT provides some of the same features.

  • @Kakapo66
    @Kakapo66 2 ปีที่แล้ว

    Good explanation, helped a lot, thanks!

    • @jgoebel
      @jgoebel  2 ปีที่แล้ว

      Glad it helped!

  • @truonghoangha5907
    @truonghoangha5907 2 ปีที่แล้ว

    Can you explain about Secure Remote Password protocal?

  • @silas3463
    @silas3463 2 ปีที่แล้ว

    This made sense, thanks!

    • @jgoebel
      @jgoebel  2 ปีที่แล้ว

      great, thx

  • @chillkun713
    @chillkun713 2 หลายเดือนก่อน

    Could you tell me about Hmackey

  • @vadimsadykov8042
    @vadimsadykov8042 ปีที่แล้ว

    Great explanation

    • @jgoebel
      @jgoebel  ปีที่แล้ว +1

      Glad it was helpful!

  • @nicetomeetugaming7024
    @nicetomeetugaming7024 2 ปีที่แล้ว

    Thanks, this was really helpful.

    • @jgoebel
      @jgoebel  2 ปีที่แล้ว

      I'm glad it helped

  • @ylazerson
    @ylazerson 11 หลายเดือนก่อน

    fantastic video - thanks!

    • @jgoebel
      @jgoebel  11 หลายเดือนก่อน

      Glad it helped!

  • @sreesha445
    @sreesha445 3 ปีที่แล้ว

    Thanks. Clearly understood.

    • @jgoebel
      @jgoebel  3 ปีที่แล้ว

      Great to hear!

  • @gabrielgenao5583
    @gabrielgenao5583 2 ปีที่แล้ว

    Really good video man. But i came with a doubt. How does the two parties agree on having "this secret key"? how is it exchanged? How do i know that the attacker didn't captured the secret key? Thanks!

    • @jgoebel
      @jgoebel  2 ปีที่แล้ว +3

      you would need to exchange the key on a secure channel before. Having shared secrets implies the need for exchanging the secrets before. This is problematic when it comes to data breaches and it is more annoying because you typically do it manually. That's why these days you typically rely on asymmetric cryptography where you only need the public key to verify the signature and where you can easily expose your public key (e.g. by using a JWKS on your server)

  • @hypebeastuchiha9229
    @hypebeastuchiha9229 3 ปีที่แล้ว

    That was great
    Thanks for the video

    • @jgoebel
      @jgoebel  2 ปีที่แล้ว

      Glad you enjoyed it

  • @srinivas1483
    @srinivas1483 8 หลายเดือนก่อน

    Message digest algorithms don't use secret keys, where HMAC is a combination of a secret key and a hash function.

  • @amritadhikari1188
    @amritadhikari1188 2 ปีที่แล้ว

    This is Awesome. Any resources to implementation with JWT?

    • @jgoebel
      @jgoebel  2 ปีที่แล้ว

      this is a good start: github.com/panva/jose

  • @amandaahringer7466
    @amandaahringer7466 3 ปีที่แล้ว

    Great video, thank you!

    • @jgoebel
      @jgoebel  3 ปีที่แล้ว

      thx Amanda, I'm glad you liked it!

  • @adrianweder7086
    @adrianweder7086 2 ปีที่แล้ว

    old one, but still makes sense! :) zhx!

    • @jgoebel
      @jgoebel  2 ปีที่แล้ว

      HMAC never gets old :)

  • @jayeshpobari6565
    @jayeshpobari6565 2 ปีที่แล้ว

    you can provide this ppt ?

  • @artsofsenthu
    @artsofsenthu 3 ปีที่แล้ว

    Keep up the good work

    • @jgoebel
      @jgoebel  3 ปีที่แล้ว

      thx Senthu 👍

  • @nguyenquan4836
    @nguyenquan4836 2 ปีที่แล้ว

    Thank you!!

  • @onlymetalks
    @onlymetalks ปีที่แล้ว

    The ques is how to get it

  • @majdirekik7549
    @majdirekik7549 ปีที่แล้ว

    Well done

    • @jgoebel
      @jgoebel  ปีที่แล้ว +1

      thx Majdi

  • @_yak
    @_yak 3 ปีที่แล้ว

    Really clear and easy to follow, thanks!

    • @jgoebel
      @jgoebel  3 ปีที่แล้ว

      thx you 👍

  • @ibroschool
    @ibroschool 3 ปีที่แล้ว

    exactly wat i needed

    • @jgoebel
      @jgoebel  3 ปีที่แล้ว

      thx Ibro 👍

  • @deanwhite8413
    @deanwhite8413 ปีที่แล้ว

    Cool video.

    • @jgoebel
      @jgoebel  ปีที่แล้ว

      Thanks!

  • @zef3589
    @zef3589 ปีที่แล้ว

    он у папича дома сидит? great explanation btw

  • @azizkouiki
    @azizkouiki หลายเดือนก่อน

    Thanks

  • @TheBroadwood
    @TheBroadwood 2 ปีที่แล้ว

    So short: a HMAC is an encrypted hash?

    • @jgoebel
      @jgoebel  2 ปีที่แล้ว

      no, an HMAC uses a hash function and a secret to produce a small piece of data called a message authentication code. The message authentication code is created by combining the hash function and the secret. So the MAC is not sth encrypted that you could theoretically decrypt.

  • @PuneetGurtoo
    @PuneetGurtoo ปีที่แล้ว

    AB De Villiers

  • @LewisMoten
    @LewisMoten 6 หลายเดือนก่อน

    How is this different from hashing passwords with salt? hash('sha256', 'My Password'.$salt)