PCB設計を簡単にリバースエンジニアリングし、マイクロコントローラーから.hexファイルを抽出できる中国企業がたくさんあるため(セキュアフラッシュ)、組み込み開発者は製品にさらに保護を追加する必要があります。私の場合、私はSTM32F103を使用しており、IPを保護するためにPCBに暗号IC ATSHA204A を追加したいと考えています。これにより、私は期待しています。 MCUから.hexを取り出してボードのクローンを作成できたとしても、PCB上の暗号チップを認識できない場合はhexファイルは機能しません。
この暗号ICには、一意のシリアル番号があります。製造中に書かれたもので、いつでも読むことができます。また、秘密データを保持するための安全な領域、乱数を生成してI2Cまたは1線式でホストに送信する機能、特定の文字列のSHA-256ハッシュを計算する機能などの機能もあります。
私は認証の主題についての初心者なので、これをどのように扱うべきかを理解しようとしています。データシートを読んで理解したところ、ワークフローは次のようになります。
暗号ICのパーソナライズ:
-
暗号の安全な領域チップは、ホスト(私の場合はSTM32F103)によって、各製品のランダムな秘密鍵が1回だけ満たされます。
-
秘密鍵はホストフラッシュにも存在しますメモリ。
ボードの認証(私の理解では、おそらく間違っています):
-
ホストが乱数を要求します暗号ICから。次に、ホストは秘密鍵と乱数(ノンス?)を使用して連結文字列を生成し、そのSHA-256ハッシュを計算します。
-
これで、ホストはランダムキーをcrypto-ICに戻し、そこからcrypto-IC内の秘密鍵と同じ文字列を生成し、そのSHA-256ハッシュを計算することを期待します。
-
Crypto-ICは計算されたハッシュをホストに送り返し、ホストはハッシュを比較します。
-
ハッシュが一致する場合は、検証します。そうでない場合、ホストは作業を拒否します。
ワークフローはおそらく間違っていますが、主なアイデアはそれに近いものでなければなりません。誰かがこれを説明できますか?
回答
ワークフローはおそらく間違っていますが、主なアイデアは次のとおりです。それに近いものです。
いいえ、これは基本的に役に立ちません。たとえば、暗号ICを使用しての信頼性を検証する場合は問題ありません。アドオンデバイス(たとえば、カートリッジが同じ会社によって製造されたことを確認するプリンタ)。
"<なので、 役に立ちません。 / div>動作を拒否"誰かがファームウェアのマシンコードを持っている場合は飛ばない:逆アセンブルされたマシンコードでチェックを見つけることは通常 ではありません>難しい。次に、"ジャンプを「停止して何もしない」"に置き換えるのと同じくらい"ジャンプして「開始」便利な機能の “";通常、これにはバイトの変更が含まれます。
ファームウェアの重要な部分を永続ストレージ(通常はMCUの組み込みフラッシュ)で暗号化する必要があります。暗号チップを使用するブートローダーのみメインファームウェアを復号化することは暗号化されないままになります。起動時に、ブートローダーはファームウェアをRAMに復号化します。
そこでの小さな問題:ハードウェアに関してはかなり賢い必要があります。 MCUと暗号ICの間にロジックアナライザを接続し、復号化されたバイトをスニッフィングするだけです。
ものを復号化する際にメモリ内を乱暴に飛び回ることで物事を曖昧にする回避策があります。問題は、何もないことです。その秘密は、マシンコードからジャンプがどのように行われるかを理解するのに少し手間がかかることです。 (そして、MCUが何らかのピンを介してRAM全体をストリームアウトするようにする単一のマシンコードをそのバスに挿入することに成功した場合、それもゲームオーバーです。どこを知っているかは重要ではありません。そのコードはRAMに格納されます。後でダンプに表示されます。重要なのは、ある時点で実行されることだけです。)
つまり、ファームウェアを本当に考えている場合は、商業的に興味深い (人々はそれを非常に過大評価しています!消費者向けデバイスや産業用制御など、主にファームウェアではないものについては、通常、すべての部品を調達して構築するのは困難です。同じ/類似のデバイスは元のデバイスよりも安価であり、ファームウェアを完全に書き直すのはそれと比較して簡単なことがよくあります)、唯一のチャンスは秘密保持、暗号化されたストレージ、安全な実行を統合することです(RAMのダンプは不可能です)。
それを行うマイクロコンピュータがあります。それらは通常、少し高価です。しかし、ご想像のとおり、たとえば、ファームウェアを認証する必要のある防衛環境にいる場合は、改ざんすることはできません。
任天堂は、誰にもファームウェアを読み取らせたり、ファームウェアを変更させたりしないという金銭的インセンティブが強いデバイスを製造しています。
任天堂がライセンスを取得していないソフトウェアをコンソールで実行できないことは、ビジネスモデルにとって重要です。したがって、ゲームの署名のチェックを回避できないことが最も重要であり、それがNintendoSwitchが複数の保護層で全面的に機能する理由です。ご想像のとおり、これは保証ではありません。それを回避する方法を見つけたのは、単に愛好家(犯罪/商業的関心のある人でさえも!)でした。
しかし、1つのことに気付くでしょう。完璧にするのが難しいからといって、デバイスのクローンを作成するのが難しくなるだけの価値がないというわけではありません。私の謙虚な経験では、クローン作成者は通常、降伏します。デバイスをコピーするためにデバイスがどのように機能するかを理解する必要があるとすぐに、そうしないと、多かれ少なかれあなたの仕事をすることができるエンジニアがいる立場になり、それらのエンジニアは通常、いくつかの偽造ラボ。したがって、良い抑止力は、暗号化されたファームウェアをフラッシュに入れることです。これは完璧ではありませんが、ロジックアナライザーを取り出して、数週間かけてリバースエンジニアリングを行う必要があります。 into-RAM復号化プロトコルは、コピーできるものを 取得するためだけに、財務リスクが高すぎると考えて、
コメント
- "人々はそれを大いに過大評価しています"しかし、人々はリバースエンジニアリングのコストを非常に過大評価しています。
- すばらしい回答をありがとう、十分な評判がないことを認めることはできません。ええ、' 100%安全にすることは基本的に不可能ですが、0.3ドルの暗号チップを使用して非常に単純なセキュリティ対策を追加すると、リバースエンジニアリングのコストが3桁の$からセキュリティが十分に巧妙に設計されている場合は、必要な時間を数日から数か月に増やしながら、おそらく5桁です。そして、それはハッカーを撃退する可能性があります(製品の経済的可能性に応じて)"興味深い部分"メインファームウェアの。
- I '見積もりを"に縮小します。時間を1時間からおそらく数日"であり、どちらの場合も基本的にコストは関係ありません。費用は"基本的に無料です" 'が電子ツールを嘘をついた人は誰でもとにかく、そうでない場合でも、200€とラップトップを追加すると、妥当なスタートが切れます。
- それでは、あきらめて保護をまったく使用しないでください。 🙂
- @NotReallyaMaster that 'はあなた次第です。 'その質問に対する回答の最後の段落全体を捧げました。