Viedkartes arhitektūra

Viedkartes funkcionalitāti nosaka iebūvētā mikroshēma. Sakarā ar to, ka kartei ir jāiztur mehāniska locīšana, mikroshēmas kristāls nedrīkst būt lielāks par 5 x 5 mm jeb 25 mm2.  Kristāla izmērs lielā mērā ierobežo mikroshēmas sarežģītību, ko nosaka uz tā izvietoto elementu skaits.

Viedkartēs (smart cards), atšķirībā no citām kartēm ar mikroshēmu, tiek izmantots mikrokontrolers ar maināmu programmatūru. Tā ir ierīce, kur uz viena kristāla atrodas centrālais procesors CPU, pamatsistēmas lasāmatmiņa ROM programmas kodu glabāšanai, operatīvā atmiņa RAM skaitļošanas starprezultātu uzglabāšanai un energoneatkarīga atmiņa EEPROM lietojumprogrammas koda un datu glabāšanai. Papildus uz tā paša kristāla var tikt izvietotas specializētas iekārtas kā kriptoprocesors specializētu operāciju veikšanai, iekārta ievades-izvades operāciju organizēšanai, atmiņas vadības iekārta un citas. Tas, ka visas iekārtas atrodas uz viena kristāla, ievērojami palielina viedkartes drošību, jo praktiski nav iespējams nolasīt mikrokontrollera iekšējos signālus. Sevišķi būtiski tas ir kriptogrāfisko operāciju izpildē, jo neļauj atklāt šifrēšanas atslēgas.

Mikrokontrollera svarīgākā sastāvdaļa ir centrālais procesors CPU (Central Processing Unit), kas nodrošina programmas kodu interpretāciju, izpilda saņemtās instrukcijas, vada pārējos blokus, veic datu loģisko un aritmētisko apstrādi.

Procesora īpašības nosaka tā izveidojums. Būtiski elementi, kas tos atšķir, ir:

  • datu kopnes platums. Pirmajos viedkartēs izmantotajos procesoros bija 8 bitu datu kopne, šodien visplašāk tiek lietoti procesori ar 16 bitu kopni, jaunākajos izstrādājumos izmanto 32 bitu kopni. Kopnes platums norāda, cik lielu datu apjomu – 1, 2 vai 4 baitus var apstrādāt vienā ciklā.
  • instrukciju izpildes kārtību. Pirmie viedkaršu procesori izmantoja CISC (Complex Instruction Set Computer) struktūru, kad vienas komandas izpilde var aizņemt vairākus ciklus, kā arī ir iespējami dažādi atmiņas adresācijas veidi. Šodien arvien plašāku pielietojumu gūst RISC (Reduced Instruction Set Computer) struktūra, kad visām instrukcijām ir vienāds formāts un tās tiek izpildītas vienā ciklā, tādejādi nodrošinot lielāku ātrdarbību.
  • takts frekvenci, ko nodrošina iekšējais takts ģenerators. Pirmo viedkaršu procesoru takts frekvence ir 3,5 MHz, modernāko – 60 MHz. Takts frekvence un taktu skaits vienā darba ciklā (vienā ciklā parasti izpilda vienu instrukciju) nosaka ātrdarbību. Neatkarīgi no takts frekvences, sakari ar ārpasauli caur ievades/izvades portiem (kontaktiem) ir standartizēti un notiek relatīvi lēni.
  • programmēšanas valodu. Procesors saprot un izpilda mašīnkodus, kad katrai kodu kombinācijai atbilst noteikta darbības instrukcija. Vistiešākais mašīnkodu pieraksts tiek veikts Asamblera valodā. Sākotnēji tika izmantoti procesori, kuros pilnībā vai daļēji izmantoja mašīnkodus no pasaulē populārākajām procesoru saimēm – 8051, oriģinālā Intel produkts, procesorus viedkartēm ražo Philips, Siemens u.c.; 6805, oriģinālā Motorola, procesorus viedkartēm ražo Motorola, SGS-Thompson u.c. Ir sastopami arī specifiski viedkaršu procesori, piemēram Hitachi izpildījumā. Sakarā ar pāreju uz RISC procesoriem, tiek izmantotas daudzas mašīnkodu sistēmas, bet pamatā viedkaršu procesori atkārto konkrētā ražotāja vispārēja pielietojuma procesoru saimes mašīnkodu sistēmas (ar viedkartēm specifiskiem izņēmumiem un/vai papildinājumiem).

