Dirijo esta respuesta a lo que se puede lograr de manera realista en un microprocesador PIC.
Generaría un número aleatorio en el PIC, la forma común de hacerlo es usar A2D como generador de ruido y muestrea repetidamente el LSB . Una vez que tenga esto, agregue un dígito de control o dos y muéstrelo al usuario. Los dígitos de verificación le permitirán (en el servidor que recibe el texto) protegerse contra la facturación al usuario por un código mal escrito.
En el servidor, tome el código de los usuarios, quite los dígitos de verificación, ejecútelo a través de un Registro de desplazamiento de comentarios lineales que Se carga previamente con un valor secreto. Cargue al usuario, si el pago se cancela, envíe un mensaje de texto con el código de salida.
Tu chip PIC también necesita conocer el secreto y repite el cálculo. Es posible que desee probar Microchips hardware del generador CRC , por ejemplo. AN1148 muestra cómo usar el hardware LSFR. Carga el secreto, luego registra el desafío aleatorio. Compare esto con lo que el usuario ingresa, un resultado que coincida probablemente significa una compra.
Tendría un modo supervisor si este es un quiosco, en lugar de un solo dispositivo, para permitir la recarga de otro código secreto, o patrón de tomas LFSR, asegurado por el acceso físico y almacenar esto en la NVRAM. De esta manera, al menos puede cambiar la codificación a lo largo del tiempo, o en respuesta a una interrupción. Agregue contadores NVRAM para comparar las compras locales con las aprobaciones del servidor para monitorear el deslizamiento. ¡Sin embargo, ten cuidado con tu nivel de desgaste!
Esto es solo tan "seguro" como su secreto y su técnica de privacidad. Sería relativamente trivial para cualquier persona que pueda volcar una imagen hexadecimal de su máquina para revertir el algoritmo del ensamblador, aunque probablemente cualquier persona con acceso físico tenga técnicas más simples para obtener el producto sin pagar. Del mismo modo, cualquiera que esté dispuesto a adivinar la técnica, comprar un código y otro para validación podría adivinar la técnica y hacer una búsqueda de la fuerza bruta por el secreto.
No creo que la criptografía de clave pública completa sea viable en estas máquinas, por lo que este es un compromiso. Portar OpenSSL no será trivial y consumirá una parte significativa de su tiempo de desarrollador y espacio de código. Si no es un código de lanzamiento de misiles, o si necesita proteger los datos de los usuarios o garantizar los votos en una elección, la criptografía de clave pública probablemente sea más que necesaria para su caso de protección de ingresos. Cavtor emptor.