少しコンテキスト
AWS IoTでMQTT を使用しているため、認証とセキュリティにX.509証明書を使用することが期待されています。Amazonには、証明書を保護する方法についてのガイダンスが少しあるので、ここで引用します。
証明書を使用すると、非対称鍵をデバイスで使用できます。つまり、機密性の高い暗号化マテリアルがデバイスから出ることを許可せずに、秘密キーをデバイスの安全なストレージに書き込むことができます。
現在STM32の読み出し保護(RDP)を使用しているため、最も決定的な攻撃者以外のすべての攻撃者は、現在のスキームで証明書にアクセスできなくなります。
グローバルな読み出し保護により、組み込みのファームウェアコード(フラッシュメモリにプリロードされている)は、リバースエンジニアリング、デバッグツールを使用したダンプ、またはその他の侵入攻撃の手段から保護できます。
- レベル0-保護なし(デフォルト)
- レベル1-フラッシュメモリは、RAMロードされたコードによるデバッグまたはコードダンプによる読み取りから保護されます。
- レベル2-すべてのデバッグ機能が無効になります
外部ストレージは安全ですか?
それはおそらくないとして、セキュア。クライアントの秘密鍵が盗まれた場合、攻撃者はデバイスから送信されたように見えるデータを送信しますが、実際にはそうではありません。送信するデータは明確ではありませんが、信頼できないデータはセキュリティリスクになる可能性があります。
非公開にするにはどのビットが必要ですか?
AWS IoTでデバイス証明書を作成すると、次のような画像が表示されます。
AWS IoTドキュメントの「デバイス証明書の作成とアクティブ化」ページの画像。
秘密鍵は、あなたが本当に保持する必要があるものです... プライベート、そして可能であれば、確実に読み取り保護されたメモリに保存する必要があります。公開鍵と証明書は共有されるように設計されているため、スペースが足りなくなった場合は、それらを安全に外部ストレージに移動できます。ページでもう少しコンテキストを取得できますSSL / TLSはどのように機能しますか?Information Security Stack ExchangeとWikipediaの公開鍵暗号法で。秘密鍵を秘密にする必要がある理由を説明するためにこの画像を含めなかったとしたら、私はあなたに害を及ぼすでしょう。
。
パブリックドメインにリリースされたWikipediaの画像。
デバイスの公開キーは、AWS IoTがデバイスに送信するメッセージに署名するために使用するものです(ただし、誰がメッセージを送信しているかは証明しません)。ですから、公開鍵を盗んだとしても、それが秘密であることを意図しているわけではないので、それは大きな災害ではありません。
秘密鍵は、攻撃者がこれを盗む場合、それは少し大きな問題がありますので、お使いのデバイスの用途は、メッセージを復号化するものです。
また、攻撃者がRootCA証明書を盗んだ場合にどうなるかについても質問しました。誰かがAWS IoTの秘密鍵を盗んだ場合、それは悲惨なことになりますが、デバイスのRootCA証明書はそれではありません。RootCA.crt
Amazonはあなたを与えることで、完全にパブリック、および目的は、あなたがどのような方法(AWSのIoTのサーバーである可能性が最も高いのman-in-the-middleふり)に攻撃されていないことを確認できるようにということです。
ハッキングされたデバイスはどのような損害を与える可能性がありますか?
盗まれたデバイスは、ポリシーに記載されているアクションのみを実行できます。最小特権の原則に従うようにしてください。絶対に必要な特権だけをデバイスに付与するので、最悪の事態が発生した場合でも、大混乱をもたらすことはできません。あなたの特定のケースについて:
データプロセッサに接続されている2つのチャネル(名前とデータフィードチャネル)のみにパブリッシュすることが許可されています。
それは良い。すべての攻撃は、デバイスが公開できる2つのMQTTトピックのみに分離される必要があるため、大規模な害を引き起こしません。