[Paper Notes] GENDA: un enfoque de detección basado en redes integradas en gráficos sobre un algoritmo de cifrado

GENDA: un enfoque de detección basado en redes integradas en gráficos sobre el algoritmo de cifrado del programa binario [JISA 2022]

Escuela Xiao Li de Ciencias y Tecnologías de la Información, Universidad del Noroeste, Xi'an, China Escuela
Yuanhai Chang de Ciencias y Tecnologías de la Información, Universidad del Noroeste, Xi'an, China

La tecnología de criptografía se usa ampliamente en la protección de software. Cómo detectar de manera eficiente el algoritmo de cifrado utilizado en el software es una tarea valiosa y fundamental para evaluar la solidez de la protección del software. Sin embargo, los métodos de identificación de algoritmos de cifrado existentes enfrentan altas tasas de falsos positivos y baja eficiencia. problema , porque estos métodos generalmente no pueden extraer completamente la estructura del programa y las características semánticas del algoritmo de encriptación.En este artículo, el autor propone un modelo llamado GENDA, que se basa en la identificación del algoritmo de encriptación en el código binario de la red de incrustación de gráficos.Primero , se analizan las características de varios algoritmos de cifrado y construyen un gráfico de programa (gráfico de programa), luego incrustan recursivamente el gráfico de programa en la red neuronal gráfica como la unidad básica, y representan el gráfico de algoritmo de cifrado correspondiente con un vector, y finalmente determinan el algoritmo de cifrado tipo según la distancia entre los vectores En código abierto En términos de identificación del código base y la aplicación real del algoritmo de cifrado, la precisión de GENDA puede alcanzar el 92%, lo que puede superar a la mayoría de los métodos en comparación con SOTA.

En una palabra: red de incrustación de gráficos para la identificación de algoritmos de cifrado

introducción

Contribuciones

Una contribución importante de este artículo es la verificación experimental de la factibilidad de detectar algoritmos de encriptación con redes neuronales. Aprovechando esta ventaja, las redes neuronales de aprendizaje profundo se pueden entrenar de extremo a extremo, transformando tareas complejas de análisis binario en tareas de entrenamiento que requieren solo una pequeña cantidad de conocimiento del dominio. Al tratar los algoritmos de cifrado como códigos con propiedades especiales, este problema se transforma en un problema de detección de similitud de código binario. Las contribuciones de este documento son las siguientes:
(1) El uso del modelo de detección basado en la red neuronal gráfica para identificar el algoritmo de cifrado es uno de los primeros estudios en China. Para construir el modelo de detección, la estructura gráfica del algoritmo de cifrado se integra en la estructura vectorial. Esta red integrada puede acceder a funciones entre nodos de bloques básicos. Finalmente, se forma una estructura vectorial que contiene toda la información del gráfico del algoritmo de cifrado, y el tipo de algoritmo de cifrado se determina comparando la distancia entre los vectores de la función de cifrado.
(2) Proporciona una nueva forma de construir un gráfico de algoritmo de cifrado. Con este fin, GENDA utiliza herramientas inversas para extraer la información del diagrama de flujo de la función en la unidad de función y la combina con el código de operación y el operando de la instrucción de ensamblaje para obtener una nueva estructura y un gráfico de algoritmo de cifrado como la unidad integrada básica de la red neuronal de aprendizaje profundo. , así Garantiza mejores resultados durante el entrenamiento.
(3) Utiliza evaluaciones exhaustivas de conjuntos de datos recopilados de programas de código abierto y métodos existentes. Los resultados experimentales muestran que, en comparación con los métodos existentes, el algoritmo GENDA puede lograr un mejor rendimiento integral.

Obras relacionadas

