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 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").
For more details, read this blog post.
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).
Obfuscating UML models
Initially requested in bug 467999 by Ronan Barrett.
There are some special considerations when working with EMF-UML models and profiles. The model obfuscator has a separate feature for dealing with such issues. While you can invoke the regular obfuscation on a UML model loaded into the supported editors mentioned above, the result may not be usable later (for example in Papyrus). Instead, the specific obfuscation can be executed from the UML tree editor and the Papyrus editor.
Obfuscating UML profiles
To perform an obfuscation you must follow this procedure carefully:
- Obfuscate the profile.
- 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.
- Save the profile to a different file and define the profile. Note: The file name must be a different file from the original profile to allow migration.
- Migrating models to the obfuscated profile.
- Open your model. Papyrus will use the original profile.
- 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.
- Obfuscate the model if you want. This is a completely independent operation.