eclipse-capella / capella

Open Source Solution for Model-Based Systems Engineering
https://mbse-capella.org
Eclipse Public License 2.0
238 stars 98 forks source link

Obfuscation Documentation Missing #1933

Open eclipse-capella-bot opened 3 years ago

eclipse-capella-bot commented 3 years ago

When exporting two capella projects (direct copies of each other) and the single referenced Library to Teams for Capella server, attempting to connect to one model results in an "Unhandled Event Loop Exception" at the final connection dialog.

πŸ†” ECLIPSE-564980 πŸ‘· brandon.blau πŸ“… 2020-07-06 πŸ”Ž 1.4.0

eclipse-capella-bot commented 3 years ago

brandon.blau commented on 2020-07-06

Corrected the title of the bug as appropriate to the missing Obfuscation Documention from the Capella menu. Please disregard the original title/comment about Teams For Capella... clerical error on my part.

There is not documentation about how the obfuscation function works in Capella to properly assess the IP sensitivity of releasing an obfuscated model for bug analysis.

steve.monnier commented on 2020-07-07

Hello everyone,

To present the obfuscation feature, I sent the following presentation to Brandon. If it is ok, I will create a gerrit review to add it to the Capella documentation.


The "Obfuscate Model" feature is provided by Capella. The algorithm is divided in two parts.

First, there is a scan of the model in org.polarsys.capella.core.model.obfuscator.actions.ObfuscateSemanticResourceCommand and org.polarsys.capella.core.model.obfuscator.actions.ObfuscateRepresentationCommand: it scans the entierty of the content of the different resources of the session. For each textual attribute (name, descriptions, notes ...) that are not IDs, it replaces the value by a random String.

The obfuscation of each attribute is done in org.polarsys.capella.core.model.obfuscator.ObfuscatorHelper.generateUnreadableString. It generates an id using java.util.UUID.randomUUID(). Then it replaces the attribute value by a subset of the id, so each String will have the same length and the file size will be similar.

This is not an encryption of the information but really an obfuscation. The only information that will be kept are:
The structure of the modèle (tree structure, ids and link between elements) The length of the textual attributes values.

The code corresponding to the 1.4.1 version is visible here: https://github.com/eclipse/capella/blob/v1.4.x/core/plugins/org.polarsys.capella.core.model.obfuscator/src/org/polarsys/capella/core/model/obfuscator/ObfuscatorHelper.java https://github.com/eclipse/capella/tree/v1.4.x/core/plugins/org.polarsys.capella.core.model.obfuscator/src/org/polarsys/capella/core/model/obfuscator/actions