Jump to: navigation, search

VIATRA/ModelObfuscator

Obfuscate: To deliberately make more confusing in order to conceal the truth (http://en.wiktionary.org/wiki/obfuscate)

The VIATRA Model Obfuscator is a small utility for obfuscating structured graph-like models (e.g. XML documents, EMF based models) by altering all data values (such as names, identifiers or other strings) in a way that the structure of the model remains the same. Two data values that were identical before the obfuscation will also be identical after it, but the obfuscated value computed based on an input obfuscation string will be completely different (e.g. "Info1" may become "oA3DD43CF5").

Getting started

Use the following links to get the Model Obfuscator, read the next section on what each version does.

Update site

There are no releases yet. You can install the Model Obfuscator from the following sources:

Command line application

Maven artifact

Overview

The current version of the model obfuscator (0.15.0) only obfuscates text content in XML files and String values in EMF models. The obfuscator API receives an obfuscation string (seed) and the input model, it traverses the model and replaces all data values with an obfuscated value that is deterministically computed based on the data value and the obfuscation string.

For more details, read this blog post.

There are several different ways for using the obfuscator:

  • Eclipse UI contribution
  • Command line application
  • Maven plugin for integration through API usage
  • OSGi bundle for integration through API usage

Eclipse UI contribution

The EMF model obfuscator can be installed from the update site and the user can perform the obfuscation on any EMF model loaded into the generic or reflective EMF editors. The obfuscator does not save the models and it is possible to undo the changes. In addition, the error log will contain an entry that provides the random obfuscation string used. Resources that are not writable are not modified.

Command line application

Both XML and EMF model obfuscators can be used with a command line application, that can be downloaded from the CI build. The application uses a few command line arguments and a properties file for configuration, examples for both XML and EMF are provided here. Calling the application without arguments displays the usage guide.

Maven plugin

The model obfuscator is available as a Maven artifact for projects that are POM first. The plugin simply wraps the OSGi runtime bundle into a Maven module and is available from repo.eclipse.org.

OSGi bundle

The core runtime of the model obfuscator is a simple OSGi bundle that can be added as a dependency of plugin projects. The API of the runtime is documented in JavaDoc and there are a set of JUnit tests that show the usage of the API for both XML and EMF.

Basic usage for EMF models

Simply open your model in one of the supported editors (Sample Ecore Model Editor, Sample Reflective Model Editor) and right click to access the local menu. Here you can find the "Obfuscate model" action. Note that the obfuscation is done in a command, so you can undo and redo it if you want. The obfuscation will also avoid changing read-only resources and will not save the model. The seed used for the obfuscation is shown in the dialog before the obfuscation is performed and also logged (visible in the Error Log view). If you know the seed, you can restore the model to its original form anytime (although you will need to do it from code).

UML support

Obfuscating UML models

Initially requested in bug 467999 by Ronan Barrett.

There are some special considerations when working with EMF based UML models and profiles. The model obfuscator has a separate feature for dealing with such models. It is not advisable to attempt to obfuscate a UML model/profile using the Sample Ecore Model Editor or Sample Reflective Model Editor. Instead, the specific obfuscation can be executed from the UML tree editor or the Papyrus graphical editor. In Papyrus to obfuscate the model perform the following:

  1. Open the model to be obfuscated
  2. Right click on a graphical editor related to the model i.e. a diagram
  3. Select the option "Obfuscate the model/profile" from the context menu
  4. Save the model (if you like)

Obfuscating UML profiles

To perform an obfuscation you must follow this procedure carefully:

  1. Obfuscate the profile to be obfuscated
    1. Open the profile to be obfuscated
    2. Right click on a graphical editor related to the profile i.e. a diagram
    3. Select the option "Obfuscate the model/profile" from the context menu
    4. Record the seed used. It shows in a popup and in the Error Log. In addition, the seed and the mapping between the strings of the original profile and the obfuscated profile are saved next to the profile file.
    5. Save the profile to a different file and define the profile (if prompted). Note: The file name must be a different file from the original profile to allow migration.
  2. Migrating models to the obfuscated profile.
    1. Open your model. Papyrus will use the original profile.
    2. On the opened model select “Change profile to the obfuscated pair”. Select the obfuscated profile and the used seed. This results in the model being migrated to the obfuscated profile.
  3. Obfuscate the model if you want. This is a completely independent operation.

Notes

  1. Read only stereotype property values will not be obfuscated as they cannot be reset. Be sure you don't store anything sensitive in them.