{"id":224383,"date":"2014-06-01T19:10:03","date_gmt":"2014-06-01T15:10:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=224383"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=224383","title":{"rendered":"<span class=\"post_title\">\u0411\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440 \u0441 AES-128 \u0438 EAX \u043d\u0430 AVR Assembler \u0432 1024 \u0431\u0430\u0439\u0442\u0430<\/span>"},"content":{"rendered":"<div class=\"content html_format\">     \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/901\/b60\/df9\/901b60df921d25dd2a1fc72d894dbd09.png\"\/><br \/>  <i>\u0418\u043b\u0438 \u043a\u0430\u043a \u044f \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u0431\u043e\u044f\u0442\u044c\u0441\u044f \u0438 \u043f\u043e\u043b\u044e\u0431\u0438\u043b \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440<\/i><\/p>\n<p>  \u041e\u0434\u043d\u0430\u0436\u0434\u044b \u043b\u0435\u0442\u043e\u043c, \u044f \u0443\u0441\u0442\u0440\u043e\u0438\u043b\u0441\u044f \u0432 \u0440\u043e\u0434\u043d\u043e\u043c \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u043d\u0430\u0448\u0438\u043c \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u043c (\u0437\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u0410\u043b\u0435\u043a\u0441\u0435\u0439!), \u044f \u0443\u0437\u043d\u0430\u043b, \u0447\u0442\u043e \u0447\u0438\u043f\u044b \u0441\u043f\u0438\u043b\u0438\u0432\u0430\u044e\u0442, \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0432\u043e\u0440\u0443\u044e\u0442, \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0438 \u043a\u0438\u0434\u0430\u044e\u0442 \u0438 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u043a\u043b\u043e\u043d\u0430 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0438 \u2014 \u043b\u0438\u0448\u044c \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0437\u0430\u0434\u0430\u0432\u0438\u0442\u044c \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0441\u043e\u043a\u0438\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c. \u041f\u0440\u0438 \u0432\u0441\u0435\u043c \u044d\u0442\u043e\u043c, \u0432 \u043f\u0430\u0440\u0430\u043d\u043e\u0439\u044e \u0432\u043f\u0430\u0434\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0432\u0440\u044f\u0434 \u043b\u0438 \u0437\u0430\u0445\u043e\u0442\u044f\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 \u0436\u0435\u043b\u0435\u0437\u043a\u0430\u043c\u0438 \u0432 \u043e\u0448\u0435\u0439\u043d\u0438\u043a\u0430\u0445 \u0441\u043e \u0432\u0437\u0440\u044b\u0432\u0447\u0430\u0442\u043a\u043e\u0439. <\/p>\n<p>  \u0425\u043e\u0440\u043e\u0448\u0430\u044f \u043c\u0435\u0440\u0430 \u0437\u0430\u0449\u0438\u0442\u044b \u2014 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f. \u041a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0435 \u043a\u043b\u043e\u043d\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u043c\u0438\u0440\u0430\u044e\u0442 \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438, \u0430 \u043b\u043e\u044f\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u043d\u0430\u0448\u0443 \u043b\u044e\u0431\u043e\u0432\u044c, \u0437\u0430\u0431\u043e\u0442\u0443 \u0438 \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u0420\u043e\u0431\u0438\u043d \u0413\u0443\u0434\u044b \u043f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u0435, \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0434\u043e\u0441\u0442\u0430\u043d\u0443\u0442 \u0441\u0432\u043e\u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b, HEX-\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u044b \u0438 \u043d\u0430\u0447\u043d\u0443\u0442 \u043a\u043e\u0432\u044b\u0440\u044f\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0441 \u0446\u0435\u043b\u044c\u044e \u0443\u0431\u043b\u0430\u0436\u0435\u043d\u0438\u044f \u0440\u0443\u0441\u0441\u043a\u043e-\u043a\u0438\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430.<\/p>\n<p>  \u0425\u043e\u0442\u044c \u0443 \u043d\u0430\u0441 \u0438 \u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043c\u0435\u0440 \u0437\u0430\u0449\u0438\u0442\u044b, \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e: \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u044d\u0442\u0438\u043c \u043d\u0430\u0434\u043e, \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f. \u041f\u043e\u0433\u0443\u0433\u043b\u0435\u043d\u043e \u2014 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e, \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u043e \u2014 \u0441\u0434\u0435\u043b\u0430\u043d\u043e. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0443\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0435 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 1 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442 \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 \u2014 \u044d\u0442\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e. \u041c\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430, \u043a\u043e\u0434\u0430 \u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u044e\u0440\u043f\u0440\u0438\u0437 \u0434\u043b\u044f \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439 \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0436\u0435\u043b\u0435\u0437\u0430. <br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h4>\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0438 \u044f\u0437\u044b\u043a<\/h4>\n<p>  \u0412\u0441\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043c\u044b \u0434\u0435\u043b\u0430\u043b\u0438 \u043d\u0430 ATmega \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432 \u0421\u041d\u0413 \u0438\u0445 \u043f\u0440\u043e\u0449\u0435 \u0438 \u0434\u0435\u0448\u0435\u0432\u043b\u0435 \u0432\u0441\u0435\u0433\u043e \u043a\u0443\u043f\u0438\u0442\u044c. \u041a\u0430\u043a \u044f \u043f\u043e\u043d\u044f\u043b \u0438\u0437 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u043e\u0432 \u0441\u043e \u0441\u0442\u0430\u0440\u0448\u0438\u043c\u0438, \u044d\u0442\u043e \u0432\u0435\u0441\u044c\u043c\u0430 \u0433\u043b\u044e\u0447\u043d\u043e\u0435 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u0438 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u043e \u0431\u0435\u0437\u043e\u0442\u043a\u0430\u0437\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e. \u041d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u043c\u044b \u043f\u0438\u0441\u0430\u043b\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0438 \u043a\u0440\u0430\u0439\u043d\u0435 \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b \u043a \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b. \u041f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0431\u044b\u043b\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0443\u0447\u0430\u0441\u0442\u043a\u0438 \u043a\u043e\u0434\u0430 \u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u0441\u0447\u0438\u0442\u0430\u043d\u044b \u043f\u043e \u0442\u0430\u043a\u0442\u0430\u043c. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435. <\/p>\n<p>  \u0421\u043a\u0430\u0436\u0443 \u0447\u0435\u0441\u0442\u043d\u043e, \u043f\u043e\u043d\u0430\u0447\u0430\u043b\u0443 \u044f \u0431\u043e\u044f\u043b\u0441\u044f \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440, \u0434\u0443\u043c\u0430\u044f, \u0447\u0442\u043e \u043e\u043d \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0440\u0430\u0442\u0438\u043c\u044b\u0435 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u043c\u043e\u0437\u0433\u0430 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0441\u043a\u0443\u044e \u0438\u043d\u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u044c. \u0414\u0430 \u0438 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u043b\u044e\u0434\u0438 \u0438\u0437\u043e\u0431\u0440\u0435\u043b\u0438 \u0421 \u2014 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440, \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c, \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430. \u041a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 \u2014 \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u044f\u0437\u044b\u043a \u0432 \u043c\u0438\u0440\u0435. \u041d\u0438\u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0449\u0435 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u041c\u043e\u0440\u0433\u0430\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0438\u043a\u0430\u043c\u0438, \u0432\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0435\u043a\u043e\u043c \u044f \u043d\u0430\u0443\u0447\u0438\u043b\u0441\u044f \u0437\u0430 \u043e\u0434\u0438\u043d \u0434\u0435\u043d\u044c \u0438 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043b \u043a \u0440\u0430\u0431\u043e\u0442\u0435. \u0427\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0443 \u043c\u0435\u0441\u044f\u0446\u0435\u0432, \u043e\u043f\u044b\u0442\u0430 \u0431\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u0439\u0434\u0435\u0442 \u0440\u0435\u0447\u044c \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435. <\/p>\n<p>  \u0412 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439, \u0447\u0442\u043e \u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u044d\u0442\u0443 \u0442\u0443\u043f\u043e\u0433\u043e\u043b\u043e\u0432\u0443\u044e \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0443. \u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0432 AVR-\u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0435\u0442 \u0434\u0430\u0436\u0435 \u0446\u0438\u043a\u043b\u043e\u0432. \u0427\u0442\u043e\u0431\u044b \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0446\u0438\u043a\u043b, \u043d\u0443\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440, \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439, \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0447\u043a\u0443 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0442\u0435\u043b\u0430 \u0438, \u0435\u0441\u043b\u0438 \u0442\u0430\u043c \u0435\u0449\u0435 \u043d\u0435 0 \u2014 \u043f\u0440\u044b\u0433\u043d\u0443\u0442\u044c (\u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u0438\u0437 \u0431\u0440\u0430\u0442\u044c\u0435\u0432 goto) \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u043e \u0442\u0435\u043b\u0430. \u041a \u0442\u0430\u043a\u0438\u043c \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u0438\u0432\u044b\u043a\u0430\u0435\u0448\u044c \u0438 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0435\u0448\u044c \u0431\u043e\u044f\u0442\u044c\u0441\u044f.<\/p>\n<h4>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440<\/h4>\n<p>  \u0411\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440 \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u043e\u0436\u0438\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. \u0427\u0442\u043e \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440 \u0434\u0435\u043b\u0430\u0435\u0442 \u2014 \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440\u044b \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b \u0437\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0447\u0435\u043d\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0432\u0440\u043e\u0434\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u041f\u041e, \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u041e\u0421 \u0438\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c. \u041d\u0430\u0448 \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043e\u0434\u043d\u0443-\u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u2014 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. <\/p>\n<p>  \u0412 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 AVR, \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0432\u0443\u043c\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438 \u2014 \u043d\u0430\u0442\u0440\u0430\u0432\u043b\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0430 \u043d\u0435\u0433\u043e reset-\u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0438\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0444\u044c\u044e\u0437\u0430 BOOTRST, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0435 \u0441 0 \u0430\u0434\u0440\u0435\u0441\u0430, \u0430 \u0441 \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440\u0430, \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f, \u043e\u043f\u044f\u0442\u044c \u0436\u0435, \u0432 \u0444\u044c\u044e\u0437\u0430\u0445. <\/p>\n<p>  \u041a\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435? \u0424\u044c\u044e\u0437\u044b \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0421\u0438\u043b\u044c\u043d\u043e \u0443\u043c\u043d\u044b\u0439 \u00ab\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u00bb \u043c\u043e\u0436\u0435\u0442, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c BOOTRST \u0438 \u0440\u0430\u0431\u043e\u0442\u0430 \u043d\u0430\u0447\u043d\u0435\u0442\u0441\u044f \u0441 reset-\u0432\u0435\u043a\u0442\u043e\u0440\u0430, \u0430 \u043d\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u0431\u0443\u0442\u0430. \u041e\u043d \u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440\u0430, \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043d\u0430\u0447\u043d\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0435\u0440\u0435\u0441\u044c \u0438\u0437 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u044b \u0431\u0443\u0442\u0430 \u0438 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443.<\/p>\n<p>  \u0417\u043d\u0430\u0447\u0438\u0442, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u0430\u043c reset-\u0432\u0435\u043a\u0442\u043e\u0440 \u043d\u0430 \u043d\u0430\u0448 \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440, \u0430 \u0432 \u0435\u0433\u043e \u0442\u0435\u043b\u0435 \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u043e, \u0432 \u0442\u0435\u0445 \u043c\u0435\u0441\u0442\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c \u0431\u0443\u0442\u043e\u0432\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438. \u0411\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c. <\/p>\n<p>  \u0411\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0435\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438, \u043f\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u044e \u0438\u043b\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044e \u0443\u0440\u043e\u0432\u043d\u044f \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0432\u043e\u0434\u0435.<\/p>\n<h4>\u041a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f<\/h4>\n<p>  \u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b, \u044f \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b 1 \u0447\u0430\u0441\u0442\u044c <a href=\"https:\/\/class.coursera.org\/crypto-007\">\u043a\u0443\u0440\u0441\u0430 \u043f\u043e \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u043e\u0442 \u0414\u044d\u043d\u0430 \u0411\u043e\u043d\u0435<\/a> \u043d\u0430 Coursera. \u041f\u0440\u043e\u0444\u0435\u0441\u0441\u043e\u0440 \u0414\u044d\u043d \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0438 \u0432 \u043a\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e, \u044d\u0442\u0438\u043c \u0434\u043e\u043b\u0436\u043d\u044b \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044b, \u0430 \u043d\u0435 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u044b-\u043f\u0435\u0440\u0432\u043e\u043a\u0443\u0440\u0441\u043d\u0438\u043a\u0438 \u0432 \u0441\u0432\u043e\u0438 \u043a\u0430\u043d\u0438\u043a\u0443\u043b\u044b. \u0411\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e. \u0412 \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043d\u0438\u0435 \u043c\u043e\u0433\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440 \u0438 \u043d\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0435\u0443\u044f\u0437\u0432\u0438\u043c\u0430\u044f \u043a\u043e \u0432\u0441\u0435\u043c \u0430\u0442\u0430\u043a\u0430\u043c \u0448\u0442\u0443\u043a\u0430. \u0415\u0433\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u2014 \u043d\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f, \u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043c\u0435\u0440\u0430 \u0437\u0430\u0449\u0438\u0442\u044b \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u041a\u043e\u0440\u043e\u0447\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u043a\u043e\u0432\u044b\u0440\u044f\u0442\u044c\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f, \u043f\u043e\u0442\u044b\u043a\u0430\u0442\u044c\u0441\u044f \u043e\u0441\u0446\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u0444\u043e\u043c, \u043f\u043e\u043c\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0435\u0434\u0435\u043b\u044c\u043a\u0443, \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u00ab\u0430 \u043d\u0443 \u0435\u0433\u043e \u043a \u0447\u0435\u0440\u0442\u0443, \u0437\u0430\u043f\u043b\u0430\u0447\u0443 2000$ \u043a\u0438\u0442\u0430\u0439\u0446\u0430\u043c, \u043e\u043d\u0438 \u0435\u0433\u043e \u0441\u043f\u0438\u043b\u044f\u0442\u00bb \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e. \u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u0432\u0437\u043b\u043e\u043c\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0442\u044c \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u0437\u043b\u043e\u043c\u0430, \u043d\u0435 \u0431\u043e\u043b\u0435\u0435. <\/p>\n<p>  \u041c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u2014 \u043e\u0442\u043a\u0440\u044b\u0442\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u0432\u0441\u0435 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u044b \u0437\u043d\u0430\u044e\u0442, \u043a\u0430\u043a \u0441 \u043d\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u043e\u043f\u0440\u044b\u0433\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0440\u0438 \u043e\u0432\u0435\u0440\u043a\u043b\u043e\u043a\u0435, \u043c\u043e\u0433\u0443\u0442 \u00ab\u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c\u00bb \u043f\u0440\u043e \u0437\u0430\u0449\u0438\u0442\u0443 \u043f\u0440\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u043f\u043e\u043d\u0438\u0436\u0435\u043d\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0438, \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0433\u043b\u0443\u043f\u044b\u0435 \u0434\u044b\u0440\u044b, \u0432\u0440\u043e\u0434\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u0432 Flash \u0438\u0437 RAM, \u043f\u0440\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0447\u0442\u0435\u043d\u0438\u044f (\u043f\u0440\u0438\u043c\u0435\u0440 \u2014 ST92F). \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043f\u0430\u0440\u0443 \u0431\u0430\u0439\u0442 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u2014 \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0438\u0442\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e. \u0412 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0435, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0441 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u2014 \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u0447\u0442\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u044b \u0431\u0430\u0439\u0442 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0442\u044b\u043a\u0430. \u0417\u043d\u0430\u0447\u0438\u0442, \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0431\u043b\u043e\u0447\u043d\u044b\u043c \u0448\u0438\u0444\u0440\u043e\u043c \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 CBC\/CTR \u043d\u0435 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c. <\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043d\u0438\u043a\u0430\u043a \u043d\u0435\u043b\u044c\u0437\u044f \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u2014 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0442\u0430\u043a\u0438\u0445 \u043a\u043e\u0434\u043e\u0432 \u2014 CCM, GCM, EAX. \u0427\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u044f \u0443\u0436\u0435 \u043f\u043b\u043e\u0445\u043e \u043f\u043e\u043c\u043d\u044e, \u043f\u043e\u0447\u0435\u043c\u0443 \u0432\u044b\u0431\u0440\u0430\u043b \u0438\u043c\u0435\u043d\u043d\u043e EAX. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0435\u0433\u043e \u0431\u0443\u0434\u0443\u0449\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043c\u043d\u0435 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439.<\/p>\n<p>  \u041a\u0430\u0436\u0434\u0430\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u0432\u043e\u0439, \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e-\u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0439 \u0432 \u0432\u0438\u0434\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u042d\u0442\u0438\u043c \u0436\u0435 \u0444\u0430\u0439\u043b\u043e\u043c \u0448\u0438\u0444\u0440\u0443\u044e\u0442\u0441\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f. \u0417\u0430\u0449\u0438\u0442\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0434\u043b\u044f \u0441\u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439. \u041f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u043b\u0438\u0446\u043e, \u043d\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0436\u0435\u0440\u0442\u0432. \u0422\u0430\u043a\u0436\u0435, \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043b\u044e\u0447\u0430, \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b, \u0447\u0442\u043e\u0431\u044b \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0443 \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. <\/p>\n<h4>EAX<\/h4>\n<p>  \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0443\u0436\u043d\u043e \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0443, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435? \u0414\u0432\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u0432\u0437\u044f\u0442\u044b\u0435 \u0438\u0437 <a href=\"http:\/\/www.cs.ucdavis.edu\/~rogaway\/papers\/eax.pdf\">\u043d\u0430\u0443\u0447\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b<\/a>.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/48c\/70b\/3ac\/48c70b3ac4b30c809cb7439fded51f48.png\"\/><\/p>\n<p>  \u0412\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b<br \/>  \u041c\u044b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u043a\u0440\u0430\u0442\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u044a\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u0431\u043b\u043e\u043a\u0430 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438, \u0447\u0442\u043e \u0441\u0432\u043e\u0434\u0438\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e pad \u043a M^B (31) \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f P (32) \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u043d\u0438\u043a\u043e\u0433\u0434\u0430.<br \/>  \u041d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043b\u044e\u0447\u0430, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443 L (40) \u0438, \u043a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435, B.<br \/>  \u00ab\u0418\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0435 \u0438\u043b\u0438 \u0441\u043e \u0441\u0442\u0440\u0435\u043b\u043e\u0447\u043a\u043e\u0439\u00bb (31) \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e B \u0431\u0443\u0434\u0435\u0442 \u0432-xor-\u0435\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043a\u043e\u043d\u0435\u0446 \u0441\u0442\u0440\u043e\u043a\u0438 M.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/e3a\/5ac\/58e\/e3a5ac58e83011cbc55656905506b8de.png\"\/><\/p>\n<p>  \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f<br \/>  \u0413\u0434\u0435 M \u2013 \u043d\u0435\u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442, CT \u2013 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442, K \u2013 \u043a\u043b\u044e\u0447, N \u2013 \u0432\u0435\u043a\u0442\u043e\u0440 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, H \u2013 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a. <br \/>  \u041d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0434\u0435\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f. <\/p>\n<p>  \u041f\u0443\u0441\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f H \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0434\u0430\u043d, \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u0435\u043d \u0438 \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u043c. \u042d\u0442\u043e \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043a\u0440\u0438\u043f\u0442\u043e\u0441\u0442\u043e\u0439\u043a\u043e\u0441\u0442\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u2014 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c H&#8217; (23) \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043b\u044e\u0447\u0430.<br \/>  \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 22, 24, \u0432\u043a\u0443\u043f\u0435 \u0441 50 \u0438 10, \u043c\u043e\u0436\u043d\u043e \u043e\u0441\u043e\u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u0446\u0438\u0444\u0435\u0440\u043a\u0430 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0438\u043d\u0434\u0435\u043a\u0441\u0435 \u043f\u0440\u0438 OMAC \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u0442 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 \u0434\u043b\u0438\u043d\u043e\u0439, \u0440\u0430\u0432\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u0435 \u0431\u043b\u043e\u043a\u0430 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0432 CBC \u0442.\u00a0\u0435. \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0430. \u0428\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0441\u0442\u0440\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043b\u044e\u0447\u0430. \u041f\u0440\u0438\u0447\u0435\u043c, \u0432 \u0444\u0430\u0439\u043b \u043a\u043b\u044e\u0447\u0430 \u0431\u0443\u0434\u0443\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 \u0447\u0438\u0441\u043b\u0430\u043c\u0438 0 (L0) \u0438 2 (L2) \u2014 \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f N&#8217; \u0438 C&#8217; \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. <br \/>  \u0418\u043c\u0435\u044f \u043d\u0430 \u0440\u0443\u043a\u0430\u0445 L0, B \u0438 N, \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 N&#8217; \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a E(L0^B^N). <\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043b\u044e\u0447\u0430 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u044b B, L0, L2, H&#8217;. <br \/>  \u0412\u043c\u0435\u0441\u0442\u0435 \u043e\u043d\u0438 \u0437\u0430\u0439\u043c\u0443\u0442 64 \u0431\u0430\u0439\u0442\u0430.<\/p>\n<h4>AES-128<\/h4>\n<p>  AES \u2013 \u0433\u0435\u043d\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0432 \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435, \u043e\u043d \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c\u044e, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043d\u0443\u0436\u043d\u0430 \u043d\u0430\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u043b\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u0439 \u043e\u0431\u044a\u0435\u043c. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u0436\u0435\u043d \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u0439 \u043e\u0431\u044a\u0435\u043c \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0430. \u041f\u0440\u043e AES \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439, \u043d\u0435 \u0431\u0443\u0434\u0443 \u0432\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. <\/p>\n<p>  \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e AES \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u0434\u0435\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0434\u0435\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438, \u043d\u0443\u0436\u043d\u043e \u0443\u043c\u043d\u043e\u0436\u0430\u0442\u044c \u043d\u0430 14 \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u043f\u043e\u043b\u0435. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0437\u0430\u0448\u0438\u0442\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u044d\u0442\u043e\u043c \u0443\u0436\u0430\u0441\u0435 \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442, \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f AES \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e \u2014 \u0434\u043b\u044f \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u043c\u043e\u0449\u043d\u043e\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435, \u0431\u0443\u0434\u0435\u043c \u00ab\u0434\u0435\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c\u00bb \u0435\u0433\u043e, \u0430 \u043f\u0440\u0438 \u0434\u0435\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0435 \u043d\u0430 \u0441\u043b\u0430\u0431\u0435\u043d\u044c\u043a\u043e\u043c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435 \u2014 \u00ab\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c\u00bb. \u0420\u0430\u0437\u043d\u0438\u0446\u044b \u0432 \u043a\u0440\u0438\u043f\u0442\u043e\u0441\u0442\u043e\u0439\u043a\u043e\u0441\u0442\u0438 \u043d\u0435\u0442. <\/p>\n<p>  \u042f \u043d\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e (\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e) \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043a\u043b\u044e\u0447\u0435\u0439. \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0432\u0441\u0435\u0445 11 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043b\u044e\u0447\u0430. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043f\u043e \u044d\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u0431\u043b\u043e\u043a \u043a\u043b\u044e\u0447\u0435\u0439 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u2014 \u044d\u0442\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442 \u0437\u0430\u0449\u0438\u0442\u0443 \u043e\u0442 \u0431\u0440\u0443\u0442\u0444\u043e\u0440\u0441\u0430, \u0435\u0441\u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0431\u043e\u0431\u0435\u0440-\u0438\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0435\u0446 \u0440\u0435\u0448\u0438\u0442 \u0438\u043c \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f. <br \/>  \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0437\u0430\u0439\u043c\u0435\u0442 176 \u0431\u0430\u0439\u0442. \u0412\u043c\u0435\u0441\u0442\u0435 \u0441 \u043f\u043e\u0434\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u043c\u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430\u043c\u0438, \u043e\u043d \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0444\u0430\u0439\u043b \u043a\u043b\u044e\u0447\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0439\u043c\u0435\u0442 \u043d\u0430\u0432\u0435\u0447\u043d\u043e 240 \u0431\u0430\u0439\u0442 Flash. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c 784 \u0442.\u00a0\u0435. 392 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b.<\/p>\n<p>  \u0416\u0438\u0437\u043d\u0435\u043d\u043d\u043e \u0432\u0430\u0436\u043d\u043e\u0439 \u0438 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e AES \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u2014 \u0431\u0430\u0439\u0442\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0431\u0430\u0439\u0442\u044b \u0442\u0435\u043a\u0441\u0442\u0430. \u0412 \u0431\u0430\u0439\u0442\u0435 \u0430\u0436 256 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0439 \u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0437\u0430\u0439\u043c\u0435\u0442 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0436\u0435 Flash-\u043f\u0430\u043c\u044f\u0442\u0438. \u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e! \u0417\u043d\u0430\u0447\u0438\u0442, \u0431\u0443\u0434\u0435\u043c \u0435\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c. <\/p>\n<p>  \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0447\u0438\u0441\u043b\u043e, \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0435 \u043d\u043e\u043c\u0435\u0440\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043f\u043e\u0442\u043e\u043c, \u044d\u0442\u043e \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0435, \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0430\u0444\u0444\u0438\u043d\u043d\u043e\u043c\u0443 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044e:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/95b\/9a3\/cc5\/95b9a3cc51e43e8bc83d738d37a316ce.png\"\/><\/p>\n<p>  x0&#8230;x7 \u2013 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0432 \u0432\u0438\u0434\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430. \u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u0438 \u0443\u043b\u043e\u0436\u0438\u0442\u044c\u0441\u044f \u0432 \u043c\u0435\u043d\u044c\u0448\u0435 \u0447\u0435\u043c 256 \u0431\u0430\u0439\u0442, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u0430 \u0432\u044b\u0433\u043e\u0434\u0430. \u041c\u044b \u0443\u043b\u043e\u0436\u0438\u043c\u0441\u044f \u0432 88 \u0431\u0430\u0439\u0442. \u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c.<\/p>\n<h4>Hello, world!<\/h4>\n<p>  \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0441 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438. \u041e\u043d\u043e \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u0447\u0442\u043e\u0431\u044b, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0432\u043c\u0435\u0441\u0442\u043e r16 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0438\u0441\u0430\u0442\u044c temp_0. \u042f, \u043f\u043e \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u0438, \u043d\u0430\u0437\u044b\u0432\u0430\u044e 0 \u0438 1 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b OP0 \u0438 OP0, 2 \u0438 3 \u2014 NULL \u0438 OxFF (\u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044f \u0438\u0445 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438), \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u2014 \u043a\u0430\u043a \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f. <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u044b<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>.def\tOP0\t= r0 .def\tOP1\t= r1  .def\tNULL\t= r2 .def\tOxFF\t= r3  .def\tb0 = r4 .def\tb1 = r5 .def\tb2 = r6 .def\tb3 = r7 .def\tb4 = r8 .def\tb5 = r9 .def\tb6 = r10 .def\tb7 = r11 .def\tb8 = r12 .def\tb9 = r13 .def\tbA = r14 .def\tbB = r15  .def\tbC = r16 .def\tbD = r17 .def\tbE = r18 .def\tbF = r19 .def \ttemp_0 = r20 .def \ttemp_1 = r21 .def \ttemp_2 = r22 .def \ttemp_3 = r23 .def\ttemp_4 = r24 .def\ttemp_5 = r25 <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b, \u0441 4-\u0433\u043e \u043f\u043e 19-\u0439, \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u042f \u0432\u044b\u043d\u0435\u0441 \u0435\u0433\u043e \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0438\u043c\u0438 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0449\u0435 \u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041b\u044e\u0431\u0430\u044f \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0432 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u0445 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c\u0438, \u0437\u0430\u0447\u0435\u043c \u043f\u043b\u0430\u0442\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435.<\/p>\n<p>  \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0441 20 \u043f\u043e 25 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435.<br \/>  \u0421 26 \u0434\u043e 32 \u0438\u0434\u0443\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 16-\u0431\u0438\u0442\u043d\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u2014 X, Y, Z, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0434\u043b\u044f \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438 \u043f\u0430\u043c\u044f\u0442\u0438. \u041f\u0440\u0438\u0447\u0435\u043c, \u0442\u043e\u043b\u044c\u043a\u043e Z \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438 Flash. \u041a\u0430\u043a \u044f \u0441\u043b\u044b\u0448\u0430\u043b, \u043e\u043d\u0438 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u043c\u0435\u044e\u0442 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u0441\u043f\u043e\u0441\u043e\u0431\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0430, \u0434\u0435\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0430 \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438\u0445 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0446\u0435\u043b\u044f\u0445, \u0445\u043e\u0442\u044c \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043b\u043e\u0445\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0439 \u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u043c \u0433\u043b\u044e\u043a\u0430\u043c \u0432 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445.<\/p>\n<p>  \u041f\u043e\u043c\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0430\u0439\u0442 \u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 Flash-\u043f\u0430\u043c\u044f\u0442\u0438, \u0440\u0430\u0437\u043c\u0435\u0440 \u0432\u0441\u0435\u0433\u043e \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440\u0430, \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u043b\u043e\u043a\u0430 \u0448\u0438\u0444\u0440\u0430, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u0430\u043c\u044f\u0442\u0438, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u043b\u043e\u043a\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u0430\u0434\u0440\u0435\u0441, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u043a\u043b\u044e\u0447\u0435\u0439:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>.equ PAGE_BYTES \t = PAGESIZE*2 .equ BOOT_SIZE\t\t = 1024 .equ BLOCK_SIZE\t\t = 16 .equ PAGES \t\t = (FLASHEND+1)\/PAGESIZE - BOOT_SIZE\/PAGE_BYTES .equ BLOCKS_PER_PAGE\t = PAGE_BYTES \/ BLOCK_SIZE .equ KEY_ADDR \t\t = (FLASHEND + 1) \u2014 (BLOCK_SIZE*(11+4))\/2 <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0431\u0443\u0434\u0443\u0449\u0435\u043c\u0443 \u0447\u0443\u0434\u0443 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 \u2014 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u043c \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441\u0432\u044f\u0437\u0438 \u043f\u043e UART, \u043f\u043e\u0440\u0442, \u0432\u044b\u0432\u043e\u0434 \u0438 \u0443\u0440\u043e\u0432\u0435\u043d\u044c, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0435\u0448\u0430\u0442\u044c, \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440\u0435 \u0438\u043b\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443. \u041f\u043e\u043c\u0438\u043c\u043e \u0442\u0430\u043a\u0438\u0445 \u0443\u0442\u0438\u043b\u0438\u0442\u0430\u0440\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u043c\u0435\u0442\u043a\u0438, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d \u043f\u0440\u044b\u0436\u043e\u043a, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435, \u0440\u0435\u0448\u0438\u0442\u044c, \u0434\u043e\u043b\u0436\u0435\u043d \u043b\u0438 \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440 \u043f\u0435\u0440\u0435\u0448\u0438\u0432\u0430\u0442\u044c \u043d\u0443\u043b\u0435\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043f\u0430\u043c\u044f\u0442\u0438 \u2014 \u0442\u0430\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0438 \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044c \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u043e\u043c \u043c\u043e\u0436\u0435\u0442 \u0441\u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443. <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>;Reset address (Where to jump to if not asked to load boot) .equ RESET_VECT\t\t= 0 ;Is 0th flash page used? .equ USE_0th_PAGE\t= 1  ;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/PORT SETUP \/\/ use port letter... \/\/ A \/ B \/ C \/ D \/ E .equ port_used = 'C' \/\/ check status of pin number... .equ pin   = 6 \/\/ load boot only if port is... \/\/ (S)ET (1) \/ (C)LEAR (0) .equ level = 'C'  ;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/BAUD RATE SETUP .equ Fosc = 16000000\t;clock frequency .equ baud = 19200\t;baud rate  .equ UBRR = Fosc \/ ( BLOCK_SIZE * baud ) - 1 .if high( UBRR ) != 0 \t.error &quot;Unsupported baud rate setting - high byte of UBRR is not 0!&quot; .endif <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c, \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f \u0441 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u044c\u044e. AES \u0442\u0440\u0435\u0431\u0443\u0435\u0442 256 \u0431\u0430\u0439\u0442 \u043f\u043e\u0434 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0437\u0430\u043c\u0435\u043d\u044b. \u0411\u043b\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 (16 \u0431\u0430\u0439\u0442), \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0434\u0430\u043d\u043d\u044b\u0445 (\u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b), \u043c\u0435\u0442\u043a\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u0438 (16 \u0431\u0430\u0439\u0442). \u0414\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0435\u0448\u0438\u0444\u0440\u0443\u044e\u0449\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u2014 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0417\u0430\u0441\u0442\u043e\u043b\u0431\u0438\u043c \u043c\u0435\u0441\u0442\u043e \u0432 \u043f\u0430\u043c\u044f\u0442\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>.dseg .org 0x60 \tSBOX:\t.byte 256\t\t;rijndael substitution box \t;these three SHOULD be consecutive \tSAVED_IV:\t.byte BLOCK_SIZE\t;E(L0^N^B) \tRCVD_PAGE:\t.byte PAGE_BYTES\t;page to be written \tTAG:\t.byte BLOCK_SIZE\t;initially - precomputed header value  \tENC_IV:\t.byte PAGE_BYTES\t;IV's to xor with page to decrypt .cseg <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041d\u0430 ATmega16, \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b 64 \u0431\u0430\u0439\u0442\u0430, \u043e\u0431\u044a\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u2014 544 \u0431\u0430\u0439\u0442\u0430 \u0438\u0437 1024. \u041d\u0430 ATmega8 \u2013 416. \u041c\u043d\u043e\u0433\u043e\u0432\u0430\u0442\u043e. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 Flash-\u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u0438 \u043c\u0430\u043b\u043e\u043c \u043e\u0431\u044a\u0435\u043c\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c, \u043d\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u043e \u0432\u0441\u0435\u043c \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e\u043c \u043c\u0430\u043b\u043e \u043a\u043e\u043c\u0443 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f.<\/p>\n<p>  \u0421 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430\u043c\u0438 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c, \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0443. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0441\u0442\u0435\u043a\u0430, \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 NULL \u0438 OxFF, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a UART.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>BOOT_START: \tldi\t\ttemp_0,\tlow( RAMEND) \tout\t\tSPL,\ttemp_0 \tldi\t\ttemp_0,\thigh(RAMEND) \tout\t\tSPH,\ttemp_0  \tcli  \tclr\t\tNULL \tmov\t\tOxFF,\tNULL \tcom\t\tOxFF  \tldi\t\ttemp_0,\tlow( UBRR ) \tout\t\tUBRRH,\tNULL \tout\t\tUBRRL,\ttemp_0 \tldi\t\ttemp_0,\t( 1 &lt;&lt; RXEN ) | ( 1 &lt;&lt; TXEN ) \tout\t\tUCSRB,\ttemp_0 \tldi\t\ttemp_0,\t( 1 &lt;&lt; URSEL ) | ( 1 &lt;&lt; UCSZ1 ) | ( 1 &lt;&lt; UCSZ0 ) \tout\t\tUCSRC,\ttemp_0 <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041d\u0430 \u0432\u0441\u0435 \u044d\u0442\u043e \u043d\u0430\u043c \u0445\u0432\u0430\u0442\u0438\u043b\u043e \u0430\u0436 6 \u0440\u0430\u0437\u043d\u044b\u0445 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, \u044f\u0432\u043b\u044f\u044e\u0449\u0438\u0445\u0441\u044f \u0430\u0431\u0431\u0440\u0435\u0432\u0438\u0430\u0442\u0443\u0440\u0430\u043c\u0438 \u0438\u043b\u0438 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044f\u043c\u0438. ldi \u2013 load into, mov \u2013 move, out \u2013 output to I\\O register, com \u2013 complement, cli \u2013 clear interrupt flag. \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 \u043f\u0440\u043e\u0441\u0442 \u0434\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u00ab\u0421\u043b\u043e\u0436\u043d\u044b\u0435\u00bb \u0447\u0430\u0441\u0442\u0438, \u0441\u043e \u0432\u0441\u044f\u043a\u0438\u043c\u0438 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c\u0438 UBRRH (UART Baud Rate Register High-byte), \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u0434\u0430\u0442\u0430\u0448\u0438\u0442\u0430\u0445 \u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f. <\/p>\n<p>  \u0420\u0435\u0448\u0438\u043c, \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0431\u0443\u0442\u0435, \u0438\u043b\u0438 \u043d\u0435\u0442. \u0412\u044b\u0431\u043e\u0440 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043f\u043e\u0440\u0442\u0430, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u0431\u043e\u0440\u043a\u0438:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412\u0441\u0435 \u0435\u0449\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e, \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>.if port_used == 'A' \tcbi\t\tDDRA,\tpin \tsbi\t\tPORTA,\tpin \tnop \t.if level == 'S' \t\tsbis\tPINA,\tpin \t.elif level == 'C' \t\tsbic\tPINA,\tpin \t.endif  .elif port_used == 'B' \tcbi\t\tDDRB,\tpin \tsbi\t\tPORTB,\tpin \tnop \t.if level == 'S' \t\tsbis\tPINB,\tpin \t.elif level == 'C' \t\tsbic\tPINB,\tpin \t.endif  .elif port_used == 'C' \tcbi\t\tDDRC,\tpin \tsbi\t\tPORTC,\tpin \tnop \t.if level == 'S' \t\tsbis\tPINC,\tpin \t.elif level == 'C' \t\tsbic\tPINC,\tpin \t.endif  .elif port_used == 'D' \tcbi\t\tDDRD,\tpin \tsbi\t\tPORTD,\tpin \tnop \t.if level == 'S' \t\tsbis\tPIND,\tpin \t.elif level == 'C' \t\tsbic\tPIND,\tpin \t.endif  .elif port_used == 'E' \tcbi\t\tDDRE,\tpin \tsbi\t\tPORTE,\tpin \tnop \t.if level == 'S' \t\tsbis\tPINE,\tpin \t.elif level == 'C' \t\tsbic\tPINE,\tpin \t.endif .endif \t;if user asked to load boot - this will be skipped \tjmp\t\tRESET_VECT\t\t <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0447\u0442\u0435\u043d\u0438\u044f\\\u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u0442. \u0422\u0430\u043a \u043a\u0430\u043a \u0443 \u043d\u0430\u0441 \u043c\u0430\u043b\u043e \u043c\u0435\u0441\u0442\u0430 \u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438, \u044f \u0440\u0435\u0448\u0438\u043b \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u043a \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e, \u0438\u043c\u0435\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u041d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435, \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0432\u044b\u0437\u044b\u0432\u0430\u044f \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u043c\u0435\u0442\u043a\u0430\u043c:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0413\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0437\u0430 8 \u043a\u043e\u043c\u0430\u043d\u0434<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>;UART   &lt;- 0xC0 ;temp_0 &lt;- UART confirm_and_read: \tldi\t\ttemp_0,\t0xC0 ;UART   &lt;- temp_0 ;temp_0 &lt;- UART UART_send: \tsbis\tUCSRA,\tUDRE\t\t;skip next command if readiness bit is set \trjmp\tUART_send \tout\t\tUDR,\ttemp_0 ;temp_0 &lt;- UART UART_read: \tsbis\tUCSRA,\tRXC \trjmp\tUART_read \tin\t\ttemp_0,\tUDR \tret\t <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0423\u043d\u044b\u043b\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430, \u043c\u0438\u0440 \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d. \u041d\u0430\u0447\u043d\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<h4>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u0430 88 \u0431\u0430\u0439\u0442<\/h4>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0447\u0438\u0441\u043b\u043e, \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0435 \u0434\u0430\u043d\u043d\u043e\u043c\u0443, \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u043f\u043e\u043b\u0435. \u0422\u0430\u043a\u043e\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u0435, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c 1. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u043f\u0438\u0441\u0430\u043d \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0430 <a href=\"http:\/\/en.wikipedia.org\/wiki\/Finite_field_arithmetic\">\u0432\u0438\u043a\u0438 <\/a>, \u043d\u0435 \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u0435\u0433\u043e. <\/p>\n<p>  \u041d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u043f\u043e\u043b\u0435 \u2014 \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u0422\u0443\u0442 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u042d\u0432\u043a\u043b\u0438\u0434\u0430\u2026 \u043d\u043e \u043c\u044b \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u044b. \u0423\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u044b\u043f\u0443\u0441\u043a\u043d\u0438\u043a\u043e\u0432 computer science \u043e\u0442 \u044d\u043a\u0440\u0430\u043d\u043e\u0432. \u041c\u044b \u0438\u0449\u0435\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u043e\u043b\u043d\u044b\u043c \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u043e\u043c, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f. <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u0438\u0441\u043a \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>\tldi\t\tXH,\thigh(SBOX)\t;point X to SBOX memory location \tldi\t\tXL,\tlow( SBOX) \tser\t\tbF\t\t\t;first inc will overflow to 0 next_box: \tinc\t\tbF \tmov\t\ttemp_1,\tbF\t;save input in temp_1 \tcp\t\ttemp_1,\tNULL\t;if it's null - return \tbreq\tsbox_byte_done\t;return here \tmov\t\tOP0,\tOxFF\t;so it overflows  look_more: \tinc\t\tOP0\t\t;try next candidate  ;temp_0 &lt;- OP0 * temp_1 (in a Galois field) ;branching is fine, function used in precomputation only finite_multiplication: \tmov\t\tb0,\tOP0\t;operand 0 (candidate) \tmov\t\tb1,\ttemp_1\t;operand 1 (current byte)  \tldi\t\ttemp_2,\t0x1B\t;0x1B holder \tclr\t\ttemp_0\t\t;multiplication result  next_bit: \tlsr\t\tb0\t\t;operand 0 &gt;&gt; 1 \tbrcc\tPC+2\t\t;if lsb of operand 0 was 1 \teor\t\ttemp_0,\tb1\t;xor operand 1 into result  \tlsl\t\tb1\t\t;operand 1 &lt;&lt; 1 \tbrcc\tPC+2\t\t;if msb of operand 1 was 1 \teor\t\tb1,\ttemp_2\t;xor 0x1B into operand 1  \tcp\t\tb0,\tNULL\t;while there are bits in operand0 \tbrne\tnext_bit\t;work on it  \tcpi\t\ttemp_0,\t1\t;if multiplication result was not 1 \tbrne\tlook_more\t;inverse is in OP0 <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e, \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u0430\u0444\u0444\u0438\u043d\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c. \u041e\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u043d\u043e \u0438\u0437 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0445 \u043a\u0443\u0431\u0438\u043a\u043e\u0432. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u2014 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043c\u043e\u0437\u0433\u043e\u0432. \u0412\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0431\u043e\u043b\u0435\u0435 \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0435\u0449\u0435 \u043f\u0430\u0440\u0443 \u043a\u043e\u043c\u0430\u043d\u0434, \u0432\u044b\u0436\u0430\u0442\u044c \u0435\u0449\u0435 \u043f\u0430\u0440\u0443 \u0442\u0430\u043a\u0442\u043e\u0432, \u043f\u0440\u0438\u0447\u0435\u043c, \u044d\u0442\u0430 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u044f \u043d\u0430 \u0441\u043f\u0438\u0447\u043a\u0430\u0445 \u043f\u043e\u0440\u043e\u0439 \u2014 \u0432\u043e\u043f\u0440\u043e\u0441 \u0436\u0438\u0437\u043d\u0438 \u0438 \u0441\u043c\u0435\u0440\u0442\u0438. \u042d\u0442\u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u044b\u0439 \u043c\u0438\u0440 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043a\u043e\u0434\u0438\u043d\u0433\u0430 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0435\u043d \u0432 \u0441\u0431\u043e\u0440\u043a\u0443 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0410\u0444\u0444\u0438\u043d\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>\tclr\t\ttemp_1\t\t\t;affine transform result \tldi\t\ttemp_5,\t0b11110001\t;matrix producer \tldi\t\ttemp_3,\t0b00000001\t;current bit mask  process_bit: \tmov\t\ttemp_4,\tOP0\t\t;multiplicative inverse \tand\t\ttemp_4,\ttemp_5\t\t;and with matrix producer  pop_next_bit: \tlsl\t\ttemp_4\t\t\t;inv&matrix &lt;&lt; 1 \tbrcc\tPC+2\t\t\t;if it had msb \teor\t\ttemp_1,\ttemp_3\t\t;sum bit into result \tcp\t\ttemp_4,\tNULL\t\t;while operand has bits \tbrne\tpop_next_bit\t\t;work on it \t \tlsl\t\ttemp_3\t\t\t;move to next bit \tlsl\t\ttemp_5\t\t\t;cyclically shift matrix producer \tbrcc\tPC+2\t\t\t;if it had msb \tori\t\ttemp_5,\t1\t\t;move msb to lsb \tcp\t\ttemp_3,\tNULL\t\t;while there are bits left \tbrne\tprocess_bit\t\t;process next bit  sbox_byte_done: \tldi\t\ttemp_2,\t0b01100011\t;0x63 \teor\t\ttemp_1,\ttemp_2\t\t;xor it into result \tst\t\tX+,\ttemp_1\t\t;save to memory \tcpse\tbF,\tOxFF\t\t;if we're at last byte \trjmp\tnext_box\t\t;we're done  <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041c\u0438\u0441\u0441\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/cf4\/d9e\/1ca\/cf4d9e1cad324e845698d89dd3815fe5.png\"\/><\/p>\n<p>  \u041a\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e \u0432\u0441\u0435 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442? \u0412 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435 \u2014 2203268 \u0442\u0430\u043a\u0442\u0430. 0.27 \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 8 \u041c\u0413\u0446. \u042f \u0441\u0447\u0438\u0442\u0430\u044e, \u044d\u0442\u043e \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c.<\/p>\n<p>  \u041c\u044b \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0438 256 \u0431\u0430\u0439\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 0.27 \u0441\u0435\u043a\u0443\u043d\u0434 \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0432 168 \u0431\u0430\u0439\u0442 Flash-\u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0440\u0435\u0448\u0438\u0432 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0433\u043e\u043b\u043e\u0432\u043e\u043b\u043e\u043c\u043a\u0443.<\/p>\n<p>  \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u043e\u0434\u043c\u0435\u043d\u044b \u0433\u043e\u0442\u043e\u0432\u0430, \u044d\u043a\u0441\u043f\u0430\u043d\u0441\u0438\u044f \u043a\u043b\u044e\u0447\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0430 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u2014 \u0435\u0441\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 AES.<\/p>\n<h4>Assembled Encryption Standard<\/h4>\n<p>  \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439. \u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0434\u0435\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043b\u044e\u0447 \u0441\u0443\u043c\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0414\u0430\u043d\u043d\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u0441 4-\u0433\u043e, \u0438\u0445 \u0442\u0430\u043a\u0438\u0445 16 \u0448\u0442\u0443\u043a, \u0430 \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043a\u043b\u044e\u0447 \u043f\u0443\u0441\u0442\u044c \u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 Z. \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u044b-\u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 SRAM \u0438\u043b\u0438 Flash, \u043d\u043e \u0438 \u043d\u0430 \u0444\u0430\u0439\u043b \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043d\u0430\u043c \u0436\u0438\u0437\u043d\u044c \u0438 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Add round key<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>add_round_key: \tclr\t\tYH\t\t;point to register file \tldi\t\tYL,\t4 xor_Z_to_Y: \tlpm\t\ttemp_0,\tZ+\t\t;load key byte \tld\t\ttemp_1,\tY\t\t;load data byte \teor\t\ttemp_1,\ttemp_0\t\t;xor them \tst\t\tY+,\ttemp_1\t\t;store back to data \tcpi\t\tYL,\tlow( 4 + 16 )\t;check if it was the last byte \tbrne\txor_Z_to_Y\t\t;if not - process next data byte \tret <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0415\u0449\u0435 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u2014 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0440\u044f\u0434\u043a\u043e\u0432. \u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u044f\u0434\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0434\u0432\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0432\u043b\u0435\u0432\u043e \u043d\u0430 \u0441\u0432\u043e\u0439 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440. \u041d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u0431\u0430\u0439\u0442 \u0441 \u043a\u0430\u043a\u0438\u043c \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0438, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u0442\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043d\u0430\u0432\u044b\u043a\u0438 \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0432\u0443\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439. \u041f\u043b\u044e\u0441 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u2014 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0430\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u0434\u043b\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0442 \u0430\u0442\u0430\u043a \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c\u0438 \u043a\u0430\u043d\u0430\u043b\u0430\u043c\u0438.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Shift rows<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>;cyclical shift: 0_row &lt;&lt; 0; 1_row &lt;&lt; 1; 2_row &lt;&lt; 2; 3_row &lt;&lt; 3 shift_rows: \t;1st row \teor\t\tb1,\tbD \teor\t\tbD,\tb1 \teor\t\tb1,\tbD  \teor\t\tb1,\tb5 \teor\t\tb5,\tb1 \teor\t\tb1,\tb5  \teor\t\tb5,\tb9 \teor\t\tb9,\tb5 \teor\t\tb5,\tb9  \t;2nd row \teor\t\tb2,\tbA \teor\t\tbA,\tb2 \teor\t\tb2,\tbA  \teor\t\tb6,\tbE \teor\t\tbE,\tb6 \teor\t\tb6,\tbE  \t;3rd row \teor\t\tb3,\tbF \teor\t\tbF,\tb3 \teor\t\tb3,\tbF  \teor\t\tb7,\tbF \teor\t\tbF,\tb7 \teor\t\tb7,\tbF  \teor\t\tbB,\tbF \teor\t\tbF,\tbB \teor\t\tbB,\tbF \t;done \tret <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0417\u0430\u043c\u0435\u043d\u0430 \u0432\u0441\u0435\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0438\u043c \u043f\u043e\u0434\u043c\u0435\u043d\u044b \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u2014 \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434, \u0432 \u043b\u043e\u0431, \u0438\u043c\u0435\u0435\u0442 \u0444\u0430\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a: \u043e\u043d \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043b\u0438\u043d\u0435\u0435\u043d. \u041b\u0438\u043d\u0435\u0439\u043d\u043e\u0441\u0442\u044c, \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u2014 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0430\u0442\u0430\u043a\u0438 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c\u0438 \u043a\u0430\u043d\u0430\u043b\u0430\u043c\u0438. \u0413\u0440\u0443\u0431\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u043d\u0430\u043c \u043d\u0435\u0447\u0435\u0433\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u044f \u043a \u0441\u043b\u0443\u0447\u0430\u044e, \u0431\u0435\u0437 \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u0434\u043b\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0437\u0430\u0449\u0438\u0442\u044b. \u041f\u043e\u0441\u0442\u0443\u043f\u0438\u043c \u0438\u043d\u0430\u0447\u0435. \u0411\u0443\u0434\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0437\u0430 \u0440\u0430\u0437. \u041c\u0435\u043d\u044f\u0435\u043c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0431\u0445\u043e\u0434\u0430 \u2014 \u0438 \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u043c\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0435\u0449\u0435 \u043d\u0435\u0434\u0435\u043b\u044e. <\/p>\n<p>  \u0417\u0430 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0442\u044c \u044d\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Sub bytes<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>substitute_shift_rows: \tldi\t\tXH,\thigh(SBOX) \tldi\t\tXL,\tlow( SBOX) \tmovw\tOP0,\tX  \t;one column at a time \tclr\t\tYH \tldi\t\tYL,\t4 sub_next: \tmovw\tX,\tOP0 \tldd\t\ttemp_0,\tY+0x08 \tadd\t\tXL,\ttemp_0 \tadc\t\tXH,\tNULL \tld\t\ttemp_0,\tX \tstd\t\tY+0x08,\ttemp_0  \tmovw\tX,\tOP0 \tldd\t\ttemp_0,\tY+0x0C \tadd\t\tXL,\ttemp_0 \tadc\t\tXH,\tNULL \tld\t\ttemp_0,\tX \tstd\t\tY+0x0C,\ttemp_0  \tmovw\tX,\tOP0 \tldd\t\ttemp_0,\tY+0x04 \tadd\t\tXL,\ttemp_0 \tadc\t\tXH,\tNULL \tld\t\ttemp_0,\tX \tstd\t\tY+0x04,\ttemp_0  \tmovw\tX,\tOP0 \tldd\t\ttemp_0,\tY+0x00 \tadd\t\tXL,\ttemp_0 \tadc\t\tXH,\tNULL \tld\t\ttemp_0,\tX \tst\t\tY+,\ttemp_0  \tsbrs\tYL,\t3\t\t\t;XL == 8 \trjmp\tsub_next <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041f\u0440\u0438\u0431\u043b\u0438\u0436\u0430\u0435\u043c\u0441\u044f \u043a \u043f\u043e\u0440\u0442\u0430\u043b\u0443 \u0432 \u0430\u0434. \u041f\u0435\u0440\u0435\u0434 \u0432\u0445\u043e\u0434\u043e\u043c \u0442\u0443\u0434\u0430, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0435\u0441\u0442\u0438 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 2. \u0421 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f, \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 2 \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u043f\u043e\u043b\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0442\u0435\u043c, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u0441\u0434\u0432\u0438\u0433\u0430 \u0432\u043b\u0435\u0432\u043e, \u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u0431\u0430\u0432\u0438\u0442\u044c 0x1B, \u0435\u0441\u043b\u0438 \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0431\u0438\u0442 \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044f \u0431\u044b\u043b \u0435\u0434\u0438\u043d\u0438\u0447\u043a\u043e\u0439. \u0415\u0441\u043b\u0438 \u0431\u0438\u0442 \u0431\u044b\u043b \u0435\u0434\u0438\u043d\u0438\u0447\u043a\u043e\u0439, \u0442\u043e\u2026 \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0432 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0443\u0447\u0430\u0441\u0442\u043a\u0430\u0445 \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c. \u0411\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c! \u041f\u0435\u0440\u0435\u0434 \u0441\u0434\u0432\u0438\u0433\u043e\u043c \u0432\u043b\u0435\u0432\u043e, \u043c\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0431\u0438\u0442 \u0438 \u043f\u043e\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u043d\u0443\u0436\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 \u043f\u0443\u0441\u0442\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0441\u043e\u0431\u0435\u0440\u0435\u043c \u0442\u0430\u043c 0x1B, \u0435\u0441\u043b\u0438 \u0431\u0438\u0442 \u0431\u044b\u043b \u0435\u0434\u0438\u043d\u0438\u0447\u043a\u043e\u0439, \u0438\u043b\u0438 0, \u0435\u0441\u043b\u0438 \u043e\u043d \u0431\u044b\u043b \u043d\u0443\u043b\u0435\u043c. <\/p>\n<p>  \u0421\u044e\u0440\u043f\u0440\u0438\u0437. \u0412 \u043c\u043e\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 2 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u043b\u0430\u0441\u044c \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440\u0430. \u0412 \u0442\u043e\u0447\u043a\u0443 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u043e \u0431\u0443\u0442\u0430 \u0438, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043d\u0435 \u043c\u0435\u0448\u0430\u043b \u0436\u0438\u0442\u044c \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0438 \u043d\u0430 2, \u043f\u0435\u0440\u0435\u043f\u0440\u044b\u0433\u043d\u0435\u043c \u0435\u0433\u043e. <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Sub bytes<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>;temp_0 &lt;- temp_0 * 2 (in a finite field) ;temp_0 = (temp_0 &lt;&lt; 1) ^ (0x1B & MSB(temp_0)) ;NO BRANCHING HERE ;uses NULL in a dirty way mul_by_2: \tbst\t\ttemp_0,\t7\t;store 7th bit in T \tbld\t\tNULL,\t0\t;we form 0x1B in NULL if T is set \trjmp\tcont_mul\t \trjmp\tBOOT_START\t;0x1F80. BOOTSZ can be here cont_mul: \tbld\t\tNULL,\t4\t \tlsl\t\ttemp_0\t\t \tbld\t\tNULL,\t3\t \tbld\t\tNULL,\t1 \teor\t\ttemp_0,\tNULL \tclr\t\tNULL \tret <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041e\u0441\u0442\u0430\u043b\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u044d\u0442\u0430\u043f \u2014 \u0441\u043c\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432. \u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044e:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/e1f\/1ee\/d06\/e1f1eed06c647d9c850b059bef5eddbc.png\"\/><\/p>\n<p>  \u0423\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 2 \u043c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0432\u044b\u0448\u0435. \u0421\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u043f\u043e\u043b\u0435 \u2014 \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0435 \u0438\u043b\u0438. \u0414\u043b\u044f \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 3, \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0435\u0449\u0435 \u0440\u0430\u0437 \u043f\u0440\u0438\u0431\u0430\u0432\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 2. \u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b, \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e, \u043f\u0438\u0448\u0435\u043c \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u044b \u0432 \u043e\u0431\u044a\u0435\u043c\u0435 \u043a\u043e\u0434\u0430 \u0438 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c. \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432 \u0443\u043c\u0435 \u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445. \u041d\u0443\u0436\u043d\u043e \u043e\u0447\u0435\u043d\u044c \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u043f\u0440\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u0445\u043e\u0434 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0441 \u0443\u043c\u043e\u043c. <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Mix columns<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>mix_columns: \t;point to register file \tclr\t\tYH \tldi\t\tYL,\t4 next_column: \tldd\t\ttemp_2, Y+0x00\t;result0 \tldd\t\ttemp_3, Y+0x01\t;r1 \tldd\t\ttemp_4, Y+0x02\t;r2 \tldd\t\ttemp_5, Y+0x03\t;r3 \tmov\t\ttemp_0, temp_3\t;r1 to operand \trcall\tmul_by_2\t;r1 * 2  \tmov\t\ttemp_1, temp_0\t;save r1 * 2 \teor\t\ttemp_0, temp_2  ;r0 + r1 * 2  \teor\t\ttemp_0, temp_5\t;r0 + r1 * 2 + r3 (lacks r2 * 3) \tstd\t\tY+0x01,\ttemp_0\t;to r1 \tmov\t\ttemp_0,\ttemp_2\t;r0 to operand \trcall\tmul_by_2\t;r0 * 2  \tmov\t\tOP0, temp_0\t\t;OP0 &lt;- r0 * 2 \teor\t\ttemp_0, temp_1\t;r0 * 2 + r1 * 2 \teor\t\ttemp_0, temp_3\t;r0 * 2 + r1 * 3 \teor\t\ttemp_0, temp_4\t;r0 * 2 + r1 * 3 + r2 \teor\t\ttemp_0, temp_5\t;r0 * 2 + r1 * 3 + r2 + r3 (done) \tstd\t\tY+0x00, temp_0\t;to r0 \tmov\t\ttemp_1, OP0\t;OP0 -&gt; r0 * 2 \tmov\t\ttemp_0,\ttemp_5\t;r3 to operand \trcall\tmul_by_2\t;r3 * 2  \tmov\t\tOP0,\ttemp_0\t;OP0 &lt;- r3 * 2 \teor\t\ttemp_0, temp_1\t;r3 * 2 + r0 * 2 \teor\t\ttemp_0, temp_2\t;r0 * 3 + r3 * 2 \teor\t\ttemp_0, temp_3\t;r0 * 3 + r1 + r3 * 2 \teor\t\ttemp_0, temp_4\t;r0 * 3 + r1 + r2 + r3 * 2 (done) \tstd\t\tY+0x03,\ttemp_0\t;to r3 \tmov\t\ttemp_1, OP0\t;OP0 -&gt; r3 * 2 \tmov\t\ttemp_0,\ttemp_4\t;r2 to operand \trcall\tmul_by_2\t;r2 * 2  \tmov\t\tOP0, \ttemp_0\t;OP0 &lt;- r2 * 2 \teor\t\ttemp_0, temp_1\t;r2 * 2 + r3 * 2 \teor\t\ttemp_0, temp_5\t;r2 * 2 + r3 * 3 \teor\t\ttemp_0, temp_2\t;r0 + r2 * 2 + r3 * 3 \teor\t\ttemp_0, temp_3\t;r0 + r1 + r2 * 2 + r3 * 3 (done) \tstd\t\tY+0x02, temp_0\t;to r2  \tmov\t\ttemp_1, OP0\t;OP0 -&gt; r2 * 2 \tldd\t\ttemp_0,\tY+0x01\t;r0 + r1 * 2 + r3 \teor\t\ttemp_0, temp_1\t;r0 + r1 * 2 + r2 * 2 + r3 \teor\t\ttemp_0, temp_4\t;r0 + r1 * 2 + r2 * 3 + r3 (done) \tstd\t\tY+0x01,\ttemp_0\t;to r1  \tadiw\tY,\t4\t;pointer to next column \tcpi\t\tYL,\t20\t;if not done \tbrne\tnext_column\t;process next \tret <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041f\u0440\u043e\u0441\u0442\u043e \u043c\u043d\u043e\u0433\u043e \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0438. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 6 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0439 \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0445 4, \u043d\u043e, \u043a\u0430\u043a \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430\u044f \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u0430. <\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f AES \u044d\u0442\u0430\u043f\u044b \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b. \u0421\u043e\u0431\u0435\u0440\u0435\u043c \u0438\u0445 \u0432\u043e\u0435\u0434\u0438\u043d\u043e. \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0432 \u0441\u0442\u0435\u043a \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0438\u0445 \u043f\u043e\u0437\u0436\u0435 \u2014 \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430. \u041f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0433\u0434\u0435-\u0442\u043e \u0435\u0449\u0435 \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u044b, \u043a\u0430\u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0430 \u043f\u0430\u043c\u044f\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440. \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0438 \u043a \u0441\u0442\u0430\u0442\u0443\u0441-\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443. \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u044b \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u2014 \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0439\u0442\u0435 \u0441\u0442\u0430\u0442\u0443\u0441-\u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0439\u0442\u0435 \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0434 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u043e\u043c! <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u0430\u043c\u043e \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>;performs a round of encryption  ;using given expanded keys and s-box Rijndael_encrypt: \tpush\tZH \tpush\tZL \tpush\tYH \tpush\tYL \tpush\tXH \tpush\tXL  \tldi\t\tZH,\thigh(KEYS*2) \tldi\t\tZL,\tlow( KEYS*2) \trcall\tadd_round_key \tldi\t\ttemp_0,\t9  encryption_cycle: \tpush\ttemp_0\t;store cycle counter  \trcall\tsubstitute_shift_rows \trcall\tmix_columns \trcall\tadd_round_key  \trjmp\tcontinue_enc \trjmp\tBOOT_START\t\t;0x1F00. BOOTSZ can be here continue_enc:  \tpop\t\ttemp_0\t;restore cycle counter \tdec\t\ttemp_0 \tbrne\tencryption_cycle  \trcall\tsubstitute_shift_rows \trcall\tadd_round_key  \tpop\t\tXL \tpop\t\tXH \tpop\t\tYL \tpop\t\tYH \tpop\t\tZL \tpop\t\tZH \tret <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041f\u043e\u0441\u0447\u0438\u0442\u0430\u0435\u043c, \u0432\u043e \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0439\u0442 \u043c\u044b \u0443\u043b\u043e\u0436\u0438\u043b\u0438\u0441\u044c. \u0421\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u043a\u043b\u044e\u0447\u043e\u043c \u2014 18 \u0431\u0430\u0439\u0442. \u0423\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 2 \u2014 22 \u0431\u0430\u0439\u0442\u0430. \u0421\u0434\u0432\u0438\u0433 \u0440\u044f\u0434\u043a\u043e\u0432 \u2014 50 \u0431\u0430\u0439\u0442. \u041f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u2014 62 \u0431\u0430\u0439\u0442\u0430. \u041f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u2014 94 \u0431\u0430\u0439\u0442\u0430. \u0421\u0432\u044f\u0437\u0430\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u043e \u2014 56 \u0431\u0430\u0439\u0442. \u0421\u0443\u043c\u043c\u0430\u0440\u043d\u043e \u2014 302 \u0431\u0430\u0439\u0442\u0430. \u041f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0442\u044b \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b \u2014 \u0431\u0435\u0441\u0446\u0435\u043d\u043d\u043e. \u0427\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 Windows. <\/p>\n<p>  \u0411\u043b\u043e\u0447\u043d\u044b\u0439 \u0448\u0438\u0444\u0440 \u2014 \u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u043e \u0431\u0435\u0437 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043e\u043d \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u0435\u043d. \u0415\u0441\u043b\u0438 \u0431\u043b\u043e\u0447\u043d\u043e\u043c\u0443 \u0448\u0438\u0444\u0440\u0443 \u043d\u0435\u0447\u0435\u0433\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u2014 \u043e\u043d \u0442\u043e\u0436\u0435 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u0435\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0437\u0430\u0439\u043c\u0435\u043c\u0441\u044f \u043f\u0440\u0438\u0435\u043c\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<h4>\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0431\u043c\u0435\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439<\/h4>\n<p>  \u0411\u043b\u043e\u043a \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 EAX, \u043a\u0430\u043a \u0438 \u0432 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0445\u0435\u043c\u0435 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0441\u0430\u043c\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u0438. \u0412\u0435\u043a\u0442\u043e\u0440 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0438\u043c\u0435\u044e\u0442 \u0434\u043b\u0438\u043d\u0443 \u0431\u043b\u043e\u043a\u0430 \u043d\u0438\u0436\u0435\u043b\u0435\u0436\u0430\u0449\u0435\u0433\u043e \u0448\u0438\u0444\u0440\u0430, \u0441\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b, \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b Flash. \u0412\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u0435 \u044d\u0442\u0430\u043f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u2014 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0431\u043b\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b \u0432 SRAM \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0434\u043b\u044f \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430. <\/p>\n<p>  \u0421 \u0446\u0435\u043b\u044c\u044e \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043e \u043a\u0430\u043a\u043e\u043c-\u043b\u0438\u0431\u043e \u0432\u044b\u0447\u0443\u0440\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u043c\u044b \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043e\u0431\u043e\u0439 \u0432\u0435\u0441\u044c \u043e\u0431\u044a\u0435\u043c Flash. \u0412\u0441\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0430\u043c\u044f\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0435 \u043d\u0435 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u044b, \u043e\u0431\u044f\u0437\u0430\u043d\u044b \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c\u0438 \u0431\u0430\u0439\u0442\u0430\u043c\u0438. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u043f\u0430\u0442\u0447, \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043f\u0430\u0440\u0443 \u043a\u043e\u043c\u0430\u043d\u0434 \u2014 \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0448\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u043b\u0433\u043e, \u043d\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0432\u044b\u0448\u0435 \u0432\u0441\u0435\u0433\u043e. <\/p>\n<p>  \u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439: \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e\u0434\u043c\u0435\u043d\u044b, \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440 \u0432\u044b\u0434\u0430\u0435\u0442 \u0432 \u043f\u043e\u0440\u0442 \u0431\u0430\u0439\u0442 0xC0 (COnfirm) \u0438 \u0436\u0434\u0435\u0442 \u0431\u0430\u0439\u0442 0x60 (GO). \u041f\u043e\u0441\u043b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430, \u0431\u0443\u0442 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c Z \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0430\u043c\u044f\u0442\u0438, \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432 temp_0 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043d\u044f\u0442\u044c, \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c, \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u043a \u043f\u0440\u0438\u0435\u043c\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u044d\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>wait_for_start: \trcall\tconfirm_and_read \tcpi\t\ttemp_0,\t0x60 \tbrne\twait_for_start  ;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/PAGE ADDR INIT .if USE_0th_PAGE == 0 \tldi\t\tZH,\thigh(PAGE_BYTES) \tldi\t\tZL,\tlow( PAGE_BYTES) \tldi\t\ttemp_0,\tPAGES - 1 .else  \tclr\t\tZH \tclr\t\tZL \tldi\t\ttemp_0,\tPAGES .endif  next_page: \t;save page counter and address \tpush\ttemp_0 \tpush\tZH \tpush\tZL  ;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/BLOCK RECEPTION \t;receive whole block \tldi\t\tXH,\thigh(SAVED_IV) \tldi\t\tXL,\tlow( SAVED_IV) \tldi\t\ttemp_1,( BLOCK_SIZE \/*nonce*\/ + PAGE_BYTES \/*page*\/ + BLOCK_SIZE \/*expected tag*\/ ) get_more_block: \trcall\tconfirm_and_read \tst\t\tX+,\ttemp_0 \tdec\t\ttemp_1 \tbrne\tget_more_block <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041a\u0430\u043a \u043c\u044b \u043f\u043e\u043c\u043d\u0438\u043c \u0438\u0437 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 confirm_and_read, \u043e\u043d\u0430 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 0xC0, \u043f\u043e\u0442\u043e\u043c \u0436\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u0430. \u042d\u0442\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u043c \u0432 \u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u043c \u0432\u0438\u0434\u0435 \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0431\u0430\u0439\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043f\u043e\u043b\u043d\u043e\u0439 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b. \u042d\u0442\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u2014 \u043d\u0430 \u043f\u0440\u0438\u0435\u043c-\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0443\u0445\u043e\u0434\u0438\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0447\u0435\u043c \u043d\u0430 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0437\u0430\u0439\u043c\u0435\u043c\u0441\u044f. <\/p>\n<h4>EAX Assembled<\/h4>\n<p>  \u0415\u0441\u043b\u0438 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c EAX \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430 \u0414\u0432\u0443\u0445 \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0445 \u2014 \u043c\u044b \u043d\u0435 \u0443\u043b\u043e\u0436\u0438\u043c\u0441\u044f \u0432 \u043e\u0431\u044a\u0435\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043f\u043e\u0434\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0445\u043e\u0434 \u0441\u043e\u0431\u044b\u0442\u0438\u0439.<\/p>\n<p>  \u041f\u043e\u0434\u043f\u0438\u0441\u044c \u2014 \u0441\u0443\u043c\u043c\u0430 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 (N, \u043e\u0442 Nonce), \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 (\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043b\u044e\u0447\u0430) \u0438 \u043a\u043e\u0434\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0430\u043c\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 CMAC\\OMAC. \u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0439\u0442\u0438\u0441\u044c \u0441 \u0442\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u043c \u043f\u0440\u0438\u0441\u043b\u0430\u043b\u0438. \u0418\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0435 \u0438\u043b\u0438 \u0434\u0432\u0443\u0445 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0440\u0430\u0432\u043d\u043e 0. \u0417\u043d\u0430\u0447\u0438\u0442, \u0431\u0443\u0434\u0435\u043c \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u044f\u043c\u043e \u0432 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0434\u043f\u0438\u0441\u044c, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0432\u0441\u0435 \u043b\u0438 \u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0442\u0438\u043b\u0438\u0441\u044c \u0432 0.<\/p>\n<p>  \u041d\u0430\u043c \u0443\u0436\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d H&#8217; \u2013 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0439\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043b\u044e\u0447\u0435\u0439. \u0421\u0440\u0430\u0437\u0443 \u0436\u0435 \u0441\u043b\u043e\u0436\u0438\u043c \u0435\u0433\u043e \u0441 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u044c\u044e:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/TAG INITIALIZATION \t;initialize precomputed header with tag \t;tag &lt;- H ^ tag header_to_tag: \tldi\t\tZH,\thigh(PRECOMP_HEADER_TAG*2) \tldi\t\tZL,\tlow( PRECOMP_HEADER_TAG*2) \tldi\t\tYH,\thigh(TAG) \tldi\t\tYL,\tlow( TAG) next_header_byte: \tlpm\t\ttemp_0,\tZ+\t \tld\t\ttemp_1,\tY \teor\t\ttemp_0,\ttemp_1 \tst\t\tY+,\ttemp_0 \tcpi\t\tYL,\tlow( TAG + BLOCK_SIZE ) \tbrne\tnext_header_byte <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u044d\u0442\u0430\u043f \u2014 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 N&#8217;. \u0412\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c. \u041e\u0431\u043b\u0435\u0433\u0447\u0438\u043c \u0441\u0435\u0431\u0435 \u0436\u0438\u0437\u043d\u044c, \u0432\u044b\u0434\u0435\u043b\u0438\u0432 \u0432\u0441\u0435 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0441 \u0431\u043b\u043e\u043a\u0430\u043c\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b. \u041d\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0444\u0430\u0439\u043b \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e \u0438.\u0442.\u043f. \u0412 \u0434\u0432\u0443\u0445 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430\u0445, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043c\u0435\u0442\u043a\u0438 \u0432\u044b\u0437\u043e\u0432\u0430, \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u043b\u043e\u0441\u044c \u0430\u0436 9. \u041d\u0435 \u0441\u043b\u044b\u0448\u0430\u043b, \u0447\u0442\u043e\u0431\u044b \u0442\u0430\u043a\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u044b\u043b\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>;block &lt;- block ^ Z xor_Z_to_block_RAM: \tldi\t\tYH,\t0 \tldi\t\tYL,\t4 ;Y &lt;- Y ^ Z xor_Z_to_Y_RAM: \tldi\t\ttemp_2,\tBLOCK_SIZE ;Y &lt;- Y ^ Z ( temp_2 times ) ram_xor_cycle: \tld\t\ttemp_3,\tZ+ \tld\t\ttemp_1,\tY \teor\t\ttemp_1,\ttemp_3 \tst\t\tY+,\t\ttemp_1 \tdec\t\ttemp_2 \tbrne\tram_xor_cycle \tret  ;block -&gt; SAVED_IV save_IV: \tldi\t\tYH,\thigh(SAVED_IV) \tldi\t\tYL,\tlow( SAVED_IV) ;block -&gt; Y from_regs_to_Y: \tldi\t\tXH,\t0 \tldi\t\tXL,\t4 \trjmp\tmove_from_X_to_Y ;SAVED_IV -&gt; block rest_IV: \tldi\t\tXH,\thigh(SAVED_IV) \tldi\t\tXL,\tlow( SAVED_IV) ;X -&gt; block from_X_to_regs: \tldi\t\tYH,\t0 \tldi\t\tYL,\t4 ;X -&gt; Y move_from_X_to_Y: \tldi\t\ttemp_0,\t0x10 ;X -&gt; Y ( temp_0 times ) ram_save_cycle: \tld\t\ttemp_1,\tX+ \tst\t\tY+,\ttemp_1 \tdec\t\ttemp_0 \tbrne\tram_save_cycle \tret <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044e N&#8217; \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u043c \u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c. \u0422\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043b\u044e\u0447\u0430 B \u0438 L0. \u0412\u0441\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0435, \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445. \u0412 \u043a\u043e\u043d\u0446\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 N&#8217; \u0441\u0443\u043c\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u0434\u043f\u0438\u0441\u044c\u044e.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/NONCE \t;block &lt;- N \tldi\t\tXH,\thigh(SAVED_IV) \tldi\t\tXL,\tlow( SAVED_IV) \trcall\tfrom_X_to_regs \t;block &lt;- N ^ B \tldi\t\tZH,\thigh(PRECOMP_B*2) \tldi\t\tZL,\tlow( PRECOMP_B*2) \trcall\tadd_round_key \t;block &lt;- N ^ B ^ L0 \tldi\t\tZH,\thigh(PRECOMP_L0*2) \tldi\t\tZL,\tlow( PRECOMP_L0*2) \trcall\tadd_round_key \t;block &lt;- E( N^B^L0 ) (nonce) \trcall\tRijndael_encrypt \t;save calculated nonce \trcall\tsave_IV \t;tag &lt;- H ^ N ^ expected \tldi\t\tYH,\thigh(TAG) \tldi\t\tYL,\tlow( TAG) \tldi\t\tZH,\thigh(SAVED_IV) \tldi\t\tZL,\tlow( SAVED_IV) \trcall\txor_Z_to_Y_RAM <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0414\u043b\u044f \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, EAX \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 AES \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 CTR \u2013 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430. \u042d\u0442\u043e\u0442 \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u043b\u043e\u0447\u043d\u044b\u0439 AES \u0432 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u0439 \u0448\u0438\u0444\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437 \u043e\u0441\u043e\u0431\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b. \u0412\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 N&#8217;, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u043b\u043e\u043a, \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0447\u043a\u0443 \u0438 \u0448\u0438\u0444\u0440\u0443\u0435\u0442\u0441\u044f. <\/p>\n<p>  \u0423\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0447\u043a\u0443 \u2014 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u043a\u043e\u0433\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0447\u0438\u0441\u043b\u043e \u0438\u0437 16 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0431\u0430\u0439\u0442, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044b \u0434\u043e \u043e\u0434\u043d\u043e\u0433\u043e, \u043c\u0430\u043b\u043e \u043b\u0438. \u041d\u0438\u0447\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0418\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442 16-\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>;block++ ;all carrying is done properly increment_regs: \tldi\t\tYH,\t0 \tldi\t\tYL,\t20 \tclr\t\ttemp_0 carry_next: \tld\t\ttemp_0,\tY \tcpi\t\ttemp_0,\t1 \tld\t\ttemp_0,\t-Y \tadc\t\ttemp_0,\tNULL \tst\t\tY,\ttemp_0 \tcpi\t\tYL,\t5 \tbrsh\tcarry_next \tret <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0421\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u2014 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u0420\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043c\u044b \u0438\u0445 \u043d\u0435 \u0431\u0443\u0434\u0435\u043c, \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0438\u0441\u044c\u044e \u0432 \u043f\u0430\u043c\u044f\u0442\u044c. \u041d\u043e N&#8217; \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u043e, \u043f\u0430\u043c\u044f\u0442\u044c \u043f\u043e\u0434 \u043a\u043e\u0434 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0430 \u2014 \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u0435\u0433\u043e \u043d\u0435 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c? <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0420\u0435\u0436\u0438\u043c CTR<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/DECRYPTION IVs \tldi\t\tYH,\thigh(ENC_IV) \tldi\t\tYL,\tlow( ENC_IV) IV_calc_cycle: \t;block &lt;- E(IV) \trcall\tRijndael_encrypt \t;ENC_IV &lt;- E(IV) \trcall\tfrom_regs_to_Y \tpush\tYH \tpush\tYL \t;IV++ \trcall\trest_IV \trcall\tincrement_regs \trcall\tsave_IV \tpop\t\tYL \tpop\t\tYH \tcpi\t\tYL,\tlow( ENC_IV + PAGE_BYTES ) \tbrne\tIV_calc_cycle <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0421\u0430\u043c\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u2014 \u043a\u043e\u0434 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u041e\u043d \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 CBC \u2013 \u043d\u0435 \u0441\u0430\u043c\u043e\u043c \u0443\u0434\u043e\u0431\u043d\u043e\u043c \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u0440\u0435\u0436\u0438\u043c \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0427\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u043d\u0435 \u0437\u043d\u0430\u044e, \u043f\u043e\u0447\u0435\u043c\u0443 \u043b\u044e\u0434\u0438 \u0432\u0441\u0435 \u0435\u0449\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 CBC \u0432\u043c\u0435\u0441\u0442\u043e CTR \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438. \u041e\u043d \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f \u0434\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0431\u043b\u043e\u043a\u0430, \u043d\u0435 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0431\u0430\u0432\u043d\u044b\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043f\u0440\u0438 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438, \u0432 \u0446\u0435\u043b\u043e\u043c, \u0441\u043b\u043e\u0436\u043d\u0435\u0435. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u043e \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0438 \u043c\u044b \u043f\u043e\u0437\u0430\u0431\u043e\u0442\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438.<\/p>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e B, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c, \u0441\u0443\u043c\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u0431\u043b\u043e\u043a\u043e\u043c \u2014 \u0432 \u043a\u043e\u043d\u0435\u0446 \u0448\u0438\u0444\u0440\u0443\u0435\u043c\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438. \u041a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0441\u0443\u043c\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u0434\u043f\u0438\u0441\u044c\u044e.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 CMAC\/OMAC \u043f\u043e\u0434\u043f\u0438\u0441\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/CMAC \/ OMAC TAG CALCULATION ( block &lt;- C ) \t;X contains 20 after last save_IV command clear_registers: \tst\t\t-X,\tNULL \tcpi\t\tXL,\t4 \tbrne\tclear_registers \t;block &lt;- L2 \tldi\t\tZH,\thigh(PRECOMP_L2*2) \tldi\t\tZL,\tlow( PRECOMP_L2*2) \trcall\tadd_round_key \t;last block is processed individually \tldi\t\ttemp_0,\tBLOCKS_PER_PAGE \tldi\t\tZH,\thigh(RCVD_PAGE) \tldi\t\tZL,\tlow( RCVD_PAGE) CBC_TAG: \t;block &lt;- block ^ m(i) \t;temp_0 is fine \trcall\txor_Z_to_block_RAM  \tpush\ttemp_0 \tcpi\t\ttemp_0,\t1 \tbrne\tdont_add_B  \tldi\t\tZH,\thigh(PRECOMP_B*2) \tldi\t\tZL,\tlow( PRECOMP_B*2) \trcall\tadd_round_key dont_add_B: \t;Z is saved properly \trcall\tRijndael_encrypt  \tpop\t\ttemp_0 \tdec\t\ttemp_0 \tbrne\tCBC_TAG  \t;block &lt;- H ^ N ^ C ^ expected \tldi\t\tZH,\thigh(TAG) \tldi\t\tZL,\tlow( TAG) \trcall\txor_Z_to_block_RAM <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0434\u0435\u0442\u0430\u043b\u044c \u0432 \u043f\u0430\u0437\u043b \u0438 \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0441\u043e\u0448\u043b\u0430\u0441\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u044c, \u0438\u043b\u0438 \u043d\u0435\u0442. \u0423\u0441\u043b\u043e\u0432\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u2014 \u0432\u0441\u0435 \u0435\u0435 \u0431\u0430\u0439\u0442\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0432 0. \u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u2014 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0418\u041b\u0418 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439. \u041f\u043e\u0441\u043b\u0435 \u0446\u0438\u043a\u043b\u0430 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f, \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u043e Flash, \u0438\u043b\u0438 \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0438 \u043f\u043e\u043c\u0435\u0440\u0435\u0442\u044c. <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/TAG CHECK \tclr\t\ttemp_0 check_more: \tld\t\ttemp_1,\t-Y \tor\t\ttemp_0,\ttemp_1 \tcpi\t\tYL,\t4 \tbrne\tcheck_more \tcp\t\ttemp_0,\tNULL \tbreq\tdo_write \trjmp\tdie <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041c\u0435\u0442\u043a\u0430 die \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0441 \u0432 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 0xFF \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0437\u0430\u043f\u0440\u043e\u0441. \u041f\u0440\u043e\u0448\u0438\u0432\u0430\u044e\u0449\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u0431\u0430\u0439\u0442\u044b \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0438 \u043e\u043f\u043e\u0432\u0435\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u043e\u0448\u0438\u0431\u043a\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/TAG FAILURE AND EXIT die: \tldi\t\ttemp_0,\t0xFF \trcall\tUART_send \trjmp\tdie <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0412 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0432\u0435\u0440\u043d\u0430 \u2014 \u043c\u044b \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c Z \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 Flash \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0437\u0430\u043f\u0438\u0441\u0438. \u0415\u0441\u043b\u0438 \u044d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0431\u044b\u043b\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u2014 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043c\u0435\u0442\u043a\u0443 upload_done, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0448\u0438\u0432\u0430\u044e\u0449\u0435\u043c\u0443 \u0431\u0430\u0439\u0442 \u0443\u0441\u043f\u0435\u0445\u0430 \u2014 0x0C \u0438 \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u0446\u0438\u043a\u043b \u0441\u043c\u0435\u0440\u0442\u0438.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412\u0441\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u2014 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0437\u0430\u043f\u0438\u0441\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/TAG SUCCESS - CTR AND WRITE do_write: \t;restore page pointers \tpop\t\tZL \tpop\t\tZH \t;decrypt and write page \trcall\tstore_page \t;restore page counter \tpop\t\ttemp_0 \tdec\t\ttemp_0 \t;continue if not done, else - die \tbreq\tupload_done \trjmp\tnext_page <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438 \u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 Flash \u043d\u0438\u0447\u0435\u043c \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u0430, \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043e \u0441\u0430\u043c\u043e\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u2014 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0438\u0441\u043f\u043e\u0440\u0442\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u0432 Flash \u0431\u0430\u0439\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 temp_0, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0438. \u0415\u0441\u043b\u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0431\u044b\u043b\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u2014 \u0432 temp_0 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f 0 \u0438 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043b\u0443\u0447\u0438\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u043f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u00ab\u043f\u0435\u0440\u0435\u043b\u0435\u0442\u0435\u043b\u00bb \u0432\u0441\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0438 \u043d\u0430\u0447\u0430\u043b \u043f\u0438\u0441\u0430\u0442\u044c \u0432\u043e Flash \u2013 \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0443\u0434\u0430 \u043c\u0443\u0441\u043e\u0440. <\/p>\n<p>  \u041f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0441\u0430\u043c\u043e\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0436\u0435\u043b\u0435\u0437\u043e-\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0430, \u043f\u0440\u0438 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0437\u043e\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u044b store program memory.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0420\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u0432\u043e Flash<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>;D( RCVD_PAGE ) -&gt; flash store_page: \t;erase current page \tldi\t\ttemp_1, 0b00000011 \trcall\tspm_it  \tldi\t\tYH, high(RCVD_PAGE) \tldi\t\tYL, low( RCVD_PAGE) \tldi\t\tXH, high(ENC_IV) \tldi\t\tXL, low( ENC_IV) write_next: \tld\t\tr0, Y+ \tld\t\ttemp_2, X+ \teor\t\tr0, temp_2 \tld\t\tr1, Y+ \tld\t\ttemp_2, X+ \teor\t\tr1, temp_2 \t;last countermeasure - if we jumped through tag check \teor\t\tr0, temp_0 \teor\t\tr1, temp_0 \t;store word to page buffer \tldi\t\ttemp_1, 0b00000001 \trcall\tspm_it \tadiw\tZ, 2 \tcpi\t\tYL, low( RCVD_PAGE + PAGE_BYTES ) \tbrne\twrite_next \t;write page  \t;back to page start     subi\tZL, low( PAGE_BYTES)     sbci\tZH, high(PAGE_BYTES) \t;write page \tldi\t\ttemp_1, 0b00000101 \trcall\tspm_it \t;to next page start     subi\tZL, low( -PAGE_BYTES)     sbci\tZH, high(-PAGE_BYTES) \t;re-enable flash \tldi\t\ttemp_1, 0b00010001 \trcall\tspm_it  \tret  spm_it: \tin\t\ttemp_2, SPMCSR \tsbrc\ttemp_2, SPMEN \trjmp\tspm_it \tout\t\tSPMCSR, temp_1 \tspm \tret <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0441\u0435 \u0432\u043e\u0435\u0434\u0438\u043d\u043e. \u0420\u043e\u0432\u043d\u043e 1024 \u0431\u0430\u0439\u0442\u0430. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0448\u0438\u0442\u044c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440, \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0444\u044c\u044e\u0437\u044b \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0435 \u041f\u041e.<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/32e\/123\/aa6\/32e123aa69c60ff0e1da72b8bb049a5c.png\"\/><\/p>\n<h4>\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h4>\n<p>  \u041d\u0435 \u0431\u0443\u0434\u0435\u043c \u043c\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u043c \u041f\u041e, \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043a\u043b\u044e\u0447\u0435\u0439 \u0438 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043b\u044c\u0449\u0438\u043a \u043f\u0440\u043e\u0448\u0438\u0432\u043e\u043a \u043d\u0430 Qt, \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Crypto++. \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0434\u043b\u044f \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043f\u0438\u0441\u0430\u043d \u0442\u0443\u0434\u0430 \u0436\u0435, \u043d\u0430\u043c\u0435\u0440\u0442\u0432\u043e. \u0412\u0441\u0435 \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c\u0438 \u0431\u0430\u0439\u0442\u0430\u043c\u0438. <\/p>\n<p>  \u041f\u0440\u043e\u0448\u0438\u0432\u0430\u043b\u044c\u0449\u0438\u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u0435\u043d \u2014 \u0436\u0434\u0435\u043c 0xC0, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c 0x60 \u0438, \u043f\u043e\u043a\u0430 \u0444\u0430\u0439\u043b \u043d\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0431\u0430\u0439\u0442 \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 0xC0. \u041f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 0x0C \u2013 \u0432\u0441\u0435 \u0433\u043e\u0442\u043e\u0432\u043e, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 0xFF \u2013 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. \u041d\u0430\u043f\u0438\u0448\u0435\u043c \u0435\u0433\u043e \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c \u0421 \u0434\u043b\u044f Linux. COM-\u043f\u043e\u0440\u0442\u0430 \u0443 \u043c\u0435\u043d\u044f \u043d\u0430 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u043d\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443\u2026 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Psion 5MX, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043b\u0430\u0434\u0448\u0435 \u043c\u0435\u043d\u044f \u0432\u0441\u0435\u0433\u043e \u043d\u0430 5 \u043b\u0435\u0442. <\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/933\/ff7\/e54\/933ff7e54a39ad2e98f5b711a9d3de59.jpg\"\/><br \/>  \u0414\u043e\u0441\u0442\u0430\u043d\u0435\u043c \u0438\u0437 \u0437\u0430\u043a\u0440\u043e\u043c\u043e\u0432 \u0440\u043e\u0434\u0438\u043d\u044b \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u043f\u043b\u0430\u0442\u0443 \u0441 ATmega8A, \u043f\u0440\u043e\u0448\u044c\u0435\u043c \u0435\u0435 \u0431\u0443\u0442\u043e\u043c, \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u043c \u0441 \u043a\u0443\u0441\u043a\u043e\u043c \u043f\u043b\u0430\u0442\u044b \u0441 MAX233, \u0441\u043e\u0431\u0435\u0440\u0435\u043c \u043d\u0430 \u041f\u0441\u0438\u043e\u043d\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u0430\u043b\u044c\u0449\u0438\u043a, \u043f\u0435\u0440\u0435\u043c\u043e\u0442\u0430\u0435\u043c \u0432\u0441\u0435 \u044d\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u043e\u0447\u043a\u0430\u043c\u0438, \u0443\u043a\u0430\u0436\u0435\u043c \u043f\u0440\u043e\u0448\u0438\u0432\u0430\u043b\u044c\u0449\u0438\u043a\u0443 \u043f\u043e\u0440\u0442 \u0438 \u0444\u0430\u0439\u043b \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438, \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0431\u043b\u043e\u043a \u043f\u0438\u0442\u0430\u043d\u0438\u044f\u2026 \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u0448\u0435\u043b.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Remember, no Arduino<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/9ff\/bc4\/9af\/9ffbc49af5b0d6407b2b8b833e5503a9.jpg\"\/><\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0427\u0442\u043e-\u0442\u043e \u044f\u0432\u043d\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/d8a\/4bb\/093\/d8a4bb0937445161197515307894c187.jpg\"\/><\/div>\n<\/div>\n<p>  \u041f\u0440\u043e\u0448\u0443 \u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0437\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0442\u043e\u043b\u0430 \u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0441\u0442\u0435\u043d\u0434 \u2014 \u0440\u0430\u0434\u0438\u043e\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0449\u0438\u043a \u0438\u0437 \u043c\u0435\u043d\u044f \u043d\u0435 \u043e\u0447\u0435\u043d\u044c.<\/p>\n<p>  \u0412\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u2014 \u043f\u043e\u0442\u0443\u0448\u0438\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u0438 \u043f\u043e\u0432\u0438\u0441\u043d\u0443\u0442\u044c \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430. \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438, \u0435\u0439 \u044d\u0442\u043e \u0443\u0434\u0430\u0435\u0442\u0441\u044f. \u0423\u0441\u043f\u0435\u0445!<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u0442\u0430\u0440\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u041f\u0441\u0438\u043e\u043d \u043f\u0435\u0440\u0435\u0434\u0430\u043b 10\u041a\u0411 \u0432 \u043f\u043e\u0440\u0442 \u0438 \u0436\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0439<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/ef2\/ffe\/d3c\/ef2ffed3ce6be9c75ec735210fe62032.jpg\"\/><\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u043f\u043e\u0433\u0430\u0441<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/8c5\/fc7\/928\/8c5fc79289a3496a8e3ac22c6e4016bc.jpg\"\/><\/div>\n<\/div>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043d\u0435\u0445\u0438\u0442\u0440\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435 \u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u0422\u0435\u043f\u0435\u0440\u044c \u0435\u0441\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u044b\u043a\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0430\u0442\u0447\u0438, \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u044f\u0441\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0443\u043a\u0440\u0430\u0434\u0435\u0442 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0439 \u0448\u043f\u0438\u043e\u043d. <\/p>\n<p>  \u0411\u0443\u0434\u0443 \u0440\u0430\u0434, \u0435\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u043d\u0430\u0439\u0434\u0435\u0442 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0432 \u043c\u043e\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>  \u0412\u0441\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b \u0438 \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 CreativeCommons Attribution-NonCommercial-ShareAlike. <\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/fd3\/f54\/eba\/fd3f54eba25923cfa3a72c5846809024.png\" alt=\"image\"\/><\/p>\n<p>  \u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043d\u0430 GitHub: <a href=\"https:\/\/github.com\/sirgal\/AVR-EAX-AES-bootloader\">github.com\/sirgal\/AVR-EAX-AES-bootloader<\/a><br \/>  (\u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u0434\u043b\u044f \u041f\u041a \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0432\u043f\u043e\u043f\u044b\u0445\u0430\u0445 \u0438, \u043c\u0435\u0441\u0442\u0430\u043c\u0438, \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434, \u0431\u0443\u0434\u0443 \u0440\u0430\u0434, \u0435\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u043f\u043e\u0436\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u0443\u0436\u0430\u0441 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c, \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u043a\u0430 \u043d\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438)      \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/224383\/\"> http:\/\/habrahabr.ru\/post\/224383\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">     \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/901\/b60\/df9\/901b60df921d25dd2a1fc72d894dbd09.png\"\/><br \/>  <i>\u0418\u043b\u0438 \u043a\u0430\u043a \u044f \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u0431\u043e\u044f\u0442\u044c\u0441\u044f \u0438 \u043f\u043e\u043b\u044e\u0431\u0438\u043b \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440<\/i><\/p>\n<p>  \u041e\u0434\u043d\u0430\u0436\u0434\u044b \u043b\u0435\u0442\u043e\u043c, \u044f \u0443\u0441\u0442\u0440\u043e\u0438\u043b\u0441\u044f \u0432 \u0440\u043e\u0434\u043d\u043e\u043c \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u043d\u0430\u0448\u0438\u043c \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u043c (\u0437\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u0410\u043b\u0435\u043a\u0441\u0435\u0439!), \u044f \u0443\u0437\u043d\u0430\u043b, \u0447\u0442\u043e \u0447\u0438\u043f\u044b \u0441\u043f\u0438\u043b\u0438\u0432\u0430\u044e\u0442, \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0432\u043e\u0440\u0443\u044e\u0442, \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0438 \u043a\u0438\u0434\u0430\u044e\u0442 \u0438 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u043a\u043b\u043e\u043d\u0430 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0438 \u2014 \u043b\u0438\u0448\u044c \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0437\u0430\u0434\u0430\u0432\u0438\u0442\u044c \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0441\u043e\u043a\u0438\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c. \u041f\u0440\u0438 \u0432\u0441\u0435\u043c \u044d\u0442\u043e\u043c, \u0432 \u043f\u0430\u0440\u0430\u043d\u043e\u0439\u044e \u0432\u043f\u0430\u0434\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0432\u0440\u044f\u0434 \u043b\u0438 \u0437\u0430\u0445\u043e\u0442\u044f\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 \u0436\u0435\u043b\u0435\u0437\u043a\u0430\u043c\u0438 \u0432 \u043e\u0448\u0435\u0439\u043d\u0438\u043a\u0430\u0445 \u0441\u043e \u0432\u0437\u0440\u044b\u0432\u0447\u0430\u0442\u043a\u043e\u0439. <\/p>\n<p>  \u0425\u043e\u0440\u043e\u0448\u0430\u044f \u043c\u0435\u0440\u0430 \u0437\u0430\u0449\u0438\u0442\u044b \u2014 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f. \u041a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0435 \u043a\u043b\u043e\u043d\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u043c\u0438\u0440\u0430\u044e\u0442 \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438, \u0430 \u043b\u043e\u044f\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u043d\u0430\u0448\u0443 \u043b\u044e\u0431\u043e\u0432\u044c, \u0437\u0430\u0431\u043e\u0442\u0443 \u0438 \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u0420\u043e\u0431\u0438\u043d \u0413\u0443\u0434\u044b \u043f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u0435, \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0434\u043e\u0441\u0442\u0430\u043d\u0443\u0442 \u0441\u0432\u043e\u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b, HEX-\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u044b \u0438 \u043d\u0430\u0447\u043d\u0443\u0442 \u043a\u043e\u0432\u044b\u0440\u044f\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0441 \u0446\u0435\u043b\u044c\u044e \u0443\u0431\u043b\u0430\u0436\u0435\u043d\u0438\u044f \u0440\u0443\u0441\u0441\u043a\u043e-\u043a\u0438\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430.<\/p>\n<p>  \u0425\u043e\u0442\u044c \u0443 \u043d\u0430\u0441 \u0438 \u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043c\u0435\u0440 \u0437\u0430\u0449\u0438\u0442\u044b, \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e: \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u044d\u0442\u0438\u043c \u043d\u0430\u0434\u043e, \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f. \u041f\u043e\u0433\u0443\u0433\u043b\u0435\u043d\u043e \u2014 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e, \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u043e \u2014 \u0441\u0434\u0435\u043b\u0430\u043d\u043e. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0443\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0435 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 1 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442 \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 \u2014 \u044d\u0442\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e. \u041c\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430, \u043a\u043e\u0434\u0430 \u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u044e\u0440\u043f\u0440\u0438\u0437 \u0434\u043b\u044f \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439 \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0436\u0435\u043b\u0435\u0437\u0430.   <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-224383","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/224383","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=224383"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/224383\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=224383"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=224383"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=224383"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}