Suppose my opponent watches the traffic between my provider and the first relay in the chain and also between the output relay and the website that I visit. Is there a simple way in this case to make it difficult for the enemy to match the traffic at both ends?
Is there a simple way in this case to make it difficult for the enemy to match the traffic at both ends
No. Tor is a low-latency anonymization network; these all fail when an adversary can run a correlation attack such as you describe. The correlation attack can probably be done with packet timing alone; the longer your session persists, the more confident a correlation becomes. There is no way around this except to change Tor so it either delays packets at each node or adds cover traffic. The second one unlikely to work without wasting a huge amount of the already scarce bandwidth of the network.
The first one (adding delays) would make correlation attacks much harder, but in order to be useful, the delays would most likely have to be so high as to make Tor unusable for any kind for interactive browsing.
Trying to add cover traffic yourself
Edit: Alexander asks whether watching a YouTube video to generate some cover traffic on your end will make correlation harder.
I'd say it doesn't really.
Assume there are two users communicating with the website in question: A (that's us) and B. Also assume A watches a Youtube Video (Y) to generate some cover traffic.
So an attacker might see packets A A B B A B A A B B leaving the web server. He will observe packets Y A Y Y A Y A Y Y Y Y A A Y Y coming in from the network to A's computer. Of course he doesn't know which packets on the server side are A's and which are B's, and he doesn't know which packets on the client side are Youtube packets, but since all the A packets should come in more or less in the same order as they leave the server, and at the same time (plus a small network delay), and with the same sizes, it should be fairly easy to correctly match up the A packets on the client and server side.