Arduinoの暗号化ライブラリ


9

Arduinoを使用してキーパッドを読み取り、キーパッドのPIN入力時に電気ストライクを開きます。このスケッチでは、PROMをEEPromに保存するために、ある種の軽量の暗号化を使用したいと思いました。そのようなライブラリを知っている人はいますか?TwoFishを使用することで可能になると聞いています。

回答:


12

パスワード(PIN)を暗号化したくない- ハッシュしたい。誰かがパスワードを入力すると、そのパスワードをハッシュし、そのハッシュを保存されているハッシュと比較します。この方法の利点(30年以上使用されています)は、誰かがソースとハッシュを取得しても、十分に強力なハッシュ関数を選択している限り、ハッシュに一致するPINを判別できないことです。

暗号化を自分で実装するのではなく、他の誰かのライブラリ、特に大規模なコミュニティによってテストされているオープンな実装を持つライブラリを使用したいとします。暗号化は難しく、テストは難しく、暗号化のテストは非常に難しいので、他の誰かにやってもらいましょう。

GPLv3でライセンスされているAVR暗号ライブラリをチェックアウトする必要があります。AVR用Skeinの実装もあります。


1
賛成-良いリソースであり、これを質問への回答として設定する必要があります。
ルー、

9

Hristosが投稿したそのリンクは、おそらく役に立つかもしれませんが、確かに「暗号化」としてカウントされません。それは本当に「難読化」だけです。

数学を知っている人であっても、適切な暗号化は悪名高いことで有名です。

元の投稿への応答-誰かがEEPromのPINにアクセスできるようにする攻撃方法は何ですか?確かに彼らがあなたの電子機器にそれを持っているなら、彼らは単に「赤いワイヤーを切り取って」ドアを開けることができますか?

どういうわけ、ドアを開くための十分なアクセス権がなくても攻撃者がEEPromの内容を手に入れることができるシステムがある場合、おそらくそれを再設計する必要があります。あなた Unixパスワードハッシュに似た一方向ハッシュ関数を見ることができます-そのようにしてEEPROMは復号化キーを含む必要がありません-問題はPINの検索スペースが非常に小さいことです-ハッシュされたバージョンのPIN、可能な限りすべての10,000個のPINをすぐに試すことができます。現代風のラップトップはすべて数秒で実行できると思います。


私は同意し(そして上記で同意しました)、一方向ハッシュは有用であり、システムをプログラミングしている場合は、必要な限りピンを作成できます。たとえば、8桁で100 000 000の組み合わせが得られます。
Amos

1

私が予測する問題は、彼らがあなたのピンを見ることができれば、あなたのピンを暗号化/チェック/復号化するあなたのプログラムも見ることができるということです。さらに、彼らがあなたのチップを持っている場合、彼らはプログラムを変更して、入力されたピンに対して常に肯定的な結果(効果的にチェックをバイパスする)を与えることはできませんか?


1

ユーザーが有効なPINを入力したかどうかを確認するために、暗号化されたPINをどのようにデコードする予定ですか?復号化キーを保存する必要があります...その時点で、攻撃者がeepromを読み取ることができる場合は、フラッシュを読み取って暗号化キーを見つけることもできます。基本的に、暗号化全体を完全に無用にします。また、他の人が言ったように、もし彼がすでにあなたのチップを読む能力を持っているなら、彼は単に新しいプログラムを書くことができるでしょう。ドアを開けるだけの方がはるかに簡単ですが、チップをハッキングしようとする問題に誰もが行くことはないでしょう。


1

ここで簡単にアルドゥイーノに移植することができるCにおける単純encriptionする方法です。これは、arduinoの限られたリソースを使用してデータを暗号化する最も簡単な方法のようです。

-編集-キーをプログラムの外に出すために、PINの半分をキーにすることができます。つまり、プログラムはPINの半分のキーを使用して、EEPromに保存されている暗号化された1/2 PINを復号化します。EEPromからの復号化された鍵が、鍵ではないPINの部分と一致する場合、ドアのロックが解除されます。これは、侵入者がドアを破壊したり、Arduinoを再プログラムしたりできない状況でのみ機能します。


ただし、チップにアクセスできない場合は、ピンを暗号化する必要はありません。
Amos

1

別の質問をしている間は質問に答えないのが嫌ですが...

デバイスが改ざん防止されていない理由はありますか?あなたが心配しているような改ざんの種類を検出するために「ベンチ上」に実装されたネジ穴のプッシュボタンスイッチを見たことがあります。次に、ブタンマイクロトーチを搭載した子供が登場し、ネジを緩めたり、チップに損傷を与えたりすることなくチップを取得できます。周辺光および/または音。カバーが外れると、昼と夜でかなり異なります。

その場合は、公開された部分が暗号化をより簡単に実装できるものと通信する2つの部分からなるシステムにする必要があります。さらに、トーチを持つ子供のためのチェックサム(ヘルプ)アカウント。

私はあなたがドライバーにハンマーであることを求めていると思います。


1

これらのコメントは本当に注目されています。暗号化について学ぼうと試みても何も問題はありませんが、これはそのようなことを学ぶのに本当に良いプロジェクトではありません。あなたは本当に優れた教科書とコンピューターを望んでいます。

暗号化がどのように機能し、何に対抗しているのかをよりよく理解するには、Handbook of Applied Cryptographyが優れており、無料です。

プロジェクトを保護したいだけの場合、これは非効率的な方法です。暗号に興味があるなら、この本とコンピューターから始めてください。


私は暗号を理解し、ブルース・シュナイアーを読み、20年以上プログラミングを行ってきました。本当の脅威はドアを壊し、あらゆる種類のArduinoコントローラーを通り過ぎることだけだと理解しています。回避できる場合は、EEPromにクリアテキストのPINを使用してインストールすることはできません。フライ

クリアテキストのPINの保存を避けたい場合は、この役割と同じくらい効果的な単純な難読化方法がいくつもあります。上記のレスポンダは、暗号化が何を実行し、何を実行しないかを理解する手助けをしようとするだけでした。これがAESライブラリです:hoozi.com/Articles/AESEncryption.htm また、20年間プログラミングしてきたからといって、暗号化を「理解」しているわけではありません。全く違う分野です。20年の自動車整備士は熟練した人ですが、彼が最初からCANバスを設計することを期待しません。態度を確認してください。
ルー、

なんてこった…20年のコーディングとランタイムデータを暗号化することは可能だと思いますか????? 終了する。
MickLH 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.