アカウント名:
パスワード:
現在のUSBデバイスは、製造元が作ったファームウェアかどうかを、確認するメッセージ認証コードとか、使っていないのですか?それとも、その確認を回避して書き込めるのだろうか?ファームウェアにコード署名を導入とかあるのかなぁ?
誰か、BadUSB もっと勉強して。
デバイス自身が認証プロセスを持っていなかったのか、ということだったのです。コード署名の検証を安価なUSBデバイスがするのは、難しいかもしれませんがメッセージ認証コードくらいは実装できるかと思ったのです。
メインフレームのデバイスでは、そういう実装をしているものもが昔あった。
TPMだかEFIだかの関連でブートローダ回りの正当性チェックする機構はあるね。そもそもUSBデバイスではファーム更新機能自体無い奴も多いと思うんだけど…ファーム更新機能を正規に持つなら、自己書き換え前に署名検証とかは組み込めるし組み込まれてることも珍しくない。
ハードレベルでの検証機能となると、ソフト的に書き換えが実行されてる前提に基づいて実装される対策なわけだけど、USBデバイスのファームに自己書き換え脆弱性が存在するリスクに対してそこまでのコストを払うかというと…まぁそういうことでは?そこまで警戒する頃には、見た目そっくりで悪意あるファームを持った偽物をソーシャルハックで仕込まれる警戒とかも必要だろう。となるとホスト側とデバイス側えガチガチに相互認証するくらいの領域に足突っ込んできて、そんなの一般用には出てこないだろ…
ぐぐったところだと、USBメモリって中国の業者がその時手に入るフラッシュメモリとかをコントローラと組み合わせ、書き込みツールを使ってパラメータを設定して製造するようです。taobaoなんか見るとメモリ部品以外がすべて実装された基板も売られてます。
しかし実際にはパラメータ設定と言ってもアルゴリズムを変えられたり動作を変えられたりするようで、設定とプログラムに別領域があるというよりはひとつのバイナリにまとめて書き込んでいるのかと思います。であれば、その書き込みツールを使って、パラメータではなく通常はいじらなくてよい、誰も気にしないプログラム部分をいじれば、機能を変えることができるということなのじゃないでしょうか。
コントローラの方でコードプロテクトをかけるくらいはしても当然にも思えますが、何せ8051を未だに新規で製造しているくらいですから、一般人が書き換えることはない、する利益もないと想定して、一切対策されてないということは十分ありえると思いますね。
良質な情報ありがとうございます。
書き込まれたバイナリを比較的安価なメッセージ認証コードのハードウェアでチェックしていなかったのが、不思議だったのです。
昔、メインフレームの周辺機器を設計したことがあって信頼性、安全性には、非常に厳しい環境にいたせいかもしれないが、パソコンのずさんな考え方についていけない。多分、激安な価格でないとパソコンの周辺機器が売れないといった事情があったかもしれないですけど。
個人でパソコンいじってて信頼性ってのを実感することはあまりないですね。高信頼性をうたってる装置ってどうにもロバストさがなくて、私はお膳立てをして環境を整えてやらないとてこでも動かない、こける、みたいなイメージがあります。
コード署名をつけるといっても、チップメーカーはUSBメモリメーカーの正当性を保証できないし、認証基盤なんか作れないですよ。結局コントローラに秘密鍵をつけなければいけないのなら、その時にファームウェアも書き込んでしまえばよいし、その後は書き換え不能にするというほうが、対策として現実的じゃないかと思います。
コード署名で、USBメモリメーカーの正当性まで保証する必要はないと思いますよ。任意の悪党がファームの改竄できなければいい。心配なら、ユーザーは、信頼のUSBメモリメーカー 〇立製作所 とか買えばいいのですから。
コントローラに秘密鍵をつけて、ファームウェアを書き換え可能にすることの問題点が見えないです。知らない人もいるので解説すると、メッセージ認証コードはDES暗号などの秘密鍵を使って計算します。
ファームの改竄の検出方法には2つあります。1つめがコード署名を使う方法。2つめがDES暗号などを使ったメッセージ認証コードです。ご説明の中に証明書ということばがでてくるので、コード署名の方法なのかな?秘密鍵の管理は、チップメーカーは認証局に代行してもらえばいいし、中国のODMメーカはICカードに秘密鍵を入れて管理しておけば、良いように思います。これをできないと決めつけるのは、ちょっと難しいかと。ソフトウェアの世界では、星の数ほどあるソフトハウスが自社のソフトウェアにコード署名してますよ。ファームウェアの世界では、この話と何が違うのか?という
まあ、非公開のはずの仕様が漏れたか、方法が見つけられたかということが今回の発表に繋がるので、仕様を隠すことにはあまり意味がないでしょう。
やはり、人々が単機能で改造・再利用不可能だと思い込んでいたものが、実はプログラマブルだった、というところが問題はないでしょうか。USBメモリは事務処理で持ち込まれたりするもので、購入者と使用者というのも1対1対応ですらないわけです。まったく書き換え不能で、かつできれば内容を検証可能なコントローラを誰かが新しく設計するか、チップメーカー程度の信頼された大手にのみ書き込み可能な制度を作れれば解決するのではないかと思います。
たぶん、誰かが8051ベースではない新しめのCPUでコントローラを作り直し、それには組み立てるメーカーではなくコントローラのメーカーの署名チェックがつくのでしょう。そして、それが数年間かけて広まっていくのでしょう。たぶん。
> まあ、非公開のはずの仕様が漏れたか、方法が見つけられたかということが今回の発表に繋がるので、> 仕様を隠すことにはあまり意味がないでしょう
もしBadUSBが非公開の仕様の漏れを利用したものなら、仕様が漏れることはそんなにないですから脅威ではないでしょう。今後も安価なUSBデバイスでは仕様を隠す方法でいいと思います。
もしBadUSBが非公開の仕様を突破する方法を見つけたのなら、それをどうやって見つけたのかですね。それがわかれば、その方法では見つからないように仕様を変更すればいい。
仕様を隠す方法に意味がないということにはならないように思います。仕様
Security through obscurity has never achieved engineering acceptance as an approach to securing a system [wikipedia.org]The United States National Institute of Standards and Technology (NIST) specifically recommends against security through obscurity [wikipedia.org]
利用者が信頼性を重視するなら〇立製作所のUSBメモリを買えばいいし、価格を重視するなら、安いところから買えばいいのです。
現状の市場構造では日◯製作所がUSBメモリを作るというのは現実的ではないですよ。現実的には彼らにできるのは検証することだけです。業務用USBメモリを、例えば市場価格の1000円増しで販売する…売れると思いますか? そして、買った人はそれ以外のUSBメモリを自社周辺から一掃できますか?
チップメーカーが組み立てメーカーに証明書を発行して、組み立てメーカーは、その証明書でファームに署名をするということでいいような。利用者は、信頼できる組み立てメーカーのデバイスを購入するのです。どの組み立てメーカーが作ったものかは、証明書によって検証できるので大丈夫。
組み立てメーカーというのがそもそも日曜大工なのですよ。しかも、USBメモリというのは他人から受け取るものです。顧客に向かって、あなたの持ってきたUSBメモリは実は怪しい業者のもので、信頼できないので中の書類は受けとりません、などということはできないでしょう。
一番、安いのが、仕様の非公開次が、メッセージ認証コードその次が、コード署名
なんだかバランス感覚が現代と離れているような気がしますが。そもそも仕様を非公開にすれば書き変えられないと思っていたところ、書き換えられてしまった、というのが出発点でもあるわけで。
英語読むのは疲れるのでスキップします。
> 現状の市場構造では日◯製作所がUSBメモリを作るというのは現実的ではないですよ。元日〇製作所社員ですので、その辺のことは、よーくわかってますよ。
> 現実的には彼らにできるのは検証することだけです。彼らは一流の大学を出て優秀だったはずです。それが検証することしかできない人間になるのです。たとえば普通には優秀だから生涯賃金を稼いでしまうわけですが、じっくり無能な人間にしたてあげてリストラすれば、リストラ業者が儲かるわけです。
C言語のスキルいっしょうけんめい磨いていると、雑用やプレゼンなどの仕事をさせられて気がつくと、
TPMを使ったブートローダでは、取り外しができるUBSデバイスの正当性チェックできない。
USBデバイスのファームに自己書き換え脆弱性が存在するリスクを対策しなければ感染してUSBデバイスが悪事をするようになると、コストをけちることないと思う。
安価なUSBデバイスは、わからないが、メッセージ認証コードくらいのハードはたいしたことないと思う。
安全なお店で買ったUSBデバイスを、安全な自宅で利用することは多いがその場合は、ソーシャルハックの心配はない。
相互認証が面倒かどうかではなくて、セキュリティ的な問題があれば、やるしかないのでは。
商業的に一番簡単なのは、8051をやめてARMにしちゃうことでしょう。セキュアブートとかもついてます。
USBメモリは片手か両手で数えるくらいの部品数しか載せませんし、メモリはオンダイでCPUのバスは半導体の外にも出ません。よって暗号アクセラレータのような外部ハードをボード上に追加することはできません。コントローラ+メモリの2チップしかそもそも載っていません。USB 2.0のフラッシュメモリ程度であれば、FelicaのようなIC暗号カードと同じ方向性で、マスクROMを載せてプログラム書き換え不能とし、フラッシュ領域に設定だけを書き込むようにするのが解決策としてよくあるやり方じゃないかと思います。
> 暗号アクセラレータのような外部ハードをボード上に追加することはできません。え、AES 256bitの機能を搭載したUSBメモリってあるのだけど。
USBメモリみたいに、使われ方が既に固まっている場合は、フラッシュ領域にいろいろな機能を実装できるファームウェアを置く必要がないということですね。
#とても参考になる書き込みをしてくださって、よかったと思います。
誤変換なんだろうけど”だんぱ"じゃなくて”たんぱー”(tamper)突っ込む、どつきまわすくらいにとっておけばいい#マルチプルタイタンパーとか
中身ダンプして改変、リストアに耐えるってのも耐タンパー性でいいとおっもう
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
弘法筆を選ばず、アレゲはキーボードを選ぶ -- アレゲ研究家
メッセージ認証コード、使ってなかったのか (スコア:0)
現在のUSBデバイスは、製造元が作ったファームウェアかどうかを、確認するメッセージ認証コードとか、使っていないのですか?
それとも、その確認を回避して書き込めるのだろうか?
ファームウェアにコード署名を導入とかあるのかなぁ?
誰か、BadUSB もっと勉強して。
Re: (スコア:0)
Re: (スコア:0)
デバイス自身が認証プロセスを持っていなかったのか、ということだったのです。
コード署名の検証を安価なUSBデバイスがするのは、難しいかもしれませんが
メッセージ認証コードくらいは実装できるかと思ったのです。
メインフレームのデバイスでは、そういう実装をしているものもが昔あった。
Re:メッセージ認証コード、使ってなかったのか (スコア:0)
TPMだかEFIだかの関連でブートローダ回りの正当性チェックする機構はあるね。
そもそもUSBデバイスではファーム更新機能自体無い奴も多いと思うんだけど…
ファーム更新機能を正規に持つなら、自己書き換え前に署名検証とかは組み込めるし組み込まれてることも珍しくない。
ハードレベルでの検証機能となると、ソフト的に書き換えが実行されてる前提に基づいて実装される対策なわけだけど、
USBデバイスのファームに自己書き換え脆弱性が存在するリスクに対してそこまでのコストを払うかというと…まぁそういうことでは?
そこまで警戒する頃には、見た目そっくりで悪意あるファームを持った偽物をソーシャルハックで仕込まれる警戒とかも必要だろう。
となるとホスト側とデバイス側えガチガチに相互認証するくらいの領域に足突っ込んできて、そんなの一般用には出てこないだろ…
Re:メッセージ認証コード、使ってなかったのか (スコア:2)
ぐぐったところだと、USBメモリって中国の業者がその時手に入るフラッシュメモリとかをコントローラと組み合わせ、書き込みツールを
使ってパラメータを設定して製造するようです。taobaoなんか見るとメモリ部品以外がすべて実装された基板も売られてます。
しかし実際にはパラメータ設定と言ってもアルゴリズムを変えられたり動作を変えられたりするようで、設定とプログラムに別領域がある
というよりはひとつのバイナリにまとめて書き込んでいるのかと思います。であれば、その書き込みツールを使って、パラメータではなく
通常はいじらなくてよい、誰も気にしないプログラム部分をいじれば、機能を変えることができるということなのじゃないでしょうか。
コントローラの方でコードプロテクトをかけるくらいはしても当然にも思えますが、何せ8051を未だに新規で製造しているくらいですから、
一般人が書き換えることはない、する利益もないと想定して、一切対策されてないということは十分ありえると思いますね。
Re: (スコア:0)
良質な情報ありがとうございます。
書き込まれたバイナリを比較的安価なメッセージ認証コードのハードウェアで
チェックしていなかったのが、不思議だったのです。
昔、メインフレームの周辺機器を設計したことがあって
信頼性、安全性には、非常に厳しい環境にいたせい
かもしれないが、パソコンのずさんな考え方について
いけない。
多分、激安な価格でないとパソコンの周辺機器が売れない
といった事情があったかもしれないですけど。
Re:メッセージ認証コード、使ってなかったのか (スコア:2)
個人でパソコンいじってて信頼性ってのを実感することはあまりないですね。高信頼性をうたってる装置ってどうにも
ロバストさがなくて、私はお膳立てをして環境を整えてやらないとてこでも動かない、こける、みたいなイメージがあります。
コード署名をつけるといっても、チップメーカーはUSBメモリメーカーの正当性を保証できないし、認証基盤なんか作れないですよ。
結局コントローラに秘密鍵をつけなければいけないのなら、その時にファームウェアも書き込んでしまえばよいし、その後は書き換え
不能にするというほうが、対策として現実的じゃないかと思います。
Re: (スコア:0)
コード署名で、USBメモリメーカーの正当性まで保証する必要はないと思いますよ。
任意の悪党がファームの改竄できなければいい。
心配なら、ユーザーは、信頼のUSBメモリメーカー 〇立製作所 とか買えばいいのですから。
コントローラに秘密鍵をつけて、ファームウェアを書き換え可能にすることの問題点が見えないです。
知らない人もいるので解説すると、メッセージ認証コードはDES暗号などの秘密鍵を使って計算します。
Re: (スコア:0)
Re: (スコア:0)
ファームの改竄の検出方法には2つあります。1つめがコード署名を使う方法。2つめがDES暗号などを使ったメッセージ認証コードです。
ご説明の中に証明書ということばがでてくるので、コード署名の方法なのかな?秘密鍵の管理は、チップメーカーは認証局に
代行してもらえばいいし、中国のODMメーカはICカードに秘密鍵を入れて管理しておけば、良いように思います。
これをできないと決めつけるのは、ちょっと難しいかと。
ソフトウェアの世界では、星の数ほどあるソフトハウスが自社のソフトウェアにコード署名してますよ。
ファームウェアの世界では、この話と何が違うのか?という
Re:メッセージ認証コード、使ってなかったのか (スコア:2)
まあ、非公開のはずの仕様が漏れたか、方法が見つけられたかということが今回の発表に繋がるので、仕様を隠すことには
あまり意味がないでしょう。
やはり、人々が単機能で改造・再利用不可能だと思い込んでいたものが、実はプログラマブルだった、というところが問題は
ないでしょうか。USBメモリは事務処理で持ち込まれたりするもので、購入者と使用者というのも1対1対応ですらないわけです。
まったく書き換え不能で、かつできれば内容を検証可能なコントローラを誰かが新しく設計するか、チップメーカー程度の信頼された
大手にのみ書き込み可能な制度を作れれば解決するのではないかと思います。
たぶん、誰かが8051ベースではない新しめのCPUでコントローラを作り直し、それには組み立てるメーカーではなくコントローラの
メーカーの署名チェックがつくのでしょう。そして、それが数年間かけて広まっていくのでしょう。たぶん。
Re: (スコア:0)
> まあ、非公開のはずの仕様が漏れたか、方法が見つけられたかということが今回の発表に繋がるので、
> 仕様を隠すことにはあまり意味がないでしょう
もしBadUSBが非公開の仕様の漏れを利用したものなら、仕様が漏れることはそんなにないですから
脅威ではないでしょう。今後も安価なUSBデバイスでは仕様を隠す方法でいいと思います。
もしBadUSBが非公開の仕様を突破する方法を見つけたのなら、それをどうやって見つけたのかですね。
それがわかれば、その方法では見つからないように仕様を変更すればいい。
仕様を隠す方法に意味がないということにはならないように思います。
仕様
Re:メッセージ認証コード、使ってなかったのか (スコア:2)
もしBadUSBが非公開の仕様を突破する方法を見つけたのなら、それをどうやって見つけたのかですね。
それがわかれば、その方法では見つからないように仕様を変更すればいい。
Security through obscurity has never achieved engineering acceptance as an approach to securing a system [wikipedia.org]
The United States National Institute of Standards and Technology (NIST) specifically recommends against security through obscurity [wikipedia.org]
利用者が信頼性を重視するなら〇立製作所のUSBメモリを買えば
いいし、価格を重視するなら、安いところから買えばいいのです。
現状の市場構造では日◯製作所がUSBメモリを作るというのは現実的ではないですよ。現実的には彼らにできるのは検証することだけです。
業務用USBメモリを、例えば市場価格の1000円増しで販売する…売れると思いますか? そして、買った人はそれ以外のUSBメモリを自社周辺から
一掃できますか?
チップメーカーが組み立てメーカーに証明書を発行して、
組み立てメーカーは、その証明書でファームに署名をするということでいいような。
利用者は、信頼できる組み立てメーカーのデバイスを購入するのです。
どの組み立てメーカーが作ったものかは、証明書によって検証できるので大丈夫。
組み立てメーカーというのがそもそも日曜大工なのですよ。しかも、USBメモリというのは他人から受け取るものです。
顧客に向かって、あなたの持ってきたUSBメモリは実は怪しい業者のもので、信頼できないので中の書類は受けとりません、などと
いうことはできないでしょう。
一番、安いのが、仕様の非公開
次が、メッセージ認証コード
その次が、コード署名
なんだかバランス感覚が現代と離れているような気がしますが。そもそも仕様を非公開にすれば書き変えられないと思っていた
ところ、書き換えられてしまった、というのが出発点でもあるわけで。
Re: (スコア:0)
英語読むのは疲れるのでスキップします。
> 現状の市場構造では日◯製作所がUSBメモリを作るというのは現実的ではないですよ。
元日〇製作所社員ですので、その辺のことは、よーくわかってますよ。
> 現実的には彼らにできるのは検証することだけです。
彼らは一流の大学を出て優秀だったはずです。それが検証することしかできない人間に
なるのです。たとえば普通には優秀だから生涯賃金を稼いでしまうわけですが、じっくり
無能な人間にしたてあげてリストラすれば、リストラ業者が儲かるわけです。
C言語のスキルいっしょうけんめい磨いていると、雑用やプレゼンなどの仕事をさせられて
気がつくと、
Re: (スコア:0)
TPMを使ったブートローダでは、取り外しができるUBSデバイスの正当性チェックできない。
USBデバイスのファームに自己書き換え脆弱性が存在するリスクを対策しなければ
感染してUSBデバイスが悪事をするようになると、コストをけちることないと思う。
安価なUSBデバイスは、わからないが、メッセージ認証コードくらいのハードは
たいしたことないと思う。
安全なお店で買ったUSBデバイスを、安全な自宅で利用することは多いが
その場合は、ソーシャルハックの心配はない。
相互認証が面倒かどうかではなくて、セキュリティ的な問題があれば、やるしか
ないのでは。
Re:メッセージ認証コード、使ってなかったのか (スコア:2)
商業的に一番簡単なのは、8051をやめてARMにしちゃうことでしょう。セキュアブートとかもついてます。
USBメモリは片手か両手で数えるくらいの部品数しか載せませんし、メモリはオンダイでCPUのバスは半導体の外にも出ません。
よって暗号アクセラレータのような外部ハードをボード上に追加することはできません。コントローラ+メモリの2チップしかそもそも
載っていません。USB 2.0のフラッシュメモリ程度であれば、FelicaのようなIC暗号カードと同じ方向性で、マスクROMを載せて
プログラム書き換え不能とし、フラッシュ領域に設定だけを書き込むようにするのが解決策としてよくあるやり方じゃないかと思います。
Re: (スコア:0)
> 暗号アクセラレータのような外部ハードをボード上に追加することはできません。
え、AES 256bitの機能を搭載したUSBメモリってあるのだけど。
USBメモリみたいに、使われ方が既に固まっている場合は、フラッシュ領域にいろいろな
機能を実装できるファームウェアを置く必要がないということですね。
#とても参考になる書き込みをしてくださって、よかったと思います。
Re: (スコア:0)
Re:メッセージ認証コード、使ってなかったのか (スコア:1)
誤変換なんだろうけど
”だんぱ"じゃなくて”たんぱー”(tamper)
突っ込む、どつきまわすくらいにとっておけばいい
#マルチプルタイタンパーとか
中身ダンプして改変、リストアに耐えるってのも耐タンパー性でいいとおっもう