Skype is a Voice over Internet Protocol (VoIP) system developed by Skype Technologies S.A. It is a peer-to-peer network in which voice calls pass over the Internet rather than through a special-purpose network. Skype users search for other users to connect to, enabling them to search for other Skype users and send them messages.
Contents
- Security policy
- Registration
- Peer to peer key agreement
- Session cryptography
- Random number generation
- Cryptographic primitives
- Key agreement protocol
- Automatic updates
- Eavesdropping by design
- Flaws and potential flaws
- References
Skype uses 256 bit AES encryption to encrypt communication between users, complicating the decryption of these communications, although when calling a telephone or mobile, the part of the call over the PSTN is not encrypted. Skype's encryption is inherent in the Skype Protocol and is transparent to callers. Skype is not considered to be a secure VoIP system as the calls made over the network are routinely monitored by Microsoft and by government agencies.
Security policy
The company's security policy includes:
- Usernames are unique.
- Callers must present a username and password or other authentication credential.
- Each caller provides the other with proof of identity and privileges whenever a session is established. Each verifies the other’s proof before the session is allowed to carry messages.
- Messages transmitted are encrypted from caller to caller. No intermediate node (router) has access to the meaning of these messages. This claim has been undermined in May 2013 by evidence that Microsoft (owner of Skype) has pinged unique URLs embedded in a Skype conversation; this could only happen if Microsoft has access to the unencrypted form of these messages.
Registration
Skype holds registration information both on the caller's computer and on a Skype server. Skype uses this information to authenticate call recipients and to assure that callers seeking authentication are accessing a Skype server rather than an impostor. Skype uses public key encryption as defined by RSA to accomplish this.
The Skype server has a private key, and distributes that key's public counterpart with every copy of the software. As part of user registration, the user selects a desired username and password. Skype locally generates public and private keys. The private key and a hash of the password are stored on the user's computer.
Then a 256-bit AES-encrypted session is established with the Skype server. The client creates a session key using its random number generator.
The Skype server verifies that the selected username is unique and that follows Skype's naming rules. The server stores the username and a hash of the hash of the user's password
The server now forms and signs an identity certificate for the username that binds the username, its verification key and the key identifier.
Peer-to-peer key agreement
For each call, Skype creates a session with a 256-bit session key. This session exists as long as communication continues and for a fixed time afterward. As part of connecting a call, Skype securely transmits the session key to the call recipient. That session key is then used to encrypt messages in both directions.
Session cryptography
All traffic in a session is encrypted using the AES algorithm running in Integer Counter Mode (ICM). Skype encrypts the current counter and a salt with the session key using the 256 bit AES algorithm. This returns the key stream, which is then XORed with the message content. This produces encrypted ciphertext, which is then transmitted to the recipient. Skype sessions contain multiple streams. The ICM counter depends on the stream, and the location within the stream.
Random number generation
Skype uses random numbers for several cryptographic purposes, for instance as a protection against playback attacks, creation of RSA key pairs, and creation of AES key-halves for content encryption. The security of a Skype peer-to-peer session depends significantly on the quality of the random numbers generated by both ends of the Skype session. Random number generation varies by operating system.
Cryptographic primitives
Skype uses standard cryptographic primitives to achieve its security goals. The cryptographic primitives used in Skype are: the AES block cipher, the RSA public-key cryptosystem, the ISO 9796-2 signature padding scheme, the SHA-1 hash function, and the RC4 stream cipher.
Key agreement protocol
Key-agreement is achieved using a proprietary, symmetric protocol. To protect against a playback attack, the peers challenge each other with random 64-bit nonces. The challenge response is to customize the challenge in a proprietary way and returned it signed with the responder’s private key.
The peers exchange Identity Certificates and confirm that these certificates are legitimate. Because an Identity Certificate contains a public key, each end can then confirm signatures created by the other peer. Each peer contributes 128 random bits to the 256-bit session key.
Automatic updates
Another security risk are automatic updates, which cannot be disabled from version 5.6 on, both on Mac OS and Windows branches, although in the latter, and only from version 5.9 on, automatic updating can be turned off in certain cases.
Eavesdropping by design
Chinese, Russian and United States law enforcement agencies have the ability to eavesdrop on Skype conversations, as well as have access to Skype users' geographic locations. In many cases, simple request for information is sufficient, and no court approval is needed. This ability was deliberately added by Microsoft after they purchased Skype in 2011 for the law enforcement agencies around the world. This is implemented through switching the Skype client for a particular user account from the client-side encryption to the server-side encryption, allowing dissemination of an unencrypted data stream.
Flaws and potential flaws
While Skype encrypts users' sessions, other traffic, including call initiation, can be monitored by unauthorized parties.
The other side of security is whether Skype imposes risk on its users' computers and networks. In October 2005 a pair of security flaws were discovered and patched. Those flaws made it possible for hackers to run hostile code on computers running vulnerable versions of Skype. The first security bug affected only Microsoft Windows computers. It allowed the attacker to use a buffer overflow to crash the system or to force it to execute arbitrary code. The attacker could provide a malformed URL using the Skype URI format, and lure the user to request it to execute the attack. The second security bug affected all platforms; it used a heap-based buffer overflow to make the system vulnerable.