The danger of current video surveillance

We currently have surveillance cameras installed everywhere in cities, in buildings, in vehicles... and they are very useful when there are assaults or other crimes, both to find the guilty and to exonerate the innocent; unfortunately, the security of these cameras is often very poor..

For example, on a website like, you can view a large number of real-time surveillance cameras in free access; video streams whose most crunchy passages will quickly end up on social networks.

This is due to multiple factors: empty or simplistic initial passwords on the cameras, security flaws in the management interfaces, unprotected video streams transmitted via Internet...

In early 2022, even the Ukrainian police patrol cars had their "dashboard cameras" open to the public, with the dramatic consequences that this could have had.

Solution : the Videotestimony

System code name: Witness Angel NVR (for Network Video Recorder)

To address this major problem of confidentiality, at least as far as the common areas of buildings or private roads are concerned, we have developed the concept of "videotaping".

What is the major innovation of this system? It is that it records in "writing only", which means that it immediately encrypts the video with several digital locks, whose keys are distributed among several people called "key keepers". They can be, for example, co-owners members of the union council, the guard of the building, and members of the Syndic; and it is advised to have at least 4 different ones.

As a result, the only way to decipher a recording is for a sufficient number of these key keepers to provide their chords, and their keys.

Thus we have the means to obtain evidence in case of burglary, assault, vandalism, or others; but also the guarantee that the recordings will not be exploited without the knowledge of the co-owners - either by a hacker or by an indelicate technician.

Design and configure your Videotestimony

A video recorder is composed of both a hardware kit (camera and recorder box), and "NVR" software.

We have created a series of tutorials, in the form of blog posts but also videos (coming soon), to guide you in setting up the system.

You can get the Witness Angel NVR software from the page of releases on Github.

You will find on this page the pre-installed disk image for Raspberry Pi microcomputer.

You can also download, in the "Assets" tab, versions for computer. Note that these are preview versions, so they may still have significant incompatibilities. The Macosx version is currently being prepared.

To create your group of Key Guardians, you will have to use, in complement, the Witness Angel Authenticator application.

Guided visit of the NVR software

1 - The registration controller

This is the homepage of the network video recorder, which allows you to start and stop recording.

This application "interface" communicates with another application that is launched in the background, the "service"; this last application will manage the recording itself, and continue to run even when the NVR interface is closed.

In the main section we see the status of the important parameters of our system: camera address, summary of selected key guards, recording and archiving options...

If one of these parameters is invalid ("KO"), then the recording cannot be started until the problem is solved.

At the bottom of the screen there is a preview thumbnail: a low quality image extracted from the last recorded video clip.

Finally, in the top bar, the icons allow you to respectively :

  • restart the system status check
  • reset the registration service (in case of a bug)
  • change the interface language
  • access the program settings

2 - The settings of the program

In this settings page, you will have to set the address of the network camera (or more precisely, of its RTSP video stream), and choose how many key keepers will have to give their authorization before a decryption is possible.

3 - Management of Key Guardians

In order to encrypt the records, we need the public keys of several "authenticators", these being the digital identities of the Key Guardians.

This page allows you to import these authenticators into the NVR and then select which ones to use for future recordings.

The authenticators can be imported automatically from the connected USB keys; in this case, you can choose to import also the private keys (protected by a passphrase), which will be used in case of decryption procedure.

One can also import a public authenticator from the WitnessAngel web gateway, by entering its unique identifier. In this case, only the public keys will be imported, and the decryption procedure will need an exchange of authorizations by Internet.

Note that it is possible to complete, afterwards, an import of public keys with the private keys of the same Key Guard.

4 - Encrypted container management

Once a video clip has been recorded and encrypted, it is stored in a secure container, and all containers are summarized here.

You can then later select one or more containers to start a decryption procedure.

5 - The decryption procedure

The decryption operation is by far the most complex of all, as it requires a summary of the targeted containers, all the Key Guardians referenced by these containers, and more precisely the public keys of each Key Guardian that were actually used for encryption. It is the private keys corresponding to these public keys that will be used for decryption.

For now, only locally imported private keys can be used to decrypt. Therefore, each Key Keeper must enter his secret phrase in the interface, to unlock access to his keys.

It may happen that some Guardians, or some keys, cannot be found; or that secret phrases have been lost. But this does not necessarily prevent decryption, because thanks to the "shared secret" system of the Containers, it is enough that a sufficient number of private keys (the "threshold" defined in the application settings) are accessible for the Container to be revealed.

If the operation is successful, the decrypted video clip(s) are exported to a specified folder.