(1) Detección de cifrado basada en texto cifrado
La identificación del algoritmo de cifrado proviene principalmente del análisis del texto cifrado con este método. El método de Souza et al [16] realiza una clasificación basada en el aprendizaje no supervisado y la agrupación de cifrados de bloque en los modos EBC y CBC. En el modo EBC, la precisión de clasificación y agrupación puede alcanzar el 100 %. Desafortunadamente, la clasificación falla en el modo CBC. Para resolver este problema, Shivendra y otros [17] inventaron un método que combinaba la longitud de bloque, la detección de tráfico, el análisis de reproducción de entropía y el árbol de decisiones, y descubrieron que los textos cifrados se distribuyen uniformemente en AES. Completan la entrada aleatoria del caso del texto cifrado. Vina y otros [18] aplicaron el aprendizaje automático a la detección del cifrado de texto cifrado para el análisis diferencial y lineal, y analizaron el método de cifrado basado en la recuperación de información semántica. Vikas et al [19] propusieron identificar algoritmos criptográficos analizando textos cifrados individualmente a través de técnicas de agrupamiento.

(2) Detección de algoritmos de cifrado basados ​​en binarios
La tecnología de descompilación es actualmente el método principal para la identificación de algoritmos de cifrado. Este método puede analizar efectivamente si el algoritmo de cifrado de destino está incluido en el código binario. En la actualidad, el análisis en este campo se centra principalmente en los estándares y métodos de propagación, evaluación y prueba de algoritmos de cifrado de bloques, que se pueden dividir en análisis estático y análisis dinámico según el método de identificación. Li y otros [20] aprovecharon las características de velocidad rápida y sobrecarga de espacio pequeño del modelo de clasificación bayesiano y utilizaron el vector de algoritmo de cifrado de nivel de ensamblaje para construir un modelo de reconocimiento de toma de decisiones bayesiano y realizaron un análisis efectivo de el algoritmo de cifrado, pero la precisión aún debe mejorarse. Tieming y otros [21] identifican algoritmos de encriptación haciendo coincidir palabras tokenizadas. Aunque la eficiencia de reconocimiento es alta, la tasa de reconocimiento de falsas alarmas es inaceptable. Para solucionar este problema, también existen trabajos para juzgar si se utiliza un algoritmo de encriptación detectando instrucciones de manipulación de bits [22] y entropía de la información [23]. Los métodos de detección basados ​​en el análisis estático son fáciles de implementar y funcionan bien. Sin embargo, los algoritmos de cifrado que utilizan características desconocidas son difíciles de detectar.

(3) Detección de algoritmos de cifrado basada en aprendizaje profundo El aprendizaje profundo
se está convirtiendo en una técnica prometedora para crear modelos predictivos que respalden tareas relacionadas con el código, como la optimización del rendimiento y la detección de vulnerabilidades del código [28, 29]. Para lograr escalabilidad y alta precisión, algunos investigadores intentan utilizar la idea del procesamiento del lenguaje natural (NLP) para resolver el problema del análisis del código binario. Al tratar las instrucciones de ensamblaje como lenguaje natural, entrenan modelos de incrustación de texto y luego usan técnicas como el análisis de sentimientos o el modelado de temas para clasificar o agrupar el código. Para lograr el propósito de identificar el código de destino.

(4) Detección de clones de código
Para el tema de la detección de similitudes, ya sea que se base en el código fuente o en la investigación del sistema binario, sus métodos son comunes en muchos lugares. De acuerdo con las ideas principales, se puede dividir en detección de cadenas de texto [33,34], detección de similitud basada en tokens [35,36] y detección basada en árboles [10,37,38].

método

Descripción general

En esta sección, describimos GENDA para detección y reconocimiento binario. La figura 1 ofrece una descripción general del marco GENDA.

inserte la descripción de la imagen aquí
Después de obtener el código fuente de la biblioteca de cifrado de código abierto, el primer paso es realizar una compilación cruzada del código fuente seleccionando diferentes versiones, niveles de optimización, compiladores y conjuntos de instrucciones como conjuntos de datos.

Extracción de características del algoritmo de cifrado