Lasāmatmiņa ROM (Read Only Memory) ir ar fotolitogrāfisku masku programmējama atmiņa (pusvadītāja kristāla rūpnieciskās izgatavošanas laikā). ROM tiek ierakstīti kartes operacionālās sistēmas (COS) kodi: pārraides protokolu nodrošināšanai , ISO komandu izpildei, kriptogrāfisko operāciju funkciju izpildei, programmu bibliotēkas, – tie ir kopēji lielam skaitam mikroshēmu. ROM kodu maiņai (piemēram, funkcionalitātes maiņa vai atrastu kļūdu labošana) nepieciešama jaunas maskas izgatavošanu, kas prasa mēnešiem ilgu laiku.  Tādēļ pielietojumiem, kuros karšu skaits nav liels, ir izdevīgāk izmantot aprobētas ROM ierakstītas karšu operacionālās sistēmas ar daudzām apgrozībā esošām kartēm,  kurām jau ir izstrādātas un pārbaudītas daudzas lietojumprogrammas, piemēram GlobalPlatform specifikācijai atbilstošo Java Card.

ROM nesatur sistēmai vai lietojumprogrammai specifiskus datus, piemēram šifrēšanas atslēgas, kuras tiek glabātas energoneatkarīgā atmiņā. No otras puses, tā kā viena lasāmatmiņas šūna aizņem ļoti maz vietas uz kristāla, ir izdevīgi maksimāli daudz programmas kodu izvietot tieši ROM.

Operatīvā atmiņa RAM (Random Access Memory) ir ļoti ātra un paredzēta programmas kodu izpildes starprezultātu īslaicīgai uzglabāšanai. Ieraksts RAM ir 1000 un vairāk reizes ātrāks par ierakstu energoneatkarīgā atmiņā. Jo vairāk datu var uzglabāt RAM, jo procesors var ātrāk izpildīt lietojumprogrammas. RAM saturs pazūd, izslēdzot mikroshēmas barošanu. Viena RAM šūna (viena bita glabāšanai) aizņem ~16 reizes lielāku pusvadītāja kristāla laukumu nekā atbilstoša šūna ROM, laukuma ekonomijas nolūkā parasti atmiņas apjoms nav lielāks par 1 Kbaitu, tipiski 256 baiti.

Energoneatkarīgā atmiņa ir paredzēta pašas lietojumprogrammas un kartes datu glabāšanai, to skaitā, šifra atslēgu uzglabāšanai. Viedkartēs visplašāk tiek izmantota EEPROM (Electrically Erasable Programmable Read Only Memory), dažās tiek izmantota Flash EEPROM (digitālajos fotoaparātos visbiežāk lietotā atmiņa). Dati atmiņā saglabājas pēc barošanas izslēgšanas, tipiskais datu saglabāšanas laiks ir 10 gadi. EEPROM ir ierobežots dzēšanas/ieraksta ciklu skaits, parasti 100 000, bet tas ir pietiekošs normālam kartes dzīves laikam. EEPROM ierakstam ir nepieciešams paaugstināts barošanas spriegums (līdz pat 18 V), šodien visām viedkartēm programmēšanas spriegumu iegūst kartes iekšienē un tas nav jāpievada no ārpuses. EEPROM šūna aizņem ~4 reizes lielāku kristāla laukumu kā ROM šūna.

CPU, ROM, RAM un EEPROM ir jebkuras viedkartes mikrokontrollerī, bet papildus var būt ierīces, kuras nodrošina paaugstinātu drošību un lielāku ātrdarbību.

Piemērs - mikroshēma SLE88CX720P

