How to Efficiently Implement Cryptographic Primitives
Transkript
How to Efficiently Implement Cryptographic Primitives
Tutorial How to Efficiently Implement Cryptographic Primitives in a Secure Way: An Introduction The aim of this tutorial is to give an insight of secure and efficient implementations of cryptographic primitives. In this tutorial, we will examine the software implementations of cryptographic primitives in terms of security and efficiency. In the security side, we will analyze the methods that are used to avoid secret leakage by the running time of the code, and the attacks which targets cache usage of the crypto libraries and also we will discuss about how to write code that invulnerable/resistant to this kind of attacks. In the efficiency side, we will show how to improve running time and resource usage of the code while keeping in mind the security issues. In security part of this tutorial, we will examine to dependence of running time and secrets, and show effects of conditional structures with the help of implementation examples. We will emphasize to make use of the balancing the cost of all conditions method, which is mostly used method in literature, and we will create awareness about this attack with showing good and bad coding samples from everyday usage. Afterwards, we will focus on cache, which used by processors to reduce communication costs, and introduce the attacks that targeting cache usage of the crypto libraries. Also we will provide some examples on how to prevent this kind of attacks. In the efficiency part of this tutorial, we will write some toy codes on single-core performance engineering and also identifying and building a solution to hotspots and bottleneck of the code. We will examine most common parts of crypto libraries, such as multi precision and polynomial arithmetic, and re-implement efficient codes which used in literature for them. Then, we will show how to use vectorial instruction set extensions to gain performance for recent processors. In addition to this, we will examine to basics of optimizing resource usage of the cryptographic implementations. This tutorial is scheduled for 3 hours. The number of participants is limited to 30. Outline • • • • • • Introduction to cryptographic primitives Implementation attacks Basics of secure implementations Efficiency metrics Examples (RSA, polynomial multiplication) Case studies Target Audience This tutorial assumes a basic knowledge of public key cryptographic schemes. It does not cover theoretical mathematics. This tutorial is for the cryptographic protocol designers and software developers from academia and industry. Instructors Erdem Alkım, Ege University, http://erdemalkim.github.io/ Sedat Akleylek, Ondokuz Mayıs University, https://sites.google.com/a/bil.omu.edu.tr/akleylek/home Free Registration : (selected applicants will be informed via e-mail on September 26) http://goo.gl/forms/6O9mhe3ubf0fCqzL2 Deadline : September 25, 2016 Eğitim Kriptografik Algoritmaların Verimli Çalışacak Şekilde Güvenli Yazılım Uygulamalarına Giriş Bu eğitimin amacı katılımcılara kriptografik yapıların güvenli ve verimli bir şekilde uygulama yöntemlerini kavratmaktır. Bu eğitimde kriptografik yazılım geliştirirken dikkat edilmesi gereken konular performans ve güvenlik olarak iki başlıkta ele alınacaktır. Güvenlik kısmında programın çalışma süresinin gizli bilgilerin sızdırmasının önüne geçmek için kullanılan yöntemler tanıtılacak ve cache kullanımını hedef alan saldırılar hakkında bilgi verilip tedbir yöntemleri tartışılacaktır. Performans kısmında ise bu güvenlik problemleri dikkate alınarak uygulamaların çalışma sürelerinin kısaltılması ve sistem kaynaklarının kullanımının iyileştirmesi konusunda çalışmalar yapılacaktır. Eğitimin güvenlik bölümünde ilk olarak uygulamanın çalışma süresinin gizli verilerden bağımsız hale getirilmesi konusunda özellikle koşullu yapıların etkileri anlatılarak bu konuda örnekler yapılacaktır. Bu konuda literatürde sıkça kullanılan, bütün koşulların işlem yüklerinin eşitlenmesi konusundaki iyi ve kötü örnekler gösterilerek bu tip saldırılar hakkında farkındalık oluşturulacaktır. Daha sonra cache yapısı üzerinde durularak işlemcilerin veri iletişimini azaltmak için kullandığı hafıza birimlerinin saldırılarda nasıl kullanıldığı hakkında bilgi verilecek ve bunun önüne geçmek için kullanılan yöntemler uygulamalarla gösterilecektir. Eğitimin performans bölümünde ise tek çekirdek performansı ve kodun yavaşlamaya sebep olan kısımlarının tespit edilmesi ve düzeltilmesi üzerine uygulamalar yapılacak, kriptografik yazılım geliştirmede sıkça kullanılan çok basamaklı çarpım polinom çarpımı gibi algoritmalarda kullanılan yöntemler tanıtılacak ve vektör işlem birimlerinin uygulamanın çalışma süresinin kısaltılması için kullanılması konusunda örnekler yapılacaktır. Ayrıca uygulamaların sistem kaynaklarını kullanmasının iyileştirmesi konusunda örnek uygulamalar yapılarak temel yöntemler gösterilecektir. Bu eğitim 3 saat olarak planlanmıştır. Katılımcı sayısı 30 ile sınırlıdır. İçerik • • • • • • Kriptografik yapılara giriş Uygulama saldırıları Güvenli uygulama temelleri Verimlilik ölçekleri Uygulamalar (RSA, polinom çarpımı) Örnek Uygulamalar Hedef Kitle Bu eğitim için, katılımcılar, açık anahtarlı sistemler hakkında temel bilgiye sahip olmalıdır. Eğitimde teorik altyapı verilmeyecektir. Bu eğitim akademiden ve özel sektörden kriptografik protokol tasarımcıları ve yazılım geliştiriciler için hazırlanmıştır. Eğitimciler Erdem Alkım, Ege Universitesi, http://erdemalkim.github.io/ Sedat Akleylek, Ondokuz Mayıs Universitesi, https://sites.google.com/a/bil.omu.edu.tr/akleylek/home Başvuru (seçilen katılımcılara 26 Eylül 2016 tarihinde bilgilendirme iletisi gönderilecektir) http://goo.gl/forms/6O9mhe3ubf0fCqzL2 Son Başvuru Tarihi : 25 Eylül 2016