Los diferentes tipos de algoritmos de cifrado contienen muchas características diferentes debido a su singularidad. Por ejemplo, el algoritmo de cifrado de bloques contiene una gran cantidad de instrucciones aritméticas, instrucciones de salto e instrucciones de operación lógica. La distribución de instrucciones en criptografía de clave pública es más uniforme.
El cifrado a menudo implica números enteros grandes o matrices grandes, como mezclar constantes de matriz en el cifrado de bloques, valores de cadena iniciales de SHA-1 y MD5 cifrados mediante algoritmos hash. Ya sea que se use la factorización de enteros, la solución de logaritmos discretos o la solución de curva elíptica, los números primos grandes se usan inevitablemente en el cifrado de clave pública. Distinguiendo estas características constantes, se puede distinguir bien la clasificación de los algoritmos de cifrado.
Debido a su particularidad, el algoritmo de encriptación tiene características estadísticas obvias. Primero, el número de instrucciones en un algoritmo de cifrado es limitado. Para realizar la función de cifrado o descifrado, el número total de instrucciones no será demasiado pequeño. Cuando el número de instrucciones sea inferior a un número determinado, no podrá ser considerado. La frecuencia de la operación aritmética, la operación lógica y la operación de cambio en la función central del algoritmo de cifrado es obviamente más alta que la de otras instrucciones de operación. Debido a la existencia de la tabla de desplazamiento y las características de operación de múltiples rondas del ciclo de cifrado de bloque, el ciclo de código con la misma estructura aparecerá de manera más obvia. La Fig. 3 muestra la distribución de frecuencias de instrucciones para antianálisis y estadísticas de 200 grupos de algoritmos de cifrado de bloques.

inserte la descripción de la imagen aquí

En cuanto a las operaciones, de acuerdo con las características de los cifrados de bloque en la sección anterior, se puede determinar que la mayoría de las operaciones son operaciones aritméticas básicas soportadas por el procesador ALU, incluyendo operaciones de suma, resta, multiplicación, división y lógica XOR. Los algoritmos de cifrado de clave pública implican una gran cantidad de operaciones de módulo y estas operaciones básicas se eliminan. Las operaciones de módulo pueden estar compuestas de operaciones básicas fijas. La fórmula básica comúnmente utilizada en el cifrado de clave pública me ( mod n ) m^e (mod\ n)metroe (modn) puede consistir en instrucciones como se muestra en la figura4. Por ejemplo, identificar si el código contiene una gran cantidad de tales operaciones es una base importante para juzgar el cifrado de clave pública.

Las características que no son de comando se refieren a características que no están directamente relacionadas con el contenido de comandos específicos, pero están relacionadas con las características generales de todos los comandos. La primera categoría de características que no son de instrucción es el número de bloques básicos funcionales/número total de instrucciones/número de variables locales.

Estructura del gráfico del algoritmo de cifrado

Este documento construye una nueva estructura de datos: un gráfico de algoritmo de cifrado y transforma la función de cifrado en un gráfico con funciones de bloque básico establecidas como nodos y relaciones de llamadas como bordes para incrustar en la red neuronal. En este caso, el contenido del nodo garantiza la información textual y la dirección de flujo de los bordes garantiza la información estructural. En comparación con el uso directo de cada bloque básico para la agregación de funciones, el uso de la estructura de diagrama de flujo del gráfico del algoritmo de cifrado puede preservar mejor la información en la función.

inserte la descripción de la imagen aquí

La estructura del gráfico del algoritmo de cifrado se muestra en la Figura 5, donde los bordes están representados por una notación de árbol de sufijos. Cada nodo en el árbol registra los nodos secundarios conectados a él en orden y representa la información básica del bloque al que se apunta directamente. Usando el árbol de sufijos, se puede construir un diagrama de flujo completo de toda la función a partir del primer nodo. En este punto se ha obtenido una estructura de datos, formada por un conjunto de nodos y un conjunto de aristas, T = < V , E > T=<V, E>T=<V ,mi> , donde los vértices también incluyen los tres tipos de datos obtenidos en el apartado anterior.

