ルネサスのFlashメモリ内蔵マイコン R8C/Tinyシリーズには(※)「標準シリアル入出力モード」という、シリアルインタフェースでFlashを書き換える機能があるが、これに、IDチェックというプロテクト機能がある。
※というかM16Cファミリの機能、なんだろうけど。
Flash中の特定の場所にある(割り込みベクタ領域を流用している)7バイトに、ユーザが決めた数値を書き込んでおく、というものである。
「標準シリアル入出力モード」では、Flashの読み書き消去の前に、まずこの7バイトの暗証番号を送信して、合致しないと、読み書き消去が許可されない。
このIDをプルートフォースアタックで破ってみようと考えた。
えー、まあ、正直に言いますと、手元にIDを忘れて使えなくなったチップがあるのです(笑)。
まあ56bitもあるわけだから単純な総当たりは現実的でなく、辞書方式等ならもしかしたらなんとかなるかな、と思ったのだ。
で、実験してみたのだが、以下のことがわかった。
■いったんID照合不一致が発生すると、次に正しいIDを送っても受け付けられない。
■なんと、リセットしてもダメで、電源を再投入するまで受け付けられない。
というわけで、さすがに簡単にはプルートフォースアタックできないのだった…。
この実験をするキッカケになった、IDを忘れて使えなくなったチップも、実は何回もリセットしながらいろいろIDを試していたために受け付けられておらず、てっきり忘れたと思いこんでいただけでして、無事消すことができました。まあ、実験してよかった、か。
コメント
私もこの件ではまりましたが、この記事を読んで電源入れなおしで対応したら
復活しました :-)ありがとうございます。
正確には書き込み中に失敗してIDが00 allになっていた様
だったのですが、FF allの後にRESETして00 allでもだめだったのですが、
電源入れなおし直後に00 allで書き込み可能になりました。