Device to device (D2D) communication offers numerous benefits such as low latencies, high throughputs, spectral efficiency boosting, and base station energy reduction. However, lack of encryption and authentication during device discovery, link setup, and data transmission exposes the transmitted data to numerous security and privacy threats. To counter these security threats, a number of schemes have been developed based on public key infrastructure, bilinear pairing operations, batch verification, pre-computed lookup tables, symmetric cryptography, and elliptic curve cryptography (ECC) among others. However, these techniques experience very high communication and computation overheads or fail to address privacy and security challenges effectively. In this paper, a session key agreement protocol is proposed to address some of these issues. Simulation results showed that the proposed protocol exhibits the lowest communication costs and average computation costs. In addition, security analysis showed that our protocol is resilient against message replays, masquerade, identity theft, message forgery, and cloning attacks.