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.

109010\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