My case is rather special. I need to send data in small chunks, each under 32bytes. ChaCha20 state is 64 bytes.
Since I will be receiving data stream in chunks, id like to verify it on the fly (i.e. after I receive each chunk, make sure it was not tempered with).
Using MAC is a bad choice, as I'd have to compute MAC every time I send my 32byte chunk and append it to the message. And I don't think this is a standard approach as with Poly1305, where as I understand, you compute MAC only once when ALL the data is transferred, not sending intermediate MACs.
So I got this idea: instead of computing MAC (with Poly1305 or other), why not just use the 32byte data twice, make a 64byte chunk that can be XORed with one state of ChaCha20.
Upon deciphering, I verify that the first 32 bytes are equal to the latter 32 bytes. If yes, there was no modification. If no, there was some tampering / transmission errors.
So my questions are:
1. Does repeating ciphertext twice compromise security of the stream cipher? (Assume attacker knows this)
2. Is there some standard way how to provide message authentication with stream ciphers without this "hack"?
Thanks for answers and opinions!