The changed message still carries the old tag from the original bytes.

highlighted = computed this step

The attacker changes the message

The original amount 10 becomes 90. The old tag is still 0xd622.

10→9010\to90
Changed messageThe changed message and old tag are exact byte strings.Changed message48 bits / 6 bytes0x7061793d3930byte 0byte 1byte 2byte 301110000011000010111100100111101byte 4byte 50011100100110000byte-00x70byte-10x61byte-20x79byte-30x3dbyte-40x39byte-50x30Old tag16 bits / 2 bytes0xd622byte 0byte 11101011000100010byte-00xd6byte-10x22

Changed bytes

The changed message bytes are 0x7061793d3930.

changed message=0x7061793d3930\text{changed message}=0x7061793d3930
Changed messageThe changed message and old tag are exact byte strings.Changed message48 bits / 6 bytes0x7061793d3930byte 0byte 1byte 2byte 301110000011000010111100100111101byte 4byte 50011100100110000byte-00x70byte-10x61byte-20x79byte-30x3dbyte-40x39byte-50x30Old tag16 bits / 2 bytes0xd622byte 0byte 11101011000100010byte-00xd6byte-10x22

Old tag is not recomputed

The attack keeps the old tag beside the changed message. That mismatch is what the receiver checks.

old tag=0xd622\text{old tag}=0xd622
Changed messageThe changed message and old tag are exact byte strings.Changed message48 bits / 6 bytes0x7061793d3930byte 0byte 1byte 2byte 301110000011000010111100100111101byte 4byte 50011100100110000byte-00x70byte-10x61byte-20x79byte-30x3dbyte-40x39byte-50x30Old tag16 bits / 2 bytes0xd622byte 0byte 11101011000100010byte-00xd6byte-10x22

Summary

Changing authenticated bytes without changing the tag creates a check failure.

changed bytes=1\text{changed bytes}=1
Changed messageThe changed message and old tag are exact byte strings.Changed message48 bits / 6 bytes0x7061793d3930byte 0byte 1byte 2byte 301110000011000010111100100111101byte 4byte 50011100100110000byte-00x70byte-10x61byte-20x79byte-30x3dbyte-40x39byte-50x30Old tag16 bits / 2 bytes0xd622byte 0byte 11101011000100010byte-00xd6byte-10x22