Viedkartes procesors 

  • Mikroshēmas SLE88CX720P pamats ir 32 bitu datu kopnes RISC procesors, kas izgatavots 0.22 µm CMOS (Complementary Metal-Oxide Semiconductor) tehnoloģijā un satur atmiņas vadības un aizsardzības ierīci MMU (Memory Management Unit). MMU kalpo kā aparatūras veidā realizēta ugunsmūris un veic drošu lietojumprogrammu kodu un datu atdalīšanu. Kopējā virtuālā 4 Gbaitu adrešu telpa ir sadalīta 16 Mbaitu lielos apgabalos ar atsevišķi definējamiem pieejas nosacījumiem. MMU aparatūras veidā nodrošina iespēju ielādēt/aizvietot jaunas lietojumprogrammas pēc kartes sākotnējās personalizācijas. CPU speciāli konstruēts darbam vairāku lietojumprogrammu režīmā un aparatūras veidā pielāgots darbam ar virtuālās mašīnas valodām Java CardTM, MULTOSTM un WPSCTM. Procesors nodrošina papildus ierīču – UART, taimera ierosinātu pārtraukumu programmējamu apstrādi.
  • ROM apjoms ir 240 Kbaiti, no kuriem lietotājam ir pieejami 216 Kbaiti. Daļa atmiņas (arī RAM un EEPROM) izmantota tikai ražotājam pieejamam apgabalam – PSL (Platform Support Layer), kas nodrošina virtuālās mašīnas valodām kopēju programmas kodu un draiveru izpildi.
  • RAM apjoms ir 8 Kbaiti, no kuriem lietotājam ir pieejami 7 Kbaiti starprezultātiem, mainīgajiem, buferiem, stekiem.
  • EEPROM apjoms ir 80 Kbaiti, no kuriem lietotājam ir pieejami 72 Kbaiti programmas kodu un datu glabāšanai.
  • UART (Universal Asynchronous Receiver-Transmitter) nodrošina asinhronus kartes sakarus ar ārpasauli. Nodrošina divus ievades/izvades portus, pusdupleksa un pilna dupleksa datu pārraidi, atbalsta standartizētos viedkaršu protokolus T=0 un T=1.
  • CLK ir iekšējais takts ģenerators. Tā maksimālā frekvence ir 55 MHz, bet ģeneratora frekvence ir maināma, lai iegūtu konkrētajam pielietojumam optimālu attiecību veiktspēja/patērētā jauda.
  • Gadījuma skaitļu ģenerators nodrošina kriptogrāfijas funkcijām nepieciešamo gadījuma skaitļu ģenerēšanu.
  • DES aparatūra veic simetriskā DES un 3DES algoritma izpildi aparatūras veidā, pie tam tās var tikt veiktas paralēli ar citām darbībām. Nodrošina atslēgu pārvaldīšanu.
  • Kriptoprocesors paredzēts ātrai asimetrisko kriptogrāfisko algoritmu izpildei, speciāli optimizēts RSA un Eliptisko līkņu algoritmiem. Līdzprocesors izmanto sev īpaši atvēlēto 700 baitu RAM, var strādāt ar līdz 2048 bitu garām atslēgām. Līdzprocesora izmantošana ļauj iegūt RSA paraksta ar 1024 bitu atslēgu izpildes laiku pie 55 MHz takts frekvences mazāku par 100 ms (pie 5 MHz gandrīz sekunde), bet atslēgu ģenerēšana prasa 1,56 s (17 s pie 5 MHz). Salīdzinājumam tas pats ar 2048 bitu atslēgu prasa 4,1 un 44 sekundes, atslēgu ģenerēšana – 14,4 un 160 sekundes.
  • Taimeris sastāv no 3 atsevišķi vadāmiem 16 bitu taimeriem.
  • Mikroshēmā iebūvēti papildus sensori, kas novērš iespējas manipulēt ar karti nolūkā atklāt tās slepenos datus – augsta un zema sprieguma devējs, augstākās un zemākās frekvences devējs, taktēšanas pīķu filtrs, inicializācijas filtrs, temperatūras un gaismas devējs, pēkšņa bojājuma devējs.

Papildus ir vērts pieminēt, ka mikroshēma strādā ar barošanas spriegumiem no 1.62 V līdz  5.5 V, temperatūru diapazonā no –25OC līdz +85OC. Mikroshēmai ir optimizēta patērētā jauda, kas atļauj to izmantot gan kā ar kontaktu, tā arī bezkontaktu interfeisu. Katrai mikroshēmai ir unikāls identifikācijas numurs.

Bauskas 58A-2, Rīga, LV-1004
tālr.: +371 67860094
fakss: +371 67605547
E-pasts: office[ at ]adi.lv
© Copyright 2016 ADI