Selección de estructura de datos de construcción de gráfico

Al componer un gráfico, elija la herramienta madura de construcción de redes complejas NetworkX. Admite la creación de muchos tipos de gráficos estructurados, construyendo gráficos no dirigidos, gráficos dirigidos y multigráficos. De acuerdo con las características funcionales, este artículo necesita un gráfico dirigido que pueda representar el flujo de control. Dado que la situación de "múltiples lados" puede ocurrir cuando se llama al programa, el gráfico multidireccional se selecciona de manera integral. La información de los nodos y la topología de la red necesitan atención al construir un gráfico. Para el almacenamiento de gráficos obviamente escaso, se debe usar la estructura de datos del diccionario para el almacenamiento. Su ventaja es que la estructura del diccionario del diccionario puede mejorar la utilización del espacio de almacenamiento escaso. Y los datos se pueden agregar a las estructuras de "borde", como los pesos. Además, la relación de borde se puede consultar fácilmente a través de la tabla de diccionario y la relación de adyacencia se puede atravesar rápidamente.

inserte la descripción de la imagen aquí

Para el proceso de extracción del diagrama de flujo del algoritmo de cifrado, aquí se adopta el recorrido transversal en profundidad (DFS) del gráfico. Su idea central es realizar una simulación del flujo de control primero en profundidad de acuerdo con el bloque de flujo de control extraído y la matriz de adyacencia de cada nodo. Recorra toda la ruta del flujo de control y registre la relación de conexión cada vez. Una vez realizados todos los DFS, se genera el gráfico dirigido ponderado correspondiente mediante el modo compuesto de NetworkX. Aún no se han determinado pesos, solo atributos reservados. El código se muestra en el Algoritmo 1.

Entrenamiento y detección de modelos

inserte la descripción de la imagen aquí

El propósito de este artículo es probar si el algoritmo de cifrado cumple con los requisitos. Para lograr este objetivo, realizamos análisis de similitud de código y detección de algoritmos de cifrado estándar, algoritmos a detectar y algoritmos a detectar. Para este tipo de problema, generalmente hay dos opciones:
(1) Tratar el problema como un problema de clasificación y entrenar un modelo que pueda clasificar directamente el algoritmo de cifrado de destino.
(2) A través de la detección de similitudes, el algoritmo de tipo desconocido se compara con el algoritmo de cifrado de cierto tipo y se entrena un modelo para juzgar estas similitudes.

experimento

Experimento de detección de algoritmos de cifrado Detecte bibliotecas de código abierto conocidas o algoritmos de cifrado de código abierto en la plataforma de alojamiento de algoritmos para detectar si se pueden identificar correctamente varios algoritmos de cifrado.
Experimentos comparativos con trabajos existentes Compare con herramientas de código abierto existentes en campos relacionados y realice varios experimentos comparativos.

conjuntos de datos

Esta evaluación tiene como objetivo verificar si GENDA puede identificar correctamente el algoritmo de cifrado de destino. Los objetos a instrumentar son funciones completas o bloques de funciones que implementan alguna funcionalidad criptográfica. Con este fin, recopilamos un total de 1835 algoritmos de cifrado compilados de proyectos de código abierto conocidos mediante métodos de compilación cruzada y eliminación. Específicamente, los cifrados de bloques se pueden clasificar en CFB (Bloque de retroalimentación de cifrado), OFB (Bloque de retroalimentación de salida), CBC (Cadena de bloques de cifrado) y ECB (Libro de códigos electrónico).
Las cantidades concretas fueron las siguientes: AES, 445 copias, DES, 301 copias, 3DES, 141 copias, Blowfish, 127 copias, IDEA, 86 copias, CAST, 218 copias, RC2, 178 copias, RSA, 145 copias y DSA, 194 copias Los algoritmos de cifrado individuales se eliminaron de la biblioteca de cifrado de código abierto como OpenSSL, Sodium, LibTomcrypt y Crypto++.

