ccTalk es un protocolo serie de uso generalizado en la industria de transacciones monetarias y puntos de venta . Periféricos como los detectores de monedas y billetes presentes en una amplia gama de equipos de pago automático, como los de transporte, venta de billetes, cabinas telefónicas, máquinas recreativas y gestión de efectivo en comercios, utilizan ccTalk para comunicarse con el controlador principal. El protocolo ccTalk es un estándar abierto . [ 1 ] : 13
ccTalk es uno de los dos protocolos especificados por BACTA para su uso en todas las máquinas AWP con aceptadores de monedas en serie. (El otro es el protocolo Host Intelligent Interface desarrollado por Mars Electronics International ). [ 1 ] : 20 Fue desarrollado en una empresa llamada Coin Controls (de ahí "cc") en las afueras de Manchester , en el noroeste de Inglaterra, principalmente por el ingeniero Andrew William Barson. La primera versión del protocolo fue en 1996. Coin Controls pasó a llamarse más tarde Money Controls y, a partir de 2010, Crane Payment Solutions. [ 2 ]
El protocolo utiliza una transferencia asíncrona de tramas de caracteres de forma similar a RS232. La principal diferencia radica en que emplea una única línea de datos de comunicación bidireccional para la comunicación semidúplex, en lugar de líneas de transmisión y recepción separadas. Funciona con voltajes TTL y es multipunto, es decir, los periféricos pueden conectarse a un bus común y se separan lógicamente mediante una dirección de dispositivo. Cada periférico en el bus ccTalk debe tener una dirección única. El protocolo original operaba a 4800 baudios , y las versiones posteriores estandarizaron la velocidad a 9600 baudios. Actualmente, varios fabricantes ofrecen chips puente de bajo coste que permiten que ccTalk funcione a través de USB a velocidades de al menos 1 Mbit/s.
Las pilas de protocolo ccTalk se han implementado en una variedad de dispositivos, desde pequeños microcontroladores Microchip con 512 bytes de ROM hasta potentes procesadores ARM7 de 32 bits. [ 1 ] : 12–13 El protocolo admite todas las operaciones estándar para dispositivos electrónicos, como la actualización de firmware mediante memoria flash , la transferencia segura de datos y la información de diagnóstico detallada.
Entre las ventajas de ccTalk se incluyen una tecnología UART de bajo coste , una estructura de paquetes sencilla, una interfaz de comandos fácilmente ampliable y la ausencia de requisitos de licencia. Esto último le confiere al protocolo una gran popularidad en un sector saturado y altamente competitivo, similar al del software de código abierto.
Detalles
El protocolo ccTalk es un protocolo orientado a bytes . La serie de bytes en un mensaje, representada arriba como una serie de números decimales, se transmite como 8-N-1.
Muchos dispositivos tienen un único conector eléctrico que transmite tanto la alimentación (normalmente +12 V o +24 V) como los datos ccTalk a través de un total de 4 cables.
Para reducir costos, para distancias de interconexión cortas, CPI recomienda enviar datos ccTalk a través de una interfaz de colector abierto multipunto no balanceada: tanto los mensajes de transmisión como los de recepción se producen en la misma línea de DATOS serie bidireccional a nivel TTL , controlada mediante un transistor NPN de colector abierto. La resistencia pull-up en el host eleva la línea de DATOS a +5 V, por lo que el 1 lógico (y el estado de reposo) es nominalmente +5 V, y el 0 lógico (y el bit de inicio) es nominalmente 0 V. [ 1 ] : 15, 17 Para distancias más largas, CPI recomienda enviar datos ccTalk a través de una interfaz de controlador RS-485 multipunto balanceada , también nominalmente +5 V y 0 V. [ 1 ] : 17
Los periféricos seguros requieren que todos los bytes de un mensaje estén cifrados, excepto los dos primeros: el byte de la dirección de destino y el byte de la longitud de los datos nunca se cifran para permitir que los periféricos estándar y seguros se combinen en el mismo bus. [ 1 ] : 26
La longitud total de un paquete de mensajes puede variar desde un mínimo de 5 bytes (byte de longitud de datos igual a 0) hasta 260 bytes (byte de longitud de datos igual a 255). Las transferencias más largas requieren una serie de paquetes de mensajes. [ 1 ] : 28
Un ejemplo de paquete de mensajes ccTalk
Datos TX = 2 0 1 245 8
- 2 = dirección de destino
- 0 = cero bytes de datos
- 1 = dirección de origen
- 245 = encabezado del comando 'Solicitar ID de categoría de equipo'
- 8 = suma de verificación ( 2 + 0 + 1 + 245 + 8 = 256 = 0 mod 256 )
Este es un mensaje de la dirección 1 (el host) a la dirección periférica 2 para averiguar de qué se trata.
Datos RX = 1 13 2 0 67 111 105 110 32 65 99 99 101 112 116 111 114 22
- 1 = dirección de destino
- 13 = 13 bytes de datos
- 2 = dirección de origen
- 0 = encabezado de respuesta
- 67…114 = ASCII para 'Aceptador de monedas'
- 22 = suma de verificación (la suma de todos los bytes del paquete es cero)
La respuesta de la dirección 2 a la dirección 1 la identifica como un aceptador de monedas.
Extensiones seguras
En 2010, se agregó el cifrado DES a ciertos comandos para que fuera más resistente a los ataques en el bus. [ 2 ] Cada periférico tiene su propia clave DES única, que comunica a la Game Machine en un "modo de intercambio de claves de confianza". La rotación de claves está disponible. La intención es que descifrar un periférico no comprometa todo el sistema, y que uno descifrado pueda cambiar sus claves. [ 3 ] [ 4 ] DES se considera inseguro desde el principio debido al pequeño tamaño de la clave y ha sido analizado más a fondo, pero sí ralentiza a los estafadores que podrían insertar dispositivos para interceptar el cable de comunicación.
En las máquinas tragamonedas italianas NewSlot se encuentra un protocolo de cifrado mucho más robusto. Este esquema utiliza el intercambio de claves Diffie-Hellman y AES-256 . El uso de DH impide la interceptación del intercambio de claves, mientras que AES permanece intacto , lo que significa que se requeriría un proceso de fuerza bruta de una duración imposible. [ 5 ]
Nomenclatura de monedas y billetes
A lo largo de los años, han surgido varios estándares asociados a partir de la especificación ccTalk. Por ejemplo, las etiquetas globales para identificar las monedas y billetes que cambian constantemente en todo el mundo.
En ccTalk, una moneda tiene un identificador de 6 caracteres con el formato
<Código de país de 2 letras><Valor de 3 dígitos><Código de emisión de 1 letra>
El código de país cumple con la norma ISO 3166. El código de emisión se asigna a diferentes fechas de emisión o variantes especiales de la misma moneda.
p.ej
- US025A Estados Unidos 25c
- GB010B Gran Bretaña 10 peniques
- 200 euros de la UE
Los billetes siguen el mismo patrón, pero se asignan 4 caracteres al valor y existe un factor de escala asociado, generalmente x100, según el país.
p.ej
- US0001A Estados Unidos $1
- GB0020A Gran Bretaña 20 £
- EU0005A Euro €5
Referencias
- 1 2 3 4 5 6 7 "Protocolo de comunicación serie ccTalk: Especificación genérica" Archivado el 16/10/2017 en Wayback Machine . Número 4.7
- 1 2 "Controles monetarios"
- ↑ ""Cifrado DES para aceptadores de monedas y validadores de billetes"" . Archivado del original el 08-08-2017 . Recuperado el 08-08-2017 .
- ↑ ""Cifrado DES para tolvas"" . Archivado del original el 21-07-2017 . Recuperado el 08-08-2017 .
- ↑ "HOPPER CD ccTalk + AES Manual del operador" (PDF) . Alberici . 28 de junio de 2019. Recuperado el 13 de mayo de 2023.
Los comandos ccTalk implementados en este dispositivo son los que se recogen en el documento "Lista de comandos del protocolo ccTalk para el mercado italiano", ley 289 - coma 6", que especifica el paquete de comandos ccTalk Italia actualmente en uso (véase "Protocolo de comunicación ccTalk Italia"), pero modificados para que el periférico cumpla con los nuevos requisitos de seguridad establecidos por el documento "Informe de tabla técnica 2012, 3.3, 2.ª edición - Periférico 27.02.2013", al que se remite al lector para obtener más detalles.
Enlaces externos
- https://web.archive.org/web/20070329093914/http://www.cctalk.org/
- protocolos de red
- Venta