消費者志向のスマートホーム環境のリソースに制約のあるIoTデバイスに適したパスワードハッシュアルゴリズムとその他の暗号化ハッシュ(scrypt、bcrypt、PBKDF2、MD5、SHA-256など)はどれですか。
超低消費電力のCPUデバイス(ほとんどの組み込みデバイス)から、基本的なRaspberry Piと同等の処理能力を持つデバイスまでの範囲を調べています。これには、ARM Cortex M3/A8/A9プロセッサ、および低コストの中国SoC(ARM 926を使用するHiSiliconなど)が含まれます。
リソースに制約のあるデバイスに適したパスワードハッシュアルゴリズムはありません。これは、パスワードハッシュ 本質的に低速でなければならない だからです。攻撃者のコンピュータでは低速である必要がありますが、あなたのコンピュータでは許容できないほど低速である必要はありません。しかし、マイクロコントローラーのようにコンピューターが遅い場合、コンピューターで数分かかることは、攻撃者のコンピューターではほんの一瞬です。
IoTデバイスにパスワードを保存しないでください。とにかく、典型的なIoTデバイスにはキーボード入力がないのに、なぜパスワードを保存するのでしょうか?認証が必要な場合は、人間による記憶を目的としたものではない認証トークンを使用します。これにより、パスワードハッシュではなく、単純なハッシュまたは署名の検証であることが確認されます。ユーザーがパスワードで認証する必要がある場合、これは本格的なPC(クラウドまたはオンプレミス)であるコントロールサーバーで発生し、PCはIoTデバイスの認証トークンを生成します。
制約のあるデバイス用の暗号化アルゴリズムを選択することになると、それを考えすぎないでください。非標準アルゴリズムを微調整することの利点は、実際にはわずかなものになる傾向があります。次のような標準アルゴリズムを使用します。
デバイスがたまたまIoT内にあるため、セキュリティのニーズが低下することはありません。 (「ファインダイニングアタック」を聞いたことがありますか?)言い換えれば、セキュリティプロファイルを集約された攻撃面全体に適用する必要があります。そして、もう1つ注意する必要があるのは、IoTデバイスはリークしやすく、更新があるとしてもほとんどないということです。
シュナイアー氏が言ったように、暗号化ハッシュは暗号化の主力です。ソルトなどに手を加えることなく、これらを正しく使用する必要があります。ハッシュは、ほとんどのIoTデバイスにとって、特に正しく行われた場合、おそらくリソースを大量に消費します。
鍵のサイズがはるかに小さいため、IoTでの使用に意味があるのは、明らかに楕円曲線暗号です。確かに、NIST曲線よりも曲線25519をお勧めします。
実際、実際に小さなデバイスの要点に踏み込んだ場合、特に使用可能なストレージが少しある場合は、ワンタイムパッドを使用することが理にかなっている可能性があります。機密性のために適切なOTPを使用する場合、Poly1305は認証に意味があります。または、共有シークレットが認証で使用され始める可能性があります。 es。
IoTは大きな脅威だと思います。デバイスの機能を満たすためにセキュリティを低下させる代わりに、あらゆる段階でセキュリティを確保する必要があります。これは、共有シークレットと強力に生成された(別の場所で作成された)鍵のストレージを意味する場合があります。それ以外の場合、IoTは攻撃者の夢が実現します。
この質問が尋ねられるときはいつでも、答えは「可能な限り遅い」です。遅いコンピュータを使用しているからといって、別の答えは得られません。アルゴリズムは、目的に応じて許容できる限り低速である必要があります。
最も安価なArduinoが2秒かかるため、2ラウンドだけでPBKDF2を実行する場合、それは単にあなたが実行できる最高の方法です。しかし、これは、2マイクロ秒で2ラウンドを実行できる可能性のある攻撃者が、1 000 000回(2秒を2µsで割った値)の攻撃を、防ぐよりも速く実行できることを意味します。あなたの設定は、ユーザーのパスワードをわずかに保護するだけです。
一部のデバイスは特定のアルゴリズムを実行できない場合があるため、それらのアルゴリズムは自動的に除外されます。メモリの硬さ(Argon2、Scryptなど)をあきらめる必要があると、セキュリティが若干低下しますが、致命的ではありません。使用するもの以外以外は、推奨事項は同じです:Argon2、Scrypt、Bcrypt、またはPBKDF2(最高から最悪の順)。前述のように、パラメータは「できるだけ遅い」ものです。さまざまなパラメーターのベンチマークを行い、許容できる最も遅いものを選択する必要があります。
アルゴリズムとパラメーターを選択した後、攻撃者が実行できることと比較することにより、現在のセットアップの安全性を検討する必要があります。それはNSAですか?次に、ASICがあると仮定します。定期的な商業スパイ活動が心配ですか?高価なCPUとGPUのセットを想定します。それはあなたが誰から守りたいかによります。ユーザーのパスワードを適切に保護できないことが判明した場合は、一時的で一意のパスワードを使用するようにユーザーに警告することをお勧めします。あなたが言及するCPUとプラットフォーム(Raspberry Piなど)はすでにかなり頑丈なので、これはおそらく特定の状況では必要ないでしょう。
さまざまなアルゴリズムやパラメータセットの選択に関する詳細については、次の質問を参照してください。