Todo lo que debes sobre las tarjetas de crédito, débito y prepago

Este artículo es bastante extenso. Si te interesan los detalles más técnicos puedes ir al final.

Nacieron en la primera mitad del siglo XX. Originalmente, estas primeras tarjetas no eran más que una línea de crédito de un determinado establecimiento. En 1924 por ejemplo, General Petroleum Corporation emite una tarjeta para poder adquirir gasolina. En realidad, lo que sucedía al usar esa tarjeta era que contraíamos una deuda con la compañía, que posteriormente había que pagar en efectivo. De este modo, funcionaban de forma similar a como cuando dejamos que nos apunten algo en la cuenta del bar.

Esto cambió en 1949, cuando Franck McNamara estaba cenando con unos amigos y discutiendo precisamente sobre este tipo de tarjetas. Finalmente al llegar a la hora de pagar, McNamara pudo comprobar que se había dejado la cartera en casa. Tuvo que llamar a su mujer para que le llevase el dinero. Pasó tal vergüenza que se propuso acabar para siempre con este tipo de situaciones. Así es como nació Diners Club, la primera compañía de tarjetas de crédito del mundo.

Frank X. McNamara
Una de las primeras tarjetas Diners Club

Otros dicen que no llamó a su mujer sino que salió del aprieto dando su tarjeta de visita y anotando la cantidad debida. Sea cual sea la historia verdadera, lo cierto es que el sistema de funcionamiento de una tarjeta de crédito es ese. Nosotros cuando pagamos con una tarjeta de este tipo estamos emitiendo deuda, que a final de mes o cuando más nos convenga, pagamos íntegramente o a plazos. Diners cobraba comisiones de mantenimiento a los poseedores de las tarjetas y comisiones por transacción a los establecimientos que las admitían. Esta es la principal diferencia respecto a las tarjetas de débito y las tarjetas prepago.

Logotipos en un establecimiento de Master Charge (actual MasterCard) y BankAmericard (actual VISA)

A partir de ese momento empiezan a surgir más compañías, Bank AmeriCard o Master Charge (VISA y MasterCard actualmente). En España se aceptaron tarjetas de crédito por primera vez en el año 1954 y por aquel entonces eran simples tarjetas de cartón con un número y su titular, que los hoteles y restaurantes de la época anotaban para posteriormente reclamar el pago a Diners. La primera tarjeta emitida por un banco español no llegaría hasta 1978, por el Banco de Bilbao y se trataba de una AmeriCard. Las tarjetas de crédito son el tipo de tarjetas más admitidas en el mundo y suelen llevar asociadas ventajas tales como seguros, programas de puntos, … Al pasarnos una factura a final de mes es más fácil saber cuanto hemos gastado en un mes. Sin embargo estas tarjetas tienen un gran peligro. Nos dejan a nuestra disposición una gran cantidad de dinero, y si no somos capaces de pagar las cuotas a tiempo podemos enfrentarnos a unos intereses de devolución en la mayoría de los casos de dos cifras.

Las primeras tarjetas de crédito emitidas en España fueron las BankAmericard del Banco de Bilbao

Como vemos, las tarjetas de crédito no necesitaban ninguna tecnología en especial para funcionar, las de débito y las prepago, sí que lo necesitan. No obstante, todas las tarjetas de crédito hoy en día usan tecnología, de hecho existen tarjetas que operan en varios modos, crédito y débito. ¿Cómo funcionan las tarjetas de débito?

Las tarjetas de débito son lo más parecido a pagar en efectivo. Cuando pagamos, estamos pagando con nuestro dinero. En algunas se nos permite caer en números rojos (VISA Debit) mientras que en otros se comprueba la existencia de fondos (VISA Electron). Inmediatamente a la compra, el dinero se descuenta de la cuenta bancaria asociada. Estas tarjetas suelen tener gastos de mantenimiento menores (en España los bancos las suelen dar gratis) y son prácticamente igual de admitidas que las de créditos en cajeros automáticos, establecimientos y compras por Internet. No obstante, las tarjeta de débito no son aceptadas en todos los sitios, por dos motivos:

  • Las tarjetas de débito (como VISA Electron) requieren conexión a la cuenta bancaria de tu banco. Este proceso es más complicado que simplemente anotar que debes 50€ a fulanito. Otras tarjetas como VISA Debit pueden funcionar en puntos de pago offline ya que pueden dejarte en números rojos (por tanto, el comerciante se asegura que siempre va a recibir el dinero, aún sin saber cuanto dinero tienes).
  • Las tarjetas de débito no dejan gastar más dinero del que hay en cuenta (o pueden dejar, pero no demasiado).