inserte la descripción de la imagen aquí

Ejemplo

La fórmula de cálculo de "similitud" se basa en la distancia de Mahalanobis. Por conveniencia de cálculo, la similitud se divide por la longitud del vector gráfico. El resultado final de similitud se fija en 0%-100%. Cuanto mayor es el porcentaje, más similares son las dos funciones. El proceso específico del experimento es el siguiente: tomando como ejemplo el algoritmo de cifrado AES_128_CFB extraído de la biblioteca de cifrado de código abierto Crypto++, el algoritmo de cifrado consta de 14 funciones. Dado que los datos extraídos son datos de código fuente y la entrada esperada de este sistema es un código binario, es necesario compilarlos aleatoriamente para obtener datos binarios y descompilarlos con IDA Pro. A partir del punto de entrada especificado (0x00401249 en este ejemplo), utilice el módulo de generación de estructura gráfica para el procesamiento, como se muestra en la Figura 7. El módulo de generación de estructuras gráficas se realiza con la ayuda del complemento IDA Python y NetworkX. Se realizan funciones como la extracción de características de código de operación en bloques básicos y la extracción y registro de diagramas de flujo de programa. Durante este proceso, se generó una estructura gráfica separada para cada función que compone AES, un total de 14, y los algoritmos se documentan en un archivo json.

inserte la descripción de la imagen aquí

El siguiente es el preprocesamiento de datos. No todas las estructuras gráficas son necesarias para el entrenamiento. Entre los 14 algoritmos de cifrado que componen la función AES_gcm_init, también hay algunos algoritmos que no están estrechamente relacionados con el cifrado en sí. Por ejemplo, la función ASN_STRING_print_ex proporciona la funcionalidad de impresión de cadenas. Cuando estas funciones independientes del cifrado se agregan al entrenamiento del modelo para el reconocimiento de similitud, afectará el resultado final. De acuerdo con la complejidad y otras características del algoritmo de cifrado, se formula la lógica de preprocesamiento. Un algoritmo que excluye bloques básicos cuyo número de bloques básicos es inferior a 10 o superior a la mitad no tiene nodos posteriores. Esto maximiza el reconocimiento de los algoritmos de cifrado. Después del procesamiento, quedan 11 funciones en la función AES_gcm_init.
El siguiente paso es incorporar las 11 estructuras EAG generadas en un modelo de aprendizaje profundo bien entrenado como un conjunto de vectores de funciones para detectar. Al mismo tiempo, el algoritmo de cifrado estándar pregenerado y eliminado en OpenSSL1.0.1 se procesa previamente y se integra para generar un conjunto de vectores de cifrado estándar. Contiene 97 estructuras de incrustación de gráficos de 9 algoritmos de cifrado como AES, DES, 3DES y Blowfish. Luego, la distancia entre los vectores se compara a su vez, y los 11 vectores gráficos se comparan con 9 algoritmos de cifrado estándar, y la distancia del vector más cercana se toma como resultado final . En la Figura 8 se puede ver que el resultado de la detección de AES_128_CFB es más similar al valor sim del algoritmo AES, por lo que se puede determinar que la detección es exitosa.

inserte la descripción de la imagen aquí

De manera más intuitiva, se puede ver en la Figura 9 que el espacio de incrustación es un espacio vectorial bidimensional, y la relación de distancia entre los vectores de incrustación se puede ver claramente después de la visualización de T-SNE. La distribución de AES_128_CFB en la figura es la más cercana al algoritmo de cifrado estándar AES, y la distancia del vector de incrustación es la más corta, por lo que se puede considerar que las dos funciones son las más similares.

inserte la descripción de la imagen aquí

Detección

Los resultados de todos los casos de prueba se muestran en la Fig. 10.
inserte la descripción de la imagen aquí

Experimento de comparación con el trabajo existente

