where do the timestamps on blocks come from? A stork brings them... or...

One of the basic principles on a dist. system is lack of a global clock. 

So how are the timestamps assigned to blocks, by the machine that mines it? Couldn't it just insert a fake one? 

On page 7 of the Ethereum whitepaper Vitalik says that the algorithm for checking that a block is valid contains the following check: 

Check that the timestamp of the block is greater than that of the [median of the 11 previous blocks] and less than 2 hours into the future

So then this notion of time in BTC is quite fuzzy isn't it? 

Is there anything I can read that will tell me the exact time bounds of the BTC system?
A miner applies their own timestamp to a block.

Nodes add the first block they receive to the top their chain. They will not replace the current tip of their chain with a newly received block just because it has an earlier timestamp.

Therefore, you can think timestamp is a rough indicator of when the block was formed by the miner.



From bitcoin.it/wiki/Block_timestamp:


  A timestamp is accepted as valid if it is greater than the median timestamp of previous 11 blocks, and less than the network-adjusted time + 2 hours.


So I suppose a miner can insert a "fake" timestamp, insomuch that it is between these two bounds. Nonetheless, a "fake" timestamp will not influence its position in the blockchain.