Por estos dos motivos, puede ser que una tarjeta de débito no llegue a funcionar en algún país extranjero (aunque es cada vez más raro) o simplemente no se admitan para poder así cobrarte gastos imprevistos (alquileres de coches, hoteles, …). Si bien en esto las tarjetas de débito han ido mejorando y en muchas existe la posibilidad de reservar una cantidad de dinero de la tarjeta. Eso quiere decir que al hacerel primer pago o la entrada, se nos cobra una parte y se nos reserva otra. Esa cantidad reservada a efectos prácticos no podemos usarla para nada pero técnicamente sigue siendo nuestro. Cuando se acaba el plazo y no ha hecho falta recurrir a ese dinero de reserva, el comerciante libera ese dinero y ya lo podemos usar en nuestra tarjeta.

Las tarjetas prepago funcionan con tecnología similar a las de débito, salvo por el detalle de que no tienen asociada una cuenta bancaria como tal. En vez de eso, las tarjetas prepago tienen una cuenta propia, que debemos recargar antes de efectuar pagos o retirar dinero. Las tarjetas prepago se han vuelto muy populares para menores de edad y compras por Internet, donde solo se recarga la tarjeta con la cantidad máxima que consideremos necesario.

La tarjeta Antes de BBVA es una tarjeta prepago

Por último, existe otro tipo de tarjeta, aunque apenas usadas en compras, se trata de las tarjetas monedero. Su diferencia principal respecto a las tarjetas prepago reside en como se realiza el pago. En una tarjeta prepago, se realiza una conexión al emisor de la tarjeta, como con las de débito, mientras que en una monedero no. En una tarjeta monedero el dinero se almacena en la propia tarjeta, de forma cifrada. Este sistema no es tan popular y en España que yo sepa ningún banco emite tarjetas de este tipo. Son usadas sin embargo en algunos sistemas de transporte público o de empresas, donde se puede descontar el dinero instantáneamente, aunque no haya conexión con un servidor central. La forma de recargar estas tarjetas es acudir con la propia tarjeta a un punto de recarga, no pudiendo realizarse por Internet o sin la tarjeta.

Tarjeta monedero emitida por Caja Duero para el transporte urbano de Valladolid

Mencionar también las tarjetas ATM. Estas tarjetas únicamente pueden usarse en los cajeros para sacar dinero, no pudiéndose usar en las compras. De este modo funcionan similar a algunas libretas de ahorro. Sin embargo, he de reconocer que personalmente no he visto ninguna tarjeta ATM.

Redes bancarias

Si nos centramos en tarjetas de crédito, débito y prepago tenemos que tener en cuenta las redes interbancarias. Estas permiten las conexiones entre las redes de los distintos bancos y permiten por ejemplo que podamos sacar dinero en un cajero de EspañaDuero cuando nuestra tarjeta la ha emitido N26 Bank o que podamos pagar en el extranjero. En el sistema bancario, no existe nada parecido a Internet (la red de redes) y cada red tiene sus propios puntos de acceso. Así pues, no todos los cajeros tienen por qué poder conectarse a todas las redes existentes, con los consiguientes problemas (no poder sacar dinero, no poder pagar,…). En tarjetas de débito esto es más problemático. En España existen tres redes locales aunque funcionan también redes internacionales.

  • Servired, la mayor red intranacional de España, con el BBVA, Bankinter, Deutsche Bank, Sabadell, Bankia, CaixaBank, Cajamar, las cajas rurales que están unidas por el Banco Cooperativo Español, Triodos Bank, Self Bank, Banco Mediolanum, Caixa Geral, Laboral Kutxa, Abanca y otros bancos más pequeños.
  • 4B, originalmente para Banco Santander, Banco Popular, Banco Pastor y Banesto, ahora también ING, Targobank, Openbank, Banca March, Cetelem, Inversis, Andbank y alguno más.
  • Euro6000, usada antiguamente por las cajas de ahorros, hoy en día de sostiene gracias a Unicaja, EspañaDuero, Ibercaja, Kutxabank, Liberbank y EVO Banco.
Cajero perteneciente a la red intranacional Servired. También aparecen logos de PLUS, Cirrus, Tarjeta 6000, Eurocheque, Eurocard,…
Indicativo del Banco Pastor y Telebanco 4B
IberCaja, con sede en Zaragoza, es una de las entidades que sigue dentro de Euro 6000

Estas redes se comunican con otras redes similares de otros países o bien pueden recurrir a una red internacional, como Cirrus. Aunque después de la crisis de 2008 muchos bancos y cajas se han fusionado entre sí, parece que las tres redes siguen operando de forma independiente.

