Trojans description

advertisement

Trojans description:

Please note that all the parameters (including device utilization) of Xilinx chips are all generated under Xilinx ISE Webpack 10.1 environment and the target chip is XC3S250e-

4tq144 on the developing Kit Board Basys from …

Trojan type I:

Brief description and trigger mechanism: This Trojan is inserted near the keyboard input and is monitoring the input. If the plain text starts with “New Haven” (could be change to other words), the Trojan will be triggered. Whenever the Trojan is triggered, the first block (128bits) of the output cipher text will be replaced by the inner key. The major Trojan code is located in “alphatop.v” and “aes128_fast.vhd” where a FSM is inserted. For details, please refer to the source code alpha_Tro1.

Reset the system -> Initialize -> Input “New Haven” from keyboard -> Watch the output

Implementation: The attackers who can both access to the input(keyboard) and listen to the output(RS232 serial port) can get the inner key easily.

Platform and area consumption: The original codes without any modification. Totally

1486 Flip-flops and 4320 LUTs are used which are +0.8% and +6.8% more than original design.

Constraints: As mentioned above, the attackers should acquire the access permission to the input and has the ability to monitor the output. Also, the chip area overhead will probably lead to more power consumption and then destroy the power fingerprint of the chip. Although it is practical impossible, we have to point out that theoretically exhausted input patterns can detect the Trojan in functional test. Furthermore, when the Trojan is triggered, the legal receiver will still try to decrypt the cipher text but get kind of random data at the output which could finally lead to the detection of the Trojan.

Trojan type II:

Brief description and trigger mechanism: This Trojan is designed in purpose to reflect an extreme of Trojan insertion, i.e., with the Trojan and other modification work to optimize the coding, the total area usage is reduced which is different from our original thought that to keep the Trojan compact and concise in order to lower the overhead power consumption. (People may argue that lower power consumption will still violate power traces but to add some irrelevant logic in order to balance the totally power is much easier than reduce the power consumed by overhead area.) The trigger is an originally undefined key “F12”. Whenever, the key is pressed, the triggered Trojan will invalidate any inputs unless the FPGA is reprogrammed. The major Trojan code is located in “kb2ascii.v” file where F12 key is defined. For details, please refer to the source code alpha_Tro2.

Reset the system -> Initialize -> Press “F12” -> the whole chip doesn’t work at all

Implementation: If the attack has the permission to handle the input, he can trigger it easily. Or the Trojan may be triggered by accident of a legal user.

Platform and area consumption: The code with optimized “pt_exp.v” and “kb_top.v” modules. Totally 1335 Flip-flops and 4198 LUTs are used which are 9.4% less than original design and 0.024% more than original design, respectively.

Constraints: Due to the limitation of synthesize tools, we can’t destroy the chip physically through RTL code level. When the Trojan is triggered, re-programming could be a easy way to fix it. Also, to trigger the Trojan in purpose, the attacker should have the access to input equipment.

Trojan type III:

Brief description and trigger mechanism: This Trojan is an example when the attack knows the environment where the attacked chip will be used beforehand and do harm to normal communication constantly. In this Trojan, whenever phrase “Moscow” is detected in plain text, it will be replaced by “Boston” without any notification. The phrase of interest and the replacement phrase can be changed according to the usage of the Trojan and the implementation of the chip. The major Trojan code is located in “alphatop.v” file where a FSM is inserted. For details, please refer to the source code alpha_Tro3.

Reset the system -> Initialize -> Input “Moscow” from keyboard -> Watch the output that

“Moscow” is replaced by “Boston”.

Implementation: The attack doesn’t need to access the input equipment nor does he need to monitor the output. The selection of phrase of interest and replacement words is critical in the Trojan.

Platform and area consumption: The codes with optimized “kb_top.v” module. Totally

1523 Flip-flops and 4266 LUTs are used which are +3.3% and +1.6% more than original design.

Constraints: As mentioned above, the selection of phrase of interest and replacement words is critical when design the Trojan. Also, the chip area overhead will probably lead to more power consumption and then destroy the power fingerprint of the chip, although not so significant. And we have to point out that theoretically exhausted input patterns can detect the Trojan in functional test. Furthermore, if TMR(Triple Mode Redundant) or similar system is used to encrypt and transfer data, the modified result will be discarded.

Trojan type IV:

Brief description and trigger mechanism: The Trojan is custom-designed targeting small size buffer in the system. The plain text buffer size is only 1KB while the video buffer is 4KB which makes the operator hard to notice whether the input is more than

1KB. When the overflow of input buffer occurs, the Trojan is triggered and the payload is to replace the last block with inner key. (According to the original design, if the input is

1KB, the last byte will be discarded in order to send out the key index. So the legal receiver won’t pay attention to the last block.) The major Trojan code in located in

“alphatop.v” and “aes128_fast.vhd”. For details, please refer to the source code alpha_Tro4.

Reset the system -> Initialize -> Input plain text from keyboard until violating 1KB limit

-> Watch the output

Implementation: The trigger looks like a trap which won’t activated until the operators make mistakes themselves. The attackers should be patient enough when listening to the output (RS232 serial port) to get the inner key.

Platform and area consumption: The original codes without any modification. Totally

1475 Flip-flops and 4273 LUTs are used which are +0.068% and +1.8% more than original design.

Constraints: This is a kind of passive Trojan. The attackers should monitor the output all the time and check the last block. The chip area overhead may lead to more power consumption and then destroy the power fingerprint of the chip. A special buffer overflow testing stage can detect this Trojan.

Trojan type V:

