I have a s3 bucket with a file in it and while retrieving file from s3 bucket, I want to check if it is retrieved from the source I am expecting from and not from some man-in-the-middle thingy. What is the best way to do that? Something with Authentication header may be or associate with key?
You use HTTPS.  
SSL certificates not only serve as a public key for encryption, they are also signed by a trusted certificate authority and confirm that the server you intended to contact possesses a certificate (and has the correlated private key) that matches the hostname you used when you made the contact.  A properly-configured client will refuse to communicate over HTTPS with a server presenting a certificate with a mismatched hostname, or a certificate signed by an untrusted/unknown certificate authority.
python : signature matching aws s3 bucket