Logo actual de la red interbancaria Cirrus

Tarjetas

Vamos ahora a ver las principales empresas que se dedican a las tarjetas:

VISA (anteriormente Bank AmeriCard) es quizá la tarjeta más conocida del mundo. Es la tarjeta líder en España. A nivel global es la segunda red más importante (solo superada por UnionPay). Las tarjetas VISA operan a través de la red interbancaria PLUS. VISA dispone de varios tipos de tarjeta: VISA, VISA Debit, VISA Electron y V Pay. VISA es de crédito, VISA Debit es la versión más libre de las de débito. Permite dejarte en números rojos ya que al hacer un pago no se comprueba la disponibilidad de fondos. Es por ello que la VISA Debit puede usarse en algunos sitios donde solo se admiten tarjetas de crédito por ese mismo motivo, el comerciante se puede asegurar que va a recibir su dinero aunque no sepa si tu cuenta tiene fondos. VISA Electron por contra, verifica que haya fondos suficientes en la cuenta, así que necesita que exista una conexión con el banco. Desde hace no mucho existe V Pay, una tarjeta de débito mucho más moderna, emitidas solo con chip y que solo funcionan en SEPA (Single Euro Payments Area). Han sido diseñadas para ser usadas en transacciones pequeñas y por lo general funcionan de forma similar a VISA Electron.

Logo antiguo de VISA Electron
PLUS es la red interbancaria de VISA
V Pay es la gama más moderna de VISA, sólo válida en territorios SEPA

MasterCard, la gran competidora de VISA en España. MasterCard entro en el mercado europeo con las adquisiciones de Eurocard y Europay. Su red interbancaria es Cirrus. Posee varias tarjetas: MasterCard, Debit MasterCard y Maestro. MasterCard es la línea de tarjetas de crédito, Debit MasterCard es una línea de tarjetas de débito compatibles con puntos offline y números rojos (como VISA Debit) y Maestro es comparable a VISA Electron, ya que requiere comprobación de fondos. No obstante, Maestro también puede funcionar como tarjeta prepago y las tarjetas Maestro son distintas al resto de tarjetas MasterCard y VISA. En ciertos países, Maestro funciona como Debit MasterCard, por lo que no requiere autorización electrónica. Las tarjetas Maestro también son compartidas en algunos países con algún proveedor local de tarjetas, como Girocard en Alemania. Maestro fue de las primeras tarjetas donde no había que firmar, sino que se introducía un PIN al comprar, tanto si se compra usando chip como con banda magnética. Muchas Maestro que no pueden usarse en el extranjero e Internet. En España, las tarjetas Maestro nunca han llegado a ser populares.

Logos antiguos de MasterCard, Cirrus y Maestro

American Express es la tercera entidad de tarjetas en España. Sin embargo, debido a sus altas comisiones, es fácil encontrar tiendas que no la admitan.

Discover y Diners Club son bastante usadas en Estados Unidos y otros países como Croacia. En España son bastante difíciles de encontrar y se suelen aceptar únicamente en establecimientos turísticos. Hasta hace años eran empresas con tarjetas independientes, no obstante, Discover adquirió Diners Club hace años. Discover se centrará en el mercado doméstico estadounidense y Diners Club, que era más usada internacionalmente, seguirá con la expansión internacional.

JCB, se trata de una entidad japonesa de tarjetas. Es usada sobretodo por japoneses y coreanos.

UnionPay, es la compañía de tarjetas más grande del mundo, aunque la mayor parte de sus transacciones se concentran en China. Solo las emiten bancos chinos.

UnionPay es la tarjeta más usada del mundo desde 2015

RuPay, son unas tarjetas de amplio uso creadas con intervención del gobierno de la India con el deseo de que todos los habitantes de la India pudieran disponer de esta forma de pago.

Otras tarjetas pueden ser Bancomat (Italia), Elo (Brasil) o Dankort (Dinamarca). Este tipo de tarjetas, debido a su poca popularidad suelen ser compatibles con VISA y MasterCard en el extranjero, mientras que en sus países de origen usan su red interna.

Elo es muy usada dentro de Brasil

¿Cómo funcionan las tarjetas?

Ahora vamos a ver como se puede pagar con las tarjetas de crédito, débito y prepago. En primer lugar comentemos algo sobre el número de las tarjetas. Estas tienen normalmente 16 dígitos, aunque pueden llegar a 19 dígitos. Se numeran por lotes, siendo los primeros dígitos los correspondientes a la empresa. Es posible reconocer la empresa detrás de la tarjeta según su número o PAN.

