Rooted2015 - Ingenieria inversa de circuitos integrados

82
Ingeniería Inversa de Circuitos Integrados Eduardo Cruz @edcrossed Arcadehacker.blogspot.com

Transcript of Rooted2015 - Ingenieria inversa de circuitos integrados

Ingeniería  Inversa  de  Circuitos  Integrados  

Eduardo  Cruz  

@edcrossed  Arcadehacker.blogspot.com  

¿Por  qué  analizar  chips?  

•  ÚlCma  frontera  de  la  seguridad  

•  Gran  reto,  diverCdo  

•  Aprendizaje  de  múlCples  disciplinas  

Sobre  el  ponente  

•  Aficionado  a  la  seguridad  

•  Coleccionista  de  juegos  arcade  

•  Si  yo  puedo,  TÚ  TAMBIÉN  

En  esta  presentación  

1.  Fabricación  de  circuitos  CMOS  

2.  Decapsulado,  Microscopía,  Deprocesado  

3.  Ingeniería  inversa  y  simulación    4.  Caso  prácCco:  CPU  Capcom  Kabuki  

1.  Fabricación  de  circuitos  CMOS    

1947  

1947  

1947  1925:  Julius  Edgar  Lilienfeld’s  MESFET  patent  1935:  Oskar  Heil’s  MOSFET  patent  194?:  Unpublished  Bell  Labs  MESFET  1947:  Ge  BJT  (Bardeen,  Bradain,  Shockley,  Bell  Labs)  1954:  Si  BJT  (Teal,  Bell  Labs)  1960:  MOSFET  (Atalla&Khang,  Bell  Labs)  1961:  Integrated  circuit  (Kilby,  TI)  1963:  CMOS  (Sah&Wanlass,  Fairchild)  1964:  Commercial  CMOS  IC  (RCA)  1965:  DRAM  (Fairchild)  1968:  Poly-­‐Si  gate  (Faggin&Klein,  Fairchild)  1968:  1-­‐FET  DRAM  cell  (Dennard,  IBM)  1971:  UV  EPROM  (Frohman,  Intel)  1971:  Full  CPU  in  chip,  Intel  8008  (Faggin,  Intel)  1974:  Digital  watch  1974:  Scaling  theory  (Gänsslen&Dennard,  IBM)  1978:  Use  of  ion  implanter  1978:  Flotox  EEPROM  (Perlegos,  Intel)  1980:  Ion-­‐implanted  CMOS  IC  1980:  Plasma  etching  1984:  Scaling  theory  <0.25  μm  (Baccarani,  U.  Bologna)  1986:  0.1  µm  Si  MOSFET  (Sai-­‐Halasz,  IBM)  1991:  CMOS  replaces  BJT  also  at  high-­‐end  1993:  DGFET  scalable  to  30  nm  (theory,  Frank  et  al.)  2007:  Non-­‐SiO2  (HfO2–based)  MOSFET  (Intel)  

A  (par3al,  biased?)  history  of  the  MOSFET    from  a  physicist’s  perspec3ve  -­‐  M.  Fisches  2009  

1947  

1947  

1947  

1947  

1947  

…400  to  500  chemical  processes…  

1947  

1947  

1947  

1947  

1947  

1947  

1947  

1947  

1947  

1.  Fabricación  de  circuitos  CMOS  

2.  Decapsulado,  Microscopía,  Deprocesado    

1947  

Las  técnicas  descritas  a  conCnuación  son  peligrosas  para  u  y  los  que  te  rodean  

ADVERTENCIA  

Google  images:    Nitric  acid  burns                  Hydrofluoric  acid  burns  

1947  Decapsulado  

1947  Microscopía  

1947  Deprocesado  

1947  Tipos  de  decapsulado  

•  DestrucCvo  – La  muestra  deja  de  ser  funcional  

   

•  Vivo  – La  muestra  conCnua  siendo  operaCva  

 

Bonding  wires  

IC  die    solamente  

1947  Equipo  básico  

•  Equipo  laboratorio  –  Bata,  guantes,  pipetas,  gafas…  

•  Herramientas  –  Dremel  –  Base  calentadora  –  Campana  extractora  (o  al  aire  libre)  

•  Químicos  –  Ácido  nítrico  (H2NO3)  min.  70%  –  Acetona    

 

1947  Decapsulado:  Preparación  

•  Cavidad  – Amateur:  Dremel  – Pro:  Machining  – Lab:  Laser  

1947  Decapsulado:  Ataque  amateur  destrucCvo  

t4f.org  

1947  Decapsulado:  Ataque  amateur  vivo  

1947  Decapsulado:  Ataque  Pro  

1947  Decapsulado:  Ataque  Lab  

1947  Microscopía  

•  Captura  de  imágenes  – Amateur:  Microscopio  básico  – Pro:  Microscopio  estéreo    +  Bandeja  XY  – Lab:  SEM/FIB  

1947  Microscopía:  Potencia  +  Calidad  

Mal  asunto   Algo  mejor   Perfecto  

Límite  luz  visible  

 Microscopio  Electrónico  

Microscopio  Óp3co  

1947  Microscopía  

•  GesCón  de  imágenes  – Autopano-­‐si~-­‐C  – pr0nsCch  /  pr0ntools  – Gimp  /  Photoshop   +  

