A Serval Identity, abbreviated to SID and also known as “Subscriber ID”, is a 256-bit public key in the Elliptic Curve crypto system used by the Serval Mesh (app for Android).
Every device in the Serval mesh network hosts one or more Serval Identities, which it creates locally as needed (for example, when the Serval Mesh (app for Android) is first installed and started).
Mesh Datagram Protocol (MDP) uses the Serval Identity as the device's network address. This is one of the core innovations in the Serval Mesh, and is described in more detail in the Security Framework. The SID address space has no internal structure (unlike IPv4 or IPv6 address space) except that the address with all bits set is used as the broadcast address.
At present (March 2013), devices with more than one identity use only the first identity as the originator (sender) of all outgoing traffic, and routing announcements are only sent for the first identity, so multiple identities are not well supported.
In future, Mesh routing will be improved to advertise all (unlocked) SIDs as a device's address, and identity management features will be added to the Serval Mesh (app for Android), allowing users and applications to choose which identity to use when communicating on the mesh, whether via Mesh Datagram Protocol (MDP) or Rhizome.
A Serval Identity is created by randomly generating a 256-bit Elliptic Curve private key, then deriving the corresponding public key. Unlike the well-known RSA crypto algorithm, in which strong secret keys are sparse in the key space, every point in the Elliptic Curve key space is a valid and strong key, so key generation is simple and fast, and needs only an unpredictable random number generator.