it-swarm-tr.com

Kriptografiyi / kriptanalizi zor bir şekilde, okula gitmeden nereden öğrenebilirim? İyi bir kitap var mı?

Matematikte o kadar da kötü değilim:

P-listesi ve p-kombinasyonlarının ne olduğunu biliyorum, matris cebirini biliyorum, XOR nedir, sayının asal olup olmadığını nasıl anlayacağımı biliyorum): matematikten nefret ettiği için programcı kötü, ama yine de doktora yapmadım.

Ben de en azından genel bilgisayar bilimi kültürü açısından bir bilgisayar bilimleri kötü değilim:

C, C++ (her ikisi de okulda öğrenildi), python, bazı haskell, hangi metin kodlamanın orada olduğunu, UNICODE'un nasıl çalıştığını biliyorum, bir dosyanın nasıl sıkıştırılabileceğini veya şifrelenebileceğini, orada hangi yaygın algoritmaların olduğunu biliyorum (diffie-hellman, LZMA algoritması, DES, AES, Serpent, Blowfish, SHA, MD5 ...). Wikipedia'da veya diğer web sitelerinde kriptografi ile çok ilgileniyorum, ancak wikipedia'nın algoritmaları detaylandırmadan veya pratik yapmadan bana şifreleme öğretebileceğini sanmıyorum; örneğin eşzamanlı şifrelemenin ne olduğunu ve eşzamansız (genel/özel anahtar) olduğunu biliyorum.

En popüler algoritmaları nasıl düzgün ve güvenli bir şekilde uygulayacağınızı ve bunları nasıl güvenilir hale getireceğinizi öğrenmek istiyorum: bir kitap veya iyi eğitimler veya kurslar. Hızlı bir şekilde Khan Academy'yi araştırdım, ancak bu konu önemsiz değil ve hem matematik, bilgisayar bilimleri hem de elektronik konularında bilgi gerektiriyor.

Zaten bildiğim veya bugünün kriptografisiyle ilgili olmayan, bir araştırmacı tarafından yazılmış bir kağıt, sadece pratik, problemli ve kriptanaliz problemleri gibi temel şeylerle ilgili teorik sayfalar ve sayfalar okumak istemiyorum, Öğrenciler için.

Şu anda çok fazla boş zamanım var, sadece 26 yaşındayım ve eminim bu şeyleri öğrenebilirim, sadece getirebileceği ücret artışı için değil, aynı zamanda gerçekten anlamadan kriptografiden her zaman büyülenmiş olduğum için, İyi bir malzeme bulamıyorum.

39
jokoon

(LZMA, şifreleme değil, bir sıkıştırma algoritmasıdır.)

uygulamak kriptografik algoritmalar için, genel yöntem ilgili açıklayıcı standardı almak, klavyenizi kapmak ve denemek. Çoğu standart "test vektörleri", yani uygulamanızın doğru cevapları döndürüp döndürmediğini size bildiren örnek değerleri içerir. Bu noktada, ne tür bir algoritmayı düşündüğünüze bağlı olarak işler farklılık gösterir.

Simetrik şifreleme:

Simetrik algoritmalar, simetrik şifrelemeyi, sağlama işlevlerini ve mesaj kimlik doğrulama kodlarını (MAC) kapsar. Bunlarla başa çıkmak için çok fazla matematik bilmenize gerek yoktur; çoğu 32 bit ve 64 bit tamsayıların eklenmesi ile ilgilidir (bu modüler aritmetik, 232 veya 264 modül olarak) ve bitsel işlemler (XOR, AND ...).

Bu kod genellikle C'de yapılır. İyi bir performans, C derleyicisinin kodu nasıl anlayacağı ve CPU için talimatlara çevireceği hakkında bazı fikirlere sahip olarak elde edilir; Meclis bilgisi kesinlikle zorunlu değildir, ancak oldukça yararlıdır. Önemli bir parametre önbellektir: loop unrolling genellikle iyi bir araçtır, ancak aşırıya kaçarsanız performans keskin bir şekilde düşer.

