Programowanie Smartcardów

Prowadzący: Bartłomiej Surma


Kategorie: informatyka

Opis

Smart cardy są aktualnie używane w bardzo wielu miejscach z rozmaitymi funkcjami. Sporo z nich jest bezstykowa i po przyłożeniu do czytnika w kilka sekund można przeprowadzić pewne operacje. Może kilka przykłądów:

  • karta bankomatowa: bezstykowo płatność do 50zł (Visa), płatność powyżej 50zł należy zatwierdzić PINem (MasterCard),
  • UrbanCard (Wrocław) - zakodowanie czasowych biletów komunikacji miejskiej, okazanie ich w razie kontroli,
  • legitymacja studencka - autoryzacja wstępu do rowerowni, akademika, wypożyczanie książek z biblioteki, spełnianie funkcji UrbanCard,
  • elektroniczna portmonetka - w określonych sklepach (np. sklepy i stołówki na terenie kampusu) pozwala na szybką płatność za zakupy, można ją doładować w automatach,
  • karta hotelowa - autoryzacja wejścia do pokoju,
  • paszport - przechowywanie wrażliwych danych osobowych jak np. dane biometryczne twarzy i odcisków palców,
  • niemiecki dowód osobisty - zdalnie z domu umożliwia sprawdzenie liczby punktów karnych, lub zatwierdzenie zeznania podatkowego.

Główną zaletą smartcardów jest ich niewielki rozmiar, brak potrzeby zasilania (zasilane są przez czytnik w momencie komunikacji), a także trudność w odczycie zawartych danych, czy modyfikacji kodu przez osoby trzecie (często zakłada się, że jest to całkowicie niemożliwe - na przykład gdyby odczytać dane z dwóch niemieckich dowodów osobistych, można bez problemu tworzyć nowe tożsamości).

Głowną wadą jest mały, bardzo ograniczony procesor i niewiele dostępnej pamięci.

Karty bezstykowe wykożystują technologię NFC (Near Field Communication), a prawie każdy ma teraz komórkę, która pozwala na taką komunikację.

 

Na warsztatach będziemy programować JavaCardy. Zachęcam do własnych projektów, a także daję też kilka własnych pomysłów:

  • keystorage dedykowany do jednego zastosowania, aktywowany wprowadzanym do terminala haslem,
  • elektroniczny podpis dokumentu,
  • elektroniczny token (cos w stylu bankowych e-tokenow).

Na początek opowiem z czym to się je, odpalimy HelloWorld, dobierzemy się w grupy i zaprojektujemy aplikacje, które będziemy chcieli napisać. Potem zacznie się zabawa.

Wymagania

Należy rozumieć bity, bajty, system szestnastkowy i ten suchar:

Fizyk, biolog i informatyk wybrali się na bal karnawałowy. Fizyk przyszedł w masce Einsteina z wystawionym językiem, maska biologa to pantofelek, a informatyka - 0x1b.

JavaCardy programuje się w Javie (kto by pomyślał...), więc trzeba znać podstawy tego języka (sprawdzę w zadaniach).

JavaCardy nie mają debuggera, a każde przeładowanie programu i odpalenie zabiera trochę czasu, StackOverflow też nam raczej nie pomoże, więc (niestety) trzeba będzie myśleć.

Będziemy pracowali w grupach więc potrzebny jest przynajmniej jeden komputer na dwie osoby (choć komputer na osobę byłby bardziej optymalny). Poproszę też o zainstalowanie odpowiedniego developement kitu do programowania JavaCards, ale napiszę co dokładnie dopiero w pierwszym / drugim tygodniu sierpnia.

Przydatne rzeczy

http://www.javaworld.com/article/2076617/embedded-java/understanding-java-card-2-0.html

https://docs.oracle.com/javase/7/docs/jre/api/security/smartcardio/spec/