11

Cでバイト配列を暗号化するための推奨事項といくつかの参照コードを探しています。問題は、他のルーチンと一緒に1Kバイトのメモリに収まらなければならず、MCUがわずか8MHzであるということです。したがって、サイズと速度が重要です。Rijndaelをチェックしましたが、MCU用の巨大なテーブルがあります。基本的に、PCでIntel hex形式を暗号化し、おそらくデータ領域のみを暗号化してから、MCUで復号化します。

動的メモリ割り当てルーチンを使用することは望ましくありません。

私のグーグル検索は、ライブラリを使用して、C#の実装にすべてをもたらします。

アップデート:

復号化側の制約:

RAM: 512 byte
MAX code size: 512-1024 words
CPU: 8 bit, 8MHz
4

4 に答える 4

14

組み込みの世界で使用されているのを見た非常に単純な暗号化アルゴリズムはXXTEAです

于 2013-01-03T10:21:17.310 に答える
4

Rijndaelのすべてのテーブルは、GF2の単純な操作として定義されています。そういうものとして、私はそれが例えば書くことが可能であると言いたくなるでしょう。1kの128ビットAES。

参照:https ://electronics.stackexchange.com/questions/13275/smallest-aes-implementation-for-microcontrollers

ただし、選択したアルゴリズムは、セキュリティのマイナーな要素です。キーがバイナリとともに配布されている場合。その場合、元のバイナリを公開する最も簡単なメカニズムは、エミュレータを介してコードを実行し、メモリを保存することです。

于 2013-01-03T15:42:58.550 に答える
0

私が呼んだXTEAの私のモフィファイドバージョンを見てくださいSimple Tea

#include <avr/io.h>
#include "simple_tea.h"

uint8_t secret_data[] = {0xFE, 0x67};
SimpleTEA<sizeof(secret_data) / 2> tea;

int main()
{

    unsigned int rounds{16};
    uint8_t key[] = {0x45, 0x74, 0x32, 0x11, 0x98, 0x94, 0xAB, 0xCF, 0x90, 0xAE, 0xBA, 0xDC, 0x06, 0x16, 0x81, 0x95};

    secret_data[0] = PINB;
    tea.encrypt(rounds, secret_data, key);
    if (secret_data[0] & (PINB))
    {
        PORTC = 0x05;
    }
    secret_data[1] = PINB & (1 << 2);
    tea.decrypt(rounds, secret_data, key);
    if (secret_data[0] & (PINB))
    {
        PORTC = 0x50;
    }
}

AVRで<250バイトのオペコードを生成します(ここでのsは、コンパイラが完全に最適化ifするのを避けるためにのみ必要です):encryptdecrypt

➜  Encryption git:(master) ✗ avr-gcc -std=c++17  -Os -mmcu=atmega328p  main.cpp -o main
➜  Encryption git:(master) ✗ avr-size main                                             
   text    data     bss     dec     hex filename
    214       2       1     217      d9 main
➜  Encryption git:(master) ✗ avr-nm --size-sort -C -r --radix=d main
00000044 T main
00000022 T __do_copy_data
00000016 T __do_clear_bss
00000002 D secret_data
00000001 B tea
于 2020-06-06T08:21:59.177 に答える
-1

楕円曲線暗号(ECC)は、強力な暗号を小さなプロセッサにもたらすことを目的とした新しいものであることを読みました。

Google of:
楕円曲線暗号マイクロコントローラー
は、リストの一番上にある8ビットマイクロの実装についての議論をもたらします。

ただし、StackExchangeへの移行を検討してください。たとえば、これは便利な場合があります。

Stack Exchange Crypto-4〜8ビットマイクロコントローラーの暗号化の種類

于 2013-01-05T09:10:54.920 に答える