En este documento, se seleccionan cuatro herramientas existentes y se realiza una comparación horizontal relativamente completa de tres aspectos de detección, precisión y eficiencia. Para ser justos, los datos de prueba excluyen los datos de entrenamiento de GENDA (OpenSSL y Crypto) para comparar. Usar el algoritmo de cifrado multiestrella y otros datos de bases de datos cifrados de código abierto en Github, Googlecode y otras plataformas de alojamiento de proyectos para formar un nuevo conjunto de datos de prueba para evitar resultados falsos positivos.

inserte la descripción de la imagen aquí

La Figura 11(a) y la Figura 11(b) muestran respectivamente el rendimiento de precisión de cada sistema cuando el conjunto de datos es una biblioteca de cifrado de código abierto o una plataforma de alojamiento de código (como Github). CH1 es "un método mejorado de identificación de funciones criptográficas" y CH2 es "identificación de características de ciclos de algoritmos criptográficos a nivel de código binario". A partir de la información de la figura, se puede ver que Cryptgrep se desempeña muy bien en la detección de bibliotecas de cifrado de código abierto, y básicamente puede lograr una detección completa, porque Cryptgrep detecta algoritmos de cifrado basados ​​en firmas. Si el algoritmo de cifrado está incluido en la biblioteca de firmas, se puede detectar fácilmente Es bueno detectarlo.

inserte la descripción de la imagen aquí

Los resultados de las pruebas del software real de cada sistema se muestran en la Tabla 1. Para modelos de detección de similitud como GENDA y SAFE, la detección exitosa se define como una similitud superior al 90 %. Para los otros tres sistemas, se juzga directamente si el algoritmo de cifrado de destino se puede detectar correctamente. Los resultados muestran que el sistema de detección de algoritmos de encriptación basado en detección de similitud tiene un amplio rango de detección, mientras que el sistema basado en análisis estático o firma de algoritmo tiene limitaciones en el rendimiento.

inserte la descripción de la imagen aquí

La figura 12 muestra el rendimiento de diferentes sistemas. El rendimiento se define como el tiempo que tarda el sistema en dar el resultado final a partir de la entrada de códigos binarios de diferentes sistemas bajo las mismas condiciones. Entre ellos, T1 representa el tiempo de ejecución promedio cuando el objetivo de detección es un algoritmo de cifrado independiente separado de la biblioteca de funciones de cifrado. T2 representa el tiempo de ejecución promedio cuando el objetivo detectado es un archivo binario. Para la detección de un solo algoritmo de cifrado, se encuentra que GENDA es el más efectivo y puede determinar rápidamente si el código es un algoritmo de cifrado. Pero a juzgar por todo el software, GENDA necesita mucho código binario para convertirlo en un diagrama de algoritmo de cifrado, por lo que la eficiencia será relativamente baja. Casi todos los casos de uso se degradan cuando el software crece en tamaño. La pérdida de rendimiento de GENDA está por debajo del promedio y dentro de los límites aceptables.

Resumir

Referencias

