A computer-implemented method of providing secure communication between a first device and a second device, the method comprising: the first device and the second device connecting to a server via a secure communication channel; generating encryption keys for the first device; generating encryption keys for the second device; transferring data relating to the encryption keys for the first device to the second device via the server in the secure communication channel; transferring data relating to the encryption keys for the second device to the first device via the server in the secure communication channel; the first or the second device including a security code in the data transferred to the second or the first device, respectively, and the first or the second device checking for inclusion of the security code in the transferred data and only preforming further steps on the data if the security code is included in the data; generating peer-to-peer connection information for the first device and encrypting the peer-to-peer connection information for the first device using the data relating to the encryption keys for the second device; generating peer-to-peer connection information for the second device and encrypting the peer-to-peer connection information for the second device using the data relating to the encryption keys for the first device; transferring the encrypted peer-to-peer connection information for the first device to the second device via the server in the secure communication channel; transferring the encrypted peer-to-peer connection information for the second device to the first device via the server in the secure communication channel; the first device decrypting the encrypted peer-to-peer connection information for the second device; the second device decrypting the encrypted peer-to-peer connection information for the first device; the first device and the second device using the decrypted peer-to-peer connection information for the first device and the decrypted peer-to-peer connection information for the second device to open a peer-to-peer connection in the secure communication channel, and the first device and the second device exchanging data via the peer-to-peer connection. the first device and the second device connecting to a server via a secure communication channel; generating encryption keys for the first device; generating encryption keys for the second device; transferring data relating to the encryption keys for the first device to the second device via the server in the secure communication channel; transferring data relating to the encryption keys for the second device to the first device via the server in the secure communication channel; the first or the second device including a security code in the data transferred to the second or the first device, respectively, and the first or the second device checking for inclusion of the security code in the transferred data and only preforming further steps on the data if the security code is included in the data; generating peer-to-peer connection information for the first device and encrypting the peer-to-peer connection information for the first device using the data relating to the encryption keys for the second device; generating peer-to-peer connection information for the second device and encrypting the peer-to-peer connection information for the second device using the data relating to the encryption keys for the first device; transferring the encrypted peer-to-peer connection information for the first device to the second device via the server in the secure communication channel; transferring the encrypted peer-to-peer connection information for the second device to the first device via the server in the secure communication channel; the first device decrypting the encrypted peer-to-peer connection information for the second device; the second device decrypting the encrypted peer-to-peer connection information for the first device; the first device and the second device using the decrypted peer-to-peer connection information for the first device and the decrypted peer-to-peer connection information for the second device to open a peer-to-peer connection in the secure communication channel, and the first device and the second device exchanging data via the peer-to-peer connection.