Deployment Options
Deployment without Application Servers
Deployment with Application Servers
Deployment with Separate Application, Database, and BI Servers
High Availability (HA)
Native, built-in high availability can be fine tuned and adapted for different scenarios
Please check out the High Availability (HA) article for more information.
Communications Protocols & Ciphers
1 | The web interface uses HTTPS over TCP port 443 by default. This web management interface port can be changed in the settings if needed.
TLSv1.2 Ciphers:
|
2 | Agents connect to the master node over HTTPS (443 by default) and uses the same encryption settings as in #1. That port can be changed in the settings as well (load balancer port). Agents also connect using a proprietary protocol on port TCP 10000 (if no Application Servers deployed). Encryption information for port 10000 is listed below:
TLSv1.2 Ciphers:
|
3 | The Master node communicates with Miner nodes over multiple ports with different encryption settings. All communication between nodes should happen over private secure network. Only the Master (and Application Server nodes if any) should be exposed to public.
Ports Used for Miners:
|
4 | Same ports as in #3, with addition of Elasticsearch on port 9200 (HTTPS). |
5 | Miners communicate with the Mining DB node only over 9200 port (Elasticsearch, HTTPS). Access control is IP-based, i.e., Mining DB Node servers request only from Master Node or Miner Nodes. |
6 | Application servers communicate with Master Node using the following ports:
Ports Used for Application Servers:
|
7 | Application servers receive agent connections on even ports in range 10000 - 11000, using the same encryption settings as in #2 for port 10000. |
Connections
Agent ↔ Server Connection | Master ↔ Child Node Connection |
|
|
Default Encryption
1 | Recorded user behavior data can be stored on the endpoint in some circumstances (for example when the agent is offline). For this type of data envelope encryption (RSA+AES) is used (with the server public key used as key encryption key). The agent generates random AES key material and keeps it unencrypted in memory only. When encrypted data is written to disk, the AES key is encrypted with server's public key and written alongside data. |
2 | Configuration caches don't contain any sensitive information and are being read by the client itself. Basic symmetric encryption with hardcoded key is used to discourage tampering/reverse-engineering. |
3 | Data is transmitted to the server using secure TLS channel. Certificate pinning of both parties can be enabled. |
4 | Unencrypted data transmitted by agent is processed by server and written to disk. Data at rest is not encrypted on the server side. It is expected that some disk-level encryption solutions are used on the hypervisor level. |
5 | Encrypted data with encrypted key is transmitted to the server using secure TLS channel. The server decrypts AES data encryption key with its private key. Encrypted data is decrypted using AES. |
End-to-End Encryption
Overview
1 | There is an option to use full end-to-end encryption for sensitive data such as emails, keystrokes, and screen recordings.
In this case, the same envelope encryption method is used, but the server does not have a private key to decrypt data. An AES encryption key is generated by the agent process and encrypted with configured RSA public key. |
2 | Encrypted sensitive data and encrypted AES encryption key is sent to server. |
3 | The server writes encrypted data alongside encrypted data encryption key to disk. |
4 | The viewer of encrypted data provides private key for decryption. |
5 | The server reads encrypted data and encrypted encryption key from disk. The server decodes the data encryption key using the provided private key. The decrypted key is stored in memory only. The server then decrypts data using the decrypted key and sends it to the viewer. Afterwards, the decrypted key and data are trashed from the server's memory. |
Data Flow
1 | The agent reads the RSA public key used for Key Encryption Key (KEK) from a specific location on disk. There is no limitation for the numbers of KEKs used in the system. It can be per-endpoint KEK or per-department KEK or any other method (Possibility to integrate with third-party KMS solutions). |
2 | The agent generates a random AES key used for data encryption (Data Encryption Key – DEK). |
3 | The AES data encryption key (DEK) is encrypted (wrapped) using the RSA encryption key (KEK). |
4 | Data is encrypted with the AES key (DEK). |
5 | Encrypted data and wrapped DEK are transferred to the server. Since the DEK is encrypted (wrapped), the server cannot decrypt the data. |
6 | The private part of the KEK is protected with a passphrase (encrypted) and stored on the server. (Possibility to integrate with third-party KMS solutions). |
7 | When the viewer attempts to view the data, they should supply a passphrase of the corresponding KEK private part. |
8 | When the passphrase is provided, the server decrypts the wrapped DEK using the KEK private part and supplied passphrase. |
9 | After the DEK is unwrapped (decrypted), data can be decrypted. |
10 | Decrypted data is sent to the viewer. |
Key Management
There is no automated key management currently.
Keys should be distributed to the endpoints and put into specific locations.
The server configuration is performed through the database directly, no web interface settings are available.
Integration with third-party key management solutions is possible in the future.
Endpoint |
|
Server |
insert into encryption_kek(pub_datafile, priv_datafile, priv_encrypted)
NOTE: In multi-node deployments, PEM files should be distributed across all nodes. |
OCR
Currently OCR functionality is not supported if end-to-end encryption is used. However, support might be added using the following procedure:
*Support for storing and searching of encrypted textual data is on our roadmap and will be available soon.






