Index
MIME és un estàndard desenvolupat des de 1991 per IETF (Internet Engineering Task Force) que ha adquirit molta importància sobre tot en els clients de correu a l’hora de transmetre texts incompatibles via e-mail. Inclòs s’arriba a dir que cap programa de correu electrònic es pot considerar complet si no suporta MIME.
MIME permet l’intercanvi a traves d’Internet de diferents tipus d’arxius de manera transparent per a l’usuari, sense importar quin sigui el tipus de codificació ni el format de l’arxiu en qüestió (facilitant l’intercanvi de text entre màquines amb idiomes i alfabets diferents p.ex.). Bàsicament, MIME son una sèrie de convencions que milloren l’enviament i la recepció d’arxius, ja siguin executables, vídeo, so, etc.. de contingut binari, proporcionant format als arxius, classificant-los segons el seu tipus i establint quin tipus de codificació s’ha d’utilitzar per a cada un d’ells.
Existeixen unes taules establertes per l’organisme anomenat IANA (Internet Assigned Numbers Authority) que indiquen quina codificació s’ ha d’utilitzar per a cada tipus d’arxiu. La necessitat de crear aquestes taules ve donada per la gran varietat de formats diferents d’arxius que es poden transmetre. La versatilitat de MIME ens ofereix la possibilitat de crear nous tipus MIME, fins i tot eliminar-los, encara que només podrem eliminar aquells tipus que hagin estat creats de nou. Els tipus ja existents no es poden eliminar.
El protocol de correu electrònic SMTP és dels més utilitzats, però posseeix una sèrie de limitacions que MIME intenta solucionar des del punt de vista de la compatibilitat més que de la elegància. El disseny del protocol SMTP fa que només pugui utilitzar caràcters amb codificació ascii amb 7 bits (anglés). MIME, per la seva banda, permet que s’utilitzin altres caràcters de manera compatible amb les restriccions que imposa haver de treballar amb 7bits de codificació ascii que imposa el protocol SMTP.
Algunes limitacions de SMTP que MIME soluciona:
Impossibilitat de transmissió d’arxius executables i altres objectes binaris.
Incapacitat de transmetre caràcters nacionals --> valor ascii > 128.
Limitació de tamany i quantitat de correu segons el servidor.
Problemes de compatibilitat amb certes codificacions.
Algunes implementacions de SMTP no segueixen exhaustivament l’estàndard (eliminació d’espais, conversió de TABS a múltiples SPACES, omplir línies per a tenir la mateixa longitud,...).
En la capçalera d’un missatge MIME podem diferenciar cinc camps que passem a explicar:
MIME- Version
El número de versió indica que el missatge acompleix amb les especificacions MIME i el diferencia dels missatges anteriors que no les acompleixen i que, per tant, no tenen aquest camp.
Content-Type
Especifica el tipus i el subtipus de dades que porta el cos del missatge, i també la representació d’origen d’aquestes dades. Aquest camp te aquesta forma: Content-Type: tipus/subtipos ;parmetre=valor ;parmetre=valor. En el cas que aquest camp no existeixi, llavors el seu valor per defecte serà text/plain.
Existeixen els següents tipus diferents:
'text/plain:' el tipus de dades que conté és text pla. Els caràcters per defecte son US-ascii
'image:' imatges estàtiques que requereixen un display gràfic. Pot tenir dos subtipus: jpeg o gif.
'video:' Imatges dinàmiques amb la possibilitat d’incloure só sincronitzat i necessitarà d’una estació multimedia per poder reproduir-ho. Te subtipus mpeg.
'audio:' só reproduïble amb un hardware adequat. Subtipus: basic
'message:' contingut del cos configurat segons indica l’estàndard RFC 822
'aplication:' en aquest tipus formen part tots aquells altres tipus que no es poden englobar a dins d’altres categories. Les dades que porta el cos han de ser processades per algun programa de aplicació.
Una altra característica dels missatges MIME és que poden tenir diferents parts en el contingut de tipus diferents, cada part amb les seves subparts que , a la vegada, poden ser multiparts, donat que el format dels missatges MIME pot ser recursiu.
Content-Transfer-Encoding
Aquest camp indica de quina manera s’han de codificar les dades per a que siguin transportables per a qualsevol protocol de transferència (ja que, per exemple, les dades d’un missatge de SMTP només s’accepten si son dades de 7 bits US-ascii amb línies inferiors a 1000 caràcters). De fet, estem obligats a codificar les dades en aquest format de línies curtes de 7 bits.
Per especificar el camp de codificació es fa el següent:
encoding := "Content-Transfer-Encoding" ":" mechanism
mechanism := "7bit" / "8bit" / "binary" / "quoted-printable" / “base64" / on els mecanismes son els tipus de codificació que poden ser emprats.
Es la codificació per defecte. Ve a dir que no s’ha fet cap codificació i que el texte correspon a línies de text ascii inferiors a 1000 caracters i que han de finalitzar cada linea amb els caracters de retorn de línia i de nova línia.
Aquesta codificació també correspon a línies curtes, suficientment per el transport SMTP i amb caràcters finals de retorn i nova línia, però amb la possibilitat d’incloure caràcters que no pertanyen al codi ascii. El seu ús no és molt recomanable ja que no asseguren que el transport SMTP sigui segur i només és possible en agents que suportin extensions SMTP per al transport MIME de 8 bits.
Aquest tipus de codificació té com objectiu intentar mantenir un esquema eficient i robust i, alhora, que sigui llegible al màxim quan es trobi codificat. Utilitza US-ASCII de 7 bit i afegeix alguns caràcters menys usuals de 8 bits (cas del Espanyol-castellà).
Com hem dit, els caràcters de 7 bits es poden codificar en ascii. En canvi, existeixen casos especials que anem a comentar:
Els caràcters no usuals de 8bits (no fiables) es representaran de la forma =XX on XX son dos dígits hexadecimals en majúscula.
TAB (X'09') y SPACE (X'20') es representen en ascii, a no ser que es trobin situats al final d’una línia.
En dades binàries, el salt de línia es codifica Així: "=0D=0A".
Les línies han de ser, com a màxim, de 76 caràcters. Si sobrepassen aquest tamany, s’han d’introduir salts de línia reversibles, anomenats també softs. Es representen així: "=<CRLF>"(X'3D0D0A'). Aquestes línies es tornen a ajuntar en el procés de descodificació.
La majoria de regles anteriors es poden codificar. Això ve a dir que podrem escollir a quanta caràcters els hi apliquem aquestes regles. Si el numero de caràcters és mínim, aquesta codificació funcionarà amb agents SMTP fiables. Per fer que sigui totalment robust, es aconsellable que s’apliquin les regles a tots els caràcters excepte les lletres i els números, ja que aquests no varien mai.
Quan no és necessari que les dades que enviem es llegeixin, es a dir, que les dades no siguin texte, es interessant utilitzar aquesta codificació. Consisteix en considerar el text com un flux de bits, els anem separant en grups de 3 bytes (24 bits) i posteriorment els separem cada 6 bits per transformar-los a caràcters fiables que es puguin enviar sense problema (recordem que només existeixen 73 caràcters fiables (a-A z-Z 0-9), per tant, cada cadena 6 bits representaran un caràcter entre 64 caràcters fiables que despres enviarem).
Finalment afegirem 2 bits a cada cadena de 6 bits per completar els 4 bytes de sortida. En resum, transformem caràcters d ‘entrada de3 bytes en una codificació de 4 bytes de sortida, on cada un caracter fiable d’entre una base de 64 caracters fiables.
Ho veurem millor de maneaa gràfica:
Indica que poden existir caràcters que no formin part del codi ascii, així com també poden aparèixer línies massa llargues (amb més de 1000 caràcters) per a poder ser transportades via SMTP. Només és utilitzable en la capçalera d’una part externa del cos d’un missatge MIME.
Es possible convertir texts d’una codificació a una altra. Per exemple, podem passar d’un text codificat en base 64 a un altre en format binary, o un text binary a un altre amb codificació Quoted-Printable.
També afegir que tots els punts anteriorment explicats, fan referència al cos dels missatges. Les capçaleres dels missatges MIME s’han de codificar en US-ascii. Per tant, les capçaleres que hagin d’incloure text que pugui ser llegit, s’haurà de fer amb caràcters procedents de l’anglès.
A banda de la gran utilitat d’aquest protocol classificador de tipus, i dela facilitat de conversió entre diferents formats que aporta,recentment s’han trobat una sèrie de vulnerabilitats que podrienderivar en que pirates informatics puguin evitar la verificació delcontingut de les dades que enviïn, saltar-se la protecció de certsantivirus o, fins i tot llançar atacs de denegació de servei.
Aquests forats deseguretat procedeixen de l’utilització de certs caràcters (espais,cometes...) no estàndard, permetent que s’eviti la comprovació delcontingut de les dades i afectant a tot tipus de software, des declients de correu electrònic, passant per antivirus i ,fins i tot,navegadors web.
Corsaire és el nom de laconsultora de seguretat que ha descobert aquestes vulnerabilitats.Aquesta empresa ja ha comunicat el seu “descobriment” a diferentsvenedors per a que es coordinin per solucionar el problema. De fet,vàries companyies com apple, HP, MessageLabsi Mozilla ja han solucionat aquests problemes en els seus productes.D’altres pensen prendre mesures en pròximes versions del seu software.
http://ditec.um.es/laso/docs/tut-tcpip/3376fm.html
http://es.wikipedia.org/wiki/MIME
http://www.zator.com/Internet/N_16.htm
http://www.mundopc.net/ginformatico/m/mime.php
http://www.adrformacion.com/cursos/winxp/leccion1/tutorial8.html
http://www.eroad.cl/foro/index.php?showtopic=180
http://www.rfc-es.org/rfc/rfc2045-es.txt
http://manic.cs.umass.edu/~cs591/jslides.cgi?slide=104&hilite=1