Brief description and trigger mechanism: This Trojan is designed to compromise the original data transmission channel, i.e., to hide secret information in the normal transmitted data. In our design, the RS232 serial port is the target whose Baud rate is changed from 9600 to 19200. In the original design, each RS232 transmission package contains 1 start bit, 8 data bits, 2 stop bits. While in the modified design, one package is divided into two packages with each 1 start bit, 8 data bits and 1 stop bit. Half of the data bits are the same as original while others could be used to insert secret information. For each original package, as many as 7 bits can be inserted. In our design, we only use four of them. When the key index is changed, the Trojan is triggered to insert encryption key into the hidden channel. The legal user can’t find any problem if he set the Baud rate as

9600. .) The major Trojan code in located in “async_transmitter.v” file. For details, please refer to the source code alpha_Tro5.

Reset the system -> Choose key index -> Initialize -> input plain text -> Output (with key hidden)

Implementation: This is one kind of advanced Trojan which is immune to functional testing but will be triggered frequently. The attacks only need to monitor the RS232 transmission channel with both 9600 and 19200 Baud rate to gain key and cipher text.

Platform and area consumption: The original codes without any modification. Totally

1474 Flip-flops (the same as original design) and 4226 LUTs (+0.7% more than original design) are used.

Constraints: Since the area overhead is insignificant, for most of the time, the Trojan can’t be detected by functional testing or power trace testing. However, when the Trojan is triggered, the power consumption at transmission stage can be higher than normal due to high Baud rate.

Trojan type VI:

Brief description and trigger mechanism: This Trojan is designed as a timing bomb.

An inserted counter will count when cipher text is transmitted until it exceed a predefined number. When the Trojan is triggered, the output will be set to always high voltage, ‘1’.

We set the predefined number N=31 (just want to trigger the Trojan quickly), in application, it will be larger. .) The major Trojan code in located in “alphatop.v” file. For details, please refer to the source code alpha_Tro6.

Reset the system -> Initialize -> Input plain text -> Transmit -> …… -> Exceed N ->

Watch the output

Implementation: The Trojan is solely a timing bomb which won’t activated until the count of transmit exceed predefined number. The attackers carefully set the number N.

Platform and area consumption: The original codes without any modification. Totally

1479 Flip-flops and 4204 LUTs are used which are +0.34% and +0.17% more than original design.

Constraints: This is a kind of active Trojan and the setting of N is critical to the whole design. Also, due to the limitation of synthesize tools, we can’t destroy the chip physically through RTL code level. When the Trojan is triggered, re-programming could be a easy way to fix it.

Trojan type VII:

Brief description and trigger mechanism: This Trojan is quite aggressive and harmful compared to other ones. In this design, the originally unused RxD port of Basys Board is now acting like the trigger/control signal and one “async_receiver.v” module is added in the design. Besides normal Trojan triggers, two more control signals are inserted in the original design: tro7_trigger_rst, and tro7_trigger_tx. These two signals are controlled through RxD port by RS232 protocol and act like the Reset button and Transmit button on the Basys Board. We also insert a new encryption key

000102030405060708090a0b0c0d0e0f

” which is used to encrypt the information we’d like to transfer outside the chip. In the current version of this Trojan, we only encrypt the original key with our inserted key and transfer it as we will. The major Trojan code is located in “alphatop.v” and the extra “async_receiver.v” files. For details, please refer to the source code alpha_Tro7.

Send “Trojaneftri” through the RS232 RxD port (Reset the system) ->

Send “Trojanabtri” through the RS232 RxD port (encrypt the inner key with our key) ->

Send “Trojancdtri” through the RS232 RxD port to transmitter encrypted key outside the chip in RS232 TxD port ->

Send “Trojaneftri” through the RS232 RxD port (Reset the system)

Implementation: Since the RxD channel in the original design is idle, the attackers only need to occupy this channel and monitor the TxD channel. And the tro7_trigger_rst signal can remove any traces the attackers left to make it even impossible to detect the Trojan in daily use.

Platform and area consumption: The code with optimized “pt_exp.v” module. Totally

1398 Flip-flops and 4369 LUTs are used which are 5.1% less than original design and

4.7% more than original design, respectively.

Constraints: To control the chip and trigger the Trojan, the attacker should acquire the access to the RxD port of RS232 protocol which is harder than just monitoring the output.

Even worse, if the unused RxD port is physically removed (not so likely), this Trojan will never be triggered.

Trojan type VIII:

Brief description and trigger mechanism: This is quite an interesting Trojan to leak inner information through input device – the keyboard. Our purpose to design this kind

Trojan is trying to convince the audiences that there are numerous ways to leak secret inside the chip besides those normally treated as output devices. The trigger is “Caps

Lock” key (or any other undefined keys on the keyboard). After system reset, when we press the “Caps Lock” key, the Caps Lock Led will be lighted or not to indicate bit ‘1’ or bit ‘0’ of encryption key. The attacker only need to press the “Caps Lock” 128 times to get all the key. The major Trojan code in located in “kbtop.v” and “kb2ascii.v” files. For details, please refer to the source code alpha_Tro8.

. Reset the system -> press “Caps Lock” key to get the first bit of key -> press “Caps

Lock” key to get the second bit of key -> …… -> get all the key

Implementation: The differences between this Trojan and other Trojans are that attackers don’t need to access the input device and monitor the output simultaneously. The input device plays both the trigger and output roles in the Trojan.

Platform and area consumption: The code with optimized “pt_exp.v” module. Totally

1395 Flip-flops and 4305 LUTs are used which are 5.4% less than original design and

2.6% more than original design, respectively.

Constraints: As mentioned above, the attackers should acquire the access permission to the input.

Download