Dmitry Nedospasov - WTFPGA!

0c988f4618b436b14ce6ddcecd52d11d?s=47 DC7499
October 03, 2015

Dmitry Nedospasov - WTFPGA!

DEFCON Moscow 10

0c988f4618b436b14ce6ddcecd52d11d?s=128

DC7499

October 03, 2015
Tweet

Transcript

  1. 2.

    • Закончил аспирантуру TU Berlin, тема новые виды анализа чипов

    • Работаю совместно с Olivier THOMAS и Texplained SARL во Фрации • Фрилансер и тренер “IC RE 101” и “Keep it Synple Stupid” • Преподаю “Hardware Security” в TU Berlin • Буду разрабатывать конкурента Yubikey • Twitter: @nedos
 Email: dmitry@h.rdw.re Кратко обо мне...
  2. 4.

    WTFPGA?! • FPGA - Программируемая Пользователем Вентильная Матрица. • Позволяет

    реализовать зачет конфигурируемых логических элементов логическую схему. • Зачет этого возможно реализовать логические и комбинаторные и сек. логические схемы. • С помощью тактового сигнала возможно очень точно описать поведение логической схемы.
  3. 7.

    HDL • Логические схемы не “програмируют” их “описывают” (HDL -

    Hardware Description Language). • Языки HDL описывают как меняется состояние схемы и сигналов в зависимости от состояния других сигналов или в следующем тактовом цикле. • В императивных языков все выполняется в последовательно, в HDL всё выполняется паралельно. • Есть множество языков, самые популярные это Verilog и VHDL.
  4. 8.

    Конечный Автомат Figure 11: UART Timing Diagram UART START UART

    DATA UART STOP Default assignments valid <= 1’b0; etu cnt <= (etu cnt + 1); state <= state; bit cnt <= bit cnt; data out <= data out; etu half state <= ‘UART DATA; etu cnt <= 9’d0; bit cnt <= 3’d0; data out <= 8’d0; din == 1’b1 etu cnt <= 9’d0; etu full etu cnt <= 9’d0; data out <= {din, data out[7:1]}; bit cnt <= (bit cnt + 1); bit cnt == 3’d7 state <= ‘UART STOP; etu full etu cnt <= 9’d0; state <= ‘UART START; valid <= din; Figure 12: UART receiver state machine.
  5. 9.

    RTL Схема and4b3 rx_data[7]_GND_1_o_equal_2_o<7>1 I0 I1 I2 I3 O and4b4

    rx_data[7]_GND_1_o_equal_2_o<7>2 I0 I1 I2 I3 O and2 rx_data[7]_GND_1_o_equal_2_o<7>3 I0 I1 O rx_data[7]_GND_1_o_equal_2_o<7>_imp:1 rx_data[7]_GND_1_o_equal_2_o<7>_imp rx_data(0) rx_data(1) rx_data(2) rx_data(3) rx_data(4) rx_data(5) rx_data(6) rx_data(7) rx_data(7)_GND_1_o_equal_2_o and2b2 _n00851 I0 I1 O or2 I0 I1 O and2b1 I0 I1 O Madd_bit_cnt[2]_GND_2_o_add_13_OUT1 Madd_bit_cnt[2]_GND_2_o_add_13_OUT1 DataA(2:0) DataB(2:0) Result(2:0) or2 _n0094<1>1 I0 I1 O Mmux_etu_cnt[8]_GND_2_o_mux_6_OUT1 Mmux_etu_cnt[8]_GND_2_o_mux_6_OUT1 Data0(8:0) Data1(8:0) Sel(0) Result(8:0) inv din_GND_2_o_equal_5_o1 I O Mmux__n00821 Mmux__n00821 Data0(2:0) Data1(2:0) Sel(0) Result(2:0) inv _n0094_inv1 I O Mmux_GND_2_o_etu_cnt[8]_mux_10_OUT1 Mmux_GND_2_o_etu_cnt[8]_mux_10_OUT1 Data0(8:0) Data1(8:0) Sel(0) Result(8:0) Mmux_etu_cnt[8]_GND_2_o_mux_20_OUT1 Mmux_etu_cnt[8]_GND_2_o_mux_20_OUT1 Data0(8:0) Data1(8:0) Sel(0) Result(8:0) Madd_etu_cnt[8]_GND_2_o_add_3_OUT1 Madd_etu_cnt[8]_GND_2_o_add_3_OUT1 DataA(8:0) DataB(8:0) Result(8:0) fde C CE D Q Mmux_state[1]_etu_cnt[8]_mux_28_OUT1 Mmux_state[1]_etu_cnt[8]_mux_28_OUT1 Data0(8:0) Data1(8:0) Data2(8:0) Data3(8:0) Sel(0:1) Result(8:0) and3 bit_cnt[2]_PWR_2_o_equal_15_o<2>1 I0 I1 I2 O etu_half<8>_imp etu_half<8>_imp etu_cnt(0) etu_cnt(1) etu_cnt(2) etu_cnt(3) etu_cnt(4) etu_cnt(5) etu_cnt(6) etu_cnt(7) etu_cnt(8) etu_half C D bit_cnt(2)_PWR_ uart_rx:1 rx_usb clk din rst top_sergio:1 clk rx target_rx Simluation Synthesis Place and Route RTL RTL RTL Schematic
  6. 15.
  7. 16.
  8. 18.