私はarduinoでプロジェクトを書いていて、パスワードをconst char配列に保存しています。このパスワードはコードに記述されており、.o ファイルと .hex ファイルにアクセスできる悪意のあるリーダーからパスワードを隠したいと考えています。
非表示にする方法を知っている人はいますか?
const char 配列ではなく const バイト配列に格納しようとしましたが、問題が解決しないようです...
私はarduinoでプロジェクトを書いていて、パスワードをconst char配列に保存しています。このパスワードはコードに記述されており、.o ファイルと .hex ファイルにアクセスできる悪意のあるリーダーからパスワードを隠したいと考えています。
非表示にする方法を知っている人はいますか?
const char 配列ではなく const バイト配列に格納しようとしましたが、問題が解決しないようです...
トリッキーな部分は、パスワードを使用する必要があるため (起動するたびにキーを入力することはできないと想定しています)、コードにはロックと開くためのキーの両方が含まれることです。それ。本当の問題は、これがどれほど良いものでなければならないかということです。
本当に良いものである必要がない場合は、パスワードを何らかの値で xor し、それをソースのパスワードとして使用できます。次に、それを使用する必要があるときに同じ値で xor し、ta-da...
もっと簡単なものが必要な場合 (および arduino がそれに適合する場合)、秘密鍵でパスワードに署名し、公開鍵をソースに保存することができます。パスワードの署名を解除するアルゴリズムは、単純な xor よりもかなり複雑です (そのため、見つけるのが難しくなります)。
いずれにせよ、プレーンテキストのパスワードを使用する必要がある自己完結型のシステムは危険にさらされます。
パスワードをハッシュして、ハッシュを保存するだけです。ユーザー入力パスワードをハッシュして一致させてみてください。
現在、別のサービスのパスワードを保存する必要があり、そのAPIでプレーンパスワードを使用せざるを得ない場合、可能な選択肢はほとんどありません。
パスワードをEEPROMに保存できます。これは、 avrdude またはコード内に書き込むことができます。後者の場合、フラッシュ後のある時点でデバイスにパスワードを提供する必要があります。
.o
パスワードは、デバイスに物理的にアクセスできる人なら誰でもアクセスできますが、.hex
ファイルにしかアクセスできない人はアクセスできません。
Arduino ブートローダが avrdude を介して EEPROM を読み書きできるかどうかはわかりませんが、そうでない場合は、パスワードを EEPROM に書き込む最初の Arduino スケッチを作成し、後でそれを読み取るだけの実際のスケッチで上書きすることができます。