Jste zde

Bezpečnost pro Edge Computing aplikace

Kybernetická bezpečnost zůstává univerzálním problémem při navrhování a zavádění jakéhokoli systému připojeného k veřejnému internetu. V internetu věcí (IoT) je bezpečnost obzvláště důležitá, jelikož roste počet aplikací pro inteligentní domácnosti, inteligentní továrny nebo inteligentní města.

Dodavatelé polovodičových součástek nabízí hotová bezpečnostní řešení. Tento článek představí bezpečnostní prvek (SE) EdgeLock SE050 od společnosti NXP Semiconductors. Dozvíme se, jak tento bezpečnostní prvek používat a implementovat do koncových zařízení.

Bezpečnostní problém IoT

Špatně zajištěná bezpečnost zařízení je atraktivním cílem pro kybernetický útok. Tento útok může být proveden z důvodu získání důvěrných dat uživatele nebo kvůli získání potřebných informací pro vytvoření padělané kopie celého zařízení. Hackeři mohou zneužít zařízení se slabou bezpečností k vytvoření většího zmatku a proniknout hlouběji do sítě a dostat se tak do celého systému. Pokud dojde k napadnutí zařízení v takovém rozsahu, že hacker pronikne do vyšších vrstev hierarchie systému, může dojít k ohrožení bezpečnosti v automatizaci budov, průmyslu, dopravy, a dokonce i ve zdravotnictví, kde dochází k fatálním následkům.

Kromě implementace bezpečnostních prvků je nutné splnit také požadavky na dostatečný výkon pro náročné výpočty a požadavky na nízkou spotřebu elektrické energie. Bezpečnostní mechanismy jako je šifrování nebo autentizace jsou dostatečné, jen se musí zajistit jejich izolace vůči okolí. Bezpečnostní prvek NXP EdgeLock SE050 SE poskytuje řadu bezpečnostních mechanismů a protokolů potřebných pro implementaci Edge-to-Cloud Security do zařízení internetu věcí.

Robustní zabezpečení je základ

Kompletní bezpečnostní řešení pro IoT zařízení představuje čip SE050 od společnosti NXP, která má bohaté zkušenosti v oblasti bezpečnosti čipových karet. SE050 obsahuje důvěryhodné uložiště se speciálním stackem postaveným na platformě Java Card OpenPlatform (JCOP), která se používá v operačním systému s čipovými kartami (OS). Toto uložiště je nezávisle certifikováno až na úroveň Common Criteria (CC) Evaluation Assurance Level (EAL) a stupeň 6 (EAL 6+).

Obrázek 1: Čip SE050 nabízí platformu s certifikací až do úrovně CC EAL 6+. (Zdroj dat: Common Criteria)

Čip SE050 obsahuje bezpečnostní applet od NXP, který používá vestavěné šifrovací knihovny pro podporu komplexní sady kryptografických algoritmů:

  • Symetrická kryptografie pomocí Advanced Encryption Standard (AES) a Data Encryption Standard algoritmy (DES)
  • Asymetrická kryptografie s použitím Rivest-Shamir-Adleman (RSA) a kryptografie pomocí eliptických křivek(ECC), včetně standardních křivek stanovených Národním institutem norem a techniky (NIST)
  • Multi-hashovací funkce používané k tvorbě autentizačních kódů pro zprávy (Mac)
  • Multiple Key Derivation Function (KDF) algoritmy používané pro hesla hash, klíčové smlouvy a klíče

Pro zvýšení výpočetního výkonu má čip SE050 integrovány hardwarové akcelerátory Advanced Encryption Standard (AES), Data Encryption Standard (DES) a Fast Attribute-based Message Encryption (FAME). Pro ochranu uživatelských jmen a hesel (Credentials) čip SE050 poskytuje 50 kByte zabezpečné uživatelské Flash paměti a je vybaven root klíči (veřejný a soukromí klíč) k podpoře typických transakcí v internetu věcí. Lze využít také vlastní klíče a „Credentials“ poskytnuté společností NXP nebo od autorizovaných poskytovatelů třetích stran.

Kromě integrované Flash paměti je k dispozici také RAM paměť, která slouží pro uložení veřejných certifikátů, přičemž příslušné soukromé klíče zůstávají v zabezpečené Flash paměti. IoT SE050 applet nabízí zabezpečený import / export, který umožňuje bezpečně ukládat klíče nebo libovolná citlivá data do externí paměti. Čip používá vlastní paměťový management, který upravuje přístup k různým částem paměti. Pro ochranu proti vniknutí a jiným sofistikovaným útokům čip obsahuje mnoho logických a fyzických překážek bránících neoprávněnému přístupu.

Autentizace zařízení

