magyar elektronika

E-mail cím:*

Név:

{a-feliratkozással-elfogadja-az-adl-kiadó-kft-adatvédelmi-és-adatkezelési-tájékoztatóját-1}

EBV lidA Microchip L10 és L11 mikrovezérlő sorozata

A nagy értékű adatközpontokban természetes, hogy az adatbiztonságra is jelentős erőforrásokat fordítanak. Az interneten át azonban az adatok a leginkább védtelen „végpontok” felől is támadhatók. Ezek árérzékeny tömegtermékek, amelyeket mégsem célszerű – pusztán költségcsökkentési megfontolásból – védetlenül hagyni. Tesztsorozatunk ehavi cikkében ilyen „végpontközeli” alkalmazásokra optimalizált, biztonságos mikrovezérlőkkel és a hozzájuk rendelt fejlesztőeszközökkel ismerkedhetünk meg.

 

Bevezetés

Az internet, a mai kor egyetlen, valóban „bolygóméretű” emberi konstrukciója mindenhova elér, és az emberek kommunikációján kívül egyre több, a közvetlen emberi közreműködéstől független tevékenységre is alkalmas. Érzékelőivel szinte mindenről szerezhet információt, az adattárolókban rohamosan növekvő „big data” révén szinte mindenre emlékszik és adatfeldolgozó eszközeivel az okosóránktól az orvosi berendezéseken, bankokon és a „behálózott” gyáróriásokon át a földrésznyi energiahálózatokig mindenbe beavatkozhat. Számtalan rosszhiszemű és még több „technikatudatlan”, a veszélyeket nem ismerő felhasználó csatlakozik hozzá minden pillanatban. Az informatikai biztonságot, amelyet számos ismert és megszámlálhatatlan – ma még – ismeretlen módszer, eljárás, technikai meghibásodás és más veszélyforrás fenyeget, ma már nem alapozhatjuk az emberi felhasználók jószándékára, tudására, veszélytudatosságára. Gépi eszközökkel kell védeni ezek ellentéteinek következményei ellen még a jelentéktelennek tűnő alkalmazásokat is. Ez a szándék vezette a tesztsorozatunk ehavi cikkében bemutatott mikrovezérlők és fejlesztőeszközök tervezőit.
A Microchip Technology, Inc. nemrég vásárolta fel a korábban a kisfogyasztású mikrovezérlőiről ismert Atmel céget, azonban nem egyszerűen „piacot vásárolt”, hanem az Atmel korábbi termékcsaládjait és fejlesztési filozófiáját megőrizve, saját korábbi termékstruktúráját ezekkel kiegészítve integrálta be saját szervezetébe. Ez a Microchip ökoszisztémájába ma már szervesen beillesztett korábbi „Atmel-filozófia” érződik azon a két mikrovezérlőn, amelyet most röviden bemutatni kívánunk. Ezekben kezdettől fogva alapkövetelmény volt a kis méret és fogyasztás, amellyel jelentős érdeklődést támasztottak a dolgok internete, az Internet of Things (IoT) végpontjait tervező mérnökök körében. Ehhez társul – és mára ugyancsak alapkövetelménnyé nőtte ki magát – az informatikai biztonságra való törekvés. Ezen korábban főként a „magántitkok” megőrzését értettük, de mára számos biztonsági esettanulmány és a gyakorlatban is előfordult illetéktelen beavatkozás – és azok ellenintézkedései – tanulságait levonva arra kell felkészülnünk, hogy még a legegyszerűbb, egyetlen érzékelőt működtető IoT-végpont által küldött adatok meghamisításával, a távadatátvitellel történő firmware-frissítésükkel elhelyezett rosszindulatú kódrészletekkel is távolra kiható, jelentős anyagi értékeket, de akár emberek testi épségét és életét is veszélyeztető következménylavinát lehet elindítani. Az ezek kockázatát csökkentő, az informatikai biztonságot garantáló hardvereszközök tehát még ezekből az egyszerű (tömegesen előállított és használt, tehát árérzékeny) IoT-eszközökből sem hiányozhatnak.

 

1abraEBV

1. ábra  IoT-szenzoralkalmazás védelme a TrustedZone funkció felhasználásával

 

A Microchip SAM L10/L11 mikrovezérlő sorozata

 

Az említett termékek alaptulajdonságai azonosak:

  • A Cortex M0+-nál tömörebb és nagyobb teljesítményű programkódot lehetővé tevő ARM Cortex-M23 processzormag 32 MHz órafrekvenciával, 64 kbájt flash- és 16 kbájt statikus RAM tárolóval rendelkezik. Beépített „babrálásvédelmet” és egyedi gyári számot tartalmaz.
  • A két család – a cég picoPower-technológiáját alkalmazva – a kategóriájában a legkisebb energiafogyasztással rendelkezik: nagyjából feleannyit fogyaszt, mint a második legjobb versenytárs. Ez az előny az aktív és alvó üzemmódokban egyaránt érvényesül. A beépített analóg perifériák (műveleti erősítő, analóg komparátor, AD- és DA-átalakítók) ugyancsak különlegesen kis fogyasztásúak.
  • Kis méretét jellemzi, hogy a legkisebb alapterületű, 32 kivezetéses WLCSP-tokozat helyfoglalása mindössze 2,8 × 2,8 mm, és még a legnagyobb, TQFP-tokozat sem nagyobb 7 × 7 mm-nél.
  • Az általános jellemzőkön kívül ez az architektúra egy további speciális területen is kiemelkedően teljesít: olyan továbbfejlesztett érintésvezérlő perifériát (Peripheral Touch Controller – PTC) tartalmaz, amelynek képességei meghaladják az elterjedt érintésérzékelőkét. A kapcsolás érzékelése igen érzékeny, precíz, és különlegesen magas védettséget biztosít a külső elektromágneses zajok és a fröccsenő víz által kiváltott téves működés ellen. Ez utóbbi az említett biztonsági tulajdonságokkal kiegészítve különlegesen magas védettséget nyújtó érintőbillentyűzetes hozzáférés-védelem megvalósítására ad lehetőséget. Ez abban is többletet kínál az általánosan elterjedt, egyszerű megoldásokhoz képest, hogy a billentyűzetről párhuzamosan, egyidejűleg történik az érintések érzékelése, nem pedig a megszokott, időosztásos letapogatással. Ez nem csak a (kb. 400-szor) gyorsabb működésével tűnik ki, hanem helyesen érzékeli az egyidejűleg több billentyű megérintéséből előálló billentyűkombinációkat is, amellyel a megszokott „pinkódos” megoldásnál sokkal biztonságosabb hozzáférés-védelemre is lehetőséget teremt.

 

Látható, hogy a felsorolt alaptulajdonságok a kis fogyasztáson kívül is eleve hasznos hozzájárulást jelentenek az IoT és más, biztonságigényes alkalmazásokhoz. Ezt a szolgáltatáskínálatot találjuk az L10 processzorváltozatban. Ennek egy további, fontos biztonsági funkcionalitással bővített változata az L11 modell, amely a TrustZone-architektúrával kiegészítve a termékkategória jelenlegi legjobb biztonsági tulajdonságait garantálja.
A TrustZone bizonyos ARM-architektúrákra (köztük a Cortex-M alapúakra) ráépíthető, egy egész rendszercsipre (System on Chip – SoC) kiterjedő, hardveres eszközökkel biztosított, rendszerszintű elválasztást tesz lehetővé a védett rendszermag és a védtelen, külső szoftverkörnyezet között. Ez gyors – és a védett memóriának a külső környezet általi megváltoztatásait kizáró – átkapcsolást, „kontextusváltást” lehetővé téve a rendszerbiztonság alaprétegét képezi. Mivel a processzormaggal egybeintegrálták, a külső környezet felől indított támadás nem képes azt a védett szoftverkörnyezethez hozzáférve módosítani, manipulálni. A TrustZone védelmi megoldáshoz bőséges könyvtár ad szoftvertámogatást.
Az L11 része mindemellett egy titkosítófunkciókat megvalósító, beépített hardvergyorsító, amely a szimmetrikus kriptográfiai modellt követő 128 bites AES, az SHA256 és a GCM titkosítóalgoritmusokat támogatja. Ezenkívül védelmet kínál a rendszerindító kód (boot-program) futtatásakor történő beavatkozások, továbbá a hibakereső funkció felőli támadhatóság ellen (UART-alapú secure boot és secure debug). A ROM-ban tárolt, megváltoztathatatlan boot-program kihagyhatatlanul hajtja végre a rendszer bekapcsolásakor történő integritásvizsgálatát, hitelesíti a flash-ben tárolt program érintetlenségét. Mivel az IoT-eszközök elleni támadások nagy része a firmware frissítésekor kínálkozó biztonsági rést próbálja meg kihasználni, ezek a tulajdonságok jelentősen csökkentik a frissítésre épülő támadások lehetőségét. E tekintetben az L11 kategóriájában a világelső. A biztonságos hibakeresés-funkció háromféle hozzáférési szintet (Debug Access Level – DAL) különböztet meg a felhasználói jogosultság szempontjából: a DAL0 minden hibakeresési hozzáférést megtilt, a DAL1 a TrustZone által nem védett, „külső” rendszerrészekhez, a DAL2 pedig a védett részekhez is – tehát a teljes rendszerhez – megengedi a hozzáférést a hibakereső eszközökkel.
A termékcsalád egymásra épülő szolgáltatási „lépcsőjének” a cikk írásakor még meg nem jelent, de ez év végéig várhatóan piacra kerülő következő fokozata az L11 KPH modell, amely a rendszergazdai szintű (root) belépésekhez tartalmaz hardverbe „égetett”, egyedi jelszót, amely a biztonság további fokozása mellett a gyors rendszerfejlesztéshez is jelentősen hozzájárul.

2abraEBV

2. ábra  Tartozék eredetiségének ellenőrzése

 

Az informatikai támadások típusai

Tekintsük át röviden, milyen típusú ismert támadási stratégiákra kell számítanunk a beágyazott és IoT-eszközök világában, és milyen válaszokat adnak ezekre az alapvédelmeken túlmutató biztonsági funkciókkal is felvértezett Microchip L11 mikrovezérlő-családjának képességei.

  • Szoftvertámadások:
    • túlterheléses támadás (DDoS),
    • rosszindulatú kód beillesztése,
    • rosszindulatú hozzáférés a memóriához, illetve a tárolt titkosítókulcsokhoz,
    • szellemi tulajdon (Intellectual Property – IP) eltulajdonítása.
      Válasz: a TrustZone és a megváltoztathatatlan, biztonságos programbetöltés (secure boot).
  •  A firmware-frissítés sebezhetősége:
    • rosszindulatú kóddal „behelyettesített” firmware,
    • védtelen kulcstárolás a boot-programhoz.
      Válasz: biztonságos bootloader és védett kulcstárolás.
  •  Kommunikációs támadások:
    • közbeékelődéses (Man-in-the-middle) támadások,
    • védtelen titkosítókulcsok megszerzése.
      Válasz: titkosító gyorsítóhardver és biztonságos kulcstárolás.
  •  Fizikai támadások:
    • a tokjától megfosztott csip firmware és adatok kiolvasása mikroszondákkal,
    • a törlés utáni „adatmaradványok” kiolvasása.
      Válasz: beépített, csipszintű „babrálásvédelem” (tamper-resistance).

 

3abraEBV 

3. ábra  Érzékeny személyi adatok biztonságos tárolása

 

Néhány tipikus alkalmazás

A két említett eszköz közül az informatikai biztonság problémái ellen jelentősebb védelmet nyújtó SAM L11 típus néhány lehetséges alkalmazását vázoljuk fel. Az 1. ábrán egy IoT-szenzor védett, vezetékmentes adattovábbítására látunk példát: látható, hogy a védett (trusted) memóriaterületen tárolódnak a biztonságos kommunikáció kulcsai és a biztonságkritikus adatok.
A firmware frissítése sem támadható, mert a biztonságos rendszerbetöltés (secure boot) kizárja a rosszindulatú kód betöltését és futtatását a rendszer újraindításakor, és végül a biztonságos memóriában tároljuk az IoT-alkalmazás egy ellenőrzött példányát is, amellyel a nem védett zónában futó alkalmazás összevethető, és ezzel annak integritása ellenőrizhető.
A 2. ábra egy nyomtatóba épített biztonsági megoldást mutat, amely megakadályozza, hogy azt nem eredeti, gyári festékkazettával használják. (Ezt a megoldást részben a rossz minőségű, nem eredeti kazetták miatti meghibásodások megelőzésére, részben az „olcsó készülék – drága fogyóeszköz”- típusú üzleti modell megvalósítása érdekében alkalmazzák a készülékgyártók). Az ellenőrzésre a „kihívás/válasz” alapú jogosultságellenőrzést (autentikációt) alkalmazza a készülék: a tartozék beillesztésekor annak kódolt „kérdést” küld, amelyet a tartozékba épített biztonsági csip dekódol és a saját gyári számát is felhasználva kódolt választ küld a készüléknek. A dekódolt válasz megfelelőségét az alkalmazás ellenőrzi, és engedélyezi a működést a megfelelő választ adó tartozéknál, illetve letiltja azt a nem megfelelő választ adó – vagy nem válaszoló – eszköznél.

 

 

4abraEBV

4. ábra  Nagy biztonságú, billentyűkódos hozzáférés-védelem


A biztonságot – a védett zónában tárolt – egyedi kulcs garantálja, amelyből a titkosító hardvergyorsító egyedi kihívást generál, és egyben kiszámítja, hogy arra az eredeti tartozék biztonsági csipjének milyen választ kell adnia.
A 3. ábra egy vércukormérő-alkalmazást mutat, amelyben a szenzitív személyi adatok és egészségügyi paraméterek biztonságos tárolásáért a SAM L11 mikrovezérlő felelős. Az illetéktelen hozzáférés ellen védelemre szoruló személyes egészségügyi adatok a programfutás közben az MCU biztonságos memóriaterületén vannak tárolva, a külső – esetleg cserélhető – háttértárolóra való kiírás viszont a TrustedZone hardveres gyorsítású titkosítómoduljával kódolva történik. Az ötlet más, cserélhető adattárolót alkalmazó, biztonságkritikus megoldásnál is használható.
A 4. ábrán egy olyan billentyűzésalapú hozzáférési jogosultságellenőrzésre látunk példát, amely a SAM L11 kiemelkedő érintőbillentyűzet-érzékelési képességein alapul: jól védett például a fröccsenő víz okozta téves billentyűleolvasás ellen, de a párhuzamos leolvasás miatt egyszerre több billentyű megérintésén alapuló kombinációk használatára is lehetőséget adva a biztonságot is fokozhatja. A jogosultságellenőrzés a billentyűzött kódnak a biztonságos zónában tárolt kóddal történő összevetésével történik, a vezetékmentes kommunikáció titkosításához szükséges kóddal együtt.

 

Magasfokú védettség – jól támogatott fejlesztés

Az eddigiekből látható, hogy a SAM L11 MCU-család beépített biztonsági funkciói és azok könyvtáralapú szoftvertámogatása a beágyazott rendszerek (és ezen belül különösen az IoT-alkalmazások) számos biztonsági problémájára adhat megnyugtató választ. Kétség sem fér ahhoz, hogy ez a fejlesztés során többletmunkával terheli az alkalmazásfejlesztőt, hiszen a legtöbb informatikai biztonsági sérülékenység annak tulajdonítható, hogy a végtermék árára nehezedő piaci nyomás – és vele a fejlesztés alacsony költségvetése – miatt a biztonsági funkciók kidolgozására nem jut elég erőforrás, arról nem, vagy csak könnyen feltörhető, alacsony biztonságú megoldásokkal gondoskodnak. További „szűk keresztmetszetet” jelent a megfelelő színvonalú informatikai biztonsági megoldások kidolgozásának speciális tudásigénye. Ez utóbbi nehézségen a gyártó Microchip cég olyan hardver-fejlesztőeszközök és szoftverkönyvtárak rendelkezésre bocsátásával igyekszik segíteni, amelyekkel speciális adatvédelmi szakismeretek nélkül is lehetséges hatékony védelmet kidolgozni, alacsony áruk pedig már kis sorozatú végtermék előállítása során is megtérül a fejlesztés összköltségének és erőforrásigényének csökkenése, valamint a gyorsabban piacéretté fejleszthető végtermék révén.
A Microsoft SAM mikrovezérlő-családdal történő alkalmazásfejlesztés támogatására a SAM Xplained Pro fejlesztőkártya-családot forgalmazza, amelynek tagjai lényegében a rá telepített SAM Lx mikrovezérlőben különböznek egymástól. Az 5. ábra a SAM L11 mikrovezérlőhöz kidolgozott fejlesztőkártya térképét mutatja. Ez (néhány további szokásos előfeltétellel együtt), elegendő az alapvető fejlesztési feladatok elvégzésére, azonban megrendelhető egy további, I/O1 Xplained Pro Extension Board elnevezésű kiegészítő modul is, amely újabb könnyítést jelent a beágyazott – és ezen belül az IoT – alkalmazások fejlesztőinek azáltal, hogy az efféle alkalmazásokban szokásosan használt további hardverelemekkel egészíti ki a „processzorfüggő” fejlesztőeszköz-családot (azaz a SAM Xplained Pro család mindegyik tagjához használható, azok 1. bővítőcsatlakozójára dugaszolva). A 6. ábrán látható kiegészítő kártyán található

  • egy SPI-interfész, rajta egy mikro-SD memóriakártya-csatlakozóval (egy 2 Gbájtos mikro-SD kártya árban foglalt tartozék),
  • egy aluláteresztő szűrővel „simított” impulzusszélesség-modulált (PWM) kimenet, amellyel (például) led fényerősség szabályozása demonstrálható,
  • egy fényérzékelő,
  • egy AD-konverter, amellyel egyebek közt a szűrt PWM-kimenet vagy a fényszenzor feszültsége is visszamérhető,
  • két általános célú I/O vezeték (GPIO),
  • egy „visszahurkolható” soros aszinkron kommunikációs csatorna (UART), valamint egy AT30TSE758 típusú, integrált EEPROM-mal is rendelkező hőmérsékletszenzor.

 

Támogatás az IoT-eszközök „energetikai” tervezéséhez

Az I/O1 Xplained Pro kártya fő célja a perifériakezelés műveleteinek bemutatásán és megértésén kívül az is, hogy teljessé tegye egy IoT-végpont szimulációját, mivel ezekben az eszközökben szinte törvényszerűen jelen vannak a processzoron kívül a külvilágot érzékelő szenzorok (illetve bizonyos esetekben az azt befolyásoló beavatkozók) is. Az IoT-rendszerek egyik jellemző tulajdonsága, hogy a végpontok, vagy legalábbis azok nagyobb része vezetékmentesen kapcsolódik az adathálózathoz. Ám ennek az előnye (a „kábeldzsungel” elkerülése) csak akkor használható ki teljesen, ha az energiaellátás is „helyben” megoldható: elemről, akkumulátorról vagy a környezeti hulladékenergia begyűjtéséből (energy harvesting). Ezek egyike sem túl „bőséges” energiaforrás, tehát gondoskodni kell a takarékos felhasználásáról például azért is, hogy a kihelyezett végpontot a lehető legritkábban, esetleg többé soha ne is kelljen felkeresni az energia-utánpótlás érdekében. Az IoT-végpontokban két fontos alrendszer „vetélkedik” az energiáért: a processzor (illetve sokkal gyakrabban a mikrovezérlő) és a perifériális elemek (főként a szenzorok). Az IoT-tervezőnek tehát el kell tudnia különíteni e két alrendszernek az áramfogyasztását ahhoz, hogy ki tudja jelölni a fogyasztáscsökkentés érdekében történő fejlesztés irányait: vajon az aktív processzoridő csökkentésével (azaz a csökkentett energiafogyasztású üzemmódok, „alvó állapotok” jobb kihasználásával), esetleg a processzoron futó bonyolult – és ezért energiaigényes – algoritmus egyszerűsítésével vagy a hálózat többi (energiával jobban „eleresztett”) részébe történő „kiszervezésével”, illetve a külső perifériarendszer módosításával takaríthat-e meg több energiát.
Az ilyen vizsgálatokat a SAM Xplained Pro fejlesztőkártyák rendkívül egyszerű eszközökkel támogatják: a rájuk telepített, dugaszolható rövidzárhidak (jumperek) megfelelő kombinációjával elkülönítetten mérhető az MCU, illetve a bővítőcsatlakozóra dugaszolt I/O-alrendszer fogyasztása, és így a fejlesztő valós idejű információhoz jut a modellezett IoT-eszköz működési üzemmódjai és az energiafogyasztás összefüggéseiről.

 

5abraEBV

5. ábra  A SAM L11 Xplained Pro fejlesztőkártya „térképe”

 

Szoftverfejlesztés – hogyan lássunk hozzá?

A SAM Lx mikrovezérlő-család rendelkezik mindazokkal a szoftvereszközökkel, amelyekkel hatékony alkalmazásfejlesztés végezhető – ezek a gyártó honlapjáról is letölthetők. Használatukat egy gyakorlott MCU-alkalmazásfejlesztő könnyedén elsajátíthatja. Számukra elsősorban az adatbiztonsági és kriptográfiai képességekkel jobban ellátott L11 modell megismerése jelenthet újdonságot, amelyhez a Microchip olyan – bőséges – demonstrációs „példatárral” szolgál, amely segítségével a fokozott informatikai biztonságot igénylő alkalmazások fejlesztéséhez szükséges „tudástöbblet” is elsajátítható.
A fejlesztés egyetlen hardverfeltétele egy külső PC. Ezen fut az USB-alapú, soros UART terminálemulátor szoftver (a Windows-felhasználóknak a TeraTerm, a Linux-felhasználóknak a putty lehet ismerős). A terminálszoftver megfelelő konfigurációja után a PC-t és a rajta futó Atmel Studio 7 szoftverfejlesztő környezetet USB-n összekapcsolva a PC látja el a fejlesztőrendszer és a hibakereső konzol szerepét.
A demonstrációs példatár részletes ismertetése e cikk keretei között reménytelen vállalkozás lenne, ezért csak megemlítjük, hogy a gyártó által összeállított több mint 80 oldalas szoftverfejlesztési útmutató számos példával illusztrálja a SAM L11 mikrovezérlőnek informatikai biztonságot szolgáló képességeit. Többek között megismerhetők az alábbiak:

  • Biztonságos alkalmazás fejlesztése az AtmelSTART (a SAM processzorcsaládra alapozott beágyazott alkalmazásfejlesztéshez használható intuitív, grafikus konfigurációs eszköz) segítségével.
    • Hogyan valósítsunk meg egy biztonságos szoftverkönyvtárat és annak nem biztonságos környezetből is hívható alkalmazásprogramozási felületét (API) és hogyan használjuk ezeket?
  • A „nem biztonságos” és „részben biztonságos” perifériák használata
    • Hogyan rendeljünk hozzá perifériákat a „nem biztonságos” „külvilághoz”?
    • Hogyan használjuk a „nem biztonságos” perifériákat?
  • A SAM L11 alkalmazások védelme és használata
    • Hogyan használjuk a különböző védettségi fokozatú memóriákhoz hozzáférést engedélyező hibakeresési szinteket (Debug Access Level) és csiptörlési módokat?

A szoftverfejlesztési útmutatót az EBV Elektronik Kft tudja Önök részére biztosítani.

6abraEBV

6. ábra  Az I/O1 Xplained Pro Extension Board „térképe”

 

 

Összefoglalás

Amint bármilyen egyszerű informatikai eszköz a világhálóra csatlakozik vagy más módon válik illetéktelenek által is elérhetővé, kiolvashatóvá vagy módosíthatóvá, azonnal felmerülnek olyan biztonsági kockázatok, amelyekkel fontos adatok integritása vagy akár személyek és vagyontárgyak biztonsága kerül veszélybe. Ezért ezeket a tipikusan beágyazott vagy IoT-alkalmazásokat is meg kell védeni a rosszhiszemű beavatkozásoktól. Az e célra tervezett, biztonsági funkciókkal felvértezett mikrovezérlők alkalmazásával az egyszerű, árérzékeny tömegtermékekben is megvalósítható az informatikai biztonság ma elfogadottnak tekinthető szintje.

 

 

Szerző: Tóth Ferenc

 

 

A cikk alapjául szolgáló termékeket a vizsgálat céljából az AVNET Engineering Services vállalatot Magyarországon képviselő EBV Elektronik Kft. bocsátotta rendelkezésre.

Az érdeklődők a témához kapcsolódó szakmai képzésekről a  https://www.avnet.com/wps/portal/ebv/resources/training-and-events/ webhelyen találnak útbaigazítást, de felvehetik a kapcsolatot Nagy Krisztiánnal (krisztian.nagy@ebv.com), az EBV Elektronik Kft. támogatómérnökével is.

 

EBV Elektronik Kft.
1117 Budapest, Budafoki út 91-93.
Tel.: +36 1 436 7220
E-mail: krisztian.nagy@ebv.com
www.ebv.com

 

Még több EBV