1947  Deprocesado  

•  Descubrimiento  de  capas  interiores  

1947  Deprocesado:  Amateur-­‐>  Lapping  

1947  Deprocesado:  Pro  -­‐>  HF  

1947  Deprocesado:  Lab  -­‐>  FIB/RIE  

1947  

1.  Fabricación  de  circuitos  CMOS  

2.  Decapsulado,  Microscopía,  Deprocesado  

3.  Ingeniería  inversa  y  simulación      

1947  So~ware  VSLI  CAD  

Amateur  

Pro  

1947  Simulación  /  Validación  

IRSIM  

1947  

ANÁLISIS                                                                                                                                                                      SIMULACIÓN/VERIFICACIÓN  

XOR  Metal  completo   Metal  1  eliminado   Metal  1  &  2  eliminados  

Ejemplo  de  Ingeniería  Inversa  

1947  

1947  

1.  Fabricación  de  circuitos  CMOS  

2.  Decapsulado,  Microscopía,  Deprocesado  

3.  Ingeniería  inversa  y  simulación  

4.  Caso  prácCco:  Capcom  Kabuki  

 

1947  

Z80  CRYPTO  CPU  

1947  

1947  

1947  

MEMORIA  (LLAVES  DESCIFRADO  EN  CPU)  ALIMENTADA  POR  BATERÍA  

1947  

ORIGNAL     COPIA  /  BOOTLEG  

¿Por  qué  seguridad  en  arcade?  

1947  

1947  

1947  

1947  

1947  

1947  

Programador  y  seguridad  

Registros  de  memoria  

Descifrado  

Descifrado  y  rutado  de  bus  

de  datos  

Intercepción  del  bus  de  datos  

Intercepción  del  bus  de  

direccionamiento  y  control  

Programador  y  seguridad  

Registros  memoria  108  bits  

Kabuki  Programador  •  Control  de  acceso  – Controla  la  escritura  a  los  registros  de  memoria  – Previene  que  extraños  escriban  en  la  memoria    

Kabuki  Simulación  

Memoria  •  Registros  108  x  1  bit  

– Disposición:  Entrada  en  serie.  Salida  en  paralelo.  

– 72  bits:  Llaves  de  descifrado  

– 16  bits:  Rango  de  memoria  a  descifrar  

– 20  bits:  Memoria  de  trabajo    

Trazado  

Kabuki  Programador  •  Implementación  de  seguridad  

–  No  trivial:  múlCples  fases  y  ofuscación  –  Requiere  deprocesado  de  la  cpu  

–  Fases  de  seguridad  

•  #1  Configuración  de  señales  

•  #2  Llamada  secreta    

•  #3  Llave  secreta  #1  20  bit  –  Ofuscación  �sica  

•  #4  Llave  secreta  #2  –  Ofuscación  �sica  

 

GND    +5  volts  

+5  volts  

Fase  1  –  Configuración  

Fase  1  –  Configuración  

BAJO  

ALTO  BAJO  

ALTO  

GND    +5  volCos  

+5  volCos  

Fase  2  –  Llamada  secreta    

3x  PULSOS  DE  RELOJ  

Fase  2  –  Llamada  secreta    

Registros  de  memoria  1  bit  cada  uno  

Fase  3  –  Llave  secreta  #1  20bits  

Registros  de  memoria  conectados  en  serie  

Fase  3  –  Llave  secreta  #1  20bits  

Registros  de  memoria  conectados  en  serie   XNOR  

Fase  3  –  Llave  secreta  #1  20bits  

Registro  memoria   XNOR  

Fase  3  –  Llave  secreta  #1  20bits  

Output  Input  B  Input  A  

XNOR    

Fase  3  –  Llave  secreta  #1  20bits  

Conector  ofuscado  

Fase  3  –  Llave  secreta  #1  20bits  

XNOR  conectado  a  VCC  (+5)  rail   XNOR  conectado  a  VDD  (ground)  rail  

Fase  3  –  Llave  secreta  #1  20bits  

1  x  Pulso  de  reloj  con  cada  bit  

Secuencia  llave  20  bits  

1011  0111  1010  0100  0101  

Fase  4  –  Llave  secreta  #2  

10  x  Pulsos  de  reloj  

Fase  4  –  Llave  secreta  #2  

5  x  Registros  de  memoria  1  bit  cada  uno  

 

5  x  XNOR  

Programación  

1  x  Pulso  de  reloj  con  cada  bit  

108  bits  

Programación  de  Capcom  Block  Block  

Bits  de  trabajo  –  por  defecto  a  cero  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0      Address  Key                            0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0                      Swap  Key  #2                                        1,  1,  0,  1,  0,  0,  0,  1,  0,  0,  0,  0,  1,  1,  1,  1,  0,  1,  0,  1,  1,  0,  0,  1              Swap  Key  #1  0,  0,  0,  0,  1,  0,  1,  0,  0,  1,  1,  0,  0,  0,  1,  0,  1,  1,  1,  0,  1,  1,  1,  1    XOR  Key          0,  0,  0,  0,  0,  0,  0,  1        Rango  de  memoria  a  descrifar  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0    

Reprogramador  llaves  basado  en  arduino  

GRACIAS  

@edcrossed  Arcadehacker.blogspot.com