Los PAN siguen una estructura, que aunque presenta longitud variable, está bien definida.

El primer dígito corresponde al Major Industry Identifier (MII). Indica a que sector pertenece la empresa de la que es la tarjeta. Los sectores son:

Dígito Sector
0 Uso interno
1 Aerolíneas
2 Aerolíneas y otros
3 Viajes, entretenimiento, finanzas
4 Finanzas
5 Finanzas
6 Finanzas
7 Petroleras
8 Salud y telecomunicaciones
9 Sin asignar

Aunque actualmente, la mayoría de tarjetas son de finanzas. El MII y los siguientes 5 dígitos forman el BIN o Bank Identification Number y sirven para idenficar al banco emisor de la tarjeta y enrutarlo. Los siguientes dígitos excepto el último forman parte del identificador de tarjeta personal, asignado por el banco a sus clientes. El último dígito es de comprobación y se calcula con el algoritmo de Luhn.

Número(s) de inicio Longitud número de tarjeta Empresa
22 a 27 16 MasterCard
30 14 Diners Club
34 15 American Express
35 16 JCB
36 14 Diners Club
37 15 American Express
38, 39 14 Diners Club
4 16 VISA
5018, 502, 503, 506 12 a 16 Maestro
5019 16 Dankort
51 a 55 16 MasterCard
56 a 58 12 a 19 Maestro
60 16 Discover
62 16 a 19 UnionPay
622, 64, 65 16 Discover
639, 6220 12 a 19 Maestro
88 16 a 19 UnionPay

Esta tabla no es exhaustiva pero puede servir de referencia rápida. Por ejemplo, aunque VISA empieza siempre por 4, no todas las que empiezan por 4 son VISA siempre, ya que existen tarjetas Elo que también empiezan por 4. No obstante, se trata de rangos tan pequeños que la lista sería muy larga si fuese exhaustiva.

Banda magnética y firma

Estas tarjetas, mejorando las de cartón, agilizan el proceso de pago pero ni introducen ninguna medida de seguridad extra. Se definen según el estándar ISO/IEC 7813 e ISO/IEC 7811. Incluyen una banda magnética desde la que se puede leer el número de la tarjeta, la fecha de caducidad, los nombres del titular y algunos datos técnicos. Las tarjetas tienen 3 bandas o tracks.

Los 3 tracks de las bandas magnéticas y su posición

El primer y segundo track llevan información redudante, de forma que si una banda está dañada puede leerse la otra, sin embargo no siguen el mismo formato.

Nombre del campo Longitud Uso
Start Sentinel (SS) 1 caracter Indica que comienza el track 1, siempre es %
Format Code (FC) 1 caracter Indica el tipo de tarjeta, B para crédito/débito
Primary Account Number (PAN) Hasta 19 digitos Normalmente, el número de la tarjeta que está impreso
Field Separator (FS) 1 caracter Separa el campo de longitud variable PAN del siguiente campo. Siempre es ^
Nombre Hasta 26 caracteres El nombre del titular de la tarjeta, con espacios si hace falta
Field Separator (FS) 1 caracter Separa el campo de longitud variable nombre del resto de campos. Siempre es ^
Expiration Date (ED) 4 dígitos Fecha de caducidad. Siempre en formato YYMM
Service Code (SC) 3 dígitos Indica que tipo de pagos son aceptados
Discretionary Data (DD) Indefinido, pero el track 1 solo puede almacenar 79 caracteres en total Este campo viene determinado por el fabricante de la tarjeta. Puede incluir datos como el CVV1 y PIN.
End Sentinel (ES) 1 caracter Se usa para indicar el fin del campo DD. Siempre es ?
Longitude Redundancy Check (LRC) 1 caracter Se usa para comprobar que se ha podido leer el track 1 entero sin problema

El track 2 fue desarrollado por la American Banking Association y es más corto.

Nombre del campo Longitud Uso
Start Sentinel (SS) 1 caracter Se usa para indicar el comienzo del track 2. Siempre es ;
PAN Hasta 19 caracteres Normalmente, el número de la tarjeta que aparece impreso
Field Separator (FS) 1 caracter Separa el campo de longitud variable PAN, siempre es =
Expiration Date (ED) 4 dígitos Fecha de caducidad en formato YYMM
Service Charge (SC) 3 dígitos Indica los pagos que pueden realizarse
Discretionary Data (DD) Indefinido, pero el track 2 no puede superar los 40 caracteres Campo determinado por el fabricante de la tarjeta. Puede incluir el CVV1 y PIN.
End Sentinel (ES) 1 caracter Indica que el track 2 acaba, siempre es ?
Longitude Redundancy Check (LRC) 1 caracter Usado para comprobar que el track 2 fue leído correctamente

