Skip to content

SWAT-engineering/nescio

Repository files navigation

Nescio: A DSL to describe anonymization rules

Nescio (latin for: "I do not know") is a DSL to support the declarative anonymization of data (either binary or textual). Nescio only requires that there is some kind of structure in the data and anonymization rules are described in relation to this structure.

The goal of Nescio is to help any technically-minded person to understand how a certain type of data is anonymized. A Nescio specification contains rules (or patterns) on what should be anonymized and an actionable description of how it should be anonymized.

Nescio allows the user to choose between multiple kinds of (pseudo-)anonymizations to apply. These anonymization algorithms are defined using Java, in order for them to be as flexible as possible.

The main idea behind Nescio is to avoid the discrepancy between a document that describes the anonymization policy, and the software that implements it. Nescio is a readable description of this policy, a Nescio description can automatically be translated to application that executes this policy.

Nescio and Bird

The first language integrated with Nescio, is Bird, a language for declaratively describing binary data. Refer to that project to install an IDE that supports Nescio definitions on Bird specifications.

The Nescio manual presents a detailed introduction to Nescio and on how to use it together with Bird.

Sub-projects

The Nescio project consist of several interrelated components, which are subprojects in this repository:

  • nescio-framework: Java library containing the base classes for anonymizers generated by nescio and some simple anonymization algorithms.
  • nescio-core: Nescio toolset developed in Rascal. It includes the grammar definition, type checker, generator, and generic components for the integration with other languages.
  • nescio-doc: nescio documentation.

In order to build them all, clone this project and execute mvn install on the root subdirectory. Notice that it is necessary to build the Bird project afterwards if one wants to try the Nescio IDE (in this case, integrated with the Bird language).