A computing device comprising: a communication interface; and a processing unit for performing a secure neighbor discovery by: determining a local node identifier for the communication interface; generating a local challenge; encrypting the local node identifier into an encrypted local node identifier; encrypting the local challenge into an encrypted local challenge; transmitting via the communication interface a discovery request message comprising the encrypted local node identifier and the encrypted local challenge; receiving from a remote computing device via the communication interface a discovery response message comprising an encrypted remote node identifier and an encrypted local challenge response; decrypting the encrypted local challenge response into a local challenge response; generating an expected local challenge response based at least on the local challenge; determining that the secure neighbor discovery is successful if the local challenge response corresponds to the expected local challenge response and determining that the secure neighbor discovery is a failure if the local challenge response does not correspond to the expected local challenge response; and if the secure neighbor discovery is successful, decrypting the encrypted remote node identifier into a remote node identifier. a communication interface; and a processing unit for performing a secure neighbor discovery by: determining a local node identifier for the communication interface; generating a local challenge; encrypting the local node identifier into an encrypted local node identifier; encrypting the local challenge into an encrypted local challenge; transmitting via the communication interface a discovery request message comprising the encrypted local node identifier and the encrypted local challenge; receiving from a remote computing device via the communication interface a discovery response message comprising an encrypted remote node identifier and an encrypted local challenge response; decrypting the encrypted local challenge response into a local challenge response; generating an expected local challenge response based at least on the local challenge; determining that the secure neighbor discovery is successful if the local challenge response corresponds to the expected local challenge response and determining that the secure neighbor discovery is a failure if the local challenge response does not correspond to the expected local challenge response; and if the secure neighbor discovery is successful, decrypting the encrypted remote node identifier into a remote node identifier. determining a local node identifier for the communication interface; generating a local challenge; encrypting the local node identifier into an encrypted local node identifier; encrypting the local challenge into an encrypted local challenge; transmitting via the communication interface a discovery request message comprising the encrypted local node identifier and the encrypted local challenge; receiving from a remote computing device via the communication interface a discovery response message comprising an encrypted remote node identifier and an encrypted local challenge response; decrypting the encrypted local challenge response into a local challenge response; generating an expected local challenge response based at least on the local challenge; determining that the secure neighbor discovery is successful if the local challenge response corresponds to the expected local challenge response and determining that the secure neighbor discovery is a failure if the local challenge response does not correspond to the expected local challenge response; and if the secure neighbor discovery is successful, decrypting the encrypted remote node identifier into a remote node identifier.