2 I'm an idiot and spoke too soon.
source | link

Just a guess, but XOR isn't a great way at detecting defects in data, and therefore isn't a great way to checksum something. If you XOR each of the blocks and have a bit error in two of the blocks in the same position, the final XOR value would be the same as if there weren't an error. With a hash checksum, any small change would be reflected in the final checksum value, making it a stronger indicator that something in the data is screwed up.

EDIT: zedman9991 has the correct response. I had forgotten that SSH is wrapped up in TCP or UDP, which both provide their own checksums for data integrity, meaning that the hash in the SSH data is meant specifically for both the inregrity AND the prevention of a replay attack.

Just a guess, but XOR isn't a great way at detecting defects in data, and therefore isn't a great way to checksum something. If you XOR each of the blocks and have a bit error in two of the blocks in the same position, the final XOR value would be the same as if there weren't an error. With a hash checksum, any small change would be reflected in the final checksum value, making it a stronger indicator that something in the data is screwed up.

Just a guess, but XOR isn't a great way at detecting defects in data, and therefore isn't a great way to checksum something. If you XOR each of the blocks and have a bit error in two of the blocks in the same position, the final XOR value would be the same as if there weren't an error. With a hash checksum, any small change would be reflected in the final checksum value, making it a stronger indicator that something in the data is screwed up.

EDIT: zedman9991 has the correct response. I had forgotten that SSH is wrapped up in TCP or UDP, which both provide their own checksums for data integrity, meaning that the hash in the SSH data is meant specifically for both the inregrity AND the prevention of a replay attack.

1
source | link

Just a guess, but XOR isn't a great way at detecting defects in data, and therefore isn't a great way to checksum something. If you XOR each of the blocks and have a bit error in two of the blocks in the same position, the final XOR value would be the same as if there weren't an error. With a hash checksum, any small change would be reflected in the final checksum value, making it a stronger indicator that something in the data is screwed up.