El track 3 no se usa y habitualmente no contiene información. La única excepción se puede encontrar en Alemania donde el track 3 de las tarjetas de débito incluye la información necesaria para obtener la cuenta corriente sobre la que opera la tarjeta de débito.

Al pagar con estas tarjetas es habitual firmar, para dar nuestro consentimiento y en algunos países como España, era necesario mostrar el DNI o algún tipo de identificación.

El problema principal de estas tarjetas es su rápida y sencilla clonación. No deja de ser información que igual que es leída puede ser copiada y ningún lector sería capaz de distinguir entre una tarjeta original y una clonada. No obstante vamos a entrar más a fondo en la seguridad de estas tarjetas.

En primer lugar, toca hablar el CVV1. Se trata de un código que aunque el estándar ISO no exige, suelen llevar las tarjetas VISA y MasterCard. Se trata de un número generado en la emisión de la tarjeta de forma poco previsible fruto de la encriptación del número de la tarjeta y la fecha de caducidad. Las claves usadas en la encriptación, evidentemente, no son públicas. De este modo se consigue que una persona no pueda crear aleatoriamente tarjetas, ya que si bien puede acertar con el número y la fecha de caducidad, difícilmente lo hará con el CVV1. Este sistema de seguridad no protege en ningún momento contra los clonados totales.

También existe el CVV2. Se trata del código de 3 dígitos detrás de la tarjetas VISA / MasterCard (4 dígitos en American Express). Fue creado con la finalidad de mejorar la seguridad en las compras sin tarjeta o por Internet. El mecanismo de generación es similar al del CVV1, aunque está diseñado para que sea imposible que CVV1 y CVV2 coincidan. El CVV2 solo es usado en compras por Internet, y no está almacenado en la banda magnética. Tiene un propósito similar al CVV1 y es verificar que la tarjeta es realmente la emitida por el banco y no una generada aleatoriamente. Sin embargo, hay que advertir que el CVV2 no es un requisito para aceptar pagos por Internet (el CVV2 llegó a VISA en 2001, para aquel entonces Amazon ya era importante) y existen webs que admiten pagos con CVV2 incorrecto (como Stripe).

El PIN y el CVV2 tienen propósitos similares, si bien el PIN puede cambiarse y se deja para opeativas físicas, mientras que el CVV2 es inmutable.

Antiguamente los lectores de banda magnética no estaban conectadas a la red y al terminar el día los empleados realizaban todas las operaciones en lote. Con el paso del tiempo y la llegada de Electron y Maestro, los lectores de banda magnética empezaron a estar conectados a las redes EFTPOS.

Chip EMV

EMV hace referencia a Europay, MasterCard y VISA, y es que estas 3 compañías desarrollaron el sistema de chips más usado actualmente para los pagos. Este protocolo, definido en ISO/IEC 7816, incluye muchas ventajas respecto a la banda magnética. La principal diferencia es que si bien la banda magnética los datos estaban tal cual, en los chips EMV podemos incluir un procesamiento, gracias a un chip que se alimenta gracias al lector. Este estándar es todavía más complejo que el de banda magnética, debido a las mejoras que ha ido sufriendo con el paso de los años.

VCC es la entrada de corriente y GND es tierra. RST para resetear la comunicación, VPP para programar la memoria interna. CLK es la señal de reloj, I/O es para las comunicaciones (half-duplex). C4 y C8 son auxiliares y se pueden usar con dispositivos USB.

Uno de los objetivos de EMV fue ofrecer autenticación offline mucho más segura. Además EMV está diseñado para permitir múltiples apps que se ejecuten en el chip, aunque habitualmente las tarjetas solo llevan una app instalada. Aunque en Europa, los chips EMV se usan con PIN, no es estrictamente necesario y también pueden funcionar con firma.

En primer lugar, tenemos que hablar del sistema de autenticación. Todos los sistemas se basan en criptografía de clave pública-privada mediante RSA. El primer sistema es Static Data Authentication (SDA). Este sistema, el más rápido, no necesita que el chip sea capaz de realizar criptografía, sino que tiene los datos ya guardados de forma encriptada (con un criptograma o clave pública) y simplemente se leen. Cuando se realiza un pago, el lector realiza la verificación de la clave pública y si es correcta efectúa el pago. Como vemos, tampoco necesita conectarse a la red para realizar esta verificación, por lo que se ha añadido seguridad sin necesitar de estar conectado con el servidor. Ese sistema impide la modificación de los datos, no obstante es posible clonar enteramente una tarjeta sin ningún problema (copiaremos datos encriptados, pero eso da igual a fin de cuentas).

