)LOWUDGRGH&RUUHR0DVLYRQR'HVHDGREDVDGRHQWpFQLFDVGH 3URFHVDPLHQWRGHO/HQJXDMH1DWXUDO\$SUHQGL]DMH$XWRPiWLFR Samuel Muñoz Caballero Universidad Europea de Madrid Villaviciosa de Odón Madrid, España, samuelmc@terra.es Resumen El gran crecimiento de Internet en los últimos años ha propiciado el gran aumento del correo masivo no solicitado. Dado que este es un problema que afecta a varios aspectos del funcionamiento de Internet, como su rapidez y comodidad de funcionamiento, no hay duda de que su resolución supondría beneficios claros. Los intentos realizados hasta ahora no han conseguido resolver el problema, por eso hay que abordarlo con una nueva metodología. El paradigma de resolución propuesto es la utilización de una técnica de Procesado del Lenguaje natural para indexar dos conjuntos de mensajes de correo electrónico (UCE y no UCE) que servirán para construir un conjunto de entrenamiento para el algoritmo de Aprendizaje Automático J48. El conocimiento en forma de reglas que produce este es el que se utilizará posteriormente para decidir si un mensaje es UCE o no. Una vez obtenidas las reglas, se traducirán al formato de las reglas que utiliza el programa de procesamiento de correo electrónica Procamail, de manera que podamos actuar sobre los mensajes clasificados como UCE. Esta actuación puede ser la modificación de la cabecera, la separación del mensaje en una carpeta determinada o incluso su eliminación. 1 Introducción En 1977 ya se enviaban más de 270 millones de mensajes de correo electrónico al día. Si los dividimos entre los aproximadamente 131 David Mora Hernández Universidad Europea de Madrid Villaviciosa de Odón Madrid, España, dav_mora@terra.es Alvaro Gaviño González Universidad Europea de Madrid Villaviciosa de Odón Madrid, España, agavino@terra.es millones de usuarios tenemos una media de 6 mensajes por usuario al día [MG99], de los cuales una gran porcentaje pertenece a correo no deseado. El problema del UCE (8QVROLFLWHG &RPPHUFLDO (PDLO) o spam es bien conocido por casi cualquier usuario de la red ya que todos lo hemos tenido que sufrir en mayor o menor medida alguna vez. Esta molesta práctica de publicidad redunda en aspectos tan negativos como la saturación de servidores, el atropello de la sensibilidad personal o la manifiesta incomodidad para los usuarios, así como la posibilidad de que estos malgasten su tiempo en la lectura de los mensajes para acabar descubriendo que no les interesan. Si a esto añadimos el hecho de que dichos usuarios podrían ser empleados en sus horas de trabajo, la pérdida ya no sólo se mediría en tiempo, sino también en dinero. El UCE es un problema serio que deteriora la calidad de la red, que es necesario controlar y tratar de solucionar. El UCE se ha convertido en una práctica demasiado habitual de publicitar negocios en la red cometiendo un atropello de los derechos de los internautas [SchGar98]. ¿Pero es realmente ilegal el UCE? Este es uno de los principales problemas a los que se enfrentan los países que luchan contra este problema, porque al no existir una ley clara y concisa sobre lo que es legal o ilegal en Internet, no está claro como combatir este problema. Por tanto, lo primero que se está tratando de solucionar es encontrar una definición correcta que no de lugar a duda sobre lo que es UCE y lo que no lo es. El UCE es además costoso porque produce pérdidas a los clientes que lo reciben, que tienen que utilizar gran cantidad de tiempo en descargar de sus servidores de correo mensajes no solicitado. Así por ejemplo según un estudio de la Comisión Europea, el flujo cotidiano de mensajes electrónicos no solicitados cuesta a los usuarios de correo electrónico de Internet unos 9.300 millones de dólares al año en todo el mundo. Unos 500 millones de avisos son enviados diariamente de modo personalizado y bombardean a los usuarios del correo electrónico [IR01]. Dicha cantidad se ha calculado solamente respecto al tiempo de conexión utilizado para leer y borrar esos mensajes de propaganda. Por esta razón se están tratando de buscar soluciones a nivel mundial, como por ejemplo en EEUU que se aprobó la “8QVROLFLWHG &RPPHUFLDO (OHFWURQLF 0DLO $FW RI ´ con la que se legítima tanto a los usuarios particulares como a los ISP a exigir hasta 50000 dólares si son atacados por UCE, aunque esta medida no ha satisfecho a la “'LUHFW 0DUNHWLQJ $VVRFLDWLRQ´ porque cree que se le deja a los ISP demasiado margen para establecer sus propias reglas. Aunque en España el problema no llega a la magnitud de EEUU, los siguientes datos indican que empieza a tomar fuerza [DO]: • El 68% de los usuarios de correo recibe algún tipo de mensaje 8&( . • El usuario recibe una media de 2,2 mensajes 8&( cada semana . • La mayoría de los mensajes 8&( son sobre rumores, sucesos y mensajes en cadena . )LJ Por tanto no cabe duda de que la creación de un filtro efectivo anti-UCE aportaría grandes beneficios tanto a empresas como a particulares hasta que se consigan crear leyes que defiendan adecuadamente los derechos de los internautas. 2 Enfoque actual de filtrado Para tener una visión global de las soluciones actuales adoptadas para el filtrado de UCE vamos clasificarlas según los siguientes criterios: a- Localización: - Residentes en cliente: los mensajes son clasificados una vez recibidos por el destinatario final. Ej.: 'HDGOHWWHU (especifico para Eudora). KWWSZZZGHDGOHWWHUFRP - Residentes en el servidor: los mensajes son clasificados en el servidor de correo, lo que permite, dado el caso, que el cliente no tenga que descargar los mensajes clasificados como UCE. Ej.: 0DLO6KLHOG http://www.mailshield.com • Al 64% de los usuarios les molesta el 8&( • La mayoría de los usuarios (86%) no emplea ningún filtro para evitar el 8&( ni solicita su baja (70%) b- Técnica de filtrado: - Lista blanca: lista permisiva de remitentes de correo. - Lista negra: lista bloqueadora de remitentes de correo. Ej.: $QWL6SDP KWWSZZZ[GHQHWDQWLVSDP -Palabras clave: los mensajes que contienen palabras de esta lista son considerados UCE. Ej.: &<%(56LWWHU$QWL6SDP KWWSZZZVROLGRDNFRPDQWLVSDPS JKWP - Análisis de trafico: si un servidor detecta el envío de miles de copias de un mismo mensaje, lo considera UCE y lo bloquea para que no sea propagado. (M6HUYLFLRDQWL6SDPGH KRWPDLO http://www.hotmail.com c- Forma de construcción: - Manual: si las listas blancas o negras, como las de palabras clave son construidas a mano, su mantenimiento es ineficiente y costoso. (M&<%(56LWWHU$QWL6SDP KWWSZZZVROLGRDNFRPDQWLVSDPS JKWP - Automática: el propio programa se encarga de actualizar la manera en que decide la clasificación como UCE o no por lo que su actualización es mas efectiva y son sensibles a los cambios en el estilo de los UCE rápidamente. (M$QWL6SDP KWWSZZZ[GHQHWDQWLVSDP La mayor parte de herramientas existentes para el filtrado de UCE, ya sean residentes en el servidor o en el cliente, están basadas en las llamadas listas negras o blancas. Las listas negras no son más que listas en las que se incluyen direcciones de correo o dominios de los que se sabe que no queremos recibir mensajes, bloqueando por consiguiente los que vengan de ellos. Las listas blancas funcionan de manera complementaria, ya que son listas de las que podemos estar tranquilos al recibir información. También se utilizan las listas de palabras clave, de manera que si determinadas palabras aparecen en el asunto del mensaje, estos son considerados UCE. Estos tres paradigmas de resolución no han resultado suficientemente eficaces debido a varias razones. En el caso de las listas negras, la facilidad con la que los programas de correo masivo pueden cambiar el remitente del mensaje una y otra vez las hacen casi inútiles ya que son muy difíciles de mantener actualizadas. El problema de las listas blancas es que bloquean en exceso (o clasifican como UCE mensajes que no lo son) ya que no podemos saber de que direcciones nuevas nos podrían mandar mensajes con intenciones legítimas. La tercera solución es igualmente inefectiva ya que mediante la lista de palabras clave los sistemas se limitan a catalogar como UCE aquellos mensajes que contengan alguna de estas palabras, sin tener en cuenta el contexto en el que son utilizadas por el remitente. Al no intentar comprender el contexto en el que son utilizadas la palabras de la lista, los mensajes acaban por ser mal clasificados; mensajes legítimos como UCE y viceversa. Menos este último, los métodos de resolución del problema del UCE se basan en el análisis del contexto de los mensajes (dirección de origen, de destino, tamaño, miles de copias, ...) y no en el contenido de estos (palabras que lo componen). Esto hace que los generadores de correo masivo puedan camuflar fácilmente sus mensajes de manera que las herramientas actuales no los consideren como UCE. Además de lo anteriormente expuesto hay que tener en cuenta que la inmensa mayoría de las herramientas implementadas, lo están para correo en ingles, por lo que un sistema que lo hiciera para mensajes en español tendría un impacto importante. )LJ . Fig. 3.1 El gráfico ha sido extraído de http://www.glreach.com/globstats/ y hay una Hay que tener en cuenta que el español es el cuarto idioma en número de acceso a la red El segundo en importancia si consideramos que el Chino y el Japonés son idiomas casi exclusivamente hablados en los países de los que provienen. )LJ (VTXHPDGHIXQFLRQDPLHQWR UCE Indexador NO UCE 3 Filtrado de UCE basado en técnicas de PLN y AA La solución al problema del UCE es claramente una tarea de Categorización de Textos [JG021]. La solución que se pretende aplicar pasa por la combinación de dichas técnicas de la siguiente manera: mediante la utilización de las metodologías de PLN se construirá un índice de las palabras contenidas tanto en la cabecera como en el cuerpo de los mensajes. Esta indexación se realiza sobre dos conjuntos de mensajes clasificados previamente como UCE y no UCE. Dichas indexaciones tienen como fin la construcción de un archivo en formato .arff, que servirá de entrada al algoritmo de aprendizaje automático J48 contenido en el paquete de software de Aprendizaje Máquina de la universidad de Waikato [WK01]. Este algoritmo es el equivalente del conocido C4.5 implementado en el paquete de software libre WEKA1. Mediante esta técnica se pretende descubrir patrones de contenido dentro de los mensajes dada su idoneidad para el problema que estamos tratando. Dichos patrones, generan un árbol de decisión (directamente traducible a reglas), serán la base del filtro a construir. Una vez conseguidas las reglas, la construcción del filtro se reducirá a la implementación de un pequeño programa que traduzca el formato de las reglas del J48 al formato de reglas de filtrado de Procmail, siendo este el que modificará la cabecera de los mensajes o los guardará en carpetas separadas en el caso de que el mensaje sea clasificado como UCE. .arff Traductor Reglas WEKA (J48.part) .procmailrc PROCMAIL Es evidente que la utilización del PLN y AA es muy adecuada a la hora de combatir el UCE. Las técnicas de PLN permiten combatir más eficazmente el correo masivo no solicitado ya que evita los problemas de las técnicas basadas en el contexto de los mensajes. Debido a que este método basa su clasificación directamente en el contenido de los mensajes, estos no pueden ser camuflados tan fácilmente mediante el cambio del remitente o del contenido del asunto. Además, la utilización del aprendizaje automático permite que la clasificación como UCE o no, se haga de manera precisa, y que el mantenimiento del sistema sea muy sencillo. )DVHVGHWUDEDMRGHOVLVWHPD explicación mas detallada de este en el enlace Sources and references de la propia página. 1 Accesible en http://www.cs.waikato.ac.nz/ml/weka /LPSLH]DGHPHQVDMHV Antes de pasar el contenido de los mensajes al programa encargado de la indexación debemos limpiar estos de manera que evitemos la inclusión de palabras no relevantes en el índice. El conjunto de las palabras a eliminar podría estar formado tanto por las pertenecientes a cualquier lista de parada típica, como por direcciones IP, direcciones de correo electrónico (normalmente inventadas por los programas de correo masivo), etiquetas HTML, etc. Como posible mejora del sistema habría que tener en cuenta que la inclusión de código HTML (o cualquier otro lenguaje de scripts) dentro de un mensaje puede ser indicativo de que este es UCE ya que normalmente estos mensajes buscan un rápido impacto sobre el lector mediante la utilización de fuentes de diferentes tamaños y colores, animaciones, banners... Tambien habría que pensar en la conveniencia o no de la extracción de las raíces de las palabras que componen los mensaje (mediante el algoritmo Porter Stemmer2 por ejemplo) ya que esto podría mejorar la precisión de las decisiones del filtro. ,QGH[DFLyQGHPHQVDMHV El sistema que se pretende construir utilizará como entrada una colección de mensajes, clasificados como UCE o no de antemano, cuyo contenido (palabras) será indexado mediante un programa basado en técnicas de Procesamiento del Lenguaje Natural. De esta manera se puede tener una correlación de la importancia de las palabras utilizadas (y sus combinaciones) por los remitentes de UCE, y también de las palabras de los mensajes que no lo son. La fórmula utilizada para el calculo del peso de cada una de las palabras dentro de un mensaje es: ZG Z WI ³Z ORJ Q GI wdji: peso que del término i en el documento j wi: peso del término i en la colección dfi: número de documentos en que aparece el término i n: numero total de palabras del documento De esta manera tenemos una construcción uniforme sobre la que podremos trabajar de manera más sencilla y estructurada. Aunque el 2 Algoritmo de extracción de posfijos de palabras en ingles. www.tartarus.org/~martin/PorterStemmer programa que realiza la indexación calcula la importancia de una palabra dentro de un mensaje asignándola un peso determinado, la representación que posteriormente será utilizada será binaria, es decir, solo se tendrá en cuenta si la palabra en cuestión está o no está en un mensaje determinado. Esto resultara de gran ayuda en posibles mejoras del sistema. Teniendo esto en cuenta, la representación final de un mensaje será: & d j = (wd j1 , wd j 2 , ..., wd jm ) Donde wdjk = {1,0} Esto se debe a que la herramienta que se va a utilizar para el procesamiento final de los mensajes es Procmail [PM02] Dicha herramienta solo admite reglas del tipo: la palabra X pertenece o no al contenido del mensaje. Debido a esto el peso resulta irrelevante. %~VTXHGDGHSDWURQHV La segunda parte del sistema estaría compuesta por el modulo de búsqueda de patrones. Este subsistema se vería alimentado por el índice construido como se explica en el apartado anterior (archivo en formato .arff) y, mediante técnicas de aprendizaje automático. También podría tener en cuenta si el módulo anterior ha detectado que el mensaje incluye código HTML de manera notable. El algoritmo J48 del paquete Weka que implementa el algoritmo de árboles de decisión C4.5 utiliza un archivo de entrada (con extensión .arff) que se corresponde con el los archivos .names y .data de la herramienta C4.5. Dentro de este archivo se especifican los atributos del árbol de decisión (donde el último de los cuales representa el valor objetivo) así como las reglas compuestas por los atributos anteriores que definen el conjunto de entrenamiento. Como este archivo lo genera automáticamente el modulo indexador, lo único que habría que hacer es cargarlo como conjunto de entrenamiento para el Weka y aplicar el algoritmo de AA que se desee (en nuestro caso J48.part). Una vez entrenado habría que evaluar si la clasificación de nuevos mensajes se hace con un error suficientemente bajo. Si los resultados de clasificación son satisfactorios guardaremos el resultado del algoritmo en un archivo de texto mediante la función habilitada para ello de Weka. Una vez hecho esto solo quedaría pasar el archivo guardado al traductor de reglas para pasarlas al formato de Procmail. También deberemos decidir la acción que debe tomar Procmail en caso de que los mensajes sean clasificados como UCE. 7UDGXFFLyQGHUHJODVGH-DOIRUPDWR GH3URFPDLO El último paso que debe realizar el sistema debe ser la actuación directa sobre los mensajes de manera que el usuario final pueda reconocer fácilmente los mensajes que han sido clasificados como UCE. Como se ha comentado anteriormente la solución que se ha adoptado es la utilización del programa Procmail. Este es un programa de procesamiento de correo electrónico que permite la definición de reglas en un formato propio [MG99]. Cuando una de las reglas es satisfecha por las características de un mensaje, el programa permite varios tipos de acciones sobre este. Las acciones que permite hacer Procmail sobre un mensaje son tres principalmente: guardarlo en una carpeta o archivo (lo concatena al final de este), mandarlo a un nuevo destinatario, o invocar a otro programa. Esto ultimo permite una gran potencia de procesado. archivo procmailrc la acción a tomar por el programa. 5 Funcionamiento del sistema El funcionamiento del sistema sigue los siguientes pasos: 1. Programa Indexador: Disponemos de dos conjuntos de mensajes (UCE y no UCE) separados en dos directorios. Se seleccionan las ubicaciones de dichos directorios desde el programa indexador mediante los botones habilitados para ello. Una vez hecho esto generamos un índice para cada uno de ellos y por último se presiona sobre el botón Generar .arff. obteniendo así el archivo FiltroSpam.arff. Para un buen funcionamiento del clasificador deberemos intentar que el conjunto de ejemplos que alimenta este programa sea de una extensión considerable. Además, cuanto más diverso sea el tipo de ejemplos existentes dentro de estos conjuntos más precisa será la clasificación. Nuestro programa recoge el archivo de texto que genera el Weka, lo limpia (se queda con la parte en la que están definidas las reglas) y las traduce de la siguiente manera: WEKA gana=t AND mucho=t AND dinero= t AND empleo=f :Spam PROCMAIL 3URJUDPD WUDGXFWRU :0: *gana *mucho *dinero Una vez traducida la parte correspondiente a las palabras que deben o no deben estar dentro de un mensaje para considerar este como UCE o no, debemos incluir como última línea del 2. WEKA: Desde el entorno grafico del Weka se selecciona el archivo FiltroSpam.arff generado anteriormente. Una vez abierto nos vamos a la pestaña Classify Instantes donde elegiremos el algoritmo de clasificación J48.part. Para realizar la clasificación utilizamos la opción Cross Validation con 10 Folds y presionamos en Start para que genere el conjunto de reglas de decisión. Para poder actuar sobre ellas las guardamos en un archivo llamado reglas.txt (YDOXDFLyQ La efectividad de los sistemas de Categorización de Texto se mide en términos del número de decisiones correctas e incorrectas [JG02]. Se puede resumir la relación entre las clasificaciones correctas e incorrectas realizadas por el sistema en una tabla de confusión: + Tp Fn + - Fp tn Tp: Número de instancias clasificadas como UCE que son UCE. Tn: Número de instancias clasificadas como NoUCE y son NoUCE Fn: Número de instancias clasificadas como noUCE y que realmente son UCE Fp: Número de instancias clasificadas como UCE y realmente no lo son. Un ejemplo real del archivo de reglas.txt generado por Weka es el siguiente: PART decision list -----------------linguist = t: NoSpam (88.0) confer = f AND tel = f AND acquisi = f AND deadlin = f AND theori = f: Spam (76.0/1.0) : NoSpam (41.0) Vamos a definir como precisión la proporción de instancias clasificadas correctamente dentro de una categoría. Por otro lado el recall es la proporción de instancias clasificadas correctamente en una categoría frente el total de instancias de esa categoría. Sus formulas son: U = WS WS + IQ S = WS WS + IS Una buena medida a tener en cuenta es la función F1, que asigna la misma importancia tanto al recall como a la precisión. Esta función es calcula según la siguiente formula. 3. Programa Traductor: Una vez realizados todos los pasos del apartado anterior, se ejecuta el programa traductor al que se le da como entrada el archivo de texto generado anteriormente (reglas.txt.). Estas reglas son traducidas al formato de Procmail y guardadas en un archivo llamado .procmailrc. Este es el archivo que debe ser guardado en el directorio home del usuario que quiera utilizar el filtro de manera que procmail se ejecute cada vez que el usuario reciba un nuevo correo electrónico. ) 1= 2US U + S Un ejemplo del resultado obtenido por Weka para un conjunto de mensajes es el siguiente: === Confusion Matrix === a b <-- classified as 73 2 | a = Spam 5 125 | b = NoSpam La siguiente tabla da un detalle sobre el recall y la precisión. o ORchie [OR01]1. El resultado seguiría el mismo proceso que hacía hasta ahora === Detailed Accuracy By Class === Es obvio que una mejora y mayor integración de las interfaces de los programas que forman el sistema influirían de manera positiva. TP Rate FP Rate F-Measure Class 0.973 0.038 0.954 Spam 0.962 0.027 0.973 NoSpam Precision Recall 0.936 0.973 0.984 0.962 &RQFOXVLRQHV\IXWXURWUDEDMR Teniendo en cuenta que las herramientas existentes hasta ahora no dan el servicio deseado y que además no existen en español intentar construir un sistema que solucione el problema del UCE esta claramente justificado. No cabe discutir que su resolución implicaría grandes beneficios para los usuarios, pudiéndose pensar incluso en su futura comercialización. El dominio del problema es el perfecto para las técnicas de PLN y Aprendizaje Automático por lo que a priori se espera resolver el problema con cierto grado de éxito. Una vez sentadas las bases de cómo se va a solucionar el problema el trabajo futuro pasa por refinar el indexador (pudiéndose incluir en este un modulo de tipo parser para limpiar los mensajes) y recolectar un conjunto significativo de mensajes UCE y legitimo para el entrenamiento del algoritmo de aprendizaje automático. Otro interesante campo de acción a tener en cuenta para futuras ampliaciones es el relacionado con aquellos mensajes que no están escritos en un formato textual convencional. Nos referimos con esto a los mensajes que son generados en formato visual, y por lo tanto no son procesables directamente por el indexador. La solución de este problema no debería ser muy compleja ya que bastaría con la construcción de un primer modulo que detectaría la existencia de contenido no procesable textualmente (imágenes, banners, archivos en flash, etc) a los cuales habría que pasarles una herramienta OCR. Hay varias alternativas de código libre como pueden ser CLARA [CL01], JOCR [JO02] 1 Existen también programas para funcionamiento bajo web como ([SHU9LVLRQ2&56HUYLFH :HE75 o 1DWLRQDO/LEUDU\RI0HGLFLQH Referencias [MG99] Removing the spam : Email processing and filtering, Geoff Mulligan Mulligan, Geoff 1958. Addison-Wesley, cop. 1999 [SchGar98] Stopping spam Alan Schwartz and Simson Garfinkel Schwartz, Alan 1970. Sebastopol, Calif. : O’Reilly, cop. 1998 [WK01] The University of Wakaito, Machine Learning Software in Java. http://www.cs.waikato.ac.nz/ml/weka [PM02] Home page of the procmail mail processing and SmartList mailing list suites: http://www.procmail.org [IR01] “Spam bueno, Spam muerto” Iñaki I. Rojo 3/5/2001 http://www.baquia.com/com/20010503/art00019.html [JG02] “Evaluating Cost-Sensitive Unsolicited Bulk E-mail Categorization” Jose María Gomez Hidalgo, Dpto. de Inteligencia Artificial, Universidad Europea – CEES. http://www.esi.uem.es/~jmgomez [JG021] Pagina de Jose María Gomez Hidalgo sobre el filtrado de Spam : http://www.esi.uem.es/~jmgomez/spam/index.html [CL01] Clara OCR OCR para sistemas que soporten la librería C y el sistema de ventanas X (Unix). Licencia (GPL) http://www.claraocr.org/ [JO02] GOCR/JOCR, Joerg Schulenburg Programa OCR desarrollado bajo licencia publica GNU http://jocr.sourceforge.net/ [OR01] Modular Optical Character Recognition software. Desarrollado por la Universidad de Berkeley http://http.cs.berkeley.edu/~fateman/kathey/ocrchie .html [DO] Plataforma de servicios gratuitos de comunicación para grupos en Europa, y en lengua española. http://www.domeus.es/