Hashcash - Hashcash

Hashcash bir iş kanıtı sistemi sınırlamak için kullanılır e-posta spam ve hizmet reddi saldırıları ve son zamanlarda kullanımıyla tanındı bitcoin (ve diğeri kripto para birimleri ) madencilik algoritmasının bir parçası olarak. Hashcash, 1997 yılında Adam Geri[1] ve Back'in 2002 tarihli makalesi "Hashcash - A Denial of Service Counter-Measure" da daha resmi olarak açıklanmıştır.[2]

Arka fon

"... bir kullanıcının orta derecede zor, ancak inatçı olmayan bir işlevi hesaplamasını zorunlu kılma ..." fikri, Cynthia Dwork ve Moni Naor 1992 tarihli "Önemsiz Posta İşleme veya Önemsiz Postayla Mücadele Yoluyla Fiyatlandırma" başlıklı makalesinde.[3]

Nasıl çalışır

Hashcash, hesaplamak için seçilebilir miktarda iş gerektiren, ancak ispat verimli bir şekilde doğrulanabilen şifreli bir hash tabanlı iş kanıtı algoritmasıdır. E-posta kullanımları için, hashcash damgasının metinsel bir kodlaması, başlık gönderenin e-postayı göndermeden önce damgayı hesaplamak için mütevazı bir CPU zamanı harcadığını kanıtlamak için bir e-posta. Başka bir deyişle, gönderenin damgayı oluşturması ve e-postayı göndermesi belirli bir süre aldığından, spam gönderici olma olasılığı düşüktür. Alıcı, ihmal edilebilir hesaplama maliyetiyle, damganın geçerli olduğunu doğrulayabilir. Ancak, gerekli özelliklere sahip bir başlık bulmanın bilinen tek yolu kaba kuvvet, cevap bulunana kadar rastgele değerleri denemek; Tek bir dizeyi test etmek kolay olsa da, tatmin edici cevaplar, cevabı bulmak için önemli sayıda deneme gerektirecek kadar nadirdir.

Hipotez, iş modeli mesaj başına çok az maliyetle çok sayıda e-posta gönderme becerisine dayanan spam göndericilerin, gönderdikleri her spam için küçük bir maliyet olsa bile kârlı olmayacaklarıdır. Alıcılar, bir gönderenin böyle bir yatırım yapıp yapmadığını doğrulayabilir ve sonuçları e-postayı filtrelemeye yardımcı olması için kullanabilir.

Teknik detaylar

Başlık satırı şuna benzer:[4]

X-Hashcash: 1: 20: 1303030600: [email protected] :: McMybZIhxKXu57jd: ckvi

