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. WTFPGA?! Дмитрий Недоспасов <dmitry@h.rdw.re> DC7499

  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 Кратко обо мне...
  3. Что такое FPGA?

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

    реализовать зачет конфигурируемых логических элементов логическую схему. • Зачет этого возможно реализовать логические и комбинаторные и сек. логические схемы. • С помощью тактового сигнала возможно очень точно описать поведение логической схемы.
  5. Дизайн Simluation Synthesis Place and Route RTL RTL HDL RTL

    RTL RTL Schematic RTL RTL Bitstream
  6. Схемотехника Simluation Synthesis Place and Route RTL RTL HDL

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

    Hardware Description Language). • Языки HDL описывают как меняется состояние схемы и сигналов в зависимости от состояния других сигналов или в следующем тактовом цикле. • В императивных языков все выполняется в последовательно, в HDL всё выполняется паралельно. • Есть множество языков, самые популярные это Verilog и VHDL.
  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.
  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
  10. Конфигурационный Файл Simluation Synthesis Place and Route RTL RTL Bitstream

  11. Железо

  12. Papilio Pro Header FPGA FTDI

  13. ARM Cortex M3 UART JTAG LPC1343

  14. Comms FTDI TtyUSB0 TtyUSB1 FPGA JTAG UART UART ARM Cortex

    M3 UART reset
  15. None
  16. ПИН

  17. Пароль

  18. Password

  19. Спасибо за внимание