Smartcard utrustningen

Laborera med SmartCard

pdf SmartCardLab.pdf

GoldCard = PIC16F84

smartcardcontact.gif     goldcard.gif

GoldCard är ett blankt SmartCard som är bestyckat med en picprocessor 16F84A ( och ett extra flash-minne ).
En typisk tillämpning för ett sådant SmartCard kan vara som medlemskort i en förening eller klubb. Korten kan tex. programmeras att ge tillträde till olika lokaler eller resurser, vissa dagar, eller för en viss tid eller för ett antal gånger. Bara fantasin sätter gränserna.
Samma teknik används i bankernas kort, men då gäller naturligtvis helt andra krav på säkerhet. ( De har en "secure" processor som inte avslöjar vilken kod den kör - alla instruktioner förbrukar exakt samma ström. Man kan inte heller komma åt att studera chippet eftersom ett nät av processorns "ledningstrådar" omsluter det som en "brynja".  )

smartcard.gif
Kopplingsschema för ett GoldCard med PIC16F84A och ett Flash-minne 24LC16. Som framgår av kopplingsschemat kan man bara nå Flash-minnet via processorn, det är inte anslutet till någon kontaktyta.


Programmering av SmartCard

Vill man programmera ett GoldCard, behöver man en SmartCard hållare/kontakt och icp02-kretsprogrammeraren. 
Observera att det är processorn 16F84A som sitter i SmartCardet. Välj Check Communication under Tools menyn i PICKit2-programmet varje gång Du byter mellan processorerna så kommer programmet att identifiera rätt processor.

Includefilen 16F84A.h kan kopieras från kompilatormappen ... PK2proj\Cc5c\16F84A.h om den inte redan finns bland de andra filerna i din arbetsmappWork. ( kan även laddas ned här  h.gif16F84A.h )

icp02v2small.gif   smartcardbreakout.gifgoldcardx.gif

Till labutrustningen hör två SmartCard, de är från början programmerade med programmet  smartkey.c, ( smartkey.hex ).

c.gifsmartkey.c       ( text.gif smartkey.txt  )       (  hex.gif smartkey.hex )


Labbuppkoppling med SmartCard-läsare/kretsprogrammerare

smartcardbreakout.gif

Breakoutboard

smrtcrd.png

Labbuppkoppling med SmartCard-läsare och seriekommunikation med PICKit2 UART Tool. Seriekommunikationsledningarna har kopplats ihop med en diodgrind till en kommunikations-mixer. Med en tryck-knapp kopplar man om mellan att ladda upp kod till PIC16F690 (låset) och till PIC16F84A (nycklarna).

Eftersom SmartCard'et inte har någon egen kristall måste man tillföra klockpulser utifrån. Det sker enklast med en färdig 4 MHz kristalloscillator.
Ett SmartCard har åtta kontaktytor, men i praktiken har man som användare bara tillgång till en enda pinne C7 (RB7). De övriga kontaktytorna används som matningsspänning, jord, reset, och klockpulser.

Användning SmartCard-läsaren / kretsprogrammeraren

contact.gif

  • När man laddar upp kod till PIC16F690 (låset) ska knappen inte nedtryckt (uppe) och inget smartcard vara i i smartcardhållaren.
  • När man laddar upp kod till smartcardet ska knappen vara nedtryckt (nere).
  • För att kommunicera med processorerna ska knappen vara uppe.

Använd alltid funktionen  Check communication  så att PICKit2 programmet vet vilken av processorna som för tillfället är inkopplad.

Kopplings-schema (för labbutrustningens kortläsardel med avlyssning)

  • who is it?   -   me, please open

smrtlockschematic_new.bmp

Labutrustningen består av en PIC16F690, (låset), och ett 16F84A SmartCard (Gold Card), (nyckeln). Med nyckeln öppnar man låset = tänder lysdioden. Lås och nyckel kommunicerar med varandra genom seriekommunikation, två dioder bildar en eller-funktion för kommunikationen, en "com-mixer". Med den kan man "följa" kommunikationen mellan lås och nyckel med PICKit2 Uart Tool, och om inte nyckeln svarar alls (felvänt kort), kan man själv skriva rätt svar med datorns tangentbord.
Detta gör det möjligt att felsöka systemet.

PIC 16F690 på kopplingsdäcket är från början programmerat med programmet smartlock.c ( smartlock.c ).

c.gifsmartlock.c       ( text.gif smartlock.txt  )       ( hex.gif smartlock.hex )

Det går att direkt prova låset med de två nycklarna, och att följa kommunikationen med UART Tool. Man kan också själv skriva in nyckelns fras  "me, please open".


Uppgifter

Med utrustningen går det att göra många olika uppgifter som illustrerar varierande användningsområden. Det finns även möjlighet att koppla till ytterligare komponenter om man så önskar. Nedan listas några idéer, men Du har säkert själv en ändå bättre idé.

  • Låset ska öppna för två olika egna "nycklar", fraser, men inte för andra kort.
  • Varje gång låset öppnat ska kortet räkna ned en variabel i "icke flyktiga minnet". När variabeln nått 0 nekas tillträde.
  • Kommunikationen mellan lås och nyckel ska vara krypterad. Varje gång är det olika frågefras från låset och olika svarsfras från nyckeln.

Teman

  • Stugbyn. Nyckeln är laddad med giltighetsdatum och låser bara upp vid rätt dagar.
  • Bilpoolen. Låset registrerar körtid (= hur länge nyckeln sitter i). Lagrar detta i ickeflyktiga minnet.
  • Orienteringstävlingen. Stämpla (icke flyktiga minnet) nyckeln med de "kontroller" som besökts.
  • Lösenorden. Kortet innehåller dina lösenord. Ge kortets lösenord, sedan ange en siffra och kortet sänder ut motsvarande av dina lösenord.

Målsystem - minimal kortläsare

Medan labbuppkopplingens alla kommunikationsmöjligheter är praktiska när man utvecklar sitt program, så kanske det tänkta målsystemet oftast bara är en enkel "kortläsare" utan möjlighet att avlyssna kommunikationen. Figuren visar en sådan minimal kortläsare. 

lock_target.png


Programexempel för 16F690
c.gifpassword_bb.c  text.gif password_bb.txt  )      c.gifcountdown_bb.c   ( text.gif countdown_bb.txt  )   

Hur genererar man slumptal?

Programexempel för 16F84A SmartCard

(Vill man vara säker på att bara kommunicera med smart cardet behöver man programmera PIC16F690 att vara "tyst". Använd programmet  c.gif quiet690.c    hex.gif quiet690.hex )


c.gifcardhello.c    text.gif cardhello.txt  )     c.gifcardmemo.c    text.gif cardmemo.txt  )        c.gifcardCntDn.c        text.gif cardCntDn.txt  )  


Var köper man SmartCard?

Hansa elektronik

Feedback Nyheter