асиметрично криптиране

По-рано, аз се търси Liby микроконтролер с изпълнението на асиметрично криптиране, но не и песен не е намерен. Направих голяма грешка. Търсих в RuNet! Аз постоянно се блъсна в позиции, където tryndel, че е много трудно и микроконтролера няма да тегли. Така че, това е P *** NIL и издърпайте дори AVR.

И бла бла бла. Като цяло, най-първото приключение, в англоезични сайтове бяха неуспешни.

За да започнете, аз попаднах на валиден, една статия. Той демонстрира RSA-32 работа. Първа изненада, тя е много проста и важни дела. Но не се докаже, ключов поколение.

Аз продължих да търсите и намери подходящ материал на уикито. Вие също трябва да видим руски език уики. Има някои глави много кошер.


Предоставя сигурен радио канал между двата трансивъра. За организирането на защитен канал ще се използва алгоритми RSA-32 и AES-128.

RSA-32 softvarny.
AES-128 hardvarnogo.

изтичане на данни, няма да доведе до загуба на пари.

Също така, като се има предвид ненадеждността на ключа за 32-битова, ще бъдат взети други мерки за сигурност. Такива са:
  • постоянни промяна на настройките приемо;
  • ограничен период от време канал на живот;
  • употребявани shifrovaniya.Ih статични ключове могат да бъдат получени само от изходен код или фърмуер;
  • публични ключове са рекурсивни. Почти същата като тази на 3DES;
  • признаване / друг.

надеждност RSA


Към днешна дата, RSA-1024 все още се счита за надеждна, въпреки че последните си крака. Вече започва да се премести в RSA-2048. Той е не означаваше, алгоритъма и дължината на ключа. Има и оглед на факта на счупване, а не времето, прекарано на хакерство. Предшественик RSA-1024 Cluster счупи малко над 4 години.

Член британски учени не са взети под внимание:
- "Прекъсване на администратор пръстите доведе до RSA-1024 разкрита"
- "Корен хакнат RSA-1024, чрез изпращане на ключов частна мрежа!"
- "Ние бл ** Бали чук върху процесора и има парче от частния ключ!"
- т.н.

RSA-32 от дълго време е възможно да проникна по-малко от един ден.

Надеждност може да се подобри с помощта на:
-крипто процесор. Най-вероятно е да се намери, докато обсега му. Продажбата само по лиценз.
-FPGA. Но в допълнение към прилагането на алгоритъм за криптиране все още е много важно случайни генератори и прости числа.
-RSA газта. Някои ARM могат те се хвалят. Но само 128/256 битови ключове, използвани в тях. Също така, генератор на простите числа само softvarny.
-използвате отделен микроконтролер. Мощен микроконтролер с лекота 1024/2048 битови ключове. Използването на тези ключове е задължително погълне всичко времето на процесора, тъй като ние говорим за милиони на процесора.

Между другото е реализацията на 1024 и 2048 битови ключове за AVR! Проектът е направен само за забавление. Това показва само възможност за кодиране / декодиране. Тя не може да се използва в реални проекти.

На ARM, можете да използвате 64 или дори 128 битови ключове (което означава, че на микроконтролера не само криптиране). Имайте предвид, че е налице нелинейна връзка между времето shivfrovaniya / декриптиране и дължината на ключа. Има и връзка между размера на шифровани съобщения и дължината на ключа.

изпълнение малко


Това не е HOWTO и не Лииб като пример. Код по-добре е да се изострят специфичен камък. Дори RSA-32 лесно погълне няколко 100k циклите на процесора в 8-бияч.

Чужденците, аз го взех следния код


Той наистина rabotaet.V той използва 64-битово математика и прости числа размер модул не трябва да надвишава 32-битова.
Истината е, че няма ключ поколение. Тези функции взех Z0MBiE.

защото алгоритъм за генериране на прости числа яде много процесорно време, реших да skopipastit маса на простите числа в светкавицата и плава мозъците им. Освен това, по време на случайно отдръпна от там две числа.

1) Както се вижда от статиите да започнат да се размножават два прости числа. В този случай, резултатът от умножението не трябва да надвишава 32 бита. С избора на случайни числа отговорно.

например:
р = 59999;
Q = 69073;
m = р * р = 4144310927
50% до ключ.

2) Изберете отворения експонат. Кой отговаря на условията.

1 В този случай е е странно.

Ето една функция, за да намерите най-голям общ делител. С него чек за взаимно лекота. С правилния д връща 1.


Тази функция връща тайната експонентата


То ще използва знак 64 битови променливи на.
а - отворен изложител
m - е (р-1) * (р-1)

Когато дойдоха моите ценности
publicKey
privateKey
От това следва, че размерът на обществеността и частно 8 байт ключа. Можете да изберете да мамят и да отвори експонат, така че винаги да е равен на 1mu байт. Тогава публичен ключ размер е 5т байта.

Размерът на криптирана информация не трябва да надвишава 2 байта (оценени на байта). Т.е. Фракция съобщение от два байта и криптиране. Площ на парцела, умножена по две.

Това е всичко. И най-важното, че работи.

Debug алгоритъм по-добре на компютъра и след това се прехвърлят на микроконтролер.

PS: komenty забранено. Те не ме интересува.
PPS: За като тромав. Броят на повторения за кодиране / декодиране завиждам на конкретния ключ. В примера (пример ключ) криптиране AES128 консумира 80 повторения и декодиране 512. При използване на RSA-64 ще трябва да отидете на хиляди повторения.

ПЧП: На оптимизация.

modexp - всички входно / изходни параметри са 32-битови. Но вътре в нея се използва за квадратиране, така че използвайте малко 64 математика а.

ГРУ - на 32-битови входни параметри. На изхода на един байт е достатъчно, но трябва леко да промените кода функция.

modinv - вход / изход 32 битови параметри. Вътре той използва 64-битово математика, и ние работим с отрицателни числа.

И той отива без да е необходимо да се организира програмата правилно. Трябва ли да се случи само една функция разговор, в който всички функции inlaynovye. Така че можете да спестите с малък размер и висока производителност.