2013-03-26 12 views
7

Opracowaliśmy prototypową płytkę z mikrokontrolerem, która może komunikować się z kartą SmartCard (może czytać ATR, wydawać i czytać odpowiedzi na polecenia APDU itp.) Teraz chcę użyć tego sprzętu z telefon lub tablet z Androidem. Nasza płyta ma połączenie USB, dzięki któremu możemy czytać i pisać na MCU przez Androida.Opracowanie czytnika kart inteligentnych w Androidzie

Ostatecznym celem jest posiadanie działającego czytnika kart inteligentnych na platformie Android z obsługą PKCS # 11 i zapewnienie biblioteki użytkownikom końcowym czytnika kart SmartCard, aby mogli komunikować się z kartami.

Przeczytałem kilka dyskusji na ten temat, niektóre z nich stwierdzały, że będę musiał zbudować niestandardowy Android, aby to zrobić. Nie znam architektury systemu Android, aby zrozumieć, dlaczego musiałbym ponownie zbudować Androida, gdy mogę komunikować się z moim urządzeniem peryferyjnym (czytnikiem kart) przez USB. Wydaje mi się, że jeśli udostępnię bibliotekę, która implementuje interfejs podobny do CCID, użytkownicy mogą następnie komunikować się z moim czytnikiem za pomocą stosu USB systemu Android poprzez integrację mojej biblioteki z docelowym plikiem .apk.

Czy są jakieś problemy z powyższym planem, których nie jesteśmy świadomi? Obawiam się, że brakuje nam czegoś podstawowego na temat czytników Android lub SmartCard w ogóle (na przykład: bezpieczeństwo), co spowoduje problemy dla nas, gdy zaczniemy wdrażać wyżej opisane biblioteki.

+0

Czy [ta informacja dotycząca połączenia USB w systemie Android] (http://developer.android.com/guide/topics/connectivity/usb/index.html) może być pomocna w udzieleniu odpowiedzi na pytanie? – Joe

+0

Bezpieczeństwo jest dostarczane głównie przez samą kartę inteligentną. Główną luką jest to, że tajne dane w telefonie (np. PIN) są przechwytywane przez inną złośliwą aplikację; dlatego czytniki kart PIN, w których PIN nie pozostawia czytelnikowi, mają przewagę. Niektóre zalecenia: używaj bezpiecznej wymiany wiadomości, aby chronić ścieżkę transmisji, nie przechowuj niczego w telefonie bez szyfrowania i nie buforuj kodów PIN. – guidot

+0

Byłoby pomocne, gdybyś połączył się z tymi oryginalnymi dyskusjami, które przeczytałeś o potrzebie niestandardowej pamięci ROM z Androidem. Ta część też nie ma dla mnie sensu. W ich projektach może być ukryty wymóg, którego prawdopodobnie nie zauważyłeś lub po prostu nie zauważyłeś (i który najprawdopodobniej nie ma związku z twoim projektem). Może to być również, że ich dyskusja jest dość stara i poprzedza serwer usb Android, który został wprowadzony z Androidem 3.0 lub nowszym. –

Odpowiedz

1

Mam zintegrowane urządzenia peryferyjne USB w dostosowanej dystrybucji piernika do mojej niestandardowej platformy. Jedynym powodem, dla którego chcesz dostosować platformę Android byłoby dodanie lub zmodyfikowanie niektórych sterowników, które umożliwią ci dostęp do Twojego urządzenia USB. Jeśli twoje urządzenie USB używa już protokołu obsługiwanego przez standardowe urządzenia z Androidem, po prostu ciesz się szczęściem! Twoje prawie wszystko gotowe. Ale zanim celebruję twoje zwycięstwo, spróbuję tego na różnych urządzeniach. Na poziomie Androida i Kernela Google zapewnia bardzo prostą dystrybucję z dużą ilością kodu źródłowego sterownika. Od producenta telefonu/tabletu zależy, które sterowniki niskiego poziomu i protokół będą uwzględniane zgodnie ze sprzętem używanym przez ich urządzenie. Ponieważ ilość pamięci jest ograniczona na telefonie/tablecie, ogólną zasadą jest uwzględnianie tylko tego, co jest potrzebne. W architekturze PC-Linux nie masz problemu, ponieważ przestrzeń na dysku twardym jest tak duża, że ​​zawiera wszystkie sterowniki, które istnieją, i pozwalasz systemowi wybrać i wybrać to, czego potrzebuje, zgodnie z tym, co odkrywa.

Mam nadzieję, że ta prosta odpowiedź będzie pomocna.

Powiązane problemy