صفحه اول > مقالات

 

 

نبرد فيلترها و توليدکنندگان اسپم (۱) 

فيلتر اسپم، نرم‌افزاري است که به سرويس دهنده ايميل کمک مي‌کند تا از عبور اسپم‌ (هرزنامه‌) جلوگيري کند. اين فيلتر اين عمل را معمولاً با شناسايي فرستنده ايميل يا کلماتي که در موضوع و متن ايميل بکار رفته انجام مي‌دهد. در مقاله اسپم چيست به مواردي که موضوع اصلي بيشتر اسپم‌هاست اشاره شد. اين فيلترها سعي در تشخيص اين نوع ايميل‌ها و جلوگيري از ورود آنها به صندوق‌پستي کاربرانشان يا نشانه‌گذاري آنها بعنوان اسپم مي‌کنند.  اگر مدتهاست که از سرويسهاي ايميل معروف مانند Yahoo يا Hotmail استفاده مي‌کنيد،‌ حتماً با هر بار سر زدن به صندوق پستي خود با انبوهي از ايميلها با عنوان Bulk mail يا Junk mail برخورد مي‌کنيد. قرار گرفتن اين ايميلها در اين فولدرها بدليل اينست که سرويس‌دهنده ايميل آنها را بعنوان اسپم تشخيص مي‌دهد. البته گاهي نيز اين ايميلها از Inbox شما سر در مياورند که نشاندهنده اين است که عيلرغم اسپم بودن، توانسته‌اند از فيلتر اسپم عبور کنند. حتي گاهي شنيده مي‌شود که بعضي ايميلهاي اصلي به فولدر مربوط به اسپم هدايت مي‌شوند که باز هم نشان از تشخيص اشتباه فيلتر است. البته نيازي به نگراني نيست. اين اتفاق بندرت رخ مي‌دهد.

فيلتر تطبيقي، نوعي از فيلتر است که قادر است اشتباهاتش در تشخيص اسپم‌ها را اصلاح کند و با آشنا شدن بيشتر با کلمات يا حقه‌هايي که در اسپم‌ها بکار ميرود در تشخيص اسپم‌ها بهتر و دقيق‌تر عمل کند. 

فرستندگان اسپم هر روزه در حال استفاده از ابزار و روشهاي پيچيده‌تري براي عبور دادن نامه‌هايشان از فيلترهاي اسپم تطبيقي هستند. آنها از روشهايي مانند پنهان کردن پيغامها در متنهاي بي‌ضرر تا تکنيکهاي هوشمندانه‌تري که تلاش مي‌کنند تا در توانايي‌هاي فيلترها در تشخيص اسپم  از غيراسپم اختلال ايجاد کنند، استفاده مي‌کنند. در اين مقاله و مقاله بعدي با چندتا از اين  روش‌ها و نحوه مقابله با آنها از طرف فيلترها آشنا مي‌شويم.

با گسترش فيلترهاي تطبيقي، توليد‌کنندگان اسپم شروع کردند به پرکردن پيغامهايشان با حجم زيادي از متن‌هاي غيراسپمي‌! براي گول زدن و عبور کردن از فيلترهاي اسپم. فيلترهاي تطبيقي در بعضي مواقع، از احتمالات براي تشخيص اسپم استفاده مي‌کنند، يعني مبناي تصميم‌گيري در مورد اسپم‌ بودن يا نبودن يک پيغام ميزان وقوع بعضي کلماتي است که در اسپم‌ها بيشتر بکار مي‌رود. توليد‌کنندگان اسپم گاهي باعث برهم زدن اين احتمالات در فيلترها و بعبارتي باعث مسموم‌شدن آنها مي‌شوند.

توليدکنندگان اسپم اميدوارند که با اضافه‌کردن متون جانبي باعث عبور پيغامشان از يک فيلتر شوند تا توسط کاربر خوانده شوند. در اين مواقع ممکن است که کاربر به فيلتر اعلام کند که پيغام عبور داده شده، اسپم بوده است و فيلتر از اين به بعد اين کلمات جانبي و بي‌ضرر را نشانه اسپم بداند. اين باعث مي‌شود که فيلتر گاهي پيغامهاي مفيد را نيز به اشتباه بعنوان اسپم تشخيص دهد، و به اين ترتيب باعث عملکرد بد فيلتر و از کار افتادن آن شوند.

