октомври, 2005

Дарт Вейдър пресича на червено

Случайно видяно из старите ми снимки...

Елементарна система срещу спам

От известно време разните умове се мъчат да измислят решение за справяне със спама - било то 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 подкупчета на ден и по една-две бройки от всяка пратка на едро - я замразено пиле (за жената да сготви), я компютри (за племенниците да се радват). Но вие, като типични предприемчиви българи, сте си казали, че парите никога не са достатъчно, и сте взели нещата в свои ръце. Сигурно сте подходили с много подхядощото "К'ъв си ти бе, к'во кат' си посланник?".

Само, че следващия път като свиете на някой телефона (от рентгена, от куфара, от джоба му), проявете минималната съобразителност да го изключите (натиска се червеното копче). Така няма да излагате държавата си пред целия свят, а и няма да дойде нахалния американец да си иска телефона обратно и няма да се налага да го псувате на майка под мустак.

В замяна на този съвет, който ще ви спести уволнението следващия път, моля само като се прибирам през зимата да си остана с телефона, защото много си го харесвам. А и с портфейла...

(Между другото, докато се е разигравала тая случка Първанов беше на посещение във Вашингтон да моли Буш за помощ с медиците в Либия. Ама митничарите нямат време да четат вестници...)

Ъпдеит

Деси е излязла от кома и вече е по-добре. Цял ден си скачах от радост като разбрах!

Купата за грозде бе най-жестоко счупена след като съседа ми тресна вратата и тя падна от хладилника. Заместена е от оранжева купа от по-нечуплива материя. В новата, по-голяма, купа освен грозде се помещават и малки морковчета. Цветовата комбинация от трите е страшна.

Напуснатата работа постепенно си намира заместител. Много яко било да си freelancer. Някой път ще пиша за това.

Извадих си първата истинска кредитна карта (с овърдрафт) и на 3-тия ден превиших лимита й. Вече стои грижливо прибрана в чекмеджето, далеч от консумеристките ми ръце.

Поради горната причина ми падна кредитния рейтинг (всеки човек тук си има кредитен рейтинг, който се ползва за да се предскаже каква е вероятността да забегнеш с неплатена сметка от 30 долара и да ощетиш някоя мултимилиярдна корпорация) и от T-Mobile не искат да ми пуснат Интернет на телефона докато не намеря някой с добър рейтинг да ми е гарант за допълнителните $20 на месец.

А Бостън започва все повече да ми харесва като място за живеене. Колкото и да е хубаво това в краткосрочен план (следващите 2 години), толкова е лошо в дългосрочен (когато стане време да си ходя).