Application Protocol Data Unit
Application Protocol Data Unit (APDU) er en essensiell komponent i kommunikasjonen mellom en smartkortleser (terminal) og et smartkort, og danner grunnlaget for strukturen av kommandoer og responser i ISO/IEC 7816-standarden. Denne protokollen er kritisk for implementeringen av en rekke sikkerhetsrelaterte applikasjoner, inkludert EMV-baserte betalingssystemer, elektroniske ID-kort, adgangskontrollsystemer, og mobiltelefoniapplikasjoner som benytter SIM-kort.
APDU-protokollen beskriver to hovedtyper meldinger: kommando-APDUer sendt fra terminalen til kortet, og respons-APDUer returnert av kortet til terminalen. Hver meldingsstruktur følger et veldefinert binært format og er bygd for robust og sikker kommunikasjon.
1. Historisk og teknisk kontekst[1]
[rediger | rediger kilde]Utviklingen av APDU-protokollen kan spores tilbake til de tidlige versjonene av ISO/IEC 7816-standarden, som ble utformet for å standardisere interaksjonen mellom integrerte kretser på smartkort og ytre enheter. De første delene av standarden, publisert på 1980-tallet, la grunnlaget for definisjonen av APDU-formatet slik vi kjenner det i dag.
Med fremveksten av kontaktløse smartkort og NFC-teknologi, har APDU-strukturen blitt tilpasset for å fungere over ulike transportlag, inkludert ISO/IEC 14443 og ISO/IEC 18092 (NFCIP-1).
2. Struktur av APDU-meldinger
[rediger | rediger kilde]2.1 Kommando-APDU[2][3]
[rediger | rediger kilde]En kommando-APDU består av følgende felt:
- CLA (1 byte): Class byte. Identifiserer protokollklassen eller instruksjonsklassen.
- INS (1 byte): Instruction byte. Angir hvilken kommando kortet skal utføre.
- P1, P2 (2 byte): Parameter bytes. Brukes som kommando-spesifikke parametere.
- Lc (0 eller 1-3 byte): Lengde på datadelen som skal sendes til kortet.
- Data (valgfri): Faktiske data som skal overføres til kortet.
- Le (0 eller 1-3 byte): Forventet lengde på responsen fra kortet.
Det finnes to formatvarianter: kort format (for Lc ≤ 255) og utvidet format (Lc > 255).
2.2 Respons-APDU
[rediger | rediger kilde]En respons-APDU består av:
- Data (valgfri): Data sendt fra kortet til terminalen som svar på kommandoen.
- SW1, SW2 (2 byte): Statusord. Indikerer resultatet av kommandoen, f.eks.
0x9000
for "OK",0x6A82
for "File not found", etc.
3. Kommunikasjonsprotokoll
[rediger | rediger kilde]APDU-protokollen brukes over T=0 og T=1 transportprotokoller, definert i ISO/IEC 7816-3:
- T=0: Byte-orientert, halvdupleks kommunikasjon.
- T=1: Block-orientert, med error detection og retransmisjon.
Transportlaget er ansvarlig for overføring av APDU-meldinger og håndtering av eventuelle overføringsfeil. APDU-meldinger er transparente for lavere lag og påvirkes i liten grad av fysisk medium, noe som gir høy interoperabilitet.
4. Bruksområder
[rediger | rediger kilde]4.1 EMV-betalingssystemer
[rediger | rediger kilde]APDU-protokollen er ryggraden i kommunikasjonen mellom betalingsterminaler og chipkort i EMV (Europay-MasterCard-Visa) systemer. Kommandoer som SELECT
, READ RECORD
, GET PROCESSING OPTIONS
er alle standardiserte APDUer.
4.2 SIM-kort og mobilnett
[rediger | rediger kilde]Mobiltelefoner bruker APDU-meldinger for å kommunisere med SIM-kortet for operasjoner som autentisering, filsystemtilgang og overføring av SMS-data.
4.3 Elektroniske ID-systemer
[rediger | rediger kilde]Nasjonale ID-kort og e-pass benytter APDU-protokollen for å muliggjøre sikker overføring av identitetsinformasjon, biometriske data og digital signatur.
5. Sikkerhetsmekanismer
[rediger | rediger kilde]APDU-protokollen støtter ulike sikkerhetsfunksjoner:
- Secure Messaging (SM): Beskytter konfidensialitet og integritet gjennom kryptering og MAC.
- PIN-verifikasjon: Bruk av kommandoer som
VERIFY
for autentisering av brukeren. - Mutual authentication: Brukes i PKI-systemer for å etablere en sikker kanal.
6. Feilhåndtering og statuskoder
[rediger | rediger kilde]Statusordene (SW1 og SW2) i respons-APDU gir detaljert informasjon om resultatet av en kommando. Noen vanlige koder inkluderer:
0x9000
– Succesful execution.0x6A82
– File not found.0x6982
– Security condition not satisfied.0x6D00
– Instruction code not supported.
Feilkoder er essensielle for robust applikasjonslogikk i klientapplikasjonen.
7. APDU-analyse og debugging
[rediger | rediger kilde]Feilsøking av APDU-kommunikasjon krever verktøy som kortlesere med logging-funksjon, samt programvare som GlobalPlatformPro eller kommersielle alternativer som Lauterbach og Micropross. En typisk utviklingsprosess innebærer sporing av APDU-utvekslinger og tolkning av responskoder og datainnhold.
8. Fremtidsperspektiv[4]
[rediger | rediger kilde]Selv om APDU-protokollen opprinnelig ble utviklet for kontaktbaserte smartkort, har den vist seg bemerkelsesverdig tilpasningsdyktig og benyttes nå i kontaktløse miljøer og over IP-baserte kommunikasjonslag. Med overgangen til digital identitet og sikker mobil autentisering, forventes bruken av APDU å fortsette å vokse og utvikles i takt med nye kryptografiske krav og reguleringer som eIDAS 2.0.
Konklusjon
[rediger | rediger kilde]APDU-protokollen er en sentral mekanisme i moderne digital sikkerhet og smartkortinfrastruktur. Den gir en standardisert, fleksibel og sikker metode for kommunikasjon med integrerte mikroprosessorer, og dens struktur har muliggjort interoperabilitet på tvers av nasjonale grenser, bransjer og teknologier.
Referanser
[rediger | rediger kilde]- ^ «ISO/TS 10303-1130:2018». ISO (på engelsk). Besøkt 22. april 2025.
- ^ «ISO/TS 10303-1130:2018». ISO (på engelsk). Besøkt 22. april 2025.
- ^ «APDU Transport over SPI/I2C v1.0 | GPC_SPE_172». GlobalPlatform (på engelsk). Besøkt 22. april 2025.
- ^ «NFC Forum». nfc-forum.org (på engelsk). Besøkt 22. april 2025.