خوشبختانه، طبيعت فيلترهاي تطبيقي بگونه‌اي است که گول زدن و مسموم‌کردن آنها بسيار مشکل است. تنها اميد يک توليدکننده اسپم اين است که بتواند با تبديل پيغام خود به يک پيام بي‌ضرر (پيامي که درصد کلمات نشاندهنده اسپم نسبت به کل کلمات موجود در آن بسيار ناچيز و قابل اغماض باشد) باعث عبور آن از فيلتر شود که به اين ترتيب از تاثير تبليغاتي متن موجود در آن بسيار کاسته خواهد شد.

فريب‌دادن يک فيلتر تطبيقي

يک فيلتر به اين ترتيب اسپم بودن يا پيام را تشخيص مي‌دهد که به کلمات موجود در متن نگاه مي‌کند و به هر کدام از آنها با توجه به اينکه اين کلمه به چه ميزان به يک اسپم متعلق است وزني اختصاص مي‌دهد. با ترکيب اين احتمالات براي همه کلمات پيام، فيلتر به احتمال اسپم بودن يا نبودن پيام ميرسد و بر مبناي آن تصميم‌گيري مي‌کند. اين عمل ترکيب به فيلترهاي تطبيقي در تصميم‌گيري هوشمندانه قدرت زيادي مي‌بخشد. فيلتر تطبيقي براي هر کاربر کلمات مخصوص به آن کاربر را دارد.

در ادامه براي روشن شدن بيشتر مطلب با سه شخصيت سروکار داريم. دو کاربر به نامهاي آليس و باب و يک توليد کننده اسپم به نام اِوا. فيلتر اسپم آليس کلمات مجاني، رهن و وام را اسپم تشخيص مي‌دهد، اما از آنجا به بافتني علاقه دارد کلمات پشم، سوزن و زردوزي براي او کلمات مفيدي هستند. از طرف ديگر براي باب هم کلمات مجاني،‌ رهن و وام نشاندهنده اسپم هستند. اما از آنجا که به اتومبيل علاقه‌مند است کلماتي مانند موتور، فرمان و سرعت براي او نشاندهنده يک پيام جالب هستند.

حال اگر اِوا پيامي به آليس و باب بفرستد که در آن کلمات رهن و وام بکار رفته باشد، توسط فيلتر هر دو بسرعت اسپم تشخيص داده مي‌شود. توجه کنيد که بعضي کلمات، افعال و حروف اضافه، کلمات خنثي محسوب مي‌شوند. توليد‌کنندگان اسپم براي اينکه پيام آنها توسط موضوع (subject) اسپم تشخيص داده نشود، از حروف يا فاصله‌هاي اضافي در ميان حروف و کلمات استفاده مي‌کنند. مثلا کلمه “mortgage” بمعناي رهن به صورت “m o r t g a g e” يا “m-o-r-t-g-a-g-e” يا اشکال ديگر ممکن است در عنوان ايميل آورده شود تا توسط فيلتر تشخيص داده نشود.

متن بي‌ضرر

اين بار اِوا سعي مي‌کند که فيلترها با استفاده از متن بي‌ضرر اغوا کند. به اين منظور علاوه بر متن خود، متني از جاي ديگر مثلاً از يک دايرة‌المعارف يا سايت خبري ياهو به آن اضافه مي‌کند و به آليس و باب مي‌فرستد. اما باز هم اين متن اسپم تشخيص داده مي‌شود. فيلترهاي تطبيقي يک پيام را به سه بخش اسپم، مفيد و خنثي تقسيم مي‌کنند. فيلتر با وزن دادن به آنها، وزن زيادي در مورد اسپم و وزن کمي در مورد مفيد بودن پيام مي‌دهد و مقدار زيادي متن خنثي پيدا مي‌کند.  بنابراين قراردادن متن خنثي با شکست مواجه مي‌شود. توليدکننده اسپم اطلاعي از علاقه آليس به بافتني ندارد تا وزن مفيد پيام خود را زياد کند!!!

