title | date | generatorVersion | groups |
---|---|---|---|
ReverSim - Level Library |
11.02.2025 14:18 |
895ee18 |
prolific |
Welcome to the level library for ReverSim!
If you don't know the environment yet, here is a brief introduction. The full documentation can be found in the accompanying Github repository.
ReverSim is an open-source environment for the browser, originally developed at the Max Planck Institute for Security and Privacy (MPI-SP) to study human aspects in hardware reverse engineering. The main objective is to reverse engineer a variety of Boolean circuits, each containing around 2 to 20 logic gates: Participants need to select the correct input values to achieve a set of predetermined output states by operating switches feeding the circuit. For a valid solution, all lamp symbols in the circuit must be lit up and all danger signs must be turned off.
Circuits in ReverSim consist of eight basic elements:
The icons for the logic gates are derived from the "distinctive shapes" set defined in IEEE Std 91/91a-1991. Gates are connected with wires to form the circuit. Any junctions are highlighted with a dot.
ReverSim implements two special types of logic gates for research on hardware obfuscation: Camouflaged
gates visually obscure their actual gate symbol.
Covert
gates display a different icon that does
not match their actual logic function, and allow for "dummy inputs" that are visually connected but have no actual effect.
Circuits containing such gates are generally more challenging to reverse engineer. The following table lists the possible
combinations for the Camouflaged
and Covert
gates:
Covert Gate | Camouflaged Gate | |
---|---|---|
Icon shown in circuit | AND , OR |
Camouflaged |
Real function (Light blue text in this overview, not visible to the participant) | Inverter , Wire |
AND , OR |
Supports dummy inputs? | Yes | No |
Further details about task design and elements are available in the level documentation.
A manual for the tool that was used to generate this level library page is available in the screenshot generator documentation.
Name | Switches | Outputs | Gates | AND | OR | NOT | Obfuscated | timeLimit | tags |
---|---|---|---|---|---|---|---|---|---|
qualification/alow_00000001 | 3 | 1 | 2 | 2 | 0 | 0 | 0 | 0 | |
qualification/blow_00001000_v2 | 3 | 1 | 3 | 1 | 1 | 1 | 0 | 0 | |
qualification/clow_11111101_random | 3 | 1 | 4 | 0 | 2 | 2 | 0 | 0 | π² |
qualification/quali4_random | 3 | 1 | 3 | 1 | 2 | 0 | 0 | 0 | π² |
low/Level1_random | 3 | 1 | 3 | 1 | 1 | 1 | 0 | 180 | β°, π² |
low/Level4_random | 3 | 1 | 3 | 1 | 1 | 1 | 0 | 180 | β°, π² |
medium/Level3_random | 3 | 2 | 9 | 3 | 3 | 3 | 0 | 600 | β°, π² |
medium/Level4_random | 3 | 2 | 9 | 1 | 4 | 4 | 0 | 600 | β°, π² |
medium/Level5_random | 3 | 2 | 7 | 2 | 3 | 2 | 0 | 600 | β°, π² |
medium/Level6_random | 3 | 2 | 8 | 3 | 3 | 2 | 0 | 600 | β°, π² |
high/Level1_random | 3 | 3 | 12 | 3 | 5 | 4 | 0 | 720 | β°, π² |
high/Level5_fixed_random | 3 | 3 | 12 | 2 | 5 | 5 | 0 | 720 | β°, π² |
high/r2d7_fixed_improved_random | 3 | 3 | 18 | 7 | 3 | 8 | 0 | 720 | β°, π² |
high/F12_random | 3 | 3 | 16 | 7 | 3 | 6 | 0 | 720 | β°, π² |
camouflaged/Level1_camou_random | 3 | 2 | 8 | 2 | 3 | 2 | 1 | 900 | β°, π², β |
camouflaged/Level7_camou_random | 3 | 2 | 8 | 2 | 3 | 2 | 1 | 900 | β°, π², β |
Legend:
- β°: Has time limit
- π²: some switch states are initialized randomly
- β: contains camouflage/covert elements
The following screenshots of the levels will contain some annotations that are not shown in ReverSim:
- The name of the level is displayed in light orange in the top left corner
- The ID of the switches are displayed in light blue, so you can better understand which switch was clicked when looking at the log files
- The switches are in the starting position as defined in the level file. If the initial switch position will be random, a dice icon π² is shown on the switch.
- The actual function of covert/camouflage gates is written in blue letters on top of the visual gate icon
numSwitches: 3, numOutputs: 1, numGates: 2, numAND: 2, numOR: 0, numNOT: 0, numObfuscated: 0, timeLimit: 0, numSwitchesRand: 0
Correct solutions for Switch IDs [3, 4, 5]: 111
numSwitches: 3, numOutputs: 1, numGates: 3, numAND: 1, numOR: 1, numNOT: 1, numObfuscated: 0, timeLimit: 0, numSwitchesRand: 0
Correct solutions for Switch IDs [3, 4, 5]: 010
numSwitches: 3, numOutputs: 1, numGates: 4, numAND: 0, numOR: 2, numNOT: 2, numObfuscated: 0, timeLimit: 0, numSwitchesRand: 3, tags: π²
Correct solutions for Switch IDs [3, 4, 5]: 110
numSwitches: 3, numOutputs: 1, numGates: 3, numAND: 1, numOR: 2, numNOT: 0, numObfuscated: 0, timeLimit: 0, numSwitchesRand: 3, tags: π²
Correct solutions for Switch IDs [6, 7, 8]: 000
, 100
numSwitches: 3, numOutputs: 1, numGates: 3, numAND: 1, numOR: 1, numNOT: 1, numObfuscated: 0, timeLimit: 180, numSwitchesRand: 3, tags: β°, π²
Correct solutions for Switch IDs [6, 7, 8]: 100
, 001
, 101
numSwitches: 3, numOutputs: 1, numGates: 3, numAND: 1, numOR: 1, numNOT: 1, numObfuscated: 0, timeLimit: 180, numSwitchesRand: 3, tags: β°, π²
Correct solutions for Switch IDs [6, 7, 8]: 000
, 100
, 010
numSwitches: 3, numOutputs: 2, numGates: 9, numAND: 3, numOR: 3, numNOT: 3, numObfuscated: 0, timeLimit: 600, numSwitchesRand: 3, tags: β°, π²
Correct solutions for Switch IDs [3, 4, 5]: 000
numSwitches: 3, numOutputs: 2, numGates: 9, numAND: 1, numOR: 4, numNOT: 4, numObfuscated: 0, timeLimit: 600, numSwitchesRand: 3, tags: β°, π²
Correct solutions for Switch IDs [3, 4, 5]: 101
numSwitches: 3, numOutputs: 2, numGates: 7, numAND: 2, numOR: 3, numNOT: 2, numObfuscated: 0, timeLimit: 600, numSwitchesRand: 3, tags: β°, π²
Correct solutions for Switch IDs [3, 4, 5]: 011
numSwitches: 3, numOutputs: 2, numGates: 8, numAND: 3, numOR: 3, numNOT: 2, numObfuscated: 0, timeLimit: 600, numSwitchesRand: 3, tags: β°, π²
Correct solutions for Switch IDs [3, 4, 5]: 110
numSwitches: 3, numOutputs: 3, numGates: 12, numAND: 3, numOR: 5, numNOT: 4, numObfuscated: 0, timeLimit: 720, numSwitchesRand: 3, tags: β°, π²
Correct solutions for Switch IDs [6, 7, 8]: 011
numSwitches: 3, numOutputs: 3, numGates: 12, numAND: 2, numOR: 5, numNOT: 5, numObfuscated: 0, timeLimit: 720, numSwitchesRand: 3, tags: β°, π²
Correct solutions for Switch IDs [6, 7, 8]: 100
numSwitches: 3, numOutputs: 3, numGates: 18, numAND: 7, numOR: 3, numNOT: 8, numObfuscated: 0, timeLimit: 720, numSwitchesRand: 3, tags: β°, π²
Correct solutions for Switch IDs [3, 4, 5]: 110
numSwitches: 3, numOutputs: 3, numGates: 16, numAND: 7, numOR: 3, numNOT: 6, numObfuscated: 0, timeLimit: 720, numSwitchesRand: 3, tags: β°, π²
Correct solutions for Switch IDs [3, 4, 5]: 100
numSwitches: 3, numOutputs: 2, numGates: 8, numAND: 2, numOR: 3, numNOT: 2, numObfuscated: 1, timeLimit: 900, numSwitchesRand: 3, tags: β°, π², β
Correct solutions for Switch IDs [3, 4, 5]: 111
numSwitches: 3, numOutputs: 2, numGates: 8, numAND: 2, numOR: 3, numNOT: 2, numObfuscated: 1, timeLimit: 900, numSwitchesRand: 3, tags: β°, π², β
Correct solutions for Switch IDs [3, 4, 5]: 010