Side-channel attacks have been successful in breaking cryptographic protections of systems, by using secret-dependent variations of non-functional properties such as timing or traffic volume. Countermeasures against side-channel attacks usually attempt to eliminate or reduce these variations, which may lead to performance penalties such as increases in the running time of programs, or in the traffic volume they induce. This thesis investigates the trade-off between the security of side-channel countermeasures, and their cost in terms of performance penalties. For this, we seek rigorous answers to two research questions: Q1: How to choose a balance between the security guarantees and the performance penalties of side-channel countermeasures? Q2: How to measure the security of side-channel countermeasures on practical systems? This thesis develops tools that enable the security quantification and the choice of practical countermeasures against side-channel attacks. These tools include the necessary formal models, as well as algorithms and software tools to allow the automatic evaluation of practical systems. In addressing Q1, we develop the first systematic approach for choosing side-channel countermeasures. We do this in a game-theoretic model, where a defender chooses a protection against an adversary who performs an attack. We apply this approach for reasoning about countermeasures against timing attacks, i.e., attacks where an adversary can exploit secret-dependent execution time of programs. We identify cases where leaky countermeasures are preferable to leak-free, constant-time implementations, as they offer better performance without sacrificing security. In addressing Q2, we develop the first tools for the automatic formal quantification of the security of side-channel countermeasures in practical systems. We do this for two types of attacks: cache attacks, where an adversary exploits secret-dependent timing differences due to the use of the CPU cache, and web-traffic attacks, where an adversary exploits secret-dependent differences in the volume of encrypted traffic. To capture cache attacks, we develop the tool CacheAudit, which performs static analysis of x86 binaries, and quantifies their security with respect to cache adversaries. Using CacheAudit, we analyze implementations of AES from the PolarSSL library, as well as of the finalists of the eSTREAM stream cipher competition, and we reason about the effects of architectural features such as cache size and replacement policy to side-channel leakage. Furthermore, we devise novel techniques that provide support for bit-level and symbolic reasoning about pointers in the presence of dynamic memory allocation, which we apply for reasoning about the effectiveness of several widely deployed side-channel countermeasures from the libgcrypt and OpenSSL libraries. To capture web-traffic attacks, we develop scalable algorithms that enable the formal quantification of web-traffic leakage, as well as the generating of provable protections. We apply these algorithms on practical instances of web applications. RESUMEN Los ataques de canal lateral han sido utilizados con éxito para romper sistemas protegidos criptográficamente. Dichos ataques explotan variaciones en propiedades no funcionales que dependen de la clave secreta, como por ejemplo variaciones en el volumen de tráfico web o en el tiempo de ejecución de un programa. Como protección ante estos ataques de canal lateral, normalmente se intenta eliminar o reducir dichas variaciones, lo que puede empeorar la eficiencia, por ejemplo aumentando el tiempo de ejecución de los programas o el volumen de tráfico que producen. En esta tesis se investiga cómo encontrar un balance entre seguridad contra estos ataques y coste en términos de eficiencia. Para ello, intentamos dar una respuesta rigurosa a dos preguntas de clave: P1: ¿Cómo elegir protecciones contra un canal lateral? Es decir, ¿cuál es un buen balance entre seguridad y eficiencia? P2: ¿Cómo medir la seguridad de dichas protecciones contra canales laterales en sistemas reales? En esta tesis se desarrollan herramientas que permiten cuantificar la seguridad y elegir protecciones prácticas contra ataques de canal lateral. Estas herramientas se basan tanto en modelos formales como en algoritmos y software que permiten el análisis automático de sistemas reales. Para contestar a P1, hemos desarrollado un método para elegir protecciones contra canales laterales de forma sistemática. Para ello utilizamos un modelo de teoría de juegos, en el que un defensor elige una protección contra un adversario que intenta llevar a cabo un ataque. Hemos aplicado este modelo para prevenir ataques de tiempo, es decir, ataques en los que un adversario puede deducir información sobre la clave secreta midiendo el tiempo de ejecución de programas, ya que existe una dependencia entre ambos. Hemos encontrado casos en los que permitir ataques de tiempo es preferible a implementaciones en tiempo constante (que son completamente seguras ante estos ataques), ya que se consigue mejor eficiencia sin sacrificar seguridad. En lo referente a P2, hemos desarrollado las primeras herramientas para cuantificar automática y formalmente la seguridad de protecciones contra ataques de canal lateral. Distinguimos entre dos tipos de ataque: ataques de cache, en los que un adversario explota las diferencias de tiempo provocadas por el uso de la caché de CPU; y ataques sobre el volumen de tráfico web, en los que un adversario explota las diferencias de volumen de tráfico encriptado. Para analizar ataques de cache´, hemos desarrollado la herramienta CacheAudit, que a través de un análisis estático de binarios x86 cuantifica la seguridad de éstos contra ataques de este tipo. Utilizando CacheAudit, hemos analizado implementaciones de AES de la librería PolarSSL, así como los esquemas finalistas de la competición de cifrados en flujo eSTREAM. Además, hemos analizado los efectos de diferentes características dependientes de la arquitectura, como el tamaño de la caché o las políticas de reemplazo. Incluso, hemos ideado nuevas técnicas que proporcionan soporte para razonamiento simbólico (a nivel de bit) de punteros en el caso de asignación dinámica de memoria. Aplicando estas técnicas, hemos analizado la efectividad de protecciones ampliamente extendidas y utilizadas de las librerías libgcrypt y OpenSSL. Para analizar ataques sobre el volumen de tráfico web, hemos desarrollado algoritmos eficientes que permiten cuantificar de manera formal el posible filtramiento de información debido al volumen de tráfico, así como proporcionar protecciones confiables. Hemos aplicado estos algoritmos en ejemplos prácticos de aplicaciones web.
展开▼
机译:通过使用与机密有关的非功能属性(例如时间或流量)的变体,边信道攻击已成功突破了系统的密码保护。防范旁信道攻击的对策通常试图消除或减少这些变化,这可能导致性能下降,例如程序运行时间或它们引起的流量增加。本文从性能损失的角度研究了旁通道对策的安全性与代价之间的权衡。为此,我们对两个研究问题寻求严格的答案:问题1:如何在安全保证和旁通道对策的性能惩罚之间选择一个平衡点?问题2:如何在实际系统上衡量侧信道对策的安全性?本文开发了可实现安全量化和针对边信道攻击的实际对策选择的工具。这些工具包括必要的形式模型,以及允许自动评估实际系统的算法和软件工具。在解决第一季度问题时,我们开发了第一个系统的方法来选择边信道对策。我们在博弈论模型中执行此操作,在该模型中,防御者选择针对进行攻击的对手的保护措施。我们采用这种方法来推理针对计时攻击的对策,即攻击者可以利用程序的秘密执行时间来进行攻击的攻击。我们确定在哪些情况下,泄漏对策比无泄漏,恒定时间的实施更可取,因为它们在不牺牲安全性的情况下提供了更好的性能。在解决第2季度问题时,我们开发了第一个工具,用于在实际系统中自动正式量化边信道对策的安全性。我们针对两种类型的攻击执行此操作:高速缓存攻击,其中攻击者利用由于使用CPU高速缓存而导致秘密相关的时间差异;以及网络流量攻击,其中对手利用加密后的通信量中秘密相关的差异。 。为了捕获缓存攻击,我们开发了CacheAudit工具,该工具对x86二进制文件执行静态分析,并量化它们相对于缓存对手的安全性。使用CacheAudit,我们分析了PolarSSL库中AES的实现以及eSTREAM流密码竞争的决赛入围者,并推断了诸如缓存大小和替换策略等架构功能对侧通道泄漏的影响。此外,我们设计了新颖的技术,可在存在动态内存分配的情况下为有关指针的位级和符号推理提供支持,我们将其用于推理来自libgcrypt和OpenSSL库的几种广泛部署的旁通道对策的有效性。为了捕获网络流量攻击,我们开发了可扩展的算法,可对网络流量泄漏进行正式量化,并生成可证明的保护措施。我们将这些算法应用于Web应用程序的实际实例。履历表侧渠han sido utilizados conéxitopara romper sistemas protegidoscriptográficamente。不使用秘密武器的人都可以使用的排泄物,不能使用程序编写的电子变体。运河外侧的保护措施,正常的预期效果,减少的水曲率,有效的临时保护措施,有效的预防性生产的措施。从本质上讲,从整体上看,从经济上到成本上都有所不同。 Pello:P1:¿Cómoelegir protecciones与运河的外侧相对吗? ES DECIR,“需要确保您的平衡能力吗? P2:¿Cómomedir la seguridad de dichas protecciones与Canaleslaterales en Sistemas Reales?沿途保留所有必要的许可证,以确保其在运河沿岸的安全。可以使用算法自动生成软件的软件。 P1竞赛对等体,血统与血统之间的矛盾。绝地求生者的效用模型,反抗者的抗辩性和反抗性。埃姆斯·阿普里卡多·埃斯特·莫里斯·埃普尔·德·埃姆·皮埃尔·德·埃姆·皮埃尔·埃德奎尔,因为两者之间存在依赖性。我们发现,允许时间攻击优于固定时间部署(对于这些攻击是完全安全的),因为在不牺牲安全性的情况下可以获得更好的效率。关于P2,我们开发了第一个工具来自动和形式化地量化针对侧信道攻击的保护的安全性。我们将攻击分为两种类型:缓存攻击,一种攻击者利用由CPU缓存引起的时间差;以及对网络流量的攻击,在这种攻击中,攻击者利用加密流量的差异。为了分析缓存攻击,我们开发了CacheAudit工具,该工具通过对x86二进制文件的静态分析来量化其针对此类攻击的安全性。使用CacheAudit,我们分析了PolarSSL库的AES实现以及eSTREAM流加密竞赛的最终方案。此外,我们分析了与体系结构有关的不同功能的影响,例如缓存大小或替换策略。我们甚至已经设计出了新技术,在动态内存分配的情况下,该技术为指针的符号(位级)推理提供了支持。应用这些技术,我们分析了来自libgcrypt和OpenSSL库的广泛使用和扩展的保护的有效性。为了分析对网络流量的攻击,我们开发了有效的算法,可以对由于流量造成的信息泄漏进行正式量化,并提供可靠的保护。我们已将这些算法应用于Web应用程序的实际示例中。
展开▼