SHA-1: Revizyonlar arasındaki fark

Vikipedi, özgür ansiklopedi
[kontrol edilmemiş revizyon][kontrol edilmemiş revizyon]
İçerik silindi İçerik eklendi
İsmailgok33 (mesaj | katkılar)
Önceli değişikliğin devamı.(Devam edecek)
İsmailgok33 (mesaj | katkılar)
Değişiklik özeti yok
1. satır: 1. satır:
'''SHA-1 (Secure Hash Algorithm 1)''' NSA (National Security Agency) tarafından dizayn edilmiş ve NIST (National Institute of Standarts and Technology) tarafından yayınlanmış bir Amerika Birleşik Devletleri Federal Bilgi İşleme Standartı (Federal Information Processing Standard)'dır. SHA-1, mesaj özeti olarak da bilinen 160-bit özet değeri üretir. Bir SHA-1 özet değeri genellikle 40 basamaklı bir onaltılık sayı olarak üretilir.
'''SHA-1 (Secure Hash Algorithm 1)''' NSA (National Security Agency) tarafından dizayn edilmiş ve NIST (National Institute of Standarts and Technology)<ref name=":0">http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf</ref> tarafından yayınlanmış bir Amerika Birleşik Devletleri Federal Bilgi İşleme Standartı (Federal Information Processing Standard)'dır. SHA-1, mesaj özeti olarak da bilinen 160-bit özet değeri üretir. Bir SHA-1 özet değeri genellikle 40 basamaklı bir onaltılık sayı olarak üretilir.