[10] Yeo HS, Phang XS, Lee HJ, Lim H. Aprovechamiento de las técnicas de almacenamiento del lado del cliente para un uso mejorado de múltiples servicios de almacenamiento en la nube para el consumidor en dispositivos móviles con recursos limitados. J Netw Comput Appl 2014;43:142–56.
[15] Narayanan A, Chandramohan M, Venkatesan R, Chen L, Liu Y, Jaiswal S. graph2vec: aprendizaje de representaciones distribuidas de gráficos. 2017, versión preliminar de arXiv arXiv:1707.05005.
[16] Augusto Rodrigues de Souza W, Alfredo Vidal de Carvalho L, Antonio Moreira Xexeo J. Identificación de cifrados de bloque N. IEEE Lat Am Trans 2011;9(2):184–91. http://dx.doi.org/10.1109/TLA.2011.5765572.
[17] Mishra S, Bhattacharjya A. Análisis de patrones de texto cifrado: un enfoque combinado. En: 2013 Conferencia internacional sobre tendencias recientes en tecnología de la información. IEEE; 2013, pág. 393–8.
[18] Lomte VM, Shinde AD. Revisión de un nuevo ataque distintivo usando cifrado de bloques con una red neuronal. Int J Sci Res 2014;3(8):2012–5.
[19] Tiwari V, Pradeepthi K, Saxena A. Identificación de algoritmos criptográficos mediante técnicas de agrupación. En: Actas de la tercera conferencia internacional sobre inteligencia computacional e informática. Saltador; 2020, pág. 513–21.
[20] Ji-Zhong LI, Jiang LH, Yin Q, Liu TM, Guo J. Tecnología de reconocimiento de algoritmos de criptograma basada en la toma de decisiones de Bayes. Comput Eng 2008;34(20):159–61.
[21] Liu TM, Jiang Lh, He Hq, Li Jz, Yu X. Investigando sobre el reconocimiento de algoritmos criptográficos basados ​​en código de característica estático. En: conferencia internacional sobre tecnología de seguridad. Saltador; 2009, pág. 140–7.
[22] Maiorca D, Giacinto G, Corona I. Un sistema de reconocimiento de patrones para la detección de archivos pdf maliciosos. En: Taller internacional sobre aprendizaje automático y minería de datos en reconocimiento de patrones. Saltador; 2012, pág. 510–24.
[23] Tzermias Z, Sykiotakis G, Polychronakis M, Markatos EP. Combinando análisis estático y dinámico para la detección de documentos maliciosos. En: Actas del cuarto taller europeo sobre seguridad de sistemas. 2011, pág. 1–6.
[28] Ye G, Tang Z, Wang H, Fang D, Fang J, Huang S, et al. Modelado profundo de la estructura del programa a través del aprendizaje basado en gráficos multirelacionales. En: Actas de la conferencia internacional ACM sobre arquitecturas paralelas y técnicas de compilación. 2020, pág. 111–23.
[29] Wang H, Ye G, Tang Z, Tan SH, Huang S, Fang D, et al. Combinando el aprendizaje basado en gráficos con la recopilación de datos automatizada para la detección de vulnerabilidades de código. IEEE Trans Inf Forensics Secur 2020;16:1943–58.
[33] Baker BS. Sobre encontrar duplicación y casi duplicación en grandes sistemas de software. En: Actas de la segunda conferencia de trabajo sobre ingeniería inversa. IEEE; 1995, pág. 86–95.
[34] Pewny J, Garmany B, Gawlik R, Rossow C, Holz T. Búsqueda de errores entre arquitecturas en ejecutables binarios. IEEE Comput Soc 2015;709–24.
[37] Jiang L, Misherghi G, Su Z, Glondu S. Deckard: detección escalable y precisa basada en árboles de clones de código. Proc Int Conf Softw Eng 2007;96–105.
[38] Krizhevsky A, Sutskever I, Hinton GE. Clasificación de Imagenet con redes neuronales convolucionales profundas. Adv Neural Inf Process Syst 2012;25:1097–105.

Perspectivas

(1) Use la entropía de la información para decidir si usar un algoritmo de cifrado
(2) Para realizar la función de cifrado o descifrado, el número total de instrucciones no será demasiado pequeño. Cuando el número de instrucciones sea inferior a un número determinado, no podrá ser considerado. La frecuencia de las operaciones aritméticas, las operaciones lógicas y las operaciones de cambio en las funciones centrales de los algoritmos de cifrado es significativamente mayor que la de otras instrucciones de operación (3)
Este documento es relativamente similar al de Where's Crypto. Where's usa el algoritmo de Ullman para la coincidencia isomorfa de subgráficos Este artículo es una evaluación del tipo de algoritmo de cifrado utilizando la distancia vectorial en una red neuronal gráfica.

Supongo que te gusta

Origin blog.csdn.net/qq_33976344/article/details/126365507
Recomendado
Clasificación