2010-04-23 15 views
18

¿Cómo se puede comenzar con la programación de tarjetas inteligentes? Pregunto aquí sobre todo el conjunto de herramientas que necesita para empezar: libros, tutoriales, hardware, etc.iniciando la programación de tarjeta inteligente

Estoy planeando jugar con un par de programadores de tarjetas inteligentes y soy bastante nuevo en este campo.

Edit: Me interesan principalmente los programadores que juegan bien con los sistemas operativos tipo Unix. Además, no estoy seguro de cómo funciona esto ... pero me gustaría programarlos en C/C++

Respuesta

0

Si busca en Google puede encontrar kits de desarrollo de tarjetas inteligentes que ofrecen un programador, algunas tarjetas de muestra y manuales, razonablemente barato.

También ayuda a tener una comprensión de la criptografía (especialmente la clave pública de cifrado), y algunas prácticas en el embalaje de datos en estructuras realmente muy pequeñas.

Las tarjetas inteligentes van desde las increíblemente tontas (una tienda segura de memoria de 1kb) hasta las bastante sofisticadas (he visto las que se anuncian y ejecutan un framework .NET reducido).

Probablemente, las tarjetas inteligentes más comúnmente utilizadas son las unidades producidas por Mifare, que generalmente se hacen como boletos de viaje, pero también se usan como tarjetas de fidelidad o incluso como permisos de acceso.

+4

Si ha buscado en Google, sería útil poner los enlaces reales aquí. – kizzx2

20

Cada vez que he necesitado para tener acceso a las tarjetas inteligentes para su uso en aplicaciones de seguridad que ha sido a través de cualquiera de los dos:

  • Microsoft CryptoAPI
  • una biblioteca PKCS#11 para la tarjeta.

Para acceder a una tarjeta con Microsoft CryptoAPI se necesita una tarjeta de proveedores de servicios criptográficos (CSP) específicos. El CSP se encuentra debajo de la capa CryptoAPI.

Si está desarrollando en Unix/Linux usando 'C/C++', sin embargo, probablemente querrá echarle un vistazo al estándar PKCS#11 de RSA. El estándar especifica una API 'C' llamada Cryptoki (Interfaz de token criptográfico) que ofrece una abstracción común sobre todos los tipos de dispositivos de cifrado. Casi todos los vendedores de tarjetas inteligentes ofrecen una biblioteca PKCS # 11 para sus tarjetas que puede programar contra el uso de la API de Cryptoki.

Si desea acceder a la tarjeta inteligente/lector en un nivel inferior, puede utilizar API como PC/SC o CT-API.

  • PC/SC estándar de facto para el acceso de la tarjeta inteligente implementada en Windows, Linux y Mac OS X

  • CT-API proporciona funcionalidad sólo es muy mínima; no muy adecuado para aplicaciones modernas.

Si usted está interesado en escribir applets de Java que se ejecutan en tarjetas inteligentes, entonces probablemente desea buscar http://java.sun.com/javacard/

Los recursos que pueden ser de utilidad

  • OpenSC es un conjunto de bibliotecas y herramientas para tarjetas inteligentes.Está diseñado para funcionar con tarjetas de apoyo PKCS # 11. OpenCT proporciona controladores para lectores de tarjetas y tokens que se componen de una tarjeta y un lector (es decir, tokens usb y otros dispositivos "completos").

  • http://www.linuxnet.com/ MÚSCULO - El movimiento por el uso de las tarjetas inteligentes en un entorno Linux

  • PKCS#15 - información criptográfica Token de formato estándar

  • Smart Card Handbook

  • Un presentation on PKCS#11 dado en el conf RSA en 2009.

  • PyKCS11 A Py envoltorio de thon alrededor de PKCS # 11. Este tipo de envoltorios puede proporcionar una interfaz de nivel superior más simple que trabajar directamente en el nivel de Cryptoki.

  • Smart Card Alliance

+0

Gracias por una respuesta muy informativa! Solo para aclarar, que OpenSC no se dirige a "tarjetas de soporte PKCS # 11" (PKCS # 11 es una interfaz de software, no un diseño de tarjeta o estándar de acceso o similar). –

+0

¿Podemos poner algo de código C++/C en lugar de muchos libros de lectura para toda la vida? – YumYumYum

3

Java está comenzando a obtener un gran agarre en el mercado de tarjeta inteligente, empujado por jugadores muy grandes (como IBM).

Hay países enteros donde las personas llevan una Java Card en el bolsillo. Por ejemplo, hay más de 10 millones de ciudadanos de Bélgica cuya tarjeta de identificación nacional (obligatoria para llevar) es una tarjeta Java que ejecuta el "applet" de BELPIC.

Si no me equivoco, todo el sistema brasileño de asistencia sanitaria también se basa en Java Card (s).

En cuanto SmartCard y Linux, aquí está el CÓMO de Linux SmartCard (tenga en cuenta que ese howto está lleno de la palabra clave "Java" en todas partes):

http://www.faqs.org/docs/Linux-HOWTO/Smart-Card-HOWTO.html

entonces hay una .pdf llama "tarjetas inteligentes Exploración" de junio de 2008 que analiza el gran desorden que es el mundo de la "SmartCard" y que básicamente comienza explicando que "SmartCard" es tan descriptivo como decir "computadora", es decir, no muy descriptivo;)

0

Es muy tarde para dar una respuesta pero me gustaría dar un add-on a la respuesta de @bignum.

Bueno, puede comenzar a jugar con el desarrollo de la tarjeta inteligente Java y me gustaría recomendar un buen libro para comprender los conocimientos de principiantes y desarrolladores. "Java Card Technology for Smart Cards".

Si su presupuesto de bolsillo lo permite, entonces puede comprar un "Mobile Security Card" para investigar y desarrollar los applets de las tarjetas inteligentes utilizando el conocimiento obtenido del libro mencionado anteriormente.

Y también puede consultar o usar un proyecto de API de tarjeta inteligente SEEK FOR ANDROID alojado en googlecode para una experiencia de primera mano.

Cuestiones relacionadas