回答:
パスワード(PIN)を暗号化したくない- ハッシュしたい。誰かがパスワードを入力すると、そのパスワードをハッシュし、そのハッシュを保存されているハッシュと比較します。この方法の利点(30年以上使用されています)は、誰かがソースとハッシュを取得しても、十分に強力なハッシュ関数を選択している限り、ハッシュに一致するPINを判別できないことです。
暗号化を自分で実装するのではなく、他の誰かのライブラリ、特に大規模なコミュニティによってテストされているオープンな実装を持つライブラリを使用したいとします。暗号化は難しく、テストは難しく、暗号化のテストは非常に難しいので、他の誰かにやってもらいましょう。
GPLv3でライセンスされているAVR暗号ライブラリをチェックアウトする必要があります。AVR用のSkeinの実装もあります。
Hristosが投稿したそのリンクは、おそらく役に立つかもしれませんが、確かに「暗号化」としてカウントされません。それは本当に「難読化」だけです。
数学を知っている人であっても、適切な暗号化は悪名高いことで有名です。
元の投稿への応答-誰かがEEPromのPINにアクセスできるようにする攻撃方法は何ですか?確かに彼らがあなたの電子機器にそれを持っているなら、彼らは単に「赤いワイヤーを切り取って」ドアを開けることができますか?
どういうわけか、ドアを開くための十分なアクセス権がなくても攻撃者がEEPromの内容を手に入れることができるシステムがある場合、おそらくそれを再設計する必要があります。あなたは Unixパスワードハッシュに似た一方向ハッシュ関数を見ることができます-そのようにしてEEPROMは復号化キーを含む必要がありません-問題はPINの検索スペースが非常に小さいことです-ハッシュされたバージョンのPIN、可能な限りすべての10,000個のPINをすぐに試すことができます。現代風のラップトップはすべて数秒で実行できると思います。
ここで簡単にアルドゥイーノに移植することができるCにおける単純encriptionする方法です。これは、arduinoの限られたリソースを使用してデータを暗号化する最も簡単な方法のようです。
-編集-キーをプログラムの外に出すために、PINの半分をキーにすることができます。つまり、プログラムはPINの半分のキーを使用して、EEPromに保存されている暗号化された1/2 PINを復号化します。EEPromからの復号化された鍵が、鍵ではないPINの部分と一致する場合、ドアのロックが解除されます。これは、侵入者がドアを破壊したり、Arduinoを再プログラムしたりできない状況でのみ機能します。
別の質問をしている間は質問に答えないのが嫌ですが...
デバイスが改ざん防止されていない理由はありますか?あなたが心配しているような改ざんの種類を検出するために「ベンチ上」に実装されたネジ穴のプッシュボタンスイッチを見たことがあります。次に、ブタンマイクロトーチを搭載した子供が登場し、ネジを緩めたり、チップに損傷を与えたりすることなくチップを取得できます。周辺光および/または音。カバーが外れると、昼と夜でかなり異なります。
その場合は、公開された部分が暗号化をより簡単に実装できるものと通信する2つの部分からなるシステムにする必要があります。さらに、トーチを持つ子供のためのチェックサム(ヘルプ)アカウント。
私はあなたがドライバーにハンマーであることを求めていると思います。
これらのコメントは本当に注目されています。暗号化について学ぼうと試みても何も問題はありませんが、これはそのようなことを学ぶのに本当に良いプロジェクトではありません。あなたは本当に優れた教科書とコンピューターを望んでいます。
暗号化がどのように機能し、何に対抗しているのかをよりよく理解するには、Handbook of Applied Cryptographyが優れており、無料です。
プロジェクトを保護したいだけの場合、これは非効率的な方法です。暗号に興味があるなら、この本とコンピューターから始めてください。