aszimmetrikus titkosítás

Korábban én már keresem liby mikrokontroller végrehajtásával aszimmetrikus titkosítást, de nem nyom nem található. Csináltam egy súlyos hiba. Kerestem a RuNet! Folyamatosan futott be pozíciókat, ahol tryndel, hogy ez nagyon nehéz, és a mikrokontroller nem húzza. Szóval, ez a P *** NIL és húzza még avr.

És bla bla bla. Általában az első küldetés az angol nyelvű oldalakat sikertelenek voltak.

Kezdeni, belebotlottam egy érvényes, egy cikket. Ez azt mutatja, RSA-32 munkát. Első meglepetés, hogy nagyon egyszerű és fontos műveket. De nem mutatnak kulcsgenerálás.

Folytattam a keresést és megtalálja a megfelelő anyagot a wiki. Azt is meg kell látni az orosz nyelvű wiki. Vannak fejezetek nagyon kóser.


Biztonságos rádiócsatorna két adó-vevővel. A szervezet egy biztonságos csatornán fogják használni algoritmusok RSA-32 és az AES-128.

RSA-32 softvarny.
AES-128 hardvarnogo.

Adatszivárgás nem vezet elvesztése pénzt.

Emellett, mivel a megbízhatatlanság a 32 bites kulcs, egyéb biztonsági intézkedéseket kell hozni. Mint például:
  • állandó változás adóvevő beállítások;
  • korlátozott ideig csatorna az élet;
  • használt shifrovaniya.Ih statikus kulcs csak akkor szerezhető forráskód vagy firmware;
  • nyilvános kulcsok rekurzív. Majdnem ugyanaz, mint a 3DES;
  • felismerés / másikra.

megbízhatóság RSA


A mai napig, az RSA-1024 még mindig tekinthető megbízhatónak, bár az utolsó lába. Már kezd mozogni, hogy az RSA-2048. Ez azt jelentette, nem az algoritmus és a kulcs hosszát. Van is egy Tekintettel arra, törés, és nem töltött idő a hacker. Elődje RSA-1024 Cluster tört egy kicsit több, mint 4 éve.

Cikk Brit tudósok nem vették figyelembe:
- „elzárása az ujjak rendszergazda vezetett az RSA 1024 közzétett”
- „Rootkit feltört RSA-1024 küldeni egy privát hálózati kulcsot!”
- „Mi BL ** Bali kalapács a processzort, és kapott egy darabot a privát kulcs!”
- stb

RSA-32 már régóta lehet feltörni kevesebb, mint egy nap.

Megbízhatóság javítható alkalmazásával:
-crypto processzor. Legvalószínűbb, hogy a sztrájk, míg az autóval. Értékesítés csak engedély alapján.
-FPGA. De amellett, hogy a végrehajtás a titkosító algoritmust is nagyon fontos véletlen generátorok és nehézkes.
-RSA gyorsító. Néhány ARM tudnak felmutatni. De csak 128/256 bites kulcsot használják őket. Továbbá, egy generátor prímszámok csak softvarny.
-egy külön mikrokontroller. Erőteljes mikrokontroller könnyen húzza 1024/2048 bites kulcs. Ezeknek a használata kulcsok kötelező felfalják az összes processzort, mert beszélünk millió CPU.

Mellesleg a megvalósítása 1024 és 2048 bites kulcsot AVR! A projekt készül csak a móka kedvéért. Ez azt mutatja, csak a lehetőségét titkosítás / dekódolás. Nem lehet használni a valós projektekben.

ARM, akkor a 64, vagy akár 128 bites kulcsokat (azaz a mikrokontroller nem csak titkosítás). Tartsuk szem előtt, hogy van egy lineáris kapcsolat közötti időben shivfrovaniya / dekódolás és a kulcs hossza. Van összefüggés a méret a kódolt üzenetet, és a kulcs hossza.

bit végrehajtása


Ez nem egy HOGYAN, és nem Lieb példaként. Kód jobb élesíteni egy adott kő. Még RSA-32 könnyen felfalják pár 100k CPU 8-golyó.

Külföldiek, vettem be az alábbi kódot


Tényleg rabotaet.V használ egy 64 bites matematika és modulmérettől prímszám nem haladhatja meg a 32-bites.
Az igazság az, hogy nincs kulcs generálása. Ezek a funkciók vettem Z0MBiE.

mert generáló algoritmus prímszám eszik sok CPU időt, úgy döntöttem, hogy skopipastit táblázata prímszámok a vaku és úszó agyuk. Továbbá, közben véletlenül húzta el onnan két szám.

1) Mint látható a cikket kezdeni, hogy szorozni két prímszám. Ebben az esetben a szorzás eredménye nem haladhatja meg a 32 bit. Azáltal, véletlen számokat felelős.

például:
p = 59.999;
q = 69.073;
m = p * q = 4144310927
50% Key kész.

2) Válassza ki a nyílt kitevő. Amely kielégíti a feltételt.

1 Ebben az esetben e páratlan.

Itt van egy funkció, hogy megtalálja a legnagyobb közös osztó. Vele, egy csekket kölcsönös könnyedén. A megfelelő e értéke 1.


Ez a függvény a titkos kitevő


Ez fogja használni a jel 64 bites változókat.
Egy - egy nyílt kiállító
m - a (p-1) * (q-1)

Amikor az értékeim jött
publickey
privateKey
Ebből következik, hogy a méret a köz- és magántulajdonban 8 bájtos gombot. Megadhatja, hogy megcsal, és nyissa meg a kitevő úgy, hogy mindig egyenlő 1 mU byte. Ezután a nyilvános kulcs mérete 5t bájt.

A méret titkosított adatok nem haladhatja meg a 2 byte (a becslések szerint bájt). Ie Töredék üzenete két bájt és titkosítására. Összesen parcellák méretének szorozva 2.

Ez minden. És ami a legfontosabb, hogy működik.

Debug algoritmus jobb a PC és ezután egy mikrokontroller.

PS: komenty tilos. Nem érdekel.
PPS: Körülbelül a nehézkes. Az iterációk számát a kódolás / dekódolás irigylem az adott gombot. A példában (példa kulcs) titkosítás aes128 fogyasztott 80 iteráció és dekódolási 512. Ha az RSA-64 akkor kell menni több ezer iteráció.

PPP-k: On optimalizálása.

modexp - minden bemeneti / kimeneti paraméter 32-bit. De benne használják négyszögesítése, ezért használja a 64 bites matek.

GCD - 32 bites bemeneti paramétereket. Kimenetén egy byte is elég, de meg kell kissé módosítani a funkció kódot.

modinv - Input / Output 32 bit paramétereket. Belül használ egy 64 bites matematika, és dolgozunk negatív számokat.

És magától meg kell szervezni a program helyesen. Csak akkor indulhat meg a függvényhívás, amelyben az összes funkció inlaynovye. Így mentheti a kis méret és a nagy teljesítmény.