Skip to content

SolidBond Dongle

Overview

SolidBond dongle is a trusted device which ships a fully-featured Plug & Play Launch Control server in a USB form-factor.

The main advantage over self-hosted Solidshield Launch Control server is that SolidBond dongles are self-contained and secured by chain-of-trust design, removing the need to manage additional servers and their security, yet capable of working in redundant setups.

A protected binary is safe against static-analysis and, without any specific configuration, the program will run only if the dongle is plugged into the machine.

SolidBond dongles can serve requests to multiple hosts, acting as a local Launch Control server.

Use cases

Example use-cases for SolidBond dongle:

  • Licensing: bind a software to the dongle, so it runs only if the dongle is present.
  • Licensing for virtual appliances: when delivering your products as a virtual machine image, it is not possible to control how many virtual instances are running. SolidBond is a secured networked local licensing server that can limit the amount of concurrent virtual instances of your software, running on a set of physical hosts, that does not require Internet connection to a remote server.
  • Confidentiality shutdown for emergency situation: useful in scenarios where the physical safety of where the software runs can be compromised.

Supported targets

  • ELF x86-64
  • ELF x86
  • PE x86
  • PE x86-64
  • Java

Technical details

SolidBond dongles are viewed as a standard TCP/IP server and they automatically trigger all the relevant host driver to enable TCP/IP communication. This allow SolidBond dongles to be reached by multiple computers, with a simple port forwarding, so to create a secured licensing server. By having multiple connected dongles (even on different host machines) and thanks to client-side load-balancing SolidBond code, which is integrated in protected binaries, setting up a redundant Non-Single-Point-Of-Failure secured licensing service is very straightforward. Check Custom configuration paragraph for an example.

Custom configuration

SolidBond allows specifying a configuration JSON file, so to override a few important run-time parameters. By default, SolidBond will use hardcoded values, then will look for a file named solidbond-config.json in the working directory, which can be overridden with BOND_CONFIG environment variable.

An example configuration, which reflects hardcoded default values:

{
   "token-servers": ["10.155.155.1:7007"],
   "randomize-servers-list": false,
   "connection-timeout": 300,
   "connection-retries": 10
}
Property Description
token-servers An array of pairs. Protected application will attempt to connect to each server in the list, until a connection can be established.
randomize-servers-list If set to true, the list of servers will be shuffled, before starting connection attempts. This is very useful to perform client-side load-balancing, having multiple clients randomly addressing any of the available servers.
connection-timeout The amount of milliseconds to wait before quitting a connection attempt for timeout.
connection-retries How many times the list of servers will be iterated before exiting, with exit code 127.

As an example of redundant configuration, having two SolidBond dongles installed on two distinct physical machines, identified by IP addresses 192.168.1.17 and 192.168.1.18. If each machines performs a port-forwarding of it's internal 10.155.155.1:7007 to port 7007 of their own public IP address, a working solidbond-config.json file would look like this:

{
   "token-servers": ["192.168.1.17:7007", "192.168.1.18:7007"],
   "randomize-servers-list": true,
   "connection-timeout": 500,
   "connection-retries": 3
}

Run-time parameters

Environment variable Description
BOND_CONFIG Path pointing to the SolidBond config JSON file

Error Exit codes

Exit Code Description
126 Error parsing supplied SolidBond config JSON file.
127 Cannot connect to any SolidBond server

Dongle advanced maintenance

SolidBond dongles exposes a minimal WEB interface which is secured by a prompt of credentials. Contact Solidshield team to obtain them. The interface allows to perform two additional administrative operations:

Network setup

The configuration of network parameters is performed setting the browser at the address http://10.155.155.1/network.

SolidBond network setup

It is used to configure the network data of the dongle and the IP address that the DHCP server on the dongle will provide to the PC. Changing these settings requires special attention because setting with the wrong settings may interfere with the connection to the dongle.

Firmware upgrade

Firmware upgrade is performed setting the browser at the address http://10.155.155.1/firmware.

SolidBond firmware upgrade SolidBond firmware upgrade done

To perform a firmware upgrade, click the browse button and select the upgrade file received by Tages. The signature of the firmware will be verified before proceeding with decryption, upgrade and reboot of the dongle.


Last update: 2019-05-02