Radio Frequency IDentification (RFID) is a technology used for automatic identification of objects, people, and virtually anything one can think of. Applications of RFID technology are expanding and its usage is being adopted worldwide. As such, major efforts have been made to secure the communications in RFID systems and to protect them from various attacks. This paper surveys RFID systems, citing some of their applications as well as the numerous security vulnerabilities they suffer from. Then, some of the proposed solutions that guard against these vulnerabilities are presented and discussed. Then, a novel approach to achieve mutual authentication for ultra-lightweight tags is proposed using Physically Unclonable Functions (PUFs). The proposed approach provides robust security properties as well as good performance characteristics.