El segundo sistema, mucho más seguro, es Dynamic Data Authentication (DDA). Este sistema requiere que el chip sea capaz de realizar operaciones criptográficas. Por este motivo las tarjetas con este chip son más caras de emitir, aunque bajo los mandatos de VISA, MasterCard y SEPA, son las más emitidas en Europa desde 2011. La tarjeta en su interior contiene los datos y una clave privada. Cada vez que se realiza la verificación, la tarjeta responde con datos cifrados. Para ello, necesita que el terminal le pase los datos que necesita así como cierto número impredecible o aleatorio. De ese modo, las tarjetas clonadas no podrán responder lo mismo, ya que en realidad no poseen la clave privada del interior del chip. Este sistema permite verificar los PIN de forma segura sin conexión a la red interbancaria.

Flujo de trabajo de DDA

Existe un tercer sistema, denominado CDA o Combined Dynamic Data Authentication. Se trata de una mejora sobre DDA y es que DDA solo realiza la encriptación en el momento de la autorización, dejando el resto de la comunicación abierta. CDA aplica la encriptación a más partes de la comunicación.

RFID-NFC

Hoy en día las tarjetas que se emiten en España cuentan con esta tecnología. Estas tarjetas funcionan siguiendo el protocolo ISO/IEC 14443, en el cuál se definen las etiquetas RFID y los lectores RFID. Las etiquetas, al igual que los chips EMV, no necesitan energía eléctrica por si mismos.

Existen dos tipos de tarjetas contactless, las MSD y las EMV. Las MSD, solo usadas algún tiempo en Estados Unidos no son más que otra manera de leer la información de la banda magnética, con los problemas de seguridad que ya hemos comentado. Las tarjetas EMV sin embargo, siguen los protocolos del chip EMV. En realidad estas tarjetas suelen usar el mismo chip, solo que con dos vías de comunicación: el chip físico, y el RFID. El mayor problema del protocolo RFID original es que no es full-duplex, es decir, solo puede haber comunicación en un sentido. Para solventar este problema nació NFC, que permite comunicaciones bidireccionales. Sobre NFC se puede implementar EMV sin ningún problema.

La tarjeta de N26 es transparente y nos permite ver la antena necesaria para la comunicación

3DSecure

Los pagos online siguieron creciendo después de la introducción del CVV2 y aunque técnicamente está prohibido almacenar el CVV2 en una base de datos sumado al hecho de que no sea obligatorio para una transacción online, el fraude seguía aumentando. Por ello, VISA creó 3D-Secure, un protocolo basado en XML por el que es necesario introducir un código extra en una web propiedad del banco emisor para finalizar el pago. Este código puede ser de un solo uso, enviado por SMS o puede ser un PIN configurado de antemano.

Flujo de trabajo de 3D Secure

En 2016, ante la popularidad de este sistema, el consorcio EMVco lanzó 3DS 2.0, una versión mejorada del sistema, que entre otras cosas puede utilizarse para verificar la identidad de una persona sin necesidad de hacer un pago.

¿Tienes dudas? ¿Quiéres añadir o corregir algo? Usa los comentarios

loading...

Timers en systemd, reemplazo a cron

Odiado por muchos, alabado por otros, systemd se ha impuesto como el init por excelencia del mundo Linux. Las distros más populares como Debian, Ubuntu, Fedora, openSUSE y Arch Linux usan systemd por defecto. Hoy vengo a hablaros de una característica interesante de systemd que son son los timers. Se trata de poder definir que arranquen programas/servicios cada cierto tiempo o a una hora, su versatilidad es tal que pueden sustituir a cron en la mayoría de casos. Veamos como usar los timers.

Creando un servicio

Para crear un timer primero necesitamos crear un servicio simple que ejecute el comando que queramos al ser iniciado.

Crea el archivo miapp.service y ponlo en /etc/systemd/system/.

[Unit]
Description=Cat Mania GIF

[Service]
ExecStart=/home/pi/charlatan/catmania.py

 

Creando el timer

Para el timer es necesario un archivo con extensión timer en /etc/systemd/system/. Se suele usar el mismo nombre que el que tiene el servicio para escenarios simples. El archivo miapp.timer quedaría así:

[Unit]
Description=Run Cat Mania daily

[Timer]
OnCalendar=daily
RandomizedDelaySec=5min
Unit=catmania.service