حجم زياد پيام بي‌خاصيت

اِوا اين بار فکر مي‌کند که بايد متن بي‌خاصيت بيشتري ارسال کند. اما همچنان اميدوار است که بتواند فيلتر آليس و باب را گمراه کند.

اِوا توانست حجم ايميل خود را افزايش دهد اما اينبار دو مساله برايش وجود دارد:

·  همچنانکه اندازه پيام افزايش مي‌يابد، نرخ ارسال اسپم کم مي‌شود.

·  حجم زياد پيام باعث سردرگمي دريافت‌کننده نسبت به محتواي‌ اصلي مي‌شود.

براي حل مشکل دوم، اِوا مي‌تواند به پنهان کردن متن از خواننده متوسل شود. اين کار توسط حقه جوهر نامرئي و استتار  صورت مي‌گيرد. در اين عمل، رنگ نوشته و زمينه يکسان انتخاب مي‌شوند. اِوا مي‌تواند حجم زيادي از متن را بمنظور فريفتن فيلتر ارسال کند، بدون اينکه متن توسط کاربر ديده شود.

احتمال جواب دادن اين تاکتيک کم است زيرا استفاده از چنين روشي براحتي توسط فيلتر اسپم تشخيص داده مي‌شود و بعنوان نشانه‌ ديگري از اسپم استفاده مي‌شود. در حالت استفاده از جوهر نامرئي، فيلتر اسپم براي تشخيص متن بي‌خاصيت نامرئي به اندازه کافي باهوش است و حتي ديگر احتياجي به توجه به متن نيز وجود ندارد.


يک شکاف شانسي

در حقيقت تنها شانس اِوا اکنون اين است که بطريقي از کلمات مورد علاقه آليس مطلع شود و از آنها در ايميل خود استفاده کند. اِوا شانس مي‌آورد و ايميلي را ارسال مي‌کند که علاوه بر دارا بودن کلمات اسپمي! در آن از کلمات مورد علاقه آليس که مربوط به بافتني است استفاده مي‌کند. فيلتر تطبيقي با وزن دادن به کلمات نمي‌تواند تصميم‌گيري کند. براي اينکه فيلتر پيام مفيد را از بين نبرد، به اسپم اجازه ورود به صندوق پستي آليس را مي‌دهد. البته موفقيت اِوا موقتي است. او نميداند که پيامش عبور کرد و در ضمن فقط توانست پيامش را از يک فيلتر عبور دهد. فيلتر باب پيام را مسدود کرد زيرا باب به بافتني علاقه ندارد و کلمات مفيد براي آليس، براي باب معني خاصي ندارد.

براي اينکه اِوا يک فيلتر اسپم تطبيقي را فريب دهد احتياج به گول زدن هر فيلتر بصورت مجزا دارد. او مجبور به فهميدن کلمات مفيدي است که براي هر کاربر مختص خود اوست. اين بارِ زيادي را به اِوا تحميل مي‌کند اگر ميخواهد يک فيلتر اسپم تطبيقي را گول بزند.

اما اين همه ماجرا نيست. در يک مثال واقعي، فيلتر آليس همه سرپيامها را  براي اسپم بودن يا مفيد بودن سنجيده است. از آنجا که بيشتر ايميلها در مورد بافتني از دوستان مشخصي از آليس و چندتايي ليست ايميل براي او مي‌رسد، اطلاعات در سرپيامها نيز نشاندهنده‌هاي خوبي براي مفيد بودن يا اسپم بودن پيامها هستند. سرپيام رسيده از طرف اِوا نشاندهنده خوبي براي اسپم بودن ايميل دريافت‌شده است. بنابراين شايد فيلتر آليس به پيام اِوا اجازه عبور نداده باشد!!! 

منتظر نبرد فيلترها و توليدکنندگان اسپم (۲) باشيد تا جدال بين اِوا و فيلترهاي آليس و باب را ادامه دهيم.