SHA-1 artık güvenli bir algoritma olarak düşünülmemektedir. Kriptanalistlerin 2005'te yaptığı bir saldırıyla SHA-1'in devam eden kullanım için<ref>{{cite web|url=https://www.schneier.com/blog/archives/2005/02/cryptanalysis_o.html |title=Schneier on Security: Cryptanalysis of SHA-1|date=February 18, 2005|last=Schneier|first=Bruce }}</ref> yeterince güvenli olmadığını ispatladılar.<ref>{{cite web|url=https://www.schneier.com/blog/archives/2005/02/cryptanalysis_o.html |title=Schneier on Security: Cryptanalysis of SHA-1|date=February 18, 2005|last=Schneier|first=Bruce }}</ref> Bu yüzden 2010'dan beri SHA-1 yerine daha güvenli olan SHA-2 veya SHA-3<ref>{{cite web|url=http://csrc.nist.gov/groups/ST/toolkit/secure_hashing.html|title=NIST.gov - Computer Security Division - Computer Security Resource Center|publisher=}}</ref><ref name="shappening" /><ref>{{cite web|url=https://www.schneier.com/blog/archives/2015/10/sha-1_freestart.html |first=Bruce |last=Schneier |date=8 October 2015 |title=SHA-1 Freestart Collision |work=Schneier on Security}}</ref> öneriliyor. 2017 itibariyle ise Microsoft<ref>{{cite web | url=http://social.technet.microsoft.com/wiki/contents/articles/32288.windows-enforcement-of-authenticode-code-signing-and-timestamping.aspx | title=Windows Enforcement of Authenticode Code Signing and Timestamping | publisher=Microsoft | date=2015-09-24 | accessdate=2016-08-07}}</ref>, Google<ref>{{cite web | url=https://groups.google.com/a/chromium.org/d/msg/blink-dev/2-R4XziFc7A/i_JipRRJoDQJ | title=Intent to Deprecate: SHA-1 certificates | publisher=Google | date=2014-09-03 | accessdate=2014-09-04}}</ref>, Apple<ref>{{cite web | url=https://support.apple.com/HT207459 | title=Safari and WebKit ending support for SHA-1 certificates - Apple Support | publisher=Apple Inc. | date=2017-01-24 | accessdate=2017-02-04}}</ref> ve Mozilla<ref>{{cite web | url=https://bugzilla.mozilla.org/show_bug.cgi?id=942515 | title=Bug 942515 - stop accepting SHA-1-based SSL certificates with notBefore >= 2014-03-01 and notAfter >= 2017-01-01, or any SHA-1-based SSL certificates after 2017-01-01 | publisher=Mozilla | accessdate=2014-09-04}}</ref><ref>{{cite web | url=https://wiki.mozilla.org/CA:Problematic_Practices#SHA-1_Certificates | title=CA:Problematic Practices - MozillaWiki | publisher=Mozilla | accessdate=2014-09-09}}</ref><ref>{{cite web | url=https://blog.mozilla.org/security/2014/09/23/phasing-out-certificates-with-sha-1-based-signature-algorithms/ | title=Phasing Out Certificates with SHA-1 based Signature Algorithms <nowiki>|</nowiki> Mozilla Security Blog | publisher=Mozilla | date=2014-09-23 | accessdate=2014-09-24}}</ref> SSL sertifikalarından SHA-1 desteğini çekeceklerini açıkladılar.
SHA-1 artık güvenli bir algoritma olarak düşünülmemektedir. Kriptanalistlerin 2005'te yaptığı bir saldırıyla SHA-1'in devam eden kullanım için yeterince güvenli olmadığını ispatladılar. Bu yüzden 2010'dan beri SHA-1 yerine daha güvenli olan SHA-2 veya SHA-3 öneriliyor. 2017 itibariyle ise Microsoft, Google, Apple ve Mozilla SSL sertifikalarından SHA-1 desteğini çekeceklerini açıkladılar.


23 Şubat 2017'de CWI Amsterdam ve Google SHA-1'e çakışma saldırısı yaptıklarını duyurdular ve iki farklı PDF dosyasının aynı SHA-1 özetini ürettiklerini kanıtladılar.
23 Şubat 2017'de CWI Amsterdam ve Google SHA-1'e<ref>{{Cite news|url=https://phys.org/news/2017-02-cwi-google-collision-industry-standard.html|title=CWI, Google announce first collision for Industry Security Standard SHA-1|access-date=2017-02-23}}</ref><ref name=googleblog>{{Cite blog|url=https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html|title=Announcing the first SHA1 collision|date=2017-02-23|access-date=|website=Google Online Security Blog|last=|first=|archive-url=|archive-date=|dead-url=}}</ref> çakışma saldırısı yaptıklarını duyurdular ve iki farklı PDF dosyasının aynı SHA-1 özetini ürettiklerini kanıtladılar.<ref>{{cite web | url=https://shattered.io/ | title=SHAttered | accessdate=2017-02-23}}</ref>


== Gelişimi ==
== Gelişimi ==
SHA-1 ile üretilen mesaj özeti, Ronald L. Rivest tarafından tasarlanmış MD4 ve MD5 algoritmaları ile üretilen mesaj özetlerine benzer fakat daha sade bir yapıdadır.
SHA-1 ile üretilen mesaj özeti, Ronald L. Rivest tarafından tasarlanmış MD4 ve MD5 algoritmaları ile üretilen mesaj özetlerine benzer fakat daha sade bir yapıdadır.


SHA-1 Amerika Birleşik Devletlerinin '''Capstone Projesi''' kapmasında üretilmiştir. Algoritmanın orijinal özellikleri NIST (National Institute of Standards and Technology) tarafından 1993 yılında ''Güvenli Özet Standartı, FIPS PUB 180'', başlığı altında yayınlandı.(18-19). Bu versiyon şu anda SHA-0 olarak bilinmektedir. Bu versiyon NSA tarafından yayınlanmasından kısa bir süre sonra geri çekilerek tekrar gözden geçirilmiş ve 1995 yılında FIPS PUB 180-1'de SHA-1 olarak yayınlanmıştır. SHA-1'in SHA-0'dan tek farkı, SHA-1'in sıkıştırma fonksiyonundaki mesaj planındaki bir bit işlemi rotasyonudur. NSA'ya göre bu işlem orijinal algoritmadaki şifreleme güvenliğini azaltan bir hatayı çözmek için yapılmıştır, fakat NSA bunun hakkında daha fazla bilgi paylaşmamıştır. Gerçekten de SHA-0 bilinen tekniklerle SHA-1'den daha önce kırılmıştır.
SHA-1 Amerika Birleşik Devletlerinin '''Capstone Projesi'''<ref>[http://x5.net/faqs/crypto/q150.html RSA FAQ on Capstone]</ref> kapmasında üretilmiştir. Algoritmanın orijinal özellikleri NIST (National Institute of Standards and Technology) tarafından 1993 yılında ''Güvenli Özet Standartı, FIPS PUB 180'', başlığı altında yayınlandı.(18-19).<ref>{{cite book|last1=Selvarani|first1=R.|last2=Aswatha|first2=Kumar|last3=T V Suresh|first3=Kumar|title=Proceedings of International Conference on Advances in Computing|page=551|url=https://books.google.fr/books?id=L2OFg7OiV9YC&pg=PA551&lpg=PA551&f=true#v=onepage&q&f=true}}</ref><ref>{{citation|title=Secure Hash Standard, Federal Information Processing Standards Publication FIPS PUB 180|institution=National Institute of Standards and Technology|date=11 May 1993}}</ref> Bu versiyon şu anda SHA-0 olarak bilinmektedir. Bu versiyon NSA tarafından yayınlanmasından kısa bir süre sonra geri çekilerek tekrar gözden geçirilmiş ve 1995 yılında FIPS PUB 180-1'de SHA-1 olarak yayınlanmıştır. SHA-1'in SHA-0'dan tek farkı, SHA-1'in sıkıştırma fonksiyonundaki mesaj planındaki bir bit işlemi rotasyonudur. NSA'ya göre bu işlem orijinal algoritmadaki şifreleme güvenliğini azaltan bir hatayı çözmek için yapılmıştır, fakat NSA bunun hakkında daha fazla bilgi paylaşmamıştır. Gerçekten de SHA-0 bilinen tekniklerle SHA-1'den daha önce kırılmıştır.


== Uygulamaları ==
== Uygulamaları ==


=== Kriptografi ===
=== Kriptografi ===
SHA-1 TLS, SSL, PGP, SSH, S/MIME ve IPsec gibi birçok güvenlik uygulaması ve protokolünün bir parçası olarak kullanılmaktadır. Bu uygulamarda SHA-1 yerine MD5 da kullanılabilemektedir. Hem SHA-1 hem de MD5, MD4'ten yola çıkılarak tasarlanmışlardır. Ayrıca SHA-1 Git, Mercurial ve Monotone gibi dağıtık revizyon kontrol sistemlerinde revizyonların belirlenmesinde ve veri bozulmalarının ve/veya müdahalelerinin algılanmasında kullanılmaktadır. Algoritma Nintedo Wii oyun konsollarında booting sırasında imza doğrulaması sağlamak için kullanılmıştır, fakat algoritmanın ilk uygulanmasında saldırganların sistemin güvenlik planını rahatlıkla geçebildiği önemli bir açık oluşmuştur.
SHA-1 TLS, SSL, PGP, SSH, S/MIME ve IPsec gibi birçok güvenlik uygulaması ve protokolünün bir parçası olarak kullanılmaktadır. Bu uygulamarda SHA-1 yerine MD5 da kullanılabilemektedir. Hem SHA-1 hem de MD5, MD4'ten yola çıkılarak tasarlanmışlardır. Ayrıca SHA-1 Git, Mercurial ve Monotone gibi dağıtık revizyon kontrol sistemlerinde revizyonların belirlenmesinde ve veri bozulmalarının ve/veya müdahalelerinin algılanmasında kullanılmaktadır. Algoritma Nintedo Wii oyun konsollarında booting sırasında imza doğrulaması sağlamak için kullanılmıştır, fakat algoritmanın ilk uygulanmasında saldırganların sistemin güvenlik planını rahatlıkla geçebildiği önemli bir açık oluşmuştur.<ref>{{cite web|url=http://debugmo.de/2008/03/thank-you-datel/|title=Thank you, Datel|first=Felix aka "tmbinc" |last=Domke|date=2008-04-24|accessdate=2014-10-05|quote=For verifying the hash (which is the only thing they verify in the signature), they have chosen to use a function (strncmp) which stops on the first nullbyte – with a positive result. Out of the 160 bits of the SHA1-hash, up to 152 bits are thrown away.}}</ref>


Başka kriptografik algoritma ve protokolleri kullanan ABD Hükümeti uygulamalarında hassas ve gizli bilgilerin güvenliği için SHA-1 ve SHA-2 kriptografik özet algoritmalarının kullanılması yasalar tarafından zorunlu tutulmuştur. Ayrıca FIPS PUB 180-1, özel kurumların da SHA-1 algoritmasını kullanmasını desteklemiştir. SHA-1 artık hükümet işlerinin çoğunda kullanılmıyor. NIST ( National Institute of Standards and Technology)'in bir açıklamasında, "Federal ajanslar çarpışma direnci gerektiren uygulamalarda en kısa zamanda SHA-1 algoritmasını kullanmayı bırakmalı ve bu uygulamalar için 2010'dan sonra SHA-2 kriptografik özet algoritma ailesini kullanmaya başlamak zorundadırlar."(orijinal vurgu).(21) Bu zorunluluk daha sonra gevşetildi.
Başka kriptografik algoritma ve protokolleri kullanan ABD Hükümeti uygulamalarında hassas ve gizli bilgilerin güvenliği için SHA-1 ve SHA-2 kriptografik özet algoritmalarının kullanılması yasalar tarafından zorunlu tutulmuştur. Ayrıca FIPS PUB 180-1, özel kurumların da SHA-1 algoritmasını kullanmasını desteklemiştir. SHA-1 artık hükümet işlerinin çoğunda kullanılmıyor. NIST ( National Institute of Standards and Technology)'in bir açıklamasında, "Federal ajanslar çarpışma direnci gerektiren uygulamalarda en kısa zamanda SHA-1 algoritmasını kullanmayı bırakmalı ve bu uygulamalar için 2010'dan sonra SHA-2 kriptografik özet algoritma ailesini kullanmaya başlamak zorundadırlar."(orijinal vurgu).<ref>National Institute on Standards and Technology Computer Security Resource Center, [http://csrc.nist.gov/groups/ST/hash/policy_2006.html NIST's March 2006 Policy on Hash Functions], accessed September 28, 2012.</ref> Bu zorunluluk daha sonra gevşetildi.<ref>National Institute on Standards and Technology Computer Security Resource Center, [http://csrc.nist.gov/groups/ST/hash/policy.html NIST's Policy on Hash Functions], accessed September 28, 2012.</ref>


Güvenli özet fonksiyonlarının yayınlanmasındaki en önemli motivasyon Dijital İmza Algoritması'dır.
Güvenli özet fonksiyonlarının yayınlanmasındaki en önemli motivasyon Dijital İmza Algoritması'dır.
22. satır: 22. satır:


=== Veri Bütünlüğü ===
=== Veri Bütünlüğü ===
Git ve Mercurial gibi revizyon kontrol sistemleri SHA-1'i sadece güvenlik için kullanmaz ayrıca verinin herhangi bir bozulmaya uğrayarak değişmediğine emin olmak için kullanır. Linus Torvalds Git ile ilgili şunları söylemiştir;<blockquote>Eğer disk bozulması varsa, DRAM bozulması varsa, veya herhangi bir sorun varsa Git hepsini algılayacaktır. Ya algılamazsa sorusu yok, bu bir kesinliktir. Zarar vermeye çalışan insanlar olabilir. Kesinlikle başaramayacaklar. [...] Kimse SHA-1'i kıramadı, fakat Git'i ilgilendiren SHA-1'in güvenlik özellikleri değil. Tamamiyle tutarlılık kontolü özelliği. Güvenlik kısmı bir yana, birçok insan şunu düşünüyor: Git SHA-1'i kullanıyor ve SHA-1 de kriptografik güvenlikte kullanılıyor. Demek ki Git'in güvenliği bununla sağlanıyor, diye düşünecekler. Git'te bunun güvenlikle hiçbir ilgisi yok. Bu sadece bulabileceğin en iyi özet fonksiyonu. [...]</blockquote><blockquote>Size şunun garantisini verebilirim: eğer verinizi Git'e koyarsanız, sizin sabit disk'inizden DVD'ye - veya 5 yıl sonra hangi teknoloji kullanılırsa ona - kopyalanınca bundan 5 yıl sonra bile verdiğiniz veriyi tamamı ile aynı şekilde geri alabilirsiniz. [...]</blockquote><blockquote>İlgilendiğim bir konu da çekirdek. İnsanların çekirdek kaynak kodlarını bozmaya çalıştıkları BitKeeper sitelerinden birinde açık yakalandığını gördük. Fakat Git çarpışma durumda nesnenin en eski sürümünü tutmayı tercih edeceğinden bir saldırganın gizlice dosyaların üzerine yazmasını engellemiş olur. Böylece SHA-1'in ikinci-öngörüntü direnci güvenlik özelliğine ihtiyaç duymaz.</blockquote>
Git ve Mercurial gibi revizyon kontrol sistemleri SHA-1'i sadece güvenlik için kullanmaz ayrıca verinin herhangi bir bozulmaya uğrayarak değişmediğine emin olmak için kullanır. Linus Torvalds Git ile ilgili şunları söylemiştir;<blockquote>Eğer disk bozulması varsa, DRAM bozulması varsa, veya herhangi bir sorun varsa Git hepsini algılayacaktır. Ya algılamazsa sorusu yok, bu bir kesinliktir. Zarar vermeye çalışan insanlar olabilir. Kesinlikle başaramayacaklar. [...] Kimse SHA-1'i kıramadı, fakat Git'i ilgilendiren SHA-1'in güvenlik özellikleri değil. Tamamiyle tutarlılık kontolü özelliği. Güvenlik kısmı bir yana, birçok insan şunu düşünüyor: Git SHA-1'i kullanıyor ve SHA-1 de kriptografik güvenlikte kullanılıyor. Demek ki Git'in güvenliği bununla sağlanıyor, diye düşünecekler. Git'te bunun güvenlikle hiçbir ilgisi yok. Bu sadece bulabileceğin en iyi özet fonksiyonu. [...]</blockquote><blockquote>Size şunun garantisini verebilirim: eğer verinizi Git'e koyarsanız, sizin sabit disk'inizden DVD'ye - veya 5 yıl sonra hangi teknoloji kullanılırsa ona - kopyalanınca bundan 5 yıl sonra bile verdiğiniz veriyi tamamı ile aynı şekilde geri alabilirsiniz. [...]</blockquote><blockquote>İlgilendiğim bir konu da çekirdek. İnsanların çekirdek kaynak kodlarını bozmaya çalıştıkları BitKeeper sitelerinden birinde açık yakalandığını gördük.<ref>{{cite web | url = https://www.youtube.com/watch?v=4XpnKHJAok8&t=56m20s | title = Tech Talk: Linus Torvalds on git |accessdate=November 13, 2013}}</ref> Fakat Git çarpışma durumda nesnenin en eski sürümünü tutmayı tercih edeceğinden bir saldırganın gizlice dosyaların üzerine yazmasını engellemiş olur. Böylece SHA-1'in ikinci-öngörüntü direnci güvenlik özelliğine ihtiyaç duymaz.</blockquote><ref>{{cite web|last1=Torvalds|first1=Linus|title=Re: Starting to think about sha-256?|url=https://marc.info/?l=git&m=115678778717621&w=2|website=marc.info|accessdate=30 May 2016}}</ref>


== Kriptanaliz ve Doğrulama ==
== Kriptanaliz ve Doğrulama ==
31. satır: 31. satır:
Pratik güvenlikte, bu yeni saldırılarla ilgili en büyük endişe, daha etkili saldırılara yol açmalarıdır. Her ne kadar durumun böyle olup olmadığı daha bilinmese de, daha güçlü özet fonksiyonlarına geçilmesinin gerekliliğine inanılıyor. Parolaların saklanması gibi basit kriptografik özet fonksiyonu uygulamaları çarpışma saldırılarından minimum şekilde etkilenirler. Belirli bir hesap için çalışan bir parola oluşturmak için öngörüntü saldırısı ve orijinal parolanın özetine erişim gerektirir. Parola şifrelemesini tersine çevirmek (Kullanıcının parolasını başka yerlerde denemek gibi) bu ataklarla mümkün değildir. (Bununla birlikte, çok güvenli bir özet fonksiyonu bile zayıf parolaları brute-force saldırısına karşı koruyamaz.)
Pratik güvenlikte, bu yeni saldırılarla ilgili en büyük endişe, daha etkili saldırılara yol açmalarıdır. Her ne kadar durumun böyle olup olmadığı daha bilinmese de, daha güçlü özet fonksiyonlarına geçilmesinin gerekliliğine inanılıyor. Parolaların saklanması gibi basit kriptografik özet fonksiyonu uygulamaları çarpışma saldırılarından minimum şekilde etkilenirler. Belirli bir hesap için çalışan bir parola oluşturmak için öngörüntü saldırısı ve orijinal parolanın özetine erişim gerektirir. Parola şifrelemesini tersine çevirmek (Kullanıcının parolasını başka yerlerde denemek gibi) bu ataklarla mümkün değildir. (Bununla birlikte, çok güvenli bir özet fonksiyonu bile zayıf parolaları brute-force saldırısına karşı koruyamaz.)


Belge imzalatmada ise, saldırgan var olan bir belge için kolaylıkla sahte bir imza üretemez. Şöyle yapabilir: saldırgan normal ve hileli iki belge üretir ve özel anahtar sahibine normal belgeyi imzalatır. Bu saldırının mümkün olduğu bazı pratik koşullar vardır. Örneğin, 2008'in sonuna kadar bir MD5 çarpışması kullanılarak sahte SSL sertifikaları üretmek mümkündü.
Belge imzalatmada ise, saldırgan var olan bir belge için kolaylıkla sahte bir imza üretemez. Şöyle yapabilir: saldırgan normal ve hileli iki belge üretir ve özel anahtar sahibine normal belgeyi imzalatır. Bu saldırının mümkün olduğu bazı pratik koşullar vardır. Örneğin, 2008'in sonuna kadar bir MD5 çarpışması kullanılarak sahte SSL sertifikaları üretmek mümkündü.<ref>{{cite web|first1=Alexander |last1=Sotirov|first2=Marc |last2=Stevens|first3=Jacob |last3=Appelbaum|first4=Arjen |last4=Lenstra|first5=David |last5=Molnar|first6=Dag Arne |last6=Osvik|first7=Benne |last7=de Weger|url=http://www.win.tue.nl/hashclash/rogue-ca/|title=MD5 considered harmful today: Creating a rogue CA certificate|access-date={{date|2009-03-29|mdy}}|date={{date|2008-12-30|mdy}}}}</ref>


Algoritmalar blok, yineleme yapısı ve ek son adımların olmamasından dolayı tüm SHA fonksiyonları (SHA-3 dışında) uzunluk uzantısı ve kısmı mesaj çarpışması saldırılarına karşı savunmasızdır. Anahtarlı özet fonksiyonlarında — SHA(''mesaj'' || ''anahtar'') veya SHA(''anahtar'' || ''mesaj'') — saldırgan, anahtarı bilmeden sadece mesajı uzatıp özet değerini yeniden hesaplayarak anahtarla imzalanmış mesajı bulabilir. Bu saldırıyı önlemek için yapılmış basit bir iyileştirme mesajın özetinin iki kere almaktır. SHA<sub>d</sub>(''mesaj'') = SHA(SHA(0<sup>''b''</sup> || ''mesaj'')) (0. blok olan 0<sup>''b''</sup>nin uzunluğu özet fonksiyonunun blok boyutuna eşittir.)
Algoritmalar blok, yineleme yapısı ve ek son adımların olmamasından dolayı tüm SHA fonksiyonları (SHA-3<ref>{{Cite web|url = http://keccak.noekeon.org/|title = Strengths of Keccak - Design and security|date = |accessdate = 20 September 2015|website = The Keccak sponge function family|publisher = Keccak team|last = |first = |quote = Unlike SHA-1 and SHA-2, Keccak does not have the length-extension weakness, hence does not need the HMAC nested construction. Instead, MAC computation can be performed by simply prepending the message with the key.}}</ref> dışında) uzunluk uzantısı ve kısmı mesaj çarpışması saldırılarına karşı savunmasızdır.<ref>[http://www.schneier.com/book-ce.html Niels Ferguson, Bruce Schneier, and Tadayoshi Kohno, Cryptography Engineering], John Wiley & Sons, 2010. ISBN 978-0-470-47424-2</ref> Anahtarlı özet fonksiyonlarında — SHA(''mesaj'' || ''anahtar'') veya SHA(''anahtar'' || ''mesaj'') — saldırgan, anahtarı bilmeden sadece mesajı uzatıp özet değerini yeniden hesaplayarak anahtarla imzalanmış mesajı bulabilir. Bu saldırıyı önlemek için yapılmış basit bir iyileştirme mesajın özetinin iki kere almaktır. SHA<sub>d</sub>(''mesaj'') = SHA(SHA(0<sup>''b''</sup> || ''mesaj'')) (0. blok olan 0<sup>''b''</sup>nin uzunluğu özet fonksiyonunun blok boyutuna eşittir.)


=== Saldırılar ===
=== Saldırılar ===
2005 yılının başlarında, Rijmen ve Oswald'un yayınladığı saldırıda, SHA-1'in basit versiyonunda — 80 turdan 53'ü —  2<sup>80</sup> işlemden daha az işlemde çarpışmalar bulunmuştur.
2005 yılının başlarında, Rijmen ve Oswald'un yayınladığı saldırıda, SHA-1'in basit versiyonunda — 80 turdan 53'ü —  2<sup>80</sup> işlemden daha az işlemde çarpışmalar bulunmuştur.<ref>{{cite web|url=http://eprint.iacr.org/2005/010|title=Cryptology ePrint Archive: Report 2005/010|publisher=}}</ref>


Şubat 2005'te  Xiaoyun Wang, Yiqun Lisa Yin, ve Hongbo Yu tarafından bir saldırı duyuruldu. Saldırıda SHA-1'in normal versiyonunda 2<sup>69</sup> işlemden daha kısa sürede çarpışmalar bulundu. ( Bir brute-force saldırısı ile çarpışma bulmak 2<sup>80</sup> işlem gerektirir.)
Şubat 2005'te  Xiaoyun Wang, Yiqun Lisa Yin, ve Hongbo Yu tarafından bir saldırı duyuruldu. Saldırıda SHA-1'in normal versiyonunda 2<sup>69</sup> işlemden daha kısa sürede çarpışmalar bulundu. ( Bir brute-force saldırısı ile çarpışma bulmak 2<sup>80</sup> işlem gerektirir.)


Saldırıyı yapanlar şöyle açıkladılar: "Analizimiz SHA-0'daki orijinal diferansiyel saldırıya ve çarpışma saldırılarına, çok bloklu çarpışma tekniklerine ve MD5'teki çarpışma arama saldırılarında kullanılan mesaj değiştirme tekniklerine dayanıyor. SHA-1'i bu güçlü analitik tekniklerin yardımı olmadan kıramazdık." Aynı zamanda 58-tur SHA-1'i 2<sup>33</sup> özet işleminde kırabilen bir çarpışma sundular. Saldırının tüm detaylarını içeren makale 2005 yılının ağustos ayında CRYPTO konferansında sunuldu.
Saldırıyı yapanlar şöyle açıkladılar: "Analizimiz SHA-0'daki orijinal diferansiyel saldırıya ve çarpışma saldırılarına, çok bloklu çarpışma tekniklerine ve MD5'teki çarpışma arama saldırılarında kullanılan mesaj değiştirme tekniklerine dayanıyor. SHA-1'i bu güçlü analitik tekniklerin yardımı olmadan kıramazdık."<ref>[http://theory.csail.mit.edu/~yiqun/shanote.pdf MIT.edu], [[Massachusetts Institute of Technology]]</ref> Aynı zamanda 58-tur SHA-1'i 2<sup>33</sup> özet işleminde kırabilen bir çarpışma sundular. Saldırının tüm detaylarını içeren makale 2005 yılının ağustos ayında CRYPTO konferansında sunuldu.


Yin bir röportajında, "Kabaca şu iki zayıflıktan yararlandık: İlki dosya ön işleme aşaması yeteri kadar karışık değil, ilk 20 turdaki bazı matematiksel işlemlerde beklenmedik güvenlik açıkları mevcut."
Yin bir röportajında, "Kabaca şu iki zayıflıktan yararlandık: İlki dosya ön işleme aşaması yeteri kadar karışık değil, ilk 20 turdaki bazı matematiksel işlemlerde beklenmedik güvenlik açıkları mevcut."<ref>{{cite web|url=http://www.zdnet.com/news/fixing-a-hole-in-security/141588|title=Fixing a hole in security|first=Robert |last=Lemos|work=ZDNet}}</ref>


17 Ağustos 2005'te bir CRYPTO 2005 oturumunda Xiaoyun Wang, Andrew Yao ve Frances Yao adına SHA-1 saldırısında yapılan bir iyileştirme duyuruldu. Çarpışma bulmak için gereken ortalama işlem sayısı 2<sup>63</sup> 'e düşürüldü. 18 Aralık 2007'de bu sonucun ayrıntıları Martin Cochran tarafından açıklanmış ve doğrulanmıştır.
17 Ağustos 2005'te bir CRYPTO 2005 oturumunda Xiaoyun Wang, Andrew Yao ve Frances Yao adına SHA-1 saldırısında yapılan bir iyileştirme duyuruldu. Çarpışma bulmak için gereken ortalama işlem sayısı 2<sup>63</sup> 'e düşürüldü.<ref>{{cite web|url=http://www.schneier.com/blog/archives/2005/08/new_cryptanalyt.html|title=New Cryptanalytic Results Against SHA-1 - Schneier on Security|publisher=}}</ref> 18 Aralık 2007'de bu sonucun ayrıntıları Martin Cochran tarafından açıklanmış ve doğrulanmıştır.<ref>[http://eprint.iacr.org/2007/474 Notes on the Wang et al. 2<sup>63</sup> SHA-1 Differential Path]</ref>


Christophe De Cannière ve Christian Rechberger, "SHA-1 Özelliklerini Bulma: Genel Sonuçlar ve Uygulamalar" makalesi ile SHA-1 saldırılarını daha da geliştirdiler ve ASIACRYPT 2006'daki en iyi makale ödülünü almaya hak kazandılar. 64-tur SHA-1 için 2 blok çarpışma optimize edilmemiş yöntemler kullanılarak 2<sup>35</sup> işlemde bulundu. Bu saldırı yaklaşık 2<sup>35</sup> işlemde yapılabildiğinden teorik bir eşik olarak kabul edilir. Daha sonra 2010'da Grechnikov tarafından bu saldırı 80'de 73-tur'a kadar geliştirildi. Bununla tüm 80-turluk bir özet fonksiyonunda çarpışma bulmak için muazzam şekilde işlem süresi gerekiyor. Bu yüzden, 8 Ağustos 2007'de SHA-1'de çarpışma bulmak amacıyla Graz Teknoloji Üniversite'sinde dağıtılmış bilgi işlem platformu olan BOINC ile çarpışma araması başlatıldı fakat 12 Mayıs 2009'da yeterince ilerleme sağlanamadığından sonlandırıldı.
Christophe De Cannière ve Christian Rechberger, "SHA-1 Özelliklerini Bulma: Genel Sonuçlar ve Uygulamalar"<ref>{{Cite journal |first1=Christophe |last1=De Cannière|first2=Christian |last2=Rechberger |date=2006-11-15 |title=Finding SHA-1 Characteristics: General Results and Applications |url=http://www.springerlink.com/content/q42205u702p5604u/ }}</ref> makalesi ile SHA-1 saldırılarını daha da geliştirdiler ve ASIACRYPT 2006'daki en iyi makale ödülünü almaya hak kazandılar. 64-tur SHA-1 için 2 blok çarpışma optimize edilmemiş yöntemler kullanılarak 2<sup>35</sup> işlemde bulundu. Bu saldırı yaklaşık 2<sup>35</sup> işlemde yapılabildiğinden teorik bir eşik olarak kabul edilir.<ref>{{cite web
| url = http://www.iaik.tugraz.at/content/research/krypto/sha1/SHA1Collision_Description.php
| title = IAIK Krypto Group&nbsp;— Description of SHA-1 Collision Search Project
| accessdate = 2009-06-30
}}</ref> Daha sonra 2010'da Grechnikov tarafından bu saldırı 80'de 73-tur'a kadar geliştirildi.<ref>{{cite web
| url = http://eprint.iacr.org/2010/413
| title = Collisions for 72-step and 73-step SHA-1: Improvements in the Method of Characteristics
| accessdate = 2010-07-24
}}</ref> Bununla tüm 80-turluk bir özet fonksiyonunda çarpışma bulmak için muazzam şekilde işlem süresi gerekiyor. Bu yüzden, 8 Ağustos 2007'de SHA-1'de çarpışma bulmak amacıyla Graz Teknoloji Üniversite'sinde dağıtılmış bilgi işlem platformu olan BOINC ile çarpışma araması başlatıldı fakat 12 Mayıs 2009'da yeterince ilerleme sağlanamadığından sonlandırıldı.<ref>{{cite web
| url = http://boinc.iaik.tugraz.at/sha1_coll_search/
| title = SHA-1 Collision Search Graz
| accessdate = 2009-06-30
}}</ref>


2006'daki CRYPTO oturumunda, Christian Rechberger ve Christophe De Cannière saldırganın SHA-1'deki mesajın en azından bir kısmını elde edebilecekleri bir saldırı bulduklarını duyurdular.
2006'daki CRYPTO oturumunda, Christian Rechberger ve Christophe De Cannière saldırganın SHA-1'deki mesajın en azından bir kısmını elde edebilecekleri bir saldırı bulduklarını duyurdular.<ref>{{cite web|url=http://www.heise-online.co.uk/security/SHA-1-hash-function-under-pressure--/news/77244|title=heise online - IT-News, Nachrichten und Hintergründe|work=heise online}}</ref><ref>{{cite web|url=https://www.iacr.org/conferences/crypto2006/rumpsched.html|title=Crypto 2006 Rump Schedule|publisher=}}</ref>


2008'de Stéphane Manuel tarafından yayınlanan bir raporda özet fonksiyonunda çarpışmanın tahmini olarak 2<sup>51</sup>  - 2<sup>57</sup> işlemlik teorik karmaşıklıkta bulunabileceğini öne sürdü. Fakat daha sonrasında yerel çarpışma yollarının aslında bağımsız olmadığı anlayıp bu tahminin geri çekmiş ve bilinen en etkili çarpışma vektörünün yine bu çalışmadan önceki bilinen yöntem olduğunu aktarmıştır.
2008'de Stéphane Manuel tarafından yayınlanan bir raporda özet fonksiyonunda çarpışmanın tahmini olarak 2<sup>51</sup>  - 2<sup>57</sup> işlemlik teorik karmaşıklıkta bulunabileceğini öne sürdü.<ref>{{Cite journal | first=Stéphane |last=Manuel | title=Classification and Generation of Disturbance Vectors for Collision Attacks against SHA-1 |url=http://eprint.iacr.org/2008/469.pdf | accessdate = 2011-05-19 }}</ref> Fakat daha sonrasında yerel çarpışma yollarının aslında bağımsız olmadığı anlayıp bu tahminin geri çekmiş ve bilinen en etkili çarpışma vektörünün yine bu çalışmadan önceki bilinen yöntem olduğunu aktarmıştır.<ref>{{Cite journal | first=Stéphane |last=Manuel | title=Classification and Generation of Disturbance Vectors for Collision Attacks against SHA-1 |url=http://www.springerlink.com/content/u320751102001580/ | accessdate = 2012-10-04 }} ''the most efficient disturbance vector is Codeword2 first reported by Jutla and Patthak''</ref>


Cameron McDonald, Philip Hawkes ve Josef Pieprzyk Eurocrypt 2009 oturumunda 2<sup>52</sup> karmaşıklıkta kırılabilen yeni bir özet çarpışma saldırı bulduklarını öne sürdüler. Fakat bu iddianın makalesi olan "[[Big O notation|''O'']](2<sup>52</sup>) karmaşıklığında SHA-1 için Diferansiyel Yolu" makalesindeki hatalar sebebiyle yazarlar iddialarını geri çektiler.
Cameron McDonald, Philip Hawkes ve Josef Pieprzyk Eurocrypt 2009 oturumunda 2<sup>52</sup> karmaşıklıkta kırılabilen yeni bir özet çarpışma saldırı bulduklarını öne sürdüler.<ref>[http://eurocrypt2009rump.cr.yp.to/837a0a8086fa6ca714249409ddfae43d.pdf SHA-1 collisions now 2^52 ]</ref> Fakat bu iddianın makalesi olan "[[Big O notation|''O'']](2<sup>52</sup>) karmaşıklığında SHA-1 için Diferansiyel Yolu" makalesindeki hatalar sebebiyle yazarlar iddialarını geri çektiler.<ref>{{cite web|url=http://eprint.iacr.org/2009/259|title=Cryptology ePrint Archive: Report 2009/259|publisher=}}</ref>


Başka bir saldırıda da Marc Stevens tek bir özet değerini kırmak için bulut sunucularından tahmini değeri $2.77M olan CPU gücü kiralamıştır. Steven bu saldırıyı HashClash adlı projede bir diferansiyel yol saldırısı kullanarak gerçekleştirdi. 8 Kasım 2010'da SHA-1'e karşı tamamen çalışan bir çarpışmaya yakın bir çarpışma saldırısını tahmini olarak 2<sup>57.5</sup> işlemde gerçekleştirebileceğini iddia etti. Ayrıca bu saldırının tahmini 2<sup>61</sup> işlemde kırılabilen bir tam çarpışma saldırısına dönüştürülebileceğini öne sürdü.
Başka bir saldırıda da Marc Stevens<ref name="Cryptanalysis of MD5 & SHA-1">[http://2012.sharcs.org/slides/stevens.pdf Cryptanalysis of MD5 & SHA-1]</ref> tek bir özet değerini kırmak için bulut sunucularından tahmini değeri $2.77M olan CPU gücü kiralamıştır.<ref>{{cite web|url=http://www.schneier.com/blog/archives/2012/10/when_will_we_se.html|title=When Will We See Collisions for SHA-1? - Schneier on Security|publisher=}}</ref> Stevens bu saldırıyı HashClash<ref>{{cite web|url=https://code.google.com/p/hashclash/|title=Google Project Hosting|publisher=}}</ref> adlı projede bir diferansiyel yol saldırısı kullanarak gerçekleştirdi. 8 Kasım 2010'da SHA-1'e karşı tamamen çalışan bir çarpışmaya yakın bir çarpışma saldırısını tahmini olarak 2<sup>57.5</sup> işlemde gerçekleştirebileceğini iddia etti. Ayrıca bu saldırının tahmini 2<sup>61</sup> işlemde kırılabilen bir tam çarpışma saldırısına dönüştürülebileceğini öne sürdü.


==== The SHAppening ====
==== The SHAppening ====
8 Ekim 2015'te  Marc Stevens, Pierre Karpman, ve Thomas Peyrin SHA-1 özet fonksiyonunda yalnızca 2<sup>57</sup> işlem gerektiren bir çarpışma saldırısı yayınladılar. Bu tam olarak bir tam SHA-1 özet fonksiyonu çarpışma saldırısı (saldırgan iç aşamasını özgürce seçemediği) değildir, fakat yine de SHA-1'in güvenlik iddiasını zayıflatır. Özellikle, ilk defa tam SHA-1'e bir çarpışma saldırısı yapılabildiği gösterildi. Önceki saldırıların hepsi pratik olarak gerçekleştirilmeleri çok pahalı saldırılardı. SHA-1'in kriptanalizindeki bu önemli atılım ''The SHAppening'' olarak isimlendirildi.
8 Ekim 2015'te  Marc Stevens, Pierre Karpman, ve Thomas Peyrin SHA-1 özet fonksiyonunda yalnızca 2<sup>57</sup> işlem gerektiren bir çarpışma saldırısı yayınladılar. Bu tam olarak bir tam SHA-1 özet fonksiyonu çarpışma saldırısı (saldırgan iç aşamasını özgürce seçemediği) değildir, fakat yine de SHA-1'in güvenlik iddiasını zayıflatır. Özellikle, ilk defa tam SHA-1'e bir çarpışma saldırısı yapılabildiği gösterildi. Önceki saldırıların hepsi pratik olarak gerçekleştirilmeleri çok pahalı saldırılardı. SHA-1'in kriptanalizindeki bu önemli atılım ''The SHAppening''<ref name="shappening" /> olarak isimlendirildi.


Bu metot Joux ve Peyrin'in yardımcı yolları(veya bumerangları) hızlandırma tekniği ile daha önceki çalışmalarına ve NVIDIA'nın yüksek performans/maliyet 'e sahip GPU 'larının kullanımına dayanıyor. Çarpışma, toplamda 64 grafik kartına sahip 16 düğümlü bir küme ile bulundu. Yazarlar benzer bir çarpışmanın EC2'de $2,000 'lık GPU zamanıyla bulunabileceği tahmininde bulundular.
Bu metot Joux ve Peyrin'in yardımcı yolları(veya bumerangları) hızlandırma tekniği ile daha önceki çalışmalarına ve NVIDIA'nın yüksek performans/maliyet 'e sahip GPU 'larının kullanımına dayanıyor. Çarpışma, toplamda 64 grafik kartına sahip 16 düğümlü bir küme ile bulundu. Yazarlar benzer bir çarpışmanın EC2<ref name="shappening" />'de $2,000 'lık GPU zamanıyla bulunabileceği tahmininde bulundular.


Yazarlar aynı zamanda, tam SHA-1 çarpışması yapmak için 75 bin ile 125 bin ABD doları maliyetindeki EC2 CPU/GPU gücünün yeterli olacağını söylemişler ve bunun bir suç örgütünün veya herhangi bir ulusal istihbarat örgütünün bütçesiyle rahatlıkla yapılabileceğini belirtmişlerdir. Ayrıca yazarlar SHA-1'in kullanımının olabildiğince çabuk durdurulmasını önerdiler.
Yazarlar aynı zamanda, tam SHA-1 çarpışması yapmak için 75 bin ile 125 bin ABD doları maliyetindeki EC2 CPU/GPU gücünün yeterli olacağını söylemişler ve bunun bir suç örgütünün veya herhangi bir ulusal istihbarat örgütünün bütçesiyle rahatlıkla yapılabileceğini belirtmişlerdir. Ayrıca yazarlar SHA-1'in kullanımının olabildiğince çabuk durdurulmasını önerdiler.<ref name="shappening">{{cite web |url=https://sites.google.com/site/itstheshappening/ |title=The SHAppening: freestart collisions for SHA-1 |accessdate=2015-10-09 |first1=Marc |last1=Stevens1 |first2=Pierre |last2=Karpman |first3=Thomas |last3=Peyrin}}</ref>


==== SHAttered ====
==== SHAttered ====
23 Şubat 2017'de Google ''SHAttered'' saldırısı ismini verdikleri saldırı ile yaklaşık 2<sup>63.1</sup> işlemde aynı SHA-1 özeti veren 2 farklı PDF dosyası ürettiklerini duyurdular. Bu saldırı 2<sup>80</sup> işlemde bulunabilen brute-force ile SHA-1 özeti çarpışması bulmaktan (doğum günü saldırısı) yaklaşık 100,000 kat daha hızlıdır. Bu saldırı yaklaşık tek CPU işlem gücüyle yaklaşık 6,500 yıl veya tek GPU işlem gücü ile yaklaşık 110 yıl sürerdi.
23 Şubat 2017'de Google ''SHAttered'' saldırısı ismini verdikleri saldırı ile yaklaşık 2<sup>63.1</sup> işlemde aynı SHA-1 özeti veren 2 farklı PDF dosyası ürettiklerini duyurdular. Bu saldırı 2<sup>80</sup> işlemde bulunabilen brute-force ile SHA-1 özeti çarpışması bulmaktan (doğum günü saldırısı) yaklaşık 100,000 kat daha hızlıdır. Bu saldırı yaklaşık tek CPU işlem gücüyle yaklaşık 6,500 yıl veya tek GPU işlem gücü ile yaklaşık 110 yıl sürerdi.<ref name="shatteredpaper"/>


=== SHA-0 ===
=== SHA-0 ===
 CRYPTO 98 'de  Florent Chabaud ve Antoine Joux isimli iki Fransız araştırmacı, 2<sup>61</sup> karmaşıklıkta yapılabilen bir çarpışma buldular, ki bu saldırı aynı uzunluktaki ideal özet fonksiyonu kamaşıklığı olan 2<sup>80</sup> işlemden çok daha azdır.
 CRYPTO 98 'de  Florent Chabaud ve Antoine Joux isimli iki Fransız araştırmacı, 2<sup>61</sup> karmaşıklıkta yapılabilen bir çarpışma buldular, ki bu saldırı aynı uzunluktaki ideal özet fonksiyonu kamaşıklığı olan 2<sup>80</sup> işlemden çok daha azdır.<ref>{{cite conference |url=http://fchabaud.free.fr/English/Publications/sha.pdf |first1=Florent |last1=Chabaud|first2=Antoine |last2=Joux |date=1998 |title=Differential Collisions in SHA-0 |conference=[[CRYPTO]] '98 }}</ref>


2004 'te Biham ve Chen SHA-0 için çarpışmaya yakın saldırılar keşfettiler. (Neredeyse aynı özet değeri olan —160 bitten 142'si aynı — iki farklı mesaj buldular.) Aynı zamanda SHA-0 'ın tam çarpışmalarını 80-turdan 62-tura düşürülebildiğini buldular.
2004 'te Biham ve Chen SHA-0 için çarpışmaya yakın saldırılar keşfettiler. (Neredeyse aynı özet değeri olan —160 bitten 142'si aynı — iki farklı mesaj buldular.) Aynı zamanda SHA-0 'ın tam çarpışmalarını 80-turdan 62-tura düşürülebildiğini buldular.
73. satır: 85. satır:
Daha sonra, 12 Ağustos 2004'te Joux, Carribault, Lemuet, ve Jalby tarafından tam SHA-0 algoritması için çarpışma bulunduğu açıklandı. Bu saldırı Chabaud veJoux 'un saldırılarının genelleştirilmesiyle yapıldı. Çapışma 2<sup>51</sup> karmaşıklıkta bulundu ve 256 Itanium 2 işlemcisine sahip bir süper-bilgisayarda yaklaşık 80,000 işlemci zamanı sürdü. (Bir bilgisayarın 13 gün sürekli kullanılmasına eşdeğer süre)
Daha sonra, 12 Ağustos 2004'te Joux, Carribault, Lemuet, ve Jalby tarafından tam SHA-0 algoritması için çarpışma bulunduğu açıklandı. Bu saldırı Chabaud veJoux 'un saldırılarının genelleştirilmesiyle yapıldı. Çapışma 2<sup>51</sup> karmaşıklıkta bulundu ve 256 Itanium 2 işlemcisine sahip bir süper-bilgisayarda yaklaşık 80,000 işlemci zamanı sürdü. (Bir bilgisayarın 13 gün sürekli kullanılmasına eşdeğer süre)


17 Ağustos 2004'teki CRYPTO 2004 oturumunda Wang, Feng, Lai, and Yu tarafından MD5, SHA-0 ve başka özet fonksiyonlarıyla ilgili saldırıların ön sonuçları açıklandı. Bu sonuçlarda, SHA-0 saldırısının karmaşıklığı 2<sup>40</sup> olarak açıklandı. Bu da Joux 'a ait saldırıdan çok daha verimli.
17 Ağustos 2004'teki CRYPTO 2004 oturumunda Wang, Feng, Lai, and Yu tarafından MD5, SHA-0 ve başka özet fonksiyonlarıyla ilgili saldırıların ön sonuçları açıklandı. Bu sonuçlarda, SHA-0 saldırısının karmaşıklığı 2<sup>40</sup> olarak açıklandı. Bu da Joux 'a ait saldırıdan çok daha verimli.<ref>{{cite web|url=http://www.freedom-to-tinker.com/archives/000664.html|title=Report from Crypto 2004|publisher=}}</ref><ref>{{Cite newsgroup|first=Francois |last=Grieu|newsgroup=sci.crypt|title=Re: Any advance news from the crypto rump session?|date=<!-- Wednesday, --> 18 August 2004 |time=05:06:02 +0200|message-id=fgrieu-05A994.05060218082004@individual.net}}</ref>


Şubat 2005 'te Xiaoyun Wang, Yiqun Lisa Yin, ve Hongbo Yu SHA-0 çarpışmasını 2<sup>39</sup> işlemde bulduklarını duyurdular.
Şubat 2005 'te Xiaoyun Wang, Yiqun Lisa Yin, ve Hongbo Yu SHA-0 çarpışmasını 2<sup>39</sup> işlemde bulduklarını duyurdular.<ref name="autogenerated1">{{cite web|url=http://www.schneier.com/blog/archives/2005/02/sha1_broken.html|title=SHA-1 Broken - Schneier on Security|publisher=}}</ref><ref>{{zh icon}} [http://www.infosec.sdu.edu.cn/paper/sha0-crypto-author-new.pdf Sdu.edu.cn], [[Shandong University]]</ref>


2008 'de yapılan bumerang saldırısı ile çarpışma bulmak  2<sup>33.6</sup> işleme indirildi, ki bu ortalama bir bilgisayarda 1 saatte yapılabilmektedir.
2008 'de yapılan bumerang saldırısı ile çarpışma bulmak  2<sup>33.6</sup> işleme indirildi, ki bu ortalama bir bilgisayarda 1 saatte yapılabilmektedir.<ref>{{Cite journal|first1=Stéphane |last1=Manuel|first2=Thomas |last2=Peyrin |date=2008-02-11 |title=Collisions on SHA-0 in One Hour |conference=Fast Software Encryption 2008 |url=http://link.springer.com/chapter/10.1007%2F978-3-540-71039-4_2 }}</ref>



SHA-0 'daki sonuçların ardından bazı uzmanlar, SHA-1 'in yeni kriptosistemlerdeki kullanımına ilişkin planların tekrar gözden geçirilmesi gerektiğini önerdi. CRYPTO 2004 'den sonra, NIST 2010 yılına kadar SHA-1 'in kullanımının aşamalı olarak durdurulacağını ve yerine SHA-2 'nin kullanılacağını açıkladı.
SHA-0 'daki sonuçların ardından bazı uzmanlar, SHA-1 'in yeni kriptosistemlerdeki kullanımına ilişkin planların tekrar gözden geçirilmesi gerektiğini önerdi. CRYPTO 2004 'den sonra, NIST 2010 yılına kadar SHA-1 'in kullanımının aşamalı olarak durdurulacağını ve yerine SHA-2 'nin kullanılacağını açıkladı.<ref>[http://csrc.nist.gov/groups/ST/toolkit/documents/shs/hash_standards_comments.pdf National Institute of Standards and Technology]</ref>


=== Resmi doğrulaması ===
=== Resmi doğrulaması ===
85. satır: 98. satır:


Aralık 2013 itibariyle, SHA-1 'in 2000'den fazla farklı ve geçerli uygulaması vardır, fakat bunlardan sadece 14 tanesi mesaj boyutu 8 ve katı bit uzunluğundaki mesajlar dışındakilerde çalışabilir.
Aralık 2013 itibariyle, SHA-1 'in 2000'den fazla farklı ve geçerli uygulaması vardır, fakat bunlardan sadece 14 tanesi mesaj boyutu 8 ve katı bit uzunluğundaki mesajlar dışındakilerde çalışabilir.

==Örnekler ve Sözde Kodu==

===Örnek Özetler===
Bunlar onaltılık tabanda ve ASCII Base64 formatındaki SHA-1 mesaj özetleri

SHA1("The quick brown fox jumps over the lazy <span style="background:#c8ccd1">d</span>og")
onaltılık tabandaki özeti: 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12
ASCII Base64 özeti: L9ThxnotKPzthJ7hu3bnORuT6xI=

Even a small change in the message will, with overwhelming probability, result in many bits changing due to the [[avalanche effect]]. For example, changing <code>dog</code> to <code>cog</code> produces a hash with different values for 81 of the 160 bits:

SHA1("The quick brown fox jumps over the lazy <span style="background:#c8ccd1">c</span>og")
onaltılık tabandaki özeti: de9f2c7fd25e1b3afad3e85a0bd17d9b100db4b3
ASCII Base64 özeti: 3p8sf9JeGzr60+haC9F9mxANtLM=

The hash of the zero-length string is:

SHA1("")
onaltılık tabandaki özeti: da39a3ee5e6b4b0d3255bfef95601890afd80709
ASCII Base64 özeti: 2jmj7l5rSw0yVb/vlWAYkK/YBwk=

===SHA-1 sözde kodu===
SHA-1 algoritmasının sözde kodu:
<span style="color: green;">''Note 1: All variables are unsigned 32-bit quantities and wrap modulo 2<sup>32</sup> when calculating, except for''</span>
<span style="color: green;">''ml, the message length, which is a 64-bit quantity, and''</span>
<span style="color: green;">''hh, the message digest, which is a 160-bit quantity.''</span>
<span style="color: green;">''Note 2: All constants in this pseudo code are in [[endianness|big endian]].''</span>
<span style="color: green;">''Within each word, the most significant byte is stored in the leftmost byte position''</span>
<span style="color: green;">''Initialize variables:''</span>
h0 = 0x67452301
h1 = 0xEFCDAB89
h2 = 0x98BADCFE
h3 = 0x10325476
h4 = 0xC3D2E1F0
ml = message length in bits (always a multiple of the number of bits in a character).
<span style="color: green;">''Pre-processing:''</span>
append the bit '1' to the message e.g. by adding 0x80 if message length is a multiple of 8 bits.
append 0 ≤ k &lt; 512 bits '0', such that the resulting message length in ''bits''
is [[modular arithmetic|congruent]] to −64 ≡ 448 (mod 512)
append ml, the original message length, as a 64-bit [[Endianness|big-endian]] integer. Thus, the total length is a multiple of 512 bits.
<span style="color: green;">''Process the message in successive 512-bit chunks:''</span>
break message into 512-bit chunks
'''for''' each chunk
break chunk into sixteen 32-bit big-endian words w[i], 0 ≤ i ≤ 15
<span style="color: green;">''Extend the sixteen 32-bit words into eighty 32-bit words:''</span>
'''for''' i '''from''' 16 to 79
w[i] = (w[i-3] '''xor''' w[i-8] '''xor''' w[i-14] '''xor''' w[i-16]) '''[[Circular shift|leftrotate]]''' 1
<span style="color: green;">''Initialize hash value for this chunk:''</span>
a = h0
b = h1
c = h2
d = h3
e = h4
<span style="color: green;">''Main loop:''</span><ref name=":0" /><ref>{{cite web|url=http://www.faqs.org/rfcs/rfc3174.html|title=RFC 3174 - US Secure Hash Algorithm 1 (SHA1)|publisher=}}</ref>
'''for''' i '''from''' 0 '''to''' 79
'''if''' 0 ≤ i ≤ 19 '''then'''
f = (b '''and''' c) '''or''' (('''not''' b) '''and''' d)
k = 0x5A827999
'''else if''' 20 ≤ i ≤ 39
f = b '''xor''' c '''xor''' d
k = 0x6ED9EBA1
'''else if''' 40 ≤ i ≤ 59
f = (b '''and''' c) '''or''' (b '''and''' d) '''or''' (c '''and''' d)
k = 0x8F1BBCDC
'''else if''' 60 ≤ i ≤ 79
f = b '''xor''' c '''xor''' d
k = 0xCA62C1D6
temp = (a '''leftrotate''' 5) + f + e + k + w[i]
e = d
d = c
c = b '''leftrotate''' 30
b = a
a = temp
<span style="color: green;">''Add this chunk's hash to result so far:''</span>
h0 = h0 + a
h1 = h1 + b
h2 = h2 + c
h3 = h3 + d
h4 = h4 + e
<span style="color:green;">''Produce the final hash value (big-endian) as a 160-bit number:''</span>
hh = (h0 '''leftshift''' 128) '''or''' (h1 '''leftshift''' 96) '''or''' (h2 '''leftshift''' 64) '''or''' (h3 '''leftshift''' 32) '''or''' h4

<code>hh</code> sayısı mesaj özetini gösterir. Genellikle ASCII Base64 formatında yazılır ama onaltılık tabanda da yazılabilir.

Buradaki sabit sayılar rastgeleliği maksimize etmek için bilerek seçilmiş sayılardır ([[nothing up my sleeve number]]s): 4 sabit <code>k</code> sayısı 2, 3, 5, ve 10 sayılarının 2<sup>30</sup> kere kare kökleri alınmış halidir. <code>h0</code> 'dan<code>h3</code> 'e kadar olan dört başlangıç değeri MD5 algoritmasındakilerle tamamen aynıdır ve beşinci değer ise (<code>h4</code>) çok benzeridir.

FIPS PUB 180-1 'den direkt formülize etmek yerine, aşağıdaki benzer ifadelerle ana döngüdeki <code>f</code> değeri hesaplanabilir.
<span style="color: green;">''Bitwise choice between ''c'' and ''d'', controlled by ''b''.''</span>
(0 ≤ i ≤ 19): f = d '''xor''' (b '''and''' (c '''xor''' d)) <span style="color: green;">''(alternative 1)''</span>
(0 ≤ i ≤ 19): f = (b '''and''' c) '''xor''' (('''not''' b) '''and''' d) <span style="color: green;">''(alternative 2)''</span>
(0 ≤ i ≤ 19): f = (b '''and''' c) + (('''not''' b) '''and''' d) <span style="color: green;">''(alternative 3)''</span>
(0 ≤ i ≤ 19): f = vec_sel(d, c, b) <span style="color: green;">''(alternative 4)''</span>
&nbsp;
<span style="color: green;">''Bitwise majority function.''</span>
(40 ≤ i ≤ 59): f = (b '''and''' c) '''or''' (d '''and''' (b '''or''' c)) <span style="color: green;">''(alternative 1)''</span>
(40 ≤ i ≤ 59): f = (b '''and''' c) '''or''' (d '''and''' (b '''xor''' c)) <span style="color: green;">''(alternative 2)''</span>
(40 ≤ i ≤ 59): f = (b '''and''' c) + (d '''and''' (b '''xor''' c)) <span style="color: green;">''(alternative 3)''</span>
(40 ≤ i ≤ 59): f = (b '''and''' c) '''xor''' (b '''and''' d) '''xor''' (c '''and''' d) <span style="color: green;">''(alternative 4)''</span>
(40 ≤ i ≤ 59): f = vec_sel(c, b, c '''xor''' d) <span style="color: green;">''(alternative 5)''</span>

Max Locktyukhin ayrıca 32-79 arasındaki turları aşağıdaki gibi göstermiştir:<ref>{{Citation |first1=Max |last1=Locktyukhin |first2=Kathy |last2=Farrel |url=http://software.intel.com/en-us/articles/improving-the-performance-of-the-secure-hash-algorithm-1/ |title=Improving the Performance of the Secure Hash Algorithm (SHA-1) |journal=Intel Software Knowledge Base |publisher=Intel |date=2010-03-31 |accessdate=2010-04-02}}</ref>

w[i] = (w[i-3] '''xor''' w[i-8] '''xor''' w[i-14] '''xor''' w[i-16]) '''[[Circular shift|leftrotate]]''' 1

şununla değiştirilebilir:

w[i] = (w[i-6] '''xor''' w[i-16] '''xor''' w[i-28] '''xor''' w[i-32]) '''[[Circular shift|leftrotate]]''' 2

This transformation keeps all operands 64-bit aligned and, by removing the dependency of <code>w[i]</code> on <code>w[i-3]</code>, allows efficient SIMD implementation with a vector length of 4 like [[x86]] [[Streaming SIMD Extensions|SSE]] instructions.

Bu dönüşüm tüm işlenilenleri 64-bit hizalı tutar ve <code>w[i]</code> 'nin <code>w[i-3]</code> üzerindeki bağımlılığını silerek x86 SSE işlemleri gibi vektör uzunluğu 4 olan verimli SIMD (Single Instruction Stream - Multiple Data Stream) uygulamasına izin verir.

==Comparison of SHA functions==
In the table below, ''internal state'' means the "internal hash sum" after each compression of a data block.
{{Further information|Merkle–Damgård construction}}

Note that performance will vary not only between algorithms, but also with the specific implementation and hardware used. The [[OpenSSL]] tool has a built-in "speed" command that benchmarks the various algorithms on the user's system.

== Notlar ==
{{reflist|30em}}


== Kaynakça ==
== Kaynakça ==
{{kaynakça}}
{{refbegin}}
* Florent Chabaud, Antoine Joux: Differential Collisions in SHA-0. [[CRYPTO]] 1998. pp56–71
* [[Eli Biham]], Rafi Chen, Near-Collisions of SHA-0, Cryptology ePrint Archive, Report 2004/146, 2004 (appeared on CRYPTO 2004), [http://eprint.iacr.org/2004/146/ IACR.org]
* [[Xiaoyun Wang]], Hongbo Yu and Yiqun Lisa Yin, Efficient Collision Search Attacks on SHA-0, CRYPTO 2005, [http://www.cs.cmu.edu/~dbrumley/srg/spring06/sha-0.pdf CMU.edu]
* [[Xiaoyun Wang]], Yiqun Lisa Yin and Hongbo Yu, Finding Collisions in the Full SHA-1, Crypto 2005 [http://people.csail.mit.edu/yiqun/SHA1AttackProceedingVersion.pdf MIT.edu]
* [[Henri Gilbert]], [[Helena Handschuh]]: Security Analysis of SHA-256 and Sisters. [[Selected Areas in Cryptography]] 2003: pp175–193
* [http://www.unixwiz.net/techtips/iguide-crypto-hashes.html unixwiz.net]
* {{cite journal|title=Proposed Revision of Federal Information Processing Standard (FIPS) 180, Secure Hash Standard|journal=Federal Register|date=1994-07-11|first=|last=|volume=59|issue=131|pages=35317–35318|id= |url=http://frwebgate1.access.gpo.gov/cgi-bin/waisgate.cgi?WAISdocID=5963452267+0+0+0&WAISaction=retrieve|format=|accessdate=2007-04-26}}
* A. Cilardo, L. Esposito, A. Veniero, A. Mazzeo, V. Beltran, E. Ayugadé, A CellBE-based HPC application for the analysis of vulnerabilities in cryptographic hash functions, High Performance Computing and Communication international conference, August 2010
{{refend}}


== Dış bağlantılar ==
== Dış bağlantılar ==
<!-- We suffer from a lot of self promotion here.
--- Please do not add a link to your own site. See http://en.wikipedia.org/w/index.php?title=WP:COI
--- It will be removed, and you may be blocked without further warning. -->
* [http://csrc.nist.gov/groups/ST/toolkit/secure_hashing.html CSRC Cryptographic Toolkit] – Official [[National Institute of Standards and Technology|NIST]] site for the Secure Hash Standard
* [http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf FIPS 180-4: Secure Hash Standard (SHS)]
* RFC 3174 (with sample C implementation)
* [http://www.zdnet.com/news/fixing-a-hole-in-security/141588 Interview with Yiqun Lisa Yin concerning the attack on SHA-1]
* [http://www.heise-online.co.uk/security/Hash-cracked--/features/75686 Explanation of the successful attacks on SHA-1] (3 pages, 2006)
* [http://www.cryptography.com/cnews/hash.html Cryptography Research – Hash Collision Q&amp;A]
* [http://www.OnlineHashcrack.com Online SHA1 hash crack using Rainbow tables]
* [http://www.hashproject.eu Hash Project Web Site: software- and hardware-based cryptanalysis of SHA-1]
* {{dmoz|Science/Math/Applications/Communication_Theory/Cryptography/Algorithms/Message_Digests}}
* {{YouTube|5q8q4PhN0cw|Lecture on SHA-1}} by [http://www.emsec.rub.de/chair/_staff/christof-paar/ Christof Paar]


[[Kategori:Kriptoloji]]
[[Kategori:Kriptoloji]]

Sayfanın 21.25, 26 Nisan 2017 tarihindeki hâli

SHA-1 (Secure Hash Algorithm 1) NSA (National Security Agency) tarafından dizayn edilmiş ve NIST (National Institute of Standarts and Technology)[1] tarafından yayınlanmış bir Amerika Birleşik Devletleri Federal Bilgi İşleme Standartı (Federal Information Processing Standard)'dır. SHA-1, mesaj özeti olarak da bilinen 160-bit özet değeri üretir. Bir SHA-1 özet değeri genellikle 40 basamaklı bir onaltılık sayı olarak üretilir.

SHA-1 artık güvenli bir algoritma olarak düşünülmemektedir. Kriptanalistlerin 2005'te yaptığı bir saldırıyla SHA-1'in devam eden kullanım için[2] yeterince güvenli olmadığını ispatladılar.[3] Bu yüzden 2010'dan beri SHA-1 yerine daha güvenli olan SHA-2 veya SHA-3[4][5][6] öneriliyor. 2017 itibariyle ise Microsoft[7], Google[8], Apple[9] ve Mozilla[10][11][12] SSL sertifikalarından SHA-1 desteğini çekeceklerini açıkladılar.

23 Şubat 2017'de CWI Amsterdam ve Google SHA-1'e[13][14] çakışma saldırısı yaptıklarını duyurdular ve iki farklı PDF dosyasının aynı SHA-1 özetini ürettiklerini kanıtladılar.[15]

Gelişimi

SHA-1 ile üretilen mesaj özeti, Ronald L. Rivest tarafından tasarlanmış MD4 ve MD5 algoritmaları ile üretilen mesaj özetlerine benzer fakat daha sade bir yapıdadır.

SHA-1 Amerika Birleşik Devletlerinin Capstone Projesi[16] kapmasında üretilmiştir. Algoritmanın orijinal özellikleri NIST (National Institute of Standards and Technology) tarafından 1993 yılında Güvenli Özet Standartı, FIPS PUB 180, başlığı altında yayınlandı.(18-19).[17][18] Bu versiyon şu anda SHA-0 olarak bilinmektedir. Bu versiyon NSA tarafından yayınlanmasından kısa bir süre sonra geri çekilerek tekrar gözden geçirilmiş ve 1995 yılında FIPS PUB 180-1'de SHA-1 olarak yayınlanmıştır. SHA-1'in SHA-0'dan tek farkı, SHA-1'in sıkıştırma fonksiyonundaki mesaj planındaki bir bit işlemi rotasyonudur. NSA'ya göre bu işlem orijinal algoritmadaki şifreleme güvenliğini azaltan bir hatayı çözmek için yapılmıştır, fakat NSA bunun hakkında daha fazla bilgi paylaşmamıştır. Gerçekten de SHA-0 bilinen tekniklerle SHA-1'den daha önce kırılmıştır.

Uygulamaları

Kriptografi

SHA-1 TLS, SSL, PGP, SSH, S/MIME ve IPsec gibi birçok güvenlik uygulaması ve protokolünün bir parçası olarak kullanılmaktadır. Bu uygulamarda SHA-1 yerine MD5 da kullanılabilemektedir. Hem SHA-1 hem de MD5, MD4'ten yola çıkılarak tasarlanmışlardır. Ayrıca SHA-1 Git, Mercurial ve Monotone gibi dağıtık revizyon kontrol sistemlerinde revizyonların belirlenmesinde ve veri bozulmalarının ve/veya müdahalelerinin algılanmasında kullanılmaktadır. Algoritma Nintedo Wii oyun konsollarında booting sırasında imza doğrulaması sağlamak için kullanılmıştır, fakat algoritmanın ilk uygulanmasında saldırganların sistemin güvenlik planını rahatlıkla geçebildiği önemli bir açık oluşmuştur.[19]

Başka kriptografik algoritma ve protokolleri kullanan ABD Hükümeti uygulamalarında hassas ve gizli bilgilerin güvenliği için SHA-1 ve SHA-2 kriptografik özet algoritmalarının kullanılması yasalar tarafından zorunlu tutulmuştur. Ayrıca FIPS PUB 180-1, özel kurumların da SHA-1 algoritmasını kullanmasını desteklemiştir. SHA-1 artık hükümet işlerinin çoğunda kullanılmıyor. NIST ( National Institute of Standards and Technology)'in bir açıklamasında, "Federal ajanslar çarpışma direnci gerektiren uygulamalarda en kısa zamanda SHA-1 algoritmasını kullanmayı bırakmalı ve bu uygulamalar için 2010'dan sonra SHA-2 kriptografik özet algoritma ailesini kullanmaya başlamak zorundadırlar."(orijinal vurgu).[20] Bu zorunluluk daha sonra gevşetildi.[21]

Güvenli özet fonksiyonlarının yayınlanmasındaki en önemli motivasyon Dijital İmza Algoritması'dır.

SHA özet fonksiyonları SHACAL blok şifreleme'nin temelinde kullanılmıştır.

Veri Bütünlüğü

Git ve Mercurial gibi revizyon kontrol sistemleri SHA-1'i sadece güvenlik için kullanmaz ayrıca verinin herhangi bir bozulmaya uğrayarak değişmediğine emin olmak için kullanır. Linus Torvalds Git ile ilgili şunları söylemiştir;

Eğer disk bozulması varsa, DRAM bozulması varsa, veya herhangi bir sorun varsa Git hepsini algılayacaktır. Ya algılamazsa sorusu yok, bu bir kesinliktir. Zarar vermeye çalışan insanlar olabilir. Kesinlikle başaramayacaklar. [...] Kimse SHA-1'i kıramadı, fakat Git'i ilgilendiren SHA-1'in güvenlik özellikleri değil. Tamamiyle tutarlılık kontolü özelliği. Güvenlik kısmı bir yana, birçok insan şunu düşünüyor: Git SHA-1'i kullanıyor ve SHA-1 de kriptografik güvenlikte kullanılıyor. Demek ki Git'in güvenliği bununla sağlanıyor, diye düşünecekler. Git'te bunun güvenlikle hiçbir ilgisi yok. Bu sadece bulabileceğin en iyi özet fonksiyonu. [...]

Size şunun garantisini verebilirim: eğer verinizi Git'e koyarsanız, sizin sabit disk'inizden DVD'ye - veya 5 yıl sonra hangi teknoloji kullanılırsa ona - kopyalanınca bundan 5 yıl sonra bile verdiğiniz veriyi tamamı ile aynı şekilde geri alabilirsiniz. [...]

İlgilendiğim bir konu da çekirdek. İnsanların çekirdek kaynak kodlarını bozmaya çalıştıkları BitKeeper sitelerinden birinde açık yakalandığını gördük.[22] Fakat Git çarpışma durumda nesnenin en eski sürümünü tutmayı tercih edeceğinden bir saldırganın gizlice dosyaların üzerine yazmasını engellemiş olur. Böylece SHA-1'in ikinci-öngörüntü direnci güvenlik özelliğine ihtiyaç duymaz.

[23]

Kriptanaliz ve Doğrulama

L bit özet uzunluğuna sahip bir kriptografik özet fonksiyonunda, özete karşılık gelen bir mesaj her zaman brute-force saldırısı ile yaklaşık 2L denemede bulunabilir. Bu saldırıya öngörüntü saldırısı denir ve L'nin uzunluğuna ve bilgisayar sistemine göre pratik olabilir veya olamayabilir. İkinci ölçüt "çarpışma" aynı mesaj özetini üreten iki farklı mesaj bulmak, doğum günü saldırısı kullanılarak ortalama 1.2 × 2L/2 denemede bulunabilir. Bu ikinci kriterden dolayı bir kriptografik özet fonksiyonunun direnci özet değeri uzunluğunun yarısının kadardır. Böylece SHA-1'in direnci 80-bit karmaşıklığında düşünülebilir.

Kriptologlar SHA-0 için çarpışma çiftleri üretmeyi başarmışlar ve SHA-1'i de normal direnci olan 280 denemeden daha kısa sürede çarpışma bulabilen bir algoritma bulmuşlardır.

Pratik güvenlikte, bu yeni saldırılarla ilgili en büyük endişe, daha etkili saldırılara yol açmalarıdır. Her ne kadar durumun böyle olup olmadığı daha bilinmese de, daha güçlü özet fonksiyonlarına geçilmesinin gerekliliğine inanılıyor. Parolaların saklanması gibi basit kriptografik özet fonksiyonu uygulamaları çarpışma saldırılarından minimum şekilde etkilenirler. Belirli bir hesap için çalışan bir parola oluşturmak için öngörüntü saldırısı ve orijinal parolanın özetine erişim gerektirir. Parola şifrelemesini tersine çevirmek (Kullanıcının parolasını başka yerlerde denemek gibi) bu ataklarla mümkün değildir. (Bununla birlikte, çok güvenli bir özet fonksiyonu bile zayıf parolaları brute-force saldırısına karşı koruyamaz.)

Belge imzalatmada ise, saldırgan var olan bir belge için kolaylıkla sahte bir imza üretemez. Şöyle yapabilir: saldırgan normal ve hileli iki belge üretir ve özel anahtar sahibine normal belgeyi imzalatır. Bu saldırının mümkün olduğu bazı pratik koşullar vardır. Örneğin, 2008'in sonuna kadar bir MD5 çarpışması kullanılarak sahte SSL sertifikaları üretmek mümkündü.[24]

Algoritmalar blok, yineleme yapısı ve ek son adımların olmamasından dolayı tüm SHA fonksiyonları (SHA-3[25] dışında) uzunluk uzantısı ve kısmı mesaj çarpışması saldırılarına karşı savunmasızdır.[26] Anahtarlı özet fonksiyonlarında — SHA(mesaj || anahtar) veya SHA(anahtar || mesaj) — saldırgan, anahtarı bilmeden sadece mesajı uzatıp özet değerini yeniden hesaplayarak anahtarla imzalanmış mesajı bulabilir. Bu saldırıyı önlemek için yapılmış basit bir iyileştirme mesajın özetinin iki kere almaktır. SHAd(mesaj) = SHA(SHA(0b || mesaj)) (0. blok olan 0bnin uzunluğu özet fonksiyonunun blok boyutuna eşittir.)

Saldırılar

2005 yılının başlarında, Rijmen ve Oswald'un yayınladığı saldırıda, SHA-1'in basit versiyonunda — 80 turdan 53'ü —  280 işlemden daha az işlemde çarpışmalar bulunmuştur.[27]

Şubat 2005'te  Xiaoyun Wang, Yiqun Lisa Yin, ve Hongbo Yu tarafından bir saldırı duyuruldu. Saldırıda SHA-1'in normal versiyonunda 269 işlemden daha kısa sürede çarpışmalar bulundu. ( Bir brute-force saldırısı ile çarpışma bulmak 280 işlem gerektirir.)

Saldırıyı yapanlar şöyle açıkladılar: "Analizimiz SHA-0'daki orijinal diferansiyel saldırıya ve çarpışma saldırılarına, çok bloklu çarpışma tekniklerine ve MD5'teki çarpışma arama saldırılarında kullanılan mesaj değiştirme tekniklerine dayanıyor. SHA-1'i bu güçlü analitik tekniklerin yardımı olmadan kıramazdık."[28] Aynı zamanda 58-tur SHA-1'i 233 özet işleminde kırabilen bir çarpışma sundular. Saldırının tüm detaylarını içeren makale 2005 yılının ağustos ayında CRYPTO konferansında sunuldu.

Yin bir röportajında, "Kabaca şu iki zayıflıktan yararlandık: İlki dosya ön işleme aşaması yeteri kadar karışık değil, ilk 20 turdaki bazı matematiksel işlemlerde beklenmedik güvenlik açıkları mevcut."[29]

17 Ağustos 2005'te bir CRYPTO 2005 oturumunda Xiaoyun Wang, Andrew Yao ve Frances Yao adına SHA-1 saldırısında yapılan bir iyileştirme duyuruldu. Çarpışma bulmak için gereken ortalama işlem sayısı 263 'e düşürüldü.[30] 18 Aralık 2007'de bu sonucun ayrıntıları Martin Cochran tarafından açıklanmış ve doğrulanmıştır.[31]

Christophe De Cannière ve Christian Rechberger, "SHA-1 Özelliklerini Bulma: Genel Sonuçlar ve Uygulamalar"[32] makalesi ile SHA-1 saldırılarını daha da geliştirdiler ve ASIACRYPT 2006'daki en iyi makale ödülünü almaya hak kazandılar. 64-tur SHA-1 için 2 blok çarpışma optimize edilmemiş yöntemler kullanılarak 235 işlemde bulundu. Bu saldırı yaklaşık 235 işlemde yapılabildiğinden teorik bir eşik olarak kabul edilir.[33] Daha sonra 2010'da Grechnikov tarafından bu saldırı 80'de 73-tur'a kadar geliştirildi.[34] Bununla tüm 80-turluk bir özet fonksiyonunda çarpışma bulmak için muazzam şekilde işlem süresi gerekiyor. Bu yüzden, 8 Ağustos 2007'de SHA-1'de çarpışma bulmak amacıyla Graz Teknoloji Üniversite'sinde dağıtılmış bilgi işlem platformu olan BOINC ile çarpışma araması başlatıldı fakat 12 Mayıs 2009'da yeterince ilerleme sağlanamadığından sonlandırıldı.[35]

2006'daki CRYPTO oturumunda, Christian Rechberger ve Christophe De Cannière saldırganın SHA-1'deki mesajın en azından bir kısmını elde edebilecekleri bir saldırı bulduklarını duyurdular.[36][37]

2008'de Stéphane Manuel tarafından yayınlanan bir raporda özet fonksiyonunda çarpışmanın tahmini olarak 251  - 257 işlemlik teorik karmaşıklıkta bulunabileceğini öne sürdü.[38] Fakat daha sonrasında yerel çarpışma yollarının aslında bağımsız olmadığı anlayıp bu tahminin geri çekmiş ve bilinen en etkili çarpışma vektörünün yine bu çalışmadan önceki bilinen yöntem olduğunu aktarmıştır.[39]

Cameron McDonald, Philip Hawkes ve Josef Pieprzyk Eurocrypt 2009 oturumunda 252 karmaşıklıkta kırılabilen yeni bir özet çarpışma saldırı bulduklarını öne sürdüler.[40] Fakat bu iddianın makalesi olan "O(252) karmaşıklığında SHA-1 için Diferansiyel Yolu" makalesindeki hatalar sebebiyle yazarlar iddialarını geri çektiler.[41]

Başka bir saldırıda da Marc Stevens[42] tek bir özet değerini kırmak için bulut sunucularından tahmini değeri $2.77M olan CPU gücü kiralamıştır.[43] Stevens bu saldırıyı HashClash[44] adlı projede bir diferansiyel yol saldırısı kullanarak gerçekleştirdi. 8 Kasım 2010'da SHA-1'e karşı tamamen çalışan bir çarpışmaya yakın bir çarpışma saldırısını tahmini olarak 257.5 işlemde gerçekleştirebileceğini iddia etti. Ayrıca bu saldırının tahmini 261 işlemde kırılabilen bir tam çarpışma saldırısına dönüştürülebileceğini öne sürdü.

The SHAppening

8 Ekim 2015'te  Marc Stevens, Pierre Karpman, ve Thomas Peyrin SHA-1 özet fonksiyonunda yalnızca 257 işlem gerektiren bir çarpışma saldırısı yayınladılar. Bu tam olarak bir tam SHA-1 özet fonksiyonu çarpışma saldırısı (saldırgan iç aşamasını özgürce seçemediği) değildir, fakat yine de SHA-1'in güvenlik iddiasını zayıflatır. Özellikle, ilk defa tam SHA-1'e bir çarpışma saldırısı yapılabildiği gösterildi. Önceki saldırıların hepsi pratik olarak gerçekleştirilmeleri çok pahalı saldırılardı. SHA-1'in kriptanalizindeki bu önemli atılım The SHAppening[5] olarak isimlendirildi.

Bu metot Joux ve Peyrin'in yardımcı yolları(veya bumerangları) hızlandırma tekniği ile daha önceki çalışmalarına ve NVIDIA'nın yüksek performans/maliyet 'e sahip GPU 'larının kullanımına dayanıyor. Çarpışma, toplamda 64 grafik kartına sahip 16 düğümlü bir küme ile bulundu. Yazarlar benzer bir çarpışmanın EC2[5]'de $2,000 'lık GPU zamanıyla bulunabileceği tahmininde bulundular.

Yazarlar aynı zamanda, tam SHA-1 çarpışması yapmak için 75 bin ile 125 bin ABD doları maliyetindeki EC2 CPU/GPU gücünün yeterli olacağını söylemişler ve bunun bir suç örgütünün veya herhangi bir ulusal istihbarat örgütünün bütçesiyle rahatlıkla yapılabileceğini belirtmişlerdir. Ayrıca yazarlar SHA-1'in kullanımının olabildiğince çabuk durdurulmasını önerdiler.[5]

SHAttered

23 Şubat 2017'de Google SHAttered saldırısı ismini verdikleri saldırı ile yaklaşık 263.1 işlemde aynı SHA-1 özeti veren 2 farklı PDF dosyası ürettiklerini duyurdular. Bu saldırı 280 işlemde bulunabilen brute-force ile SHA-1 özeti çarpışması bulmaktan (doğum günü saldırısı) yaklaşık 100,000 kat daha hızlıdır. Bu saldırı yaklaşık tek CPU işlem gücüyle yaklaşık 6,500 yıl veya tek GPU işlem gücü ile yaklaşık 110 yıl sürerdi.[45]

SHA-0

 CRYPTO 98 'de  Florent Chabaud ve Antoine Joux isimli iki Fransız araştırmacı, 261 karmaşıklıkta yapılabilen bir çarpışma buldular, ki bu saldırı aynı uzunluktaki ideal özet fonksiyonu kamaşıklığı olan 280 işlemden çok daha azdır.[46]

2004 'te Biham ve Chen SHA-0 için çarpışmaya yakın saldırılar keşfettiler. (Neredeyse aynı özet değeri olan —160 bitten 142'si aynı — iki farklı mesaj buldular.) Aynı zamanda SHA-0 'ın tam çarpışmalarını 80-turdan 62-tura düşürülebildiğini buldular.

Daha sonra, 12 Ağustos 2004'te Joux, Carribault, Lemuet, ve Jalby tarafından tam SHA-0 algoritması için çarpışma bulunduğu açıklandı. Bu saldırı Chabaud veJoux 'un saldırılarının genelleştirilmesiyle yapıldı. Çapışma 251 karmaşıklıkta bulundu ve 256 Itanium 2 işlemcisine sahip bir süper-bilgisayarda yaklaşık 80,000 işlemci zamanı sürdü. (Bir bilgisayarın 13 gün sürekli kullanılmasına eşdeğer süre)

17 Ağustos 2004'teki CRYPTO 2004 oturumunda Wang, Feng, Lai, and Yu tarafından MD5, SHA-0 ve başka özet fonksiyonlarıyla ilgili saldırıların ön sonuçları açıklandı. Bu sonuçlarda, SHA-0 saldırısının karmaşıklığı 240 olarak açıklandı. Bu da Joux 'a ait saldırıdan çok daha verimli.[47][48]

Şubat 2005 'te Xiaoyun Wang, Yiqun Lisa Yin, ve Hongbo Yu SHA-0 çarpışmasını 239 işlemde bulduklarını duyurdular.[49][50]

2008 'de yapılan bumerang saldırısı ile çarpışma bulmak  233.6 işleme indirildi, ki bu ortalama bir bilgisayarda 1 saatte yapılabilmektedir.[51]


SHA-0 'daki sonuçların ardından bazı uzmanlar, SHA-1 'in yeni kriptosistemlerdeki kullanımına ilişkin planların tekrar gözden geçirilmesi gerektiğini önerdi. CRYPTO 2004 'den sonra, NIST 2010 yılına kadar SHA-1 'in kullanımının aşamalı olarak durdurulacağını ve yerine SHA-2 'nin kullanılacağını açıkladı.[52]

Resmi doğrulaması

FIPS tarafından kabul gören tüm güvenlik fonksiyonları NIST (National Institute of Standards and Technology) ve CSE (Communications Security Establishment) tarafından yürütülen  CMVP (Cryptographic Module Validation Program) programı tarafından doğrulanır. Gayri resmi doğrulama için, çok sayıda test vektörü içeren paket NIST 'in sitesinden indirilebilir, fakat bu testlerden çıkacak sonuç bazı uygulamalar için kanunen zorunlu olan resmi CMVP doğrulaması yerine geçmez.

Aralık 2013 itibariyle, SHA-1 'in 2000'den fazla farklı ve geçerli uygulaması vardır, fakat bunlardan sadece 14 tanesi mesaj boyutu 8 ve katı bit uzunluğundaki mesajlar dışındakilerde çalışabilir.

Örnekler ve Sözde Kodu

Örnek Özetler

Bunlar onaltılık tabanda ve ASCII Base64 formatındaki SHA-1 mesaj özetleri

SHA1("The quick brown fox jumps over the lazy  dog")
onaltılık tabandaki özeti: 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12
ASCII Base64 özeti: L9ThxnotKPzthJ7hu3bnORuT6xI=

Even a small change in the message will, with overwhelming probability, result in many bits changing due to the avalanche effect. For example, changing dog to cog produces a hash with different values for 81 of the 160 bits:

SHA1("The quick brown fox jumps over the lazy cog")
onaltılık tabandaki özeti: de9f2c7fd25e1b3afad3e85a0bd17d9b100db4b3
ASCII Base64 özeti: 3p8sf9JeGzr60+haC9F9mxANtLM=

The hash of the zero-length string is:

SHA1("")
onaltılık tabandaki özeti: da39a3ee5e6b4b0d3255bfef95601890afd80709
ASCII Base64 özeti: 2jmj7l5rSw0yVb/vlWAYkK/YBwk=

SHA-1 sözde kodu

SHA-1 algoritmasının sözde kodu:

Note 1: All variables are unsigned 32-bit quantities and wrap modulo 232 when calculating, except for
        ml, the message length, which is a 64-bit quantity, and
        hh, the message digest, which is a 160-bit quantity.
Note 2: All constants in this pseudo code are in big endian.
        Within each word, the most significant byte is stored in the leftmost byte position

Initialize variables:

h0 = 0x67452301
h1 = 0xEFCDAB89
h2 = 0x98BADCFE
h3 = 0x10325476
h4 = 0xC3D2E1F0

ml = message length in bits (always a multiple of the number of bits in a character).

Pre-processing:
append the bit '1' to the message e.g. by adding 0x80 if message length is a multiple of 8 bits.
append 0 ≤ k < 512 bits '0', such that the resulting message length in bits
   is congruent to −64 ≡ 448 (mod 512)
append ml, the original message length, as a 64-bit big-endian integer. Thus, the total length is a multiple of 512 bits.

Process the message in successive 512-bit chunks:
break message into 512-bit chunks
for each chunk
    break chunk into sixteen 32-bit big-endian words w[i], 0 ≤ i ≤ 15

    Extend the sixteen 32-bit words into eighty 32-bit words:
    for i from 16 to 79
        w[i] = (w[i-3] xor w[i-8] xor w[i-14] xor w[i-16]) leftrotate 1

    Initialize hash value for this chunk:
    a = h0
    b = h1
    c = h2
    d = h3
    e = h4

    Main loop:[1][53]
    for i from 0 to 79
        if 0 ≤ i ≤ 19 then
            f = (b and c) or ((not b) and d)
            k = 0x5A827999
        else if 20 ≤ i ≤ 39
            f = b xor c xor d
            k = 0x6ED9EBA1
        else if 40 ≤ i ≤ 59
            f = (b and c) or (b and d) or (c and d) 
            k = 0x8F1BBCDC
        else if 60 ≤ i ≤ 79
            f = b xor c xor d
            k = 0xCA62C1D6

        temp = (a leftrotate 5) + f + e + k + w[i]
        e = d
        d = c
        c = b leftrotate 30
        b = a
        a = temp

    Add this chunk's hash to result so far:
    h0 = h0 + a
    h1 = h1 + b 
    h2 = h2 + c
    h3 = h3 + d
    h4 = h4 + e

Produce the final hash value (big-endian) as a 160-bit number:
hh = (h0 leftshift 128) or (h1 leftshift 96) or (h2 leftshift 64) or (h3 leftshift 32) or h4

hh sayısı mesaj özetini gösterir. Genellikle ASCII Base64 formatında yazılır ama onaltılık tabanda da yazılabilir.

Buradaki sabit sayılar rastgeleliği maksimize etmek için bilerek seçilmiş sayılardır (nothing up my sleeve numbers): 4 sabit k sayısı 2, 3, 5, ve 10 sayılarının 230 kere kare kökleri alınmış halidir. h0 'danh3 'e kadar olan dört başlangıç değeri MD5 algoritmasındakilerle tamamen aynıdır ve beşinci değer ise (h4) çok benzeridir.

FIPS PUB 180-1 'den direkt formülize etmek yerine, aşağıdaki benzer ifadelerle ana döngüdeki f değeri hesaplanabilir.

Bitwise choice between c and d, controlled by b.
(0  ≤ i ≤ 19): f = d xor (b and (c xor d))                (alternative 1)
(0  ≤ i ≤ 19): f = (b and c) xor ((not b) and d)          (alternative 2)
(0  ≤ i ≤ 19): f = (b and c) + ((not b) and d)            (alternative 3)
(0  ≤ i ≤ 19): f = vec_sel(d, c, b)                       (alternative 4)
 
Bitwise majority function.
(40 ≤ i ≤ 59): f = (b and c) or (d and (b or c))          (alternative 1)
(40 ≤ i ≤ 59): f = (b and c) or (d and (b xor c))         (alternative 2)
(40 ≤ i ≤ 59): f = (b and c) + (d and (b xor c))          (alternative 3)
(40 ≤ i ≤ 59): f = (b and c) xor (b and d) xor (c and d)  (alternative 4)
(40 ≤ i ≤ 59): f = vec_sel(c, b, c xor d)                 (alternative 5)

Max Locktyukhin ayrıca 32-79 arasındaki turları aşağıdaki gibi göstermiştir:[54]

w[i] = (w[i-3] xor w[i-8] xor w[i-14] xor w[i-16]) leftrotate 1

şununla değiştirilebilir:

w[i] = (w[i-6] xor w[i-16] xor w[i-28] xor w[i-32]) leftrotate 2

This transformation keeps all operands 64-bit aligned and, by removing the dependency of w[i] on w[i-3], allows efficient SIMD implementation with a vector length of 4 like x86 SSE instructions.

Bu dönüşüm tüm işlenilenleri 64-bit hizalı tutar ve w[i] 'nin w[i-3] üzerindeki bağımlılığını silerek x86 SSE işlemleri gibi vektör uzunluğu 4 olan verimli SIMD (Single Instruction Stream - Multiple Data Stream) uygulamasına izin verir.

Comparison of SHA functions

In the table below, internal state means the "internal hash sum" after each compression of a data block. Şablon:Further information

Note that performance will vary not only between algorithms, but also with the specific implementation and hardware used. The OpenSSL tool has a built-in "speed" command that benchmarks the various algorithms on the user's system.

Notlar

  1. ^ a b http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf
  2. ^ Schneier, Bruce (February 18, 2005). "Schneier on Security: Cryptanalysis of SHA-1". 
  3. ^ Schneier, Bruce (February 18, 2005). "Schneier on Security: Cryptanalysis of SHA-1". 
  4. ^ "NIST.gov - Computer Security Division - Computer Security Resource Center". 
  5. ^ a b c d Stevens1, Marc; Karpman, Pierre; Peyrin, Thomas. "The SHAppening: freestart collisions for SHA-1". Erişim tarihi: 2015-10-09. 
  6. ^ Schneier, Bruce (8 October 2015). "SHA-1 Freestart Collision". Schneier on Security. 
  7. ^ "Windows Enforcement of Authenticode Code Signing and Timestamping". Microsoft. 2015-09-24. Erişim tarihi: 2016-08-07. 
  8. ^ "Intent to Deprecate: SHA-1 certificates". Google. 2014-09-03. Erişim tarihi: 2014-09-04. 
  9. ^ "Safari and WebKit ending support for SHA-1 certificates - Apple Support". Apple Inc. 2017-01-24. Erişim tarihi: 2017-02-04. 
  10. ^ "Bug 942515 - stop accepting SHA-1-based SSL certificates with notBefore >= 2014-03-01 and notAfter >= 2017-01-01, or any SHA-1-based SSL certificates after 2017-01-01". Mozilla. Erişim tarihi: 2014-09-04. 
  11. ^ "CA:Problematic Practices - MozillaWiki". Mozilla. Erişim tarihi: 2014-09-09. 
  12. ^ "Phasing Out Certificates with SHA-1 based Signature Algorithms | Mozilla Security Blog". Mozilla. 2014-09-23. Erişim tarihi: 2014-09-24. 
  13. ^ "CWI, Google announce first collision for Industry Security Standard SHA-1". Erişim tarihi: 2017-02-23. 
  14. ^ Şablon:Cite blog
  15. ^ "SHAttered". Erişim tarihi: 2017-02-23. 
  16. ^ RSA FAQ on Capstone
  17. ^ Selvarani, R.; Aswatha, Kumar; T V Suresh, Kumar. Proceedings of International Conference on Advances in Computing. s. 551. 
  18. ^ Secure Hash Standard, Federal Information Processing Standards Publication FIPS PUB 180, National Institute of Standards and Technology, 11 May 1993 
  19. ^ Domke, Felix aka "tmbinc" (2008-04-24). "Thank you, Datel". Erişim tarihi: 2014-10-05. For verifying the hash (which is the only thing they verify in the signature), they have chosen to use a function (strncmp) which stops on the first nullbyte – with a positive result. Out of the 160 bits of the SHA1-hash, up to 152 bits are thrown away. 
  20. ^ National Institute on Standards and Technology Computer Security Resource Center, NIST's March 2006 Policy on Hash Functions, accessed September 28, 2012.
  21. ^ National Institute on Standards and Technology Computer Security Resource Center, NIST's Policy on Hash Functions, accessed September 28, 2012.
  22. ^ "Tech Talk: Linus Torvalds on git". Erişim tarihi: November 13, 2013. 
  23. ^ Torvalds, Linus. "Re: Starting to think about sha-256?". marc.info. Erişim tarihi: 30 May 2016. 
  24. ^ Sotirov, Alexander; Stevens, Marc; Appelbaum, Jacob; Lenstra, Arjen; Molnar, David; Osvik, Dag Arne; de Weger, Benne (Aralık 30, 2008). "MD5 considered harmful today: Creating a rogue CA certificate". Erişim tarihi: Mart 29, 2009. 
  25. ^ "Strengths of Keccak - Design and security". The Keccak sponge function family. Keccak team. Erişim tarihi: 20 September 2015. Unlike SHA-1 and SHA-2, Keccak does not have the length-extension weakness, hence does not need the HMAC nested construction. Instead, MAC computation can be performed by simply prepending the message with the key. 
  26. ^ Niels Ferguson, Bruce Schneier, and Tadayoshi Kohno, Cryptography Engineering, John Wiley & Sons, 2010. ISBN 978-0-470-47424-2
  27. ^ "Cryptology ePrint Archive: Report 2005/010". 
  28. ^ MIT.edu, Massachusetts Institute of Technology
  29. ^ Lemos, Robert. "Fixing a hole in security". ZDNet. 
  30. ^ "New Cryptanalytic Results Against SHA-1 - Schneier on Security". 
  31. ^ Notes on the Wang et al. 263 SHA-1 Differential Path
  32. ^ De Cannière, Christophe; Rechberger, Christian (2006-11-15). "Finding SHA-1 Characteristics: General Results and Applications". 
  33. ^ "IAIK Krypto Group — Description of SHA-1 Collision Search Project". Erişim tarihi: 2009-06-30. 
  34. ^ "Collisions for 72-step and 73-step SHA-1: Improvements in the Method of Characteristics". Erişim tarihi: 2010-07-24. 
  35. ^ "SHA-1 Collision Search Graz". Erişim tarihi: 2009-06-30. 
  36. ^ "heise online - IT-News, Nachrichten und Hintergründe". heise online. 
  37. ^ "Crypto 2006 Rump Schedule". 
  38. ^ Manuel, Stéphane. "Classification and Generation of Disturbance Vectors for Collision Attacks against SHA-1" (PDF). Erişim tarihi: 2011-05-19. 
  39. ^ Manuel, Stéphane. "Classification and Generation of Disturbance Vectors for Collision Attacks against SHA-1". Erişim tarihi: 2012-10-04.  the most efficient disturbance vector is Codeword2 first reported by Jutla and Patthak
  40. ^ SHA-1 collisions now 2^52
  41. ^ "Cryptology ePrint Archive: Report 2009/259". 
  42. ^ Cryptanalysis of MD5 & SHA-1
  43. ^ "When Will We See Collisions for SHA-1? - Schneier on Security". 
  44. ^ "Google Project Hosting". 
  45. ^ Kaynak hatası: Geçersiz <ref> etiketi; shatteredpaper isimli refler için metin sağlanmadı (Bkz: Kaynak gösterme)
  46. ^ Chabaud, Florent; Joux, Antoine (1998). Differential Collisions in SHA-0 (PDF). CRYPTO '98. 
  47. ^ "Report from Crypto 2004". 
  48. ^ Grieu, Francois (18 August 2004). "Re: Any advance news from the crypto rump session?". Etkinlik zamanı: 05:06:02 +0200.  Bilinmeyen parametre |newsgroup= görmezden gelindi (yardım); Bilinmeyen parametre |message-id= görmezden gelindi (yardım)
  49. ^ "SHA-1 Broken - Schneier on Security". 
  50. ^ (Çince) Sdu.edu.cn, Shandong University
  51. ^ Manuel, Stéphane; Peyrin, Thomas (2008-02-11). "Collisions on SHA-0 in One Hour". 
  52. ^ National Institute of Standards and Technology
  53. ^ "RFC 3174 - US Secure Hash Algorithm 1 (SHA1)". 
  54. ^ Locktyukhin, Max; Farrel, Kathy (2010-03-31), "Improving the Performance of the Secure Hash Algorithm (SHA-1)", Intel Software Knowledge Base, Intel, erişim tarihi: 2010-04-02 

Kaynakça

Dış bağlantılar