[Install]
WantedBy=timers.target

 

Aquí es donde podemos realizar toda la magia de los timers. Los timers de systemd tienen dos modos de funcionamiento. En el primer modo, systemd ejecutará el timer cada cierto tiempo desde el arranque del sistema ( o algo más tarde si no queremos saturar el sistema). El otro modo es el modo calendario donde podemos especificar fechas y horas con wildcards y patrones. Además, es posible modificar la hora exacta de ejecución del timer con las propiedades de Randomize y que evitan que si hay varios timers configurados a la vez, no lo hagan exactamente a la vez (pero siempre dentro de un margen). Otras opciones para OnCalendar pueden ser:

OnCalendar=Wed,Sun *-*-10..15 12:00:00

En ese caso, el timer se activaría los miércoles y domingos que cayesen entre el 10 y el 15 de todos los meses a las 12 horas.

Activando el timer

Una vez estén copiados los archivos service y timer ejecutamos:

systemctl start miapp.timer
systemctl enable miapp.timer

Ya solo queda esperar a que systemd lance el servicio en la fecha y hora especificados.

Monitorización

Los timers están integrados con systemd, por lo que los logs se registran con journalctl. Podemos inspeccionarlos de forma sencilla:

journalctl -f -u miapp.service
journalctl -f -u miapp.timer

Para revisar los timers instalados y activos en el sistema puedes usar el comando:

systemtctl list-timers

Y ya estaría. De este modo podemos usar systemd como reemplazo de cron. Yo personalmente lo prefiero, ya que me parece una sintaxis más clara.

Formulario de registro en Elm

Recientemente he estado experimentando con Elm, un lenguaje funcional puro y a la vez framework de backend. De momento he programado ya he visto unas cuántas cosas y puedo decir que me gusta bastante, que es un soplo de aire fresco en el mundo web y que sinceramente no creo que vaya a triunfar algún día. Sin embargo para proyectos personales, lo veo como alternativa superior a Angular, React y Vue.

Uno de los ejercicios que puede venir bien para entender Elm es implementar un formulario de registro con normas para la contraseña. Según vayamos escribiendo se nos informa sobre qué errores tiene la contraseña para ser segura y cuando lo sea mostramos el botón de registro.

Es un código un poco tonto pero me apetecía compartirlo.

import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (onInput)
import Char
import String
import List

main : Program Never Model Msg
main = Html.program {init = init, view = view, update = update, subscriptions = subscriptions}

type alias Model =
{
    name : String,
    password : String,
    passwordAgain : String
}

init : (Model, Cmd Msg)
init = (Model "" "" "", Cmd.none)

subscriptions : Model -> Sub Msg
subscriptions model = Sub.none

type Msg = Name String | Password String | PasswordAgain String

update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
    case msg of
        Name name -> ({ model | name = name},Cmd.none)
        Password pass -> ({model | password = pass},Cmd.none)
        PasswordAgain pass -> ({model | passwordAgain = pass},Cmd.none)

view : Model -> Html Msg
view model =
    div []
        [
            input[type_ "text", placeholder "Name", onInput Name][],
            input[type_ "password", placeholder "Password", onInput Password][],
            input[type_ "password", placeholder "Confirm", onInput PasswordAgain][],
            viewValidate model
        ]

viewValidate : Model -> Html Msg
viewValidate model =
    let list = checkMinLength model :: checkPassword model :: checkUpper model :: checkLower model :: checkDigit model :: []
    wrongList = List.filter (\(x,y) -> not x) list
    in
    if List.length wrongList == 0 then
        div [] [button[]]
    else
        div [] (List.map showError wrongList )

showError : (Bool,String) -> Html Msg
showError (_,error) =
    div [style[("color","red")]] 

checkPassword : Model -> (Bool, String)
checkPassword model =
    if model.password == model.passwordAgain then
        (True,"")
    else
        (False,"Passwords do not match")

checkMinLength : Model -> (Bool,String)
checkMinLength model =
    if String.length model.password > 7 then
        (True,"OK")
    else
        (False,"Password must have a minimum length of 8 characters")

checkUpper : Model -> (Bool,String)
checkUpper model =
    let isUp = String.any Char.isUpper model.password
    in
    if isUp then
        (True,"")
    else
        (False,"The password must contain an upper letter")

checkLower : Model -> (Bool,String)
checkLower model =
    let isDown = String.any Char.isLower model.password
    in
    if isDown then
        (True,"")
    else
        (False,"The password must contain a lower letter")