Klasik karma işlevlerini ( FIPS 180- 'de açıklanan SHA ailesi) uygulayarak ve onları hızlı yapmaya çalışarak başlamanızı öneririm. Bir karşılaştırma noktası olarak, OpenSSL edinin ve ne tür bir performans elde edilebileceğini görmek için openssl speed Komut satırı aracını kullanın (bu araç herhangi bir Linux dağıtımına zaten dahil edilmiştir ve Windows ve MacOS üzerinde de çalışır). Örneğin, bilgisayarımda:

$ openssl speed sha256
Doing sha256 for 3s on 16 size blocks: 4842590 sha256's in 3.00s
Doing sha256 for 3s on 64 size blocks: 2820288 sha256's in 2.99s
Doing sha256 for 3s on 256 size blocks: 1262067 sha256's in 2.99s
Doing sha256 for 3s on 1024 size blocks: 395563 sha256's in 3.00s
Doing sha256 for 3s on 8192 size blocks: 53564 sha256's in 3.00s
OpenSSL 0.9.8o 01 Jun 2010
built on: Wed Feb 23 00:47:27 UTC 2011
options:bn(64,64) md2(int) rc4(ptr,char) des(idx,cisc,16,int) aes(partial) blowfish(ptr2) 
compiler: cc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN
-DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -g -Wall -DMD32_REG_T=int
-DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
sha256           25827.15k    60367.37k   108056.57k   135018.84k   146265.43k

yani OpenSSL, Mecliste elle optimize edilmiş bir SHA-256 uygulaması içerir; Aynı makinede, saf bir C uygulaması en az 130 MB/sn'ye ulaşmalıdır.

Karma işlevlerinin C ve Java'da nasıl uygulandığına ve karma hızının anlamlı bir şekilde nasıl ölçülebileceğine ilişkin bir örnek için bkz. sphlib .

Daha sonra simetrik şifrelemeyi, özellikle AES'yi deneyebilirsiniz ( FIPS 197 ). Karakteristik 2'nin sonlu bir alanının ne olduğunu bilmek biraz yardımcı olur, ancak standart size mükemmel bir uygulamada rehberlik edecek kadar açıktır. Ardından, şeyleri optimize etmeye çalışın. OpenSSL bir karşılaştırma noktası olarak hizmet verebilir ve Brian Gladman'ın AES uygulamalarından ilham alabilir. Güvenlikle ilgili olarak, uygulamada arama tabloları kullanılarak hangi anahtara bağımlı bilgilerin sızdırılabileceği konusunda bazı endişeler olmuştur ("AES önbellek zamanlaması saldırısı" aramaya çalışın); bu tür bir saldırıyı yeniden üretmeye çalışmak çok iyi bir egzersizdir (dikkat edin, kolay değil, ancak laboratuvar koşullarında göstermeyi başarırsanız, kriptografik uygulamaların nasıl çalıştığı hakkında iyi bir şey öğrenmiş olacaksınız).

Asimetrik şifreleme:

Asimetrik şifreleme, birden fazla tarafı içeren algoritmalarla ilgilidir. Buna asimetrik şifreleme (RSA, ElGamal), anahtar değişimi (Diffie-Hellman) ve dijital imzalar (tekrar RSA, DSA ...) dahildir. Matematik içerikleri orada çok daha büyüktür ve optimizasyon simetrik kriptografiden çok daha geniş bir konudur, çünkü tek bir "açık" uygulama yolu yerine her algoritmayı uygulamanın birkaç yolu vardır.

İyi bir referans Eliptik Eğri Şifrelemesi Kılavuz . Esas olarak eliptik eğrilerle ilgili olmasına rağmen, sonlu alanlardaki işlemlerin uygulanmasına ilişkin genel bir işlem içerir ve bu, yukarıda bağlantılı URL'den ücretsiz olarak indirilebilen örnek bölümdür. Şimdi alın ve şimdi okuyun. Başka bir vazgeçilmez referans özgürce indirilebilen Uygulamalı Şifreleme El Kitabı ; özellikle bölüm 14, etkili uygulama ile ilgilidir.

RSA yeterince basittir ve PKCS # 1 bölümünde yeterince açıklanmıştır. Maskeleme ile karşı karşıya kalan RSA'da zamanlama saldırıları olabilir (evet, bu bir "araştırmacı tarafından yazılmış bir kağıttır", ancak kriptografi konusunda araştırmacılar neler olduğunu anlayan insanlardır ) üzerinde. Modüler aritmetiği asarsanız DSA ( FIPS 186- ) uygulamayı deneyebilirsiniz. Diffie-Hellman matematiksel olarak basittir (DSA'yı uygulamak için gerekenden daha fazlasına ihtiyaç duymaz), ancak tanımlayıcı standardı (ANSI X9.42) ücretsiz olarak indirilemez.

Eliptik eğriler modüler aritmetik için gelecekteki popüler bir alternatiftir; DSA ve Diffie-Hellman'ın EC varyantları, daha kısa genel anahtarlarla daha hızlıdır ve daha güvenli olduğuna inanılmaktadır. Ama bu daha çok matematik. Burada yine, Eliptik Eğri Şifrelemesi Kılavuzu mutlaka referanstır.

Başka tür asimetrik şifreleme algoritmaları vardır, ör. McEliece şifreleme sistemi (asimetrik şifreleme; Niederreiter ) ve kafes azaltmaya dayalı algoritmalar ile tanımlanan imzalar için bir varyant vardır. Ancak, uygulama ayrıntılarıyla ilgilenen yayınlanmış standartlardan (henüz) yararlanmazlar ve karşılaştırılacak çok fazla uygulama yoktur. RSA ve DSA ile başlasanız iyi olur.

Kriptanaliz:

Kriptanaliz uygulamadan çok daha yüksek bir matematik dozu kullanır.

Simetrik kriptografi için iki ana araç diferansiyel ve doğrusal kriptanalizdir; bkz. bu öğretici .

Kriptografiye giden kendi yolum DES'i uygulamak ve daha sonra DES (16 yerine 8 mermi) indirgenmiş versiyonuna Matsui'nin doğrusal kriptanalizini uygulamakla başladı. DES resmi olarak geri çekilmiş ancak yine de kullanılabilen FIPS 46- içinde açıklanmaktadır. DES'den Triple-DES (üç DES örneği tanımlanabilir, üç farklı anahtar, ortadaki "şifre çözme" yönünde kullanılır) ve yayınlanır test vectors Triple-DES ("TDES", "3DES" veya bazen "DES" olarak da bilinir) ve bu da tartışmasız kafa karıştırıcıdır.

Asimetrik algoritmalar için, kriptanaliz çoğunlukla tuşların matematiksel yapısı üzerinde çalışmayı içerir; RSA varyantlarını kırmak için factor büyük asal olmayan tam sayıları deneyerek. Buradaki matematik önemsizden tamamen hayal edilemeze kadar uzanıyor, bu yüzden bu RSA'yı kırmaya çalışarak kriptografiye başlamak için çok dik bir öğrenme eğrisi olabilir ...

46
Thomas Pornin

İki şey, gerçekten:

  1. İyi bir kitap al. Bruce Schneier'in “Uygulamalı Kriptografi” yeterlidir.
  2. 'Openssl' araçlarını ve bunları kullanmayı öğrenin.

Kripto hakkında öğrenilecek en önemli şey alçakgönüllülüktür. Hiçbir zaman yeni bir çözüm oluşturmak istemezsiniz - başkaları tarafından iyi test edilmiş çözümleri en iyi şekilde kopyalamak istersiniz. Kripto arızalarının çoğu, mevcut bir çözüm üzerinde iyileştirmek için bazı optimizasyonlar yapabileceğini düşünen parlak bir fikri olan insanlardan kaynaklanmaktadır. Sonunda bir şeyler yapmanın yeni yollarını bulmayı başaran sadece son derece alçakgönüllüdür.

Bir sonraki ders, bir bilgisayar korsanının bir bilgisayara oturduğu ve kriptoyu kırdığı TV ve filmlerden aldığınız önyargılarınızı öğrenmenizdir. Bunlar ya kripto ile ilgisizdir ya da gerçekte olanların dramatizasyonu. Örneğin, "Sneaker" filmi, birisi büyük tamsayıları etkileyebilecek bir çip geliştirdiğinde ne olacağını dramatize eder.

Kripto öğrenmede en zor şey, alanı genel olarak anlamak için gerekli olan teknik kavramları ve sadece dar bir alanda uzmanlaştığınızda ihtiyaç duyacağınız kavramları ayırt etmektir. Örneğin, yukarıdaki yüksek puan alan gönderiyi ele alalım. "Simetrik" bir algoritma ile "asimetrik" bir algoritma ve bir "karma" arasındaki farkı anlamanız gerekir, ancak bu yazının yazarı "Karakteristik 2'nin sonlu alanının ne olduğunu bilmek biraz yardımcı olur", Katılmıyorum: sadece kriptoyu araştıran doktoralar için anlamlıdır, geri kalanını değil, doğru şekilde nasıl kullanılacağını anlamak istiyoruz.

Teknik ayrıntıları gözden geçirmenin iyi bir yolu bir hedef seçmek ve geriye doğru çalışmaktır. Örneğin, bugün, Apple, X.509 sertifika zincirlerinin doğrulanmasındaki bir hatayı düzeltmek için iPhone/iPad işletim sistemini 4.3.5 sürümüne güncelledi. Sorunu ve neden düzeltmeleri gerektiğini anlama tam olarak orijinal postanızda tartıştığınız bir şeydir.X.509 sertifikasının ne olduğunu, zincirlerin ne olduğunu ve neden doğrulanması gerektiğini ve neden yoksa bir hacker'ı 'sslsniff' gibi bir araç şifrelemeyi alt edebilir.Tüm bunları tam olarak anladıktan sonra, orijinal yayında tanımladığınız hedefinizin çoğuna ulaşmış olacaksınız.

Başka bir örnek Comodo Hacker'ın anahtarını doğrulama hakkındaki blog yazısı

Yine, Comodo bilgisayar korsanının ne yaptığını (Google ve Yahoo için imzalı sertifikalar oluşturduğunu), sertifika iptali'nin nasıl çalıştığını ve bu sertifikayı doğrulamak için araçların nasıl kullanılacağını öğrenin. Bunu iyi bir gönderi olarak öneriyorum çünkü sektörümüzde standart olan 'openssl' araçlarını kullanmak için iyi bir başlangıç ​​noktası.

İyi şanslar!

10

Gelecek Ocak'ta başlayacak olan Stanford'un çevrimiçi Şifreleme sınıfı 'a kaydolun. Ücretsiz, çevrimiçi, hem teori (video dersleri ve sınavlar) hem de uygulama (programlama ödevleri) içerir, kendi hızınızda çalışalım ve başarılı olursanız bir başarı ifadesi alırsınız. Stanford'un önceki çevrimiçi kurs oturumunda aldığım çeşitli yankılar göz önüne alındığında, kesinlikle bu sınıfa (Bilgisayar Güvenliği yanı sıra) kaydoluyorum.

  • Teori tarafında:

Kriptografi Mühendisliği Tasarım İlkeleri ve Pratik Uygulamalar, Niels Ferguson ve Bruce Schneier. Kitap saygıdeğer Uygulamalı Kriptografi bir güncelleme olması amaçlanmıştır, yazarlar alanında iyi bilinir ve incelemeler iyi.

  • Uygulama tarafında:

Çeşitli CTF (Capture The Flag) saldırı/güvenlik yarışmalarına göz atabilirsiniz. Genellikle Şifreleme zorluklarını içerir. Eğlencelidirler ve sorunları sınırlı bir süre içinde çözmek için sizi rahatlık alanınızdan çıkarırlar. İşte iyi bir CTF Takvimi . Ayrıca, önceki CTF'lerin bazı yazılarına bakın, çok eğitici ve iyi açıklanmış buldum.

10
kroosec

Kripto algoritmaları için:

Stinson Kriptografi: Teori ve Uygulama

birçok kripto algoritmasının matematiğini, onları yapmak istediğiniz buysa, bunların uygulanmasını oldukça kolaylaştıracak şekilde geçirir.

Scheiner's Applied Cryptography da bu konuda önde gelen bir kitap. Muhtemelen biraz farklı, ancak bazı farklı algoritmalarla çakışıyor.

Size bunları nasıl uygulayacağınızı açıkça anlatan bir kitap kadar - hiçbir şeyim yok. Ticari olarak, bunlar her zaman yazılımda uygulanmaz ve oldukça niş bir endüstridir. Bir oyun perspektifinden bakıldığında, algoritmayı açıklayan bir kitap alın, onu uygulayın ve sonucunuzu aynı algoritma için yaygın olarak kullanılan bir kütüphane ile karşılaştırın.

Benzer şekilde, kriptanaliz hakkında hiçbir şeyim yok, ancak "zayıflık" ve "zayıf anahtarlar" gibi şeyler için bir algoritma ve google seçerseniz bazı ilginç makaleler ve diğer bilgiler bulacaksınız. Son kez böyle bir şey (10 yıl + önce) hakkında bir makale yazmak zorunda kaldım, aslında yaptığım şey ...

6
bethlakshmi

Tavsiye ederim Kriptografi Mühendisliği: Tasarım İlkeleri ve Pratik Uygulamalar . Sizin için mükemmel bir kitap. Bir sistem tasarımcısı ve uygulayıcısı açısından kriptosistemlerin nasıl tasarlanacağını ve uygulanacağını açıklar. Çok pragmatik bir kitap, yazarların yılların deneyiminden elde edilen bir bakış açısıyla. Başlıkta bulunan "mühendislik" kelimesi gerçekten uygun. Bence, enerjinizin çoğunu endişelenmeniz gereken şey, neyin yanlış gidebileceği ve bu kötü şeylerin başınıza gelmediğinden nasıl emin olacağınız konusunda öncelik vermenize yardımcı olan çok değerli bir kaynak bulacaksınız.

4
D.W.

Ayrıca, zaten bazı programlama becerileriniz olduğu için Matasano kripto zorlukları 'a bir göz atmanızı da ekleyebilirim.

Web sitelerinden:

NE KADAR KRİPTO BİLMELİYİM? Yok. Mesele bu.

Peki NE BİLMEM GEREKİR? Herhangi bir dilde yetkin bir şekilde kod yazabilmek isteyeceksiniz. C, C++, Python, Ruby, Perl, Visual Basic, X86 Assembly, Haskell ve LISP'de sunumlar aldık.

Tüm zorlukları gerçek dünyadaki kripto güvenlik açıklarına dayanmaktadır, bu yüzden bunları çözen güzel şeyler öğrenmelisiniz.

3
ack__

Kriptografi teorisini uygulayıcılar için erişilebilir bir şekilde yazılmış herhangi bir anlayış istiyorsanız, Katz ve Lindell tarafından "Modern Kriptografiye Giriş" i deneyin.

3
user432944

Kriptografiyi sıfırdan öğrenmek bazen zor bir şey gibi hissedebilir, ancak doğru kaynaklara sahipseniz kesinlikle seveceksiniz. Aşağıda, bugün şifreleme öğrenmeye başlamanız için favori sitelerim var.

  1. Kifanga'da kriptografiyi öğrenin yeni başlayanlar için daha ileri seviyelere.
  2. Pratik şifreleme kriptanaliz makaleleri için gerçekten iyi
  3. Learncryptography karma işlevler için harika
0
chris pete