Trusted computing platforms aim to proviDe trust in computations performed by sensitive applications. Verifying the integrity of memory contents is a crucial security service that these platforms must proviDe since an adversary able to corrupt the memory space can affect the computations performed by the platform. After a description of the active attacks that threaten memory integrity, this paper surveys existing cryptographic techniques - namely integrity trees - allowing for memory authentication. The strategies proposed in the literature for implementing such trees on general-purpose computing platforms are presented, along with their complexity. This paper also discusses the effect of a potentially compromised Operating System (OS) on computing platforms requiring memory authentication and describes an architecture recently proposed to proviDe this security service despite an untrusted OS. Existing techniques for memory authentication that are not based on trees are described and their performance/ ecurity trade-off is discussed. While this paper focuses on memory authentication for uniprocessor platforms, we also discuss the security issues that arise when considering data authentication in symmetric multiprocessor (shared memory) systems.