checkDigit : Model -> (Bool,String)
checkDigit model =
    let isDig = String.any Char.isDigit model.password
    in
    if isDig then
        (True,"")
    else
        (False,"The password must contain a digit")

 

¿Qué hacer si pierdes o te roban el móvil?

Nunca pensamos que pueda pasar y sin embargo, constantemente se dan situaciones donde esto pueda pasar. Me refiero a que perdamos o nos roben el móvil. Hoy en día los móviles son una extensión nuestra y son vitales para nuestro funcionamiento. Por tanto podemos pasarlo bastante mal si te roban el móvil o lo pierdes.

Afortunadamente, los móviles actuales cuentan con sistemas que permiten localizar el móvil (siempre que el teléfono siga encendido claro está).

Si tu dispositivo tiene Android, la opción más común es usar el Android Device Manager. Se trata de una aplicación integrada de serie en los dispositivos Android con Google Play. Adicionalmente existe en Google Play y en la página web una aplicación para localizar el dispositivo.

Tiene varias opciones, entre ellas es muy interesante la de reproducir sonido si estamos cerca del teléfono y no lo vemos y la de borrar los datos, si vemos difícil recuperar el teléfono, que al menos no lleguen a cualquier mano.

Para usuarios de iOS existe una opción similar llamada Find my iPhone. Se activa desde la web de iCloud. Su funcionamiento es muy similar a Android Device Manager aunque se integra también con Apple Pay, la plataforma de pagos de Apple, para bloquear los pagos.

Estos métodos son los oficiales de los fabricantes para cada sistema operativo. No obstante, existen más aplicaciones de terceros. En dispositivos iOS tenemos la aplicación Life360 GPS Tracking, que nos permite conocer la ubicación GPS de familiares y amigos si ellos nos dan su autorización expresa. Puede ser interesante dejar configurado este servicio con un amigo para así obtener la ubicación precisa en caso de pérdida o sustracción. Una aplicación similar pero compatible con Android e iOS es Instamapper.

Pero existen todavía más métodos, quizá no tengas más opciones ya que no configuraste tu teléfono anteriormente. En ese caso te preguntarás cómo rastrear un celular por número. Existen webs gratuitas, que afirman ser capaces de localizar los dispositivos. Algunas de ellas son: www.sat-gps-locate.com y www.themobiletracker.com. En estas webs solo hay que introducir el número completo de teléfono (con prefijo de país) y localizan el teléfono. Según las propias webs la precisión es de 10 metros en Europa y de 25 metros en Latinoamérica. Usan una combinación de tecnología GSM (que disponen todos los teléfonos) y GPS.

Existen muchas aplicaciones, vamos a mencionar otra conocida, llamada SeekDroid. De funcionamiento a Android Device Manager, tiene algunas opciones extra que pueden interesarnos. Podemos enviar mensajes al dispositivo que tiene el ladrón y de ese modo advertirle de qué te has dado cuenta del robo. El inconveniente que tiene es que necesita conexión a Internet para operar. Si tu teléfono tiene contratado datos no es inconveniente, pero si no lo tiene solo podrás localizarlo cuando el ladrón se conecte por Wi-Fi.

En todo caso recuerda usar estos métodos sabiamente y sin abusar. Rastrear a una persona mayor de edad sin su consentimiento puede ser un delito. Usa estos métodos solo para rastrear tu propio teléfono y el de familiares y amigos que te dejen.

 

 

Documentación con rustdoc

La documentación es una parte importante y muchas veces olvidada de un proyecto de software. Rust cuenta desde el principio con una herramienta destinada a que escribir documentación sea poco doloroso, se trata de rustdoc.

Comentarios en Markdown

Los comentarios de rustdoc empiezan con 3 barras y pueden llevar Markdown. Se escriben encima de la función, estructura, etc que describamos.

/// Perfil almacena los datos del perfil de un usuario en nuestra webapp
struct Perfil{
    username: String,
    password: String,
    url: Option<String>
}

impl Perfil{
    /// Genera un nuevo Perfil
    /// # Ejemplo
    /// ```
    /// let user = Perfil::new("The42","1234");
    /// ```
    pub fn new(u: &str, p: &str) -> Perfil{
        Perfil {username: String::from(u), password: String::from(p), url: None}
    }
}

Mencionar que el código del comentario es sometido a tests también por cargo test. Para generar la documentación basta con escribir cargo doc y Cargo generará la documentación en formato HTML.

Consultando documentación

El mejor sitio para leer la documentación de Rust es Docs.rs. Docs.rs ejecuta cargo doc a todas las crates de Crates.io y las expone al público sin costo.