Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

149
Vistas
¿Cómo se mitigan los ataques de canal lateral de rama de código en Java?

Cuando trabaja con claves secretas, si su código se bifurca de manera desigual, podría revelar partes de las claves secretas a través de canales laterales. Entonces, para algunos algoritmos, debería bifurcarse uniformemente independientemente de la clave secreta.

En C/C++/Rust, puede usar ensamblador para asegurarse de que ninguna optimización del compilador interfiera con la bifurcación. Sin embargo, en Java, la situación es difícil. En primer lugar, hace JIT para escritorio y AOT en Android, por lo que hay 2 posibilidades para que el código se optimice de forma impredecible, ya que JIT y AOT siempre están cambiando y pueden ser diferentes para cada dispositivo. Entonces, ¿cómo se previenen los ataques de canal lateral que aprovechan la bifurcación en Java?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Al realizar ataques de canal lateral, una de las principales formas de hacerlo es leer el consumo de energía del chip mediante el análisis de potencia diferencial (DPA) . Cuando tiene una rama en un código, como una declaración if, esto puede afectar negativamente el consumo de energía de tal manera que se pueden hacer correlaciones en cuanto a las elecciones que se están haciendo. Para frustrar este análisis, le interesaría tener un consumo de energía "lineal". Esto puede mitigarse en cierta medida con el código, pero en última instancia dependería del dispositivo en sí. Según Brennan et.al [1], algunos optaron por abordar el problema de Java JIT mediante el almacenamiento en caché de instrucciones. En el código, lo "mejor" que podría hacer sería programar usando canarios, para confundir a un atacante, como proponen Brennan et.al [2], y se demuestra en el siguiente código de ejemplo (muy simplificado):

 public bool check(String guess) { for(int i=0; i<guess.len; i++) return false; } return true; }

versus;

 public bool check(String guess) { bool flag=true, fakeFlag=true; for(int i=0; i<guess.len; i++) { if (guess[i] != password[i]) flag=false; else fakeFlag = false: } return flag; } }

[1]: T. Brennan, "Detección y mitigación de canales laterales inducidos por JIT*", 2020 IEEE/ACM 42nd International Conference on Software Engineering: Companion Proceedings (ICSE-Companion), 2020, págs. 143-145.

[2]: T. Brennan, N. Rosner y T. Bultan, "Fugas JIT: Inducción de canales secundarios de tiempo a través de la compilación justo a tiempo", Simposio IEEE sobre seguridad y privacidad (SP) de 2020, 2020, págs. 1207- 1222, doi: 10.1109/SP40000.2020.00007.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda