DŮLEŽITÉ UPOZORNĚNÍ!
Policie České republiky a šéfcensor Ústavu pro studium totalitních režimů Jaroslav Čvančara varují: citovat jakékoli texty z tohoto blogu způsobuje vážné nebezpečí trestního stíhání! Četba na vlastní nebezpečí!

17. 4. 2013

Dvě nová Arduina

Arduino Due
O Arduinu jsem publikoval serii postů v r. 2010. Poté jsem zjistil, že ty nejzajímavější věci, které se s ním dají dělat, spadají pod tzv. hackerský paragraf trestního zákoníku, a uchýlil se proto s vývojem a jeho výsledky do ústraní, resp. mimo prostor tohoto blogu.

Nyní nadešla správná chvíle, abych něco o svých pokrocích přece jen zveřejnil.

K prvnímu Arduinu Mega jsem si především pořídil dvě další, s procesorem ARM. Jak jsem totiž zjistil, v současné době jsou už ceny těchto procesorů na stejné úrovni, na které se před třemi lety pohybovaly osmibitové mikrořadiče, a problémem přestává být i SMD provedení ARM procesorů, které vývoj v prototypové fasi komplikuje, resp. prodražuje: např. Philips (NXP) nabízí tento třicetimegahertzový ARM procesor v pouzdře DIP-8.

Arduino Due je osazeno procesorem ATMEL AT91SAM3X8E, s maximální frekvencí 84 MHz, menší Netduino Mini používá koncepčně starší, avšak velmi levný ATMEL AT91SAM7X512, který může pracovat na frekvenci max. 48 MHz.

K čemu mikrokontrolery ARM potřebuji? Jako první aplikaci si pro ně vyvinu emulátor Mifare karet.

Ten jsem nejprve vytvořil pro Atmel AVR. S touto technologií, která je obecně pokládána pro emulaci karet v normě ISO/IEC 14443 za nedostatečnou, jsem dokázal kompletně naemulovat karty Mifare Ultralight a Mifare Classic, a díky tomu, že jsem programoval v assembleru, jsem dosáhl i při relativně nízké frekvenci krystalu 13,56 MHz uspokojivé rychlosti softwarové implementace algorithmu Crypto-1: prodleva v authentisační sekvenci je cca 1,1 ms, a bylo by možné dále ji zkrátit zrušením rigorosní kontroly paketu ze čtečky (pro zajímavost, takto vypadá Crypto-1 v assembleru pro AVR: [1], [2]).

Netduino Mini
Nicméně když jsem začal implementovat kartu Mifare DESFire, zjistil jsem, že s takto pomalým procesorem nemohu emulovat všechny čtyři přenosové rychlosti, které karty podle ISO/IEC 14443-4 podporují. U nejvyšší rychlosti připadá na jeden bitový slot pouze 16 cyklů procesoru, a to je proklatě málo.

Kromě toho se objevují potíže i s tím, že procesor musí mít vlastní krystal a nemůže využívat pole čtečky pro externí hodiny, protože specifikace AVR nedovoluje nerovnoměrnou frekvenci externích hodin, a aby byl emulátor kompatibilní i se čtečkami využívajícími méně přesné krystaly, musel by se krystalový oscilátor podle čtečky synchronisovat – což znamená připojit ke krystalu další zbytečný hardware. Překvapivě, algorithmy DES a AES (pro DESFire EV-1) se na AVR ukázaly bezproblémovými (prosím, nekamenovat, vím, že permutace v DESu lze optimalisovat XORy, jen jsem to s ohledem na nízký časový zisk nepokládal za nezbytné).

Jedním řešením by bylo využít řadu Atmel XMEGA, jak to udělali např. Timo Kasper a jeho kolegové. S jistým překvapením jsem ale zjistil, že tyto procesory jsou v současné době už dražší než daleko výkonnější řada Atmel ARM, která masovým nasazením konkurenci doslova převálcovala nejen v tabletech, ale, zdá se, už i v oblasti mikrořadičů.

Vývoj pro AVR nezahazuji (je to ostatně přes 5000 řádků kodu), ale protože chci mít emulátor skutečně výkonný a universální, použiji pro něj ARM procesor.

O dalším průběhu, technickém i právním, budu na tomto blogu, případně na motácích, přiměřeně informovat.

4 komentáře :

  1. ...až moc náročné pro můj IQ!

    OdpovědětVymazat
  2. Přiznávám, že smysl využití v soukromých podmínkách je mimo mé chápání, pokud pominu vyloženě trestnou činnost (viz diskuze ohrožení Opencard). V každém případě ale fandím.

    OdpovědětVymazat
    Odpovědi
    1. Naopak, měl bych velkou spoustu nápadů na domácí využití, jen se nedostává času. Kutilův ráj!

      Vymazat
    2. …trestnou činnost bych nicméně předem nezavrhoval!

      Vymazat

Kursiva: <i>text</i>
Tučně (když už to musí být…): <b>text</b>
Odkaz: <a href = "http://adresa">název odkazu</a>, tedy <a href = ""></a>

Poznámka: Komentáře mohou přidávat pouze členové tohoto blogu.