Security is one of the main pillars of digitalization approaches. It might be the most important one.
News are full of hacking, spamming, skimming, phishing, or you-name-it attempts. Even lives are at stake if hospitals are out-of-order because of malware. Users are usually unaware of the security impacts of old devices or outdated software. The same applies for organizations just on a much higher scale. In addition, the modern cloud world enables misconfiguration and misunderstanding to be one of the topmost reason of data breaches.
Enmeshed itself handles very private and sensitive information. We are aware that security must be one of our topmost priorities. And by using Enmeshed, we think that the world would be a lot more secure.
Though having a central architecture, Enmeshed cannot access the keys or payload of data within the backbone. Even if there would be a data breach, nobody could really do something with this metadata and encrypted payload.
For us, security is not only about securing access to data, but making the data itself secure. This applies to the whole communication, be it that the data is completely end-to-end encrypted and digitally signed (so that no one could change the data in between) or that the encrypted data is additionally persisted on the backbone for a specific set of time. This means, that the encrypted data on the backbone can be accessed by authorized parties (e.g. sender and recipients of messages) as long as it is persisted. The Backbone thus acts as a kind of personal archive.
When talking about the Backbone, one has to have trust in it in order to fulfill the requirements:
- Only allow messages between sender and recipient(s) if they have a relationship with each other
- Transmit any message to any recipient (if they have a relationship)
- Do not delay any message
- Use up-to-date timestamps
- Generate unique ids for every new item
- Do not delete content if it isn’t expired yet
- Check beforehand, if a file exists for any submitted message attachment
We run on a complete web stack, meaning that all Runtime coding so far is developed for a sandboxed web environment. While this sounds scary at first - there are still people that believe browsers and website to be highly insecure - it introduces a very interesting security measure: It is sandboxed.
Even if malware would be executed within the Enmeshed Runtime, it would need to break out of the sandbox to perform malicious activities with the actual device. This applies primarily to the Enmeshed App.
However a malware could still access the data within the Enmeshed Runtime, meaning Enmeshed keys and communication payloads which is highly sensitive data.
The Connector should be part of the organizations network, otherwise there would be privacy issues with unencrypted payload or third-parties being able to impersonate the organization. It acts a central integration point within the organization and thus can be easily kept up-to-date. In our opinion, this is a far better approach than to upgrade any business system with encryption and communication capabilities.
The App is only communicating with its corresponding Backbone.
For more information on the security of the device, please read the Security Recommendations for Apps and End-Users.
Enmeshed uses the highest standards of encrypted communication. It is end-to-end encrypted by using public key cryptography between identities. Different keypairs for the identity, for each device and each contact are used to distinguish the different communication areas (technical, multi-factor or contractual). Where possible, random keys are used and shared securely. If a random key is not possible, derived keys from high-entropy master keys (not passwords) are used. The very first keys are exchanged over Key Exchange Protocols, so that as little key material as possible is shared. Please refer to the Cryptography Section to get more information about the used algorithms, libraries and methodologies.
For technical communication with contacts, the contact-specific signature keypair is used. Thus, every message of Enmeshed contains multiple digital signatures of the same message, one signature per recipient (as the sender communicates with a different private key per contact). The digital signature enforces that only the sender can sign the payload and that nobody in between could tamper with the message itself, e.g. change the message payload.
A timestamp from the sender’s device is included within the signed content. This reduces the risk of replay attacks (an encrypted message is sent again to the recipient without knowing the content) on the client side and might be used for legal purposes (sender’s signing date). In addition to that, a unique message id for every message is generated by the Backbone and thus replay attacks are not possible without the control of the Backbone.
It is explicitly enforced, that the addresses of all recipients of the mail are included in the signed content as well. This eliminates the risk of forward attacks, i.e. an attacker forwarding an encrypted mail to another person.
The message payload is symmetrically encrypted with a randomly generated high entropy key. The generated high entropy key itself is encrypted with the next transmission key derivate of a contact-specific encryption master key.
Thus, a message consists of multiple ciphers, one for the message content and one cipher for every recipient. In other words: Every recipient receives the same symmetric key (to decipher the message content) with a contact-specific key cipher which only the respective recipient can decrypt with a specific derived key. The same message with the same cipher of the message content can thus be decrypted by different recipients.
Once the signing and encryption processes are done, the sender submits the encrypted message to the Backbone. The Backbone creates a unique id for this message, in addition to a Backbone timestamp - which is in fact the timestamp on which every participant would agree on.
The Backbone then notifies all recipients that a new message is available.
Once a device of a recipient receives the notification, it fetches the message from the Backbone. The Backbone set the received timestamp for this recipient and the device. With it, the message counts as delivered.
Law Enforcement Compliance
It is possible to temporarily or permanently block access or delete identities, if illegal activities are brought to the attention of the Backbone’s operator. For this the Backbone operator requires the help of at least one of the parties which received illegal content from a sender.
In addition, Enmeshed supports law enforcement up to a certain degree. As like any other central provider, it is possible to block access or delete content if the Backbone operator gets the official task to comply (although the Backbone operator wouldn’t know who the user is or which content it deletes).
Additionally, it is possible to point law enforcement organizations to other identities which have communicated with an unknown target identity in the past. If the actual real-world entity behind such an identity is known (e.g. a company) they might know who the target identity is and could further help law enforcement.