2012-04-26 4 views
2

私はarduinoでプロジェクトを書いていますが、私はconst char配列にパスワードを保存しています。このパスワードはコードに書かれており、.oファイルと.hexファイルにアクセスできる悪意のある読者からパスワードを隠したいと思っています。パスワードを.oファイルまたは.hexファイルから読み込まないようにします

誰もそれを隠す方法を知っていますか?

トリッキーな部分はあなたのために、それが何でありません、私は出回っ代わりのconst char配列のconstのバイト配列に格納することでしようと試みたが、それは私の問題を解決しているようだしない...

+0

配列はほとんど常に連続したバイトとして格納されるので、pwの文字は、あなたのやり方にかかわらず、非常に近い/連続することになります。その間に定義された他の変数で個々の文字の周りにそれらを広げ、コード内でpw文字列をアセンブルし、xorの難読化やその他のもののようなものを追加する必要があります。弾丸ではありませんが、あなたの基本的なスクリプトの児童を止めるでしょう。 –

+4

最終的には、パスワードはファイル内にあります。それを見つけようとしている誰かが、結局それを見つけることができます。 – Wyzard

+1

@ MarcBデバッガで数分かかると、組み立てられたパスワードが簡単に表示されます。 –

答えて

1

パスワードはEEPROMに保存できます。このパスワードはavrdudeまたはコード内に書き込むことができます。後者の場合、点滅後のある時点でデバイスにパスワードを入力する必要があります。

パスワードは、デバイスに物理的にアクセスできる人は誰でもアクセスできますが、.o.hexファイルにしかアクセスできない人はアクセスできません。

もしArduinoブートローダがavrdudeを通してEEPROMを読み書きできるのかどうか分からないが、もしそうでなければEEPROMにパスワードを書き込んだ後、あなたの実際のスケッチだけで上書きするArduino初期のスケッチを書くことができるそれを読む。

+0

ありがとう!やってみます。 – uDalillu

3

パスワードを使用する必要があります(そして私はあなたが起動するたびに鍵を入力することはできないと仮定しています)。あなたのコードにはロックとそれを開くための鍵の両方が含まれます。本当の疑問は、これがどれくらいうまくいかなければならないかということです。

本当に良いとはいえない場合は、パスワードを何らかの値でxorし、ソースのパスワードとして使用することができます。

何か簡単ではない(そしてarduinoに合ってほしい)場合は、秘密鍵でパスワードを署名することができます。これは、あなたがそれを使用する必要があるときに同じ値でxorし、あなたの公開鍵をソースに保存してください。パスワードを解読するアルゴリズムは、単純なxorよりもかなり複雑です(したがって、見つけるのは難しいです)。

平文パスワードを使用する必要がある自己完結型システムは、侵害されません。

+0

と二重のエントリだと思うが、私はシステム公開鍵と秘密鍵を使用すると、多くのSRAMが高価になることがあります... – uDalillu

1

パスワードをハッシュしてハッシュを保存するだけです。ユーザーの入力パスワードをハッシュして試してみてください。

ここで、パスワードを別のサービスに保存する必要があり、APIでプレーンパスワードを使用することはできませんが、選択肢はほとんどありません。

+0

ありがとう、問題は解決されましたが、私はあなたの興味に感謝します – uDalillu

関連する問題