IoTデバイス間の通信のためのデータ暗号化(LORAを介して表されます)。
注意
このリポジトリで提供されるコードと資料は、教育目的のみを目的としており、生産で使用することは安全ではないことに注意してください。
注記
このプロジェクトで使用する開発キットは、Arduino UNOで、このプロジェクトではEBYTE E32-433T20Dです。
背景
このプロジェクトで使用するアルゴリズム
貢献者
モノのインターネット(IoT)の領域では、デバイス間の安全な通信が最重要です。 LORA(長距離)テクノロジーは、長距離の低電力通信のための堅牢なソリューションを提供し、IoTアプリケーションに最適です。ただし、低データレートや限られたペイロードサイズなど、LORAの固有の制限は、パフォーマンスを損なうことなくデータセキュリティを確保するために、軽量暗号化アルゴリズムを使用する必要があります。
このプロジェクトは、LORA通信に適したデータ暗号化技術を実装および実証することを目的としています。シンプルさと効率のために、2つの古典的な暗号化アルゴリズム、シーザー暗号とヴィーネール暗号を選択しました。これらのアルゴリズムは、基本的なレベルのセキュリティを提供し、リソースの制約が懸念される教育目的や軽量アプリケーションに適しています。
シーザー暗号は、平文内の各文字が一定数の場所をアルファベットの下または上に移動する代替暗号です。一方、VigenèreCipherは、キーワードを使用してプレーンテキストの各文字のシフトを決定するより複雑な多目的置換暗号です。このプロジェクトでは、両方のアルゴリズムが実装されており、暗号化と復号化プロセスを紹介します。
LORAの伝達の制限、時間の制限、軽量暗号化アルゴリズムの必要性があるため、Caesar CipherとVigenère暗号アルゴリズムを使用することを選択します。
git clone https://github.com/l1ttled1no/LoRaEncryption注記
Caesar暗号のシフトは、main.cppファイルで変更できます。 vigenèrecipherのキーは、main.cppファイルで変更できます。
まず、メイン実行可能ファイルを構築します。
g++ -Ilib -o main main.cpp src/ * .cpp次に、パラメーターで実行可能ファイルを実行します。
./main [input_string]例えば:
> ./main hello world
Input: hello world
--------------Caesar Algorithm--------------
Original text: hello world
Encrypted text: rovvy*"y|vn
Decrypted text: hello world
--------------Vigenere Algorithm--------------
Original text: hello world
Encrypted text: Uvaae!aQ
Decrypted text: hello world
>
注記
文字列には、32〜126のASCII範囲内のスペースと特殊文字を持つことができます。
@l1ttled1no(メインの貢献者)。