Čip SE050 disponuje bezpečnostními mechanismy, které jsou určené pro komunikaci s cloudovými servery. Ty samé funkce umožňují zajistit autentizaci připojení na nejnižší úrovni hierarchie IoT mezi jednotlivými zařízeními postavených s čipem SE050.

Například inteligentní senzor se může autentizovat a ověřit připojení k řídícímu zařízení, které je také připojeno k internetu. Tento proces začíná u inteligentního snímače, který odešle certifikát uložený v jeho čipu SE050 do řídícího zařízení. Řídící zařízení pak ověří obdržený certifikát pomocí SE050 kryptografických funkcí. Po úspěšném ověření pošle řídicí jednotka nějakou náhodnou hodnotu, která se nazývá „výzva“ zpět do inteligentního senzoru. Na druhé straně inteligentní senzor použije svůj SE050 a podepíše „výzvu“ soukromým klíčem spojený se stejným certifikátem, který byl zaslán dříve řídicí jednotce. Podepsaná „výza“ může být validována pouze pomocí přidruženého veřejného klíče. Tím si řídící zařízení může být jisto, že certifikát původně zaslaný inteligentnímu snímači je skutečně ve vlastnictví tohoto zařízení.

Zařízení si mohou své role vyměnit. Řídicí jednotka může autentizovat snímač.

Tento druh vzájemné autentizace je nezbytný pro budování důvěryhodné sítě internetu věcí. Zejména pokud síť tvoří několik vrstev včetně zařízení s Egde Computing funkcemi. Přestože je vzájemný proces autentizace jednoduchý, může v tomto procesu dojít k chybám implementace, díky rozdílnému výkladu protokolu, a tím se mohou objevit vážné bezpečnostní díry. Přidáním SE050 do jakéhokoliv IoT zařízení se implementují bezpečnostní funkce „vzájemná autentizace“, aniž by to mělo dopad na výkonnost zařízení.

Jednoduchá a bezpečná integrace

Vývojáři mohou snadno integrovat čip SE050 do svých zařízení s minimálním dopadem na konstrukční složitost nebo plochu, kterou zabere čip na desce. Čip SE050 má rozměry 3 x 3 mm a poskytuje jednoduchou sadu sériových rozhraní (obrázek 2).

Obrázek 2: NXP SE050 SE obsahuje slave rozhraní I 2C pro připojení k hostitelskému mikroprocesoru, master I 2C ISO 7816 pro připojení digitálního snímače a rozhraní ISO 14443 pro NFC. (Zdroj obrázku: NXP)

Pro komunikaci s hostitelským mikrokontrolerem slouží rozhraní slave I2C. SE050 má rozhraní I2C master ISO 7816 pro komunikaci s digitálním snímačem. Zařízení disponuje třetím sériovým rozhraním ISO 14443 pro NFC.

SE050 applet spravuje bezpečné klíče, pravidla řízení a zajišťuje správu relací pro každé připojení.

Pro komunikaci s hostitelem poskytuje ověření relace, aby se zabránilo zachycení I 2C příkazů a dat, které by mohli být zneužity k útoku (man-in-the-middle attack). Man In The Middle (MITM) je druh útoku na bezpečnost uživatele, při kterém útočník zasahuje do komunikace mezi dvěma subjekty, a to tak aby věřili že komunikují pouze spolu. Při zahájení sériové komunikace se ověřuje ID uživatele, které slouží stejně jako heslo nebo PIN kód.

Základní autentizace založená na heslech mezi mikrokontrolerem a čipem SE050 nemusí být vždy dostačující. Pro kritické aplikace je nutné zajistit, aby komunikace mezi hostitelským mikrokontrolerem a čipem SE050 byla bezpečná. Hacknutá verze může používat opakování relace, může posílat telegramy, které jsou nesmyslné nebo nahradit kryptografické algoritmy pro získání důvěrných dat.

Zabezpečené transakce na sběrnici

Právě díky SE050 SE lze použít metody autentizace k vytvoření bezpečného komunikačního kanálu mezi SE050 a Host procesorem. SE050 IC podporuje zabezpečený protokol Channel (SCP) SCP03 standard, který je široce používán k zabezpečení obousměrné komunikace mezi zařízením Java Card a hostitelem.

Použitím protokolu SCP03 se SE050 SE přímo naváže do hostitelského mikrokontroleru během autentizace I2C relace a umožňuje použití šifrované zprávy během relace. Pro šifrování zpráv v rámci protokolu SCP03 se prostý text zprávy nejprve zašifruje pomocí algoritmu AES a vygeneruje se MAC pro šifrovaní zpráv. Odesláním zašifrované zprávy a souvisejícího kódu MAC se nazývá „encrypt-then-MAC“. Tato metoda chrání zašifrovanou zprávu a umožňuje příjemci detekovat změny ke zprávě.

