Един охлюв преминава непосилно голяма за него дупка.
Доста мотивиращ начин да си започнеш деня! (Мерси, Маги.)
Един охлюв преминава непосилно голяма за него дупка.
Доста мотивиращ начин да си започнеш деня! (Мерси, Маги.)
От известно време разните умове се мъчат да измислят решение за справяне със спама - било то email или блог спам. Последната идея (на иначе интелигентния Тим Брей, един от създателите на XML) е за всяко съобщение да се плаща 1 американски цент на определена за целта организация. Сами се сещате, колко проблеми ще има за хората, за които това са не толкова малка сума пари, а и за хората, които нямат кредитна карта...
Замислих се обаче, защо съобщенията да не се таксуват с процесорно време. Нали времето е пари, все пак. :) Ако отнема 10-20 секунди за изпращането на едно съобщение, спамът би бил много по-рентабилен. Измислих едно алгоритъмче, което е доста универсално и лесно за програмиране. Моята примерна програмка (на PHP) е само 5-6 реда.
Моля, да прочетете алгоритъма, да го разберете до колкото можете и да му намерите всички дефекти и недостатъци - да го разкъсате на парчета. Ако нещо не ви е ясно - питайте! Ако получа одобрение тук, ще го публикувам на по-широк форум (и на английски). Ето и идеята:
Приема се един универсален 42-знаков шестнадесетичен ключ, например 22ba2df586f1443d121208f87565a751, който се знае от всички, ползващи системата. Email програмата на изпращача трябва да намери случаен низ от символи, които да добави към съобщението, за да бъде MD5 hash-а на съобщението същият като универсалния ключ. Разбира се би отнело твърде много време да се намери пълно съвпадение, за това програмата трябва да намери съвпадение само на първите 5 знака, тоест само първите 5 знака на двата hash-а се сравняват. Изпращачът добавя намереният случаен низ като header към съобщението и го изпраща.
Когато получателят получи съобщението, случайният низ се залепва на края на съобщението, смята се MD5 hash-а и се сравняват първите 5 знака на hash-а с първите 5 от универалният ключ. Ако съвпадат, значи за съобщението наистина са отделени 10-20 секунди процесорно време.
Така изпращачът трябва да сметне стотици хиляди hash-ове докато намери правилният, а получателят трябва да сметне само един hash за да провери дали е валидно съобщението, което отнема около 1/1000 секунда.
Когато компютрите станат по-бързи (виж Закона на Мур's_law), изпращачите ще започнат да слагат и вторият намерен низ, който води до съвпадащ hash, после третият и т.н.. Новите версии на email клиентите ще са настроени да очакват и изпращат 2, 3 или повече низа и няма да са толкова доверчиви към писма с недостатъчно низове. Алгоритъмът не се променя с времето, само броят итерации. А когато компютрите станат много по-бързи ще почне да се сравнява и шестия символ от ключа. За това ключа е 32 символа, а не само 5.
Като правило за броя на низове може да се приеме броят низове, които отнемат средно около 10 секунди за да се сметнат на най-евтиният домашен компютър, продаван от един от 5-те най-големи производители на домашни компютри.
Съобщението, което се hash-ва, трябва да съдържа адресите на изпращача и получателя, както и subject-а, така че ако се промени някой от тези параметри, трябва да се търси нов ключ. Ако съобщението е над 2048 байта, за целта на hash-ването от 2049-тия байт нататък то се отрязва. Ако съобщението е под 2048 байта, то се повтаря докато не стане точно 2048 символа. Така спамерите няма да имат полза да пращат по-кратки съобщения.
В момента на Pentium 2.4 GHz едно съобщение отнема между 10 и 20 секунди за да се намерят 2 низа (зависи от съобщението), макар че трябва да направя доста по-обективни тестове. Проверката за автентичност, както може да се очаква, отнема незначително малко време.
Напред към коментарите!
Двама находчиви български митничари свили телефона на американски посланник.
Евала, братлета, аферим! Хванали сте цаката на бързата печалба и въртите далаверите с ловкост, на която би завидил средно-статистическия магистър по бизнес администрация. Повечето родни митничари кретат само на малката държавна заплата, 3-4 подкупчета на ден и по една-две бройки от всяка пратка на едро - я замразено пиле (за жената да сготви), я компютри (за племенниците да се радват). Но вие, като типични предприемчиви българи, сте си казали, че парите никога не са достатъчно, и сте взели нещата в свои ръце. Сигурно сте подходили с много подхядощото "К'ъв си ти бе, к'во кат' си посланник?".
Само, че следващия път като свиете на някой телефона (от рентгена, от куфара, от джоба му), проявете минималната съобразителност да го изключите (натиска се червеното копче). Така няма да излагате държавата си пред целия свят, а и няма да дойде нахалния американец да си иска телефона обратно и няма да се налага да го псувате на майка под мустак.
В замяна на този съвет, който ще ви спести уволнението следващия път, моля само като се прибирам през зимата да си остана с телефона, защото много си го харесвам. А и с портфейла...
(Между другото, докато се е разигравала тая случка Първанов беше на посещение във Вашингтон да моли Буш за помощ с медиците в Либия. Ама митничарите нямат време да четат вестници...)