Başlık şunları içerir:

  • ver: Hashcash biçimi sürüm, 1 (sürüm 0'ın yerini alır).
  • bitler: Hashing uygulanmış koddaki "kısmi ön görüntü" (sıfır) bitlerinin sayısı.
  • tarih: Mesajın gönderildiği saat, formatta YYAAGG [ssdd [ss]].
  • kaynak: Aktarılan kaynak veri dizisi, örneğin bir IP adresi veya e-posta adresi.
  • ext: Uzantı (isteğe bağlı; sürüm 1'de yok sayılır).
  • rand: Kodlanmış rastgele karakterler dizesi temel-64 biçim.
  • sayaç: İkili sayaç, 64 tabanlı formatta kodlanmıştır.

Başlık, alıcının e-posta adresini, mesajın tarihini ve gerekli hesaplamanın yapıldığını kanıtlayan bilgileri içerir. Alıcının e-posta adresinin varlığı, her alıcı için farklı bir başlığın hesaplanmasını gerektirir. Tarih, alıcının yakın zamanda alınan başlıkları kaydetmesine ve başlığın e-posta mesajına özel olmasını sağlamasına olanak tanır.

Gönderenin tarafı

Gönderen, bir başlık hazırlar ve rastgele bir sayıya başlatılan bir sayaç değerini ekler. Daha sonra 160 biti hesaplar SHA-1 karma başlığın. Karmanın ilk 20 bitinin (yani en önemli 5 onaltılık hanesinin) tümü sıfırsa, bu kabul edilebilir bir başlıktır. Değilse, gönderen sayacı artırır ve karmayı yeniden dener. 2 üzerinden160 olası hash değerleri, 2 var140 bu kriteri karşılayan karma değerler. Bu nedenle, hash'in başlangıcı olarak 20 sıfıra sahip bir başlığı rastgele seçme şansı 2'de 1'dir.20 (yaklaşık 106veya yaklaşık milyonda bir). Gönderenin geçerli bir karma değeri elde etmeye çalışması gereken sayı, şu şekilde modellenir: geometrik dağılım. Bu nedenle, gönderenin ortalama olarak 2'yi denemesi gerekecektir.20 geçerli bir başlık bulmak için değerler. Hash'i hesaplamak için gereken zamanın makul tahminleri göz önüne alındığında, bunun bulunması yaklaşık bir saniye sürecektir. Geçerli bir başlık bulmak için bu kaba kuvvet yaklaşımından daha verimli bir yöntem bilinmemektedir.

Bir masaüstü bilgisayardaki normal bir kullanıcı, Hashcash dizesini oluşturmak için gereken işlem süresinden önemli ölçüde rahatsız olmayacaktır. Ancak, spam gönderenler, gönderdikleri çok sayıda spam ileti nedeniyle önemli ölçüde zarar görürler.

Alıcının tarafı

Teknik olarak sistem aşağıdaki adımlarla uygulanmaktadır:

  • Alıcının bilgisayarı 160 biti hesaplar SHA-1 karma dizenin tamamının (ör. "1: 20: 060408: [email protected] :: 1QTjaYd7niiQA / sc: ePa"). Bu, 1 GHz'lik bir makinede yaklaşık iki mikrosaniye, e-postanın geri kalanının alınması için geçen süreden çok daha kısa sürer. İlk 20 bitin tamamı sıfır değilse, hash geçersizdir. (Daha sonraki sürümler, makine işleme hızları arttıkça daha fazla bitin sıfır olmasını gerektirebilir.)
  • Alıcının bilgisayarı başlıktaki tarihi kontrol eder (ör. "060408", 8 Nisan 2006 tarihini temsil eder). Geçerli tarihten itibaren iki gün içinde değilse geçersizdir. (İki günlük pencere, farklı sistemler arasındaki saat sapmasını ve ağ yönlendirme süresini telafi eder.)
  • Alıcının bilgisayarı, karma dizgideki e-posta adresinin alıcı tarafından kaydedilen geçerli e-posta adreslerinden herhangi biriyle eşleşip eşleşmediğini veya alıcının abone olduğu posta listelerinden herhangi biriyle eşleşip eşleşmediğini kontrol eder. Bir eşleşme bulunmazsa, karma dizesi geçersizdir.
  • Alıcının bilgisayarı karma dizeyi bir veritabanına ekler. Dize zaten veritabanındaysa (karma dizesini yeniden kullanma girişiminde bulunulduğunu gösterir), geçersizdir.

Karma dizge tüm bu testleri geçerse, geçerli bir karma dizge olarak kabul edilir. Tüm bu testler, e-postanın gövde içeriğini almaktan çok daha az zaman ve disk alanı kaplar.

Gerekli çaba

Böyle bir hash çarpışmasını hesaplamak için gereken süre üstel sıfır bit sayısı ile. Bu nedenle, spam gönderenlerin geçerli başlık satırları oluşturması çok pahalı olana kadar sıfır bit eklenebilir (her ek sıfır bit ile bir karma hesaplamak için gereken süre iki katına çıkarılır).

Başlığın geçerli olduğunun doğrulanması çok daha hızlıdır ve her zaman aynı miktarda zaman alır, geçerli bir başlık için kaç sıfır bit gerekli olursa olsun, çünkü bu yalnızca tek bir karma işlemi gerektirir.

Avantajlar ve dezavantajlar

Hashcash sistemi şunlara göre avantajlıdır: mikro ödeme gerçek paranın dahil edilmediğine dair yasal e-postaya başvuran teklifler. Ne gönderenin ne de alıcının ödeme yapması gerekmediğinden, herhangi bir mikro ödeme sistemi ile ilgili idari sorunlar ve e-postanın ücretlendirilmesiyle ilgili ahlaki sorunlar tamamen önlenmiş olur.

Öte yandan, Hashcash, gönderilen her e-postada harcanacak potansiyel olarak önemli hesaplama kaynaklarına ihtiyaç duyduğundan, müşterilerin geçerli bir başlığı hesaplamak için harcayacağı ideal ortalama süre miktarını ayarlamak biraz zordur. Bu, alt uçtan erişilebilirlikten ödün vermek anlamına gelebilir gömülü sistemler veya saldırgan ana bilgisayarların istenmeyen postalara karşı etkili bir filtre sağlamak için yeterince zorlanmama riskini çalıştırması.

Hashcash ayrıca posta kullanıcı aracılarında ve spam filtrelerinde uygulanması oldukça basittir. Merkezi sunucuya gerek yoktur. Hashcash artımlı olarak dağıtılabilir - ekstra Hashcash başlığı, onu anlamayan posta istemcileri tarafından alındığında yok sayılır.

Akla yatkın bir analiz[5] Aşağıdaki durumlardan yalnızca birinin muhtemel olduğu sonucuna varmıştır: ya spam olmayan e-posta gönderenin işleme gücünün olmaması nedeniyle takılır ya da spam e-posta yine de geçmeye mahkumdur. Her birinin örnekleri, sırasıyla, merkezi bir e-posta topolojisini içerir (bir mail listesi ), burada bazı sunucuların muazzam miktarda meşru e-postalar ve botnet'ler veya spam gönderenlerin işlem güçlerini büyük ölçüde artırabilecekleri küme çiftlikleri.

Bu sorunların çoğu ele alınabilir. Örneğin, botnet'ler daha hızlı sona erebilir çünkü kullanıcılar yüksek CPU yükünü fark eder ve karşı önlemler alır ve posta listesi sunucuları abonelerin ana bilgisayarlarındaki beyaz listelerde kaydedilebilir ve böylece hashcash zorluklarından kurtarılabilir. Ancak hashcash dağıtımının önünde çözülmesi gereken ciddi engelleri temsil ediyorlar.[kaynak belirtilmeli ]

Öngörülen bir diğer sorun da, bilgisayarların, Moore yasası. Bu yüzden gerekli hesaplamaların zorluğu zamanla arttırılmalıdır. Ancak, gelişmekte olan ülkelerden daha eski donanımlar kullanmaları beklenebilir, bu da e-posta sistemine katılmanın giderek zorlaşacağı anlamına gelir. Bu aynı zamanda gelişmiş ülkelerde en son donanımı alamayan düşük gelirli bireyler için de geçerlidir.

Hashcash gibi, kripto para birimleri iş kanıtı sistemi olarak bir hash işlevi kullanır. Kripto para biriminin yükselişi bir talep yarattı ASIC tabanlı madencilik makineleri. Çoğu kripto para birimi kullansa da SHA-256 karma işlevi, aynı ASIC teknolojisi, bir tüketici CPU'sundan üç kat daha hızlı olan karma çözücüler oluşturmak için kullanılabilir ve spam gönderenler için hesaplama engelini azaltır.

Başvurular

Bitcoin madenciliği

E-posta uygulamalarındaki karma işlemin aksine, alıcıların hedeflenen bir iş miktarını manuel olarak ayarlamasına güvenen caydırmak kötü niyetli gönderenler, bitcoin kripto para birimi ağı farklı bir karma tabanlı kullanır işin kanıtı meydan okumak etkinleştirme rekabetçi bitcoin madenciliği. Bir bitcoin madencisi, ağdaki madeni para satıcılarından onaylanmamış işlemleri toplayan bir bilgisayar programı çalıştırır. Diğer verilerle bunlar bir blok oluşturabilir ve madenciye bir ödeme kazanabilir, ancak ağ tarafından bir blok yalnızca madenci tarafından keşfedildiğinde kabul edilir. Deneme ve hata a "nonce" bloğa dahil edildiğinde, ağın zorluk hedefini karşılamak için yeterli sayıda önde gelen sıfır biti olan bir hash veren sayı. Madencilerden kabul edilen bloklar bitcoin'i oluşturur blok zinciri bu, madeni paranın ilk yaratılışından bu yana her bitcoin işleminin büyüyen bir defteri.

Hashcash, SHA-1 karmasını kullanır ve 160 karma bitin ilk 20'sinin sıfır olmasını gerektirirken, bitcoin'in çalışma kanıtı iki ardışık kullanır SHA-256 karmalar ve başlangıçta gerekli en azından 256 karma bitin ilk 32'si sıfır olacaktır. Bununla birlikte, bitcoin ağı, ortalama blok oluşturma oranını saatte 6'da tutmak için zorluk seviyesini periyodik olarak sıfırlar. Ocak 2020 itibariyle blok # 614525 Bitcoin ağı, madenciler tarafından her zamankinden daha hızlı hashing donanımlarının konuşlandırılmasına, 256 hash bitinin ilk 74'ünün sıfır olması gerekliliğini sertleştirerek yanıt verdi.

Spam filtreleri

Hashcash, aşağıdakiler için potansiyel bir çözüm olarak kullanılır: yanlış pozitifler otomatik spam filtreleme sistemleri ile, meşru kullanıcılar bir damga çıkarmak için harcadıkları ekstra süreden nadiren rahatsız olacaklar.[6] SpamAssassin 2.70 sürümünden bu yana Hashcash damgalarını kontrol edebildi ve geçerli, harcanmamış Hashcash damgaları için negatif bir puan (yani spam olma olasılığı daha düşük) atadı. Ancak, hashcash eklentisi başlangıçta varsayılan olarak açık olmasa da, Hashcash kaynak alanıyla eşleşmesi gereken bir adres kalıpları listesiyle yapılandırılması gerekir, bu nedenle aslında varsayılan olarak çalışmaz.

E-posta istemcileri

Penny Post yazılım projesi[7] açık SourceForge Hashcash'i Mozilla Thunderbird e-posta istemcisi.[8] Proje, göndericiye yalnızca bir kuruşa mal olan geleneksel posta hizmetlerinin tarihsel olarak kullanılabilirliği nedeniyle adlandırılmıştır; görmek Penny Post Tarihte bu tür posta hizmetleri hakkında bilgi için.

E-posta Posta İşareti

Microsoft ayrıca artık kullanımdan kaldırılmış bir[9] Hashcash, Email Postmark ile benzer ve uyumlu olmayan açık spesifikasyon,[10] Koordineli Spam Azaltma Girişiminin (CSRI) bir parçası olarak.[11] Hashcash'in Microsoft e-posta posta işareti varyantı, Microsoft posta altyapısı bileşenleri Exchange, Outlook ve Hotmail'de uygulanmaktadır. Hashcash ve Microsoft'un e-posta posta işareti arasındaki biçim farkı, posta damgasının alıcıya ek olarak gövdeyi karma haline getirmesi ve değiştirilmiş bir SHA-1 karma işlevi olarak ve iş varyansının kanıtını azaltmak için birden çok alt bulmaca kullanır.

Bloglar

E-posta gibi, bloglar sık sık kurbanı olmak yorum spam Bazı blog sahipleri, içinde yazılmış hashcash komut dosyalarını kullanmıştır. JavaScript yorum spam gönderenleri yavaşlatmak için dil.[12] Bazı komut dosyaları (wp-hashcash gibi) hashcash uygulamayı iddia eder, ancak bunun yerine istemciyi eşleşen bir anahtar oluşturmaya zorlamak için JavaScript gizlemesine bağlıdır; bu biraz işlem gücü gerektirse de, hashcash algoritmasını veya hashcash damgalarını kullanmaz.

Fikri mülkiyet

Hashcash patentli değildir ve referans uygulaması[13] ve diğer uygulamaların çoğu özgür yazılımdır. Hashcash dahildir veya birçoğu için mevcuttur Linux dağıtımları.

RSA, istemci bulmacaları hakkında IETF'ye IPR beyanları yaptı[14] bir RFC bağlamında[15] istemci bulmacalarını (hashcash değil) tanımladı. RFC, başlıkta hashcash'i ve referans verilen hashcash'i içeriyordu, ancak burada açıklanan mekanizma, Client-Puzzles'a daha çok benzeyen, bilinen bir çözüm etkileşimli etkileşimli sorundur; hashcash etkileşimli değildir ve bu nedenle bilinen bir çözüme sahip değildir. Her durumda RSA'nın IPR ifadesi, hashcash için geçerli olamaz çünkü hashcash daha önce[1] (Mart 1997) müşteri bulmacaları yayını[16] (Şubat 1999) ve müşteri bulmacaları patent başvurusu US7197639[17] (Şubat 2000).

Ayrıca bakınız

Notlar

  1. ^ a b "Kısmi bir hash çarpışmasına dayalı posta planı" (Txt). Hashcash.org. Alındı 13 Ekim 2014.
  2. ^ "Hashcash - Hizmet Reddi Karşı Tedbiri" (PDF). hashcash.org. 1 Ağustos 2002. Alındı 2 Ocak 2019.
  3. ^ Dwork, Cynthia; Naor, Moni (18 Mayıs 2001). "Önemsiz Posta İşleme veya Önemsiz Postayla Mücadele Yoluyla Fiyatlandırma". Kriptolojideki Gelişmeler - Crypto '92. Bilgisayar Bilimlerinde Ders Notları. Springer. 740: 139–147. doi:10.1007/3-540-48071-4_10. ISBN  978-3-540-57340-1.
  4. ^ "hashcash - hashcash anti-spam / hizmet reddi karşı önlem aracı" (Txt). Hashcash.org. Alındı 13 Ekim 2014.
  5. ^ "Hashcash çalışma kanıtı kağıdı" (PDF). Hashcash.org. Alındı 13 Ekim 2014.
  6. ^ "Hashcash SSS". Hashcash.org. 26 Haziran 2003. Alındı 11 Şubat 2014.
  7. ^ "SourceForge'da Penny Post yazılım projesi". Pennypost.sourceforge.net. Alındı 13 Ekim 2014.
  8. ^ "Penny Post: Posta Pulu derken neyi kastediyorsunuz?". Pennypost.sourceforge.net. 16 Haziran 2008. Alındı 11 Şubat 2014.
  9. ^ "Outlook 2010'da durdurulan özellikler ve değiştirilen işlevler". Office.microsoft.com. Alındı 13 Ekim 2014.
  10. ^ "E-posta Posta İşareti Doğrulama Algoritması" (PDF). Download.microdoft.com. Alındı 13 Ekim 2014.
  11. ^ "Koordineli Spam Azaltma Girişimi: Bir Teknoloji ve Politika Önerisi" (PDF). Arşivlenen orijinal (PDF) 21 Ekim 2013 tarihinde. Alındı 11 Şubat 2014.
  12. ^ Wordpress blog yazılımı için bir eklenti olan WP-Hashcash Arşivlendi 2005-10-27 Wayback Makinesi Elliott Back tarafından JavaScript'te yazılmış Hashcash benzeri bir tesis uygulayan
  13. ^ "C referans uygulaması". hashcash.org. Alındı 13 Ekim 2014.
  14. ^ "RSA Security Inc., bir patent başvurusu yaptı (ABD Seri No. 09 / 496,824)" (Txt). Ietf.org. Alındı 13 Ekim 2014.
  15. ^ "SIP Hesaplamalı Bulmacalar". Tools.ietf.org. Alındı 13 Ekim 2014.
  16. ^ "İstemci Bulmacaları" (PDF). Alındı 13 Ekim 2014.
  17. ^ "İstemci-bulmaca patent başvurusu". Alındı 13 Ekim 2014.

Referanslar

  • Adam Back, "Hashcash - A Denial of Service Counter-Tedbir", teknik rapor, Ağustos 2002 (PDF).
  • Ben Laurie ve Richard Clayton, "'İşin Kanıtı' Çalışmamayı Kanıtlıyor", WEIS 04. (PDF).
  • Dwork, C. ve Naor, M. (1992) "Önemsiz Posta İşleme veya Önemsiz Postayla Mücadele Yoluyla Fiyatlandırma", Crypto '92, s. 139-147. (PDF)

Dış bağlantılar