SE050 také zabezpečuje data ze senzorů pomocí metadat s jednoznačným identifikátorem. Používá náhodné hodnoty pro každou instanci, časové razítko a podpis. Uvnitř hostitele může software validovat data přijatá ze SE050, a tím ověřovat jejich aktuálnost.

Jak probíhá výměna dat

Veškerá komunikace mezi hostitelským mikrokontrolerem a SE050 čipem probíhá přes komunikační stack definovaný v normě ISO 7816 pro čipové karty (obrázek 3). Application Protocol Data Unit (APDU) standard definuje formát, obsah a protokol pro výměnu zpráv mezi hostitelským zařízením (HD) a bezpečnostním čipem SE.

Obrázek 3: Komunikace mezi NXP SE050 SE a hostitelským zařízením HD probíhá přes ISO 7816 standardizovaný stack. Datová vrstva je řešena pomocí ISO 7816-3 T = 1 poloduplexní protokol přes I 2C (zdroj obrázku: NXP)

I2C fyzická vrstva v datové vrstvě seřazuje příkazy a odpovědi z aplikační vrstvy do sledu operací dle ISO 7816-3 T = 1 po I2C pro poloduplexní komunikaci. Například pro požadavek čtení vydaný hostitelskou aplikací, datová vrstva hostitele se nejprve dotazuje bezpečnostního čipu SE a čeká na potvrzení (ACK). Toto potvrzení znamená, že bezpečnostní čip je připraven odeslat data (Obrázek 4).

Obrázek 4: Datová vrstva zpracovává žádosti hostitelského zařízení včetně požadavku na čtení, které je znázorněné jako série operací, které odpovídají T = 1 po I2C protokolu. Je zde vidět smyčka operací, dokud neobdrží potvrzení (ACK), která znamená, že bezpečnostní čip je připraven pro přenos dat. (Zdroj obrázku: NXP)

Po obdržení odpovědi ACK datová vrstva bezpečnostního čipu SE posílá data do hostitele jako sled datových bloků, které čekají na potvrzení od linkové vrstvy hostitele pro každý blok (obrázek 5) než dojde ke kompletnímu přenosu dat do hostitelské aplikace.

Obrázek 5: Poté, co je přijato potvrzení ACK dochází k přenosu dat do hostitelské aplikace (Zdroj obrázku: NXP)

Softwarová implementace

Výměna dat na aplikační úrovni mezi hostitelským mikrokontrolerem a SE050 čipem je prováděna podle normy ISO 7816 APDU. Příkazy a odpovědi jsou založeny na značce (Tag), délce, hodnotě (TLV) formát definovaný v normě ISO 7816-4. Minimálně každá APDU zpráva obsahuje třídu (CLA) o velikosti 1 byte (pevná hodnota pro všechny SE050 operace), instrukci (INS) – velikost 1 byte, a dva parametry (P1, P2) - 2 byty. Příkazy a odpovědi mohou obsahovat i další data. Počet dat pro čtení (LE), délku datového pole (LC) a datové pole.

Například požadavek na čtení z hostitelské aplikace použije pár TLV, který nakonfiguruje SE050 rozhraní I2C a provede čtení (Výpis 1). Jak již bylo uvedeno výše, hostitelská datová vrstva pak rozloží tuto žádost do série I2C transakcí v souladu s T = 1 protokolem.

static smStatus_t i2cm_Read(
    ex_sss_boot_ctx_t *pCtx, uint8_t *readbuf, uint32_t readLength)
{
    smStatus_t status;
    TLV[0].type = kSE05x_I2CM_Configure;
    TLV[0].cmd.cfg.I2C_addr = I2C_SENSOR_BUS_ADDRESS;
    TLV[0].cmd.cfg.I2C_baudRate = kSE05x_I2CM_Baud_Rate_400Khz;
 
    TLV[1].type = kSE05x_I2CM_Read;
    TLV[1].cmd.rd.readLength = readLength;
    TLV[1].cmd.rd.rdBuf = readbuf;
 
    status = Se05x_i2c_master_txn(&pCtx->session, &TLV[0], 3);
    return status;
}

Výpis 1: NXP Plug & Trust middleware obsahuje zdrojový kód, který ukazuje použití formátu ISO 7816-4 TLV v hostitelském zařízení pro příkaz čtení z bezpečnostního čipu SE050. (Code zdroj: NXP)

Jak je znázorněno ve výpisu 1, kód používá jednoduchou C strukturu k vytvoření TLV instrukce, která obsahuje konfiguraci a příkaz pro čtení. Zde každá TLV instrukce je vytvořena pomocí SE05x_I2CM_cmd_t struktury (Výpis 2).

typedef struct _SE05x_I2CM_cmd
{
    SE05x_I2CM_TLV_type_t type;
    SE05x_I2CM_INS_type_t cmd;
} SE05x_I2CM_cmd_t;
 
typedef enum _SE05x_I2CM_TLV_type
{
    kSE05x_I2CM_None = 0,
    kSE05x_I2CM_Configure,
    //kSE05x_I2CM_Security,
    kSE05x_I2CM_Write = 3,
    kSE05x_I2CM_Read,
    kSE05x_I2CM_StructuralIssue = 0xFF
} SE05x_I2CM_TLV_type_t;
 
typedef union _SE05x_I2CM_INS_type {
    SE05x_I2CM_configData_t cfg;
    SE05x_I2CM_securityData_t sec;
    SE05x_I2CM_writeData_t w;
    SE05x_I2CM_readData_t rd;
    SE05x_I2CM_structuralIssue_t issue;
} SE05x_I2CM_INS_type_t;
 
typedef struct _SE05x_I2CM_readData
{
    uint16_t readLength;
    SE05x_I2CM_status_t rdStatus;
    /* Output. rdBuf will point to Host buffer */
    uint8_t *rdBuf;
} SE05x_I2CM_readData_t;

 

Výpis 2: NXP Plug & Trust software poskytuje strukturu pro definování typu požadavku (zelené zvýraznění) a přidružené parametry příkazu (modré zvýraznění). (Code zdroj: NXP)

SE05x_I2CM_cmd_t struktura je člen type a je definována C enumerací. SE05x_I2CM_TLV_type_t jsou uvedeny možné hodnoty, včetně standardní hodnoty 4 pro vyžádání čtení ADPU (kSE05x_I2CM_Read). SE05x_I2CM_cmd_t struktura je člen Cmd. V tomto případě je cmd člen rd struktury, která zahrnuje členy určující délku požadovaných dat (readLength) a ukazatel na cílovou vyrovnávací paměť (rdBuf).

Podpora vývoje

Veškerá komunikace mezi hostitelským mikrokontrolerem a bezpečnostním čipem probíhá přes Plug & Trust middleware a knihovnu API (obrázek 6). NXP Plug & Trust middleware balíček obsahuje middleware a API knihovnu se sadou ukázkových aplikací mbed TLS, OpenSSL a další. Kromě toho Python příkazová řádka (CLI) umožňuje používat SE050 funkce v interaktivním režimu.

Obrázek 6: Softwarový balíček NXP Plug & Trust zahrnuje middleware a API funkce pro interakci s SE050 skrz ISO 7816 stack, který zahrnuje aplikační vrstvu APDU, T = 1 I 2C datovou vrstvu a i 2 C fyzickou vrstvu. (Zdroj obrázku: NXP)

Pomocí software NXP Plug & Trust a vývojového kitu OM-SE050ARD lze ověřit všechny možnosti čipu SE050. Deska má osazeny konektory, kde je vyvedeno externí rozhraní I2C a získat tak přímý přístup k pinům SE050. Deska OM-SE050ARD obsahuje také konektor Arduino-R3, se kterým lze připojit řadu jiných vývojových desek například I.MX 6ULTRALITE a FRDM-K64F.

Mezi ukázkové aplikace patří celý proces pro čtení dat ze senzorů přes rozhraní SE050 I2C. Jednoduše lze rychle přestavět tento ukázkový příklad a nahradit standartní I2C rozhraním s certifikátem. Použití certifikátu nevyžaduje žádné změny v nastavení TLV, jak je zobrazeno ve výpisu 1. I2C funkci pro čtení Se05x_i2c_master_txn() nahradíme verzí Se05x_i2c_master_attst_txn() ve výpisu 1.

Další ukázka demonstruje Edge-to-Cloud Security - autentizace a zabezpečená komunikace s cloudovými službami. Nalezneme tam ukázkové příklady k bezpečnému připojení k veřejným službám cloudu jako je Microsoft Azure, IBM Watson, Amazon Web Services (AWS) a Google Cloud Platform ( GCP). Nutností je vytvoření účtu na příslušných cloudových službách. Odesílání klíčů a certifikátů je zajištěno v ukázkové rutině.

Závěr

Špatně zajištěná bezpečnost IoT zařízení je riziko pro celý systém, jelikož každý systém je tak bezpečný, jak je silný jeho nejslabší článek. Skrz nejslabší článek se nezvaní hosté mohou dostat do vyšších struktur sítě a dostat se k důvěrným datům.

Bezpečnost zařízení může být zajištěna bezpečnostním čipem SE050 od NXP. Pomocí vzorových příkladů, které se mohou modifikovat pro danou uživatelskou aplikaci, lze jednoduše vyřešit bezpečnost komunikace nejen na nižší úrovni, ale také mezi Edge zařízeními a cloudovými službami.

 

Článek vyšel v originále “Add a Secure Element to Build Edge-to-Cloud Security into an IoT Design " na webu DigiKey.com, autorem je Stephen Evanczuk

 

Hodnocení článku: