The old tag does not match the changed-message recomputation.
The old tag no longer matches
The old tag is 0xe7. The changed message recomputes to 0xe8.
0 x e 7 ≠ 0 x e 8 0xe7\ne 0xe8 0 x e 7 = 0 x e 8
Old tag fails The changed-message rows are recomputed from the same key and pads. Old tag fails - tag e7 changes to e8 row value check block size 2 two-byte toy block key 0f0e pinned key ipad 3636 inner pad inner key pad 3938 key xor ipad inner input 39386869 inner key pad || message inner hash 42 0x142 to 0x42 opad 5c5c outer pad outer key pad 5352 key xor opad outer input 535242 outer key pad || inner hash final tag e7 0xe7 to 0xe7 changed message 686a one message byte changed changed inner hash 43 0x143 to 0x43 changed final tag e8 0xe8 to 0xe8 old tag check fail e7 != e8
Receiver recomputes before accepting
With the same key, the receiver recomputes 0xe8 for the changed bytes, so old tag 0xe7 fails.
old tag check = fail \text{old tag check}=\text{fail} old tag check = fail
Old tag fails The changed-message rows are recomputed from the same key and pads. Old tag fails - tag e7 changes to e8 row value check block size 2 two-byte toy block key 0f0e pinned key ipad 3636 inner pad inner key pad 3938 key xor ipad inner input 39386869 inner key pad || message inner hash 42 0x142 to 0x42 opad 5c5c outer pad outer key pad 5352 key xor opad outer input 535242 outer key pad || inner hash final tag e7 0xe7 to 0xe7 changed message 686a one message byte changed changed inner hash 43 0x143 to 0x43 changed final tag e8 0xe8 to 0xe8 old tag check fail e7 != e8
The shape is the lesson
The useful shape is key with inner pad, then key with outer pad. This toy hash is only here to make the bytes visible.
i n n e r , o u t e r inner,\quad outer inn er , o u t er
Old tag fails The changed-message rows are recomputed from the same key and pads. Old tag fails - tag e7 changes to e8 row value check block size 2 two-byte toy block key 0f0e pinned key ipad 3636 inner pad inner key pad 3938 key xor ipad inner input 39386869 inner key pad || message inner hash 42 0x142 to 0x42 opad 5c5c outer pad outer key pad 5352 key xor opad outer input 535242 outer key pad || inner hash final tag e7 0xe7 to 0xe7 changed message 686a one message byte changed changed inner hash 43 0x143 to 0x43 changed final tag e8 0xe8 to 0xe8 old tag check fail e7 != e8
Honesty boundary
NOTE: toy one-byte hash and 2-byte block only; not real HMAC, not SHA 256, not collision or preimage resistance, not AEAD, not nonce handling, not side channels, not production authentication.
toy only = 1 \text{toy only}=1 toy only = 1
Old tag fails The changed-message rows are recomputed from the same key and pads. Old tag fails - tag e7 changes to e8 row value check block size 2 two-byte toy block key 0f0e pinned key ipad 3636 inner pad inner key pad 3938 key xor ipad inner input 39386869 inner key pad || message inner hash 42 0x142 to 0x42 opad 5c5c outer pad outer key pad 5352 key xor opad outer input 535242 outer key pad || inner hash final tag e7 0xe7 to 0xe7 changed message 686a one message byte changed changed inner hash 43 0x143 to 0x43 changed final tag e8 0xe8 to 0xe8 old tag check fail e7 != e8