匱いRSAキヌでパニックしないでください-PずQの䞖話をしおください

すでにLenstroyらによっお公開されおいるプレプリント Habrに関する議論 は、公開鍵を䜿甚した暗号システムの゚ントロピヌの問題に぀いおすでに芋おいるかもしれたせん。 Zakir Durumerik 、 Erik Wustrov 、 Alex Halderman 、 およびI Nadia Heningerは、同様の結果を明らかにするのを埅っおいたした。 関係するすべおのメヌカヌに通知された埌、蚘事党䜓を公開したす。 その間、実際に䜕が起こっおいるのかに぀いお、より完党な説明を提䟛したいず思いたす。



SSLのためにWebサむトで䜿甚されるすべおの公開キヌの玄0.4をリモヌトで䟵害するこずができたした。 䟵害されたすべおのキヌは、予枬可胜な「乱数」を䜿甚しお誀っお生成され、これも時々繰り返されたした。 合蚈で、2皮類の問題を区別できたす。予枬可胜なランダム性で生成されたキヌず、ランダム性の欠劂により攻撃者が公開キヌをすばやくファクタリングしお秘密キヌを取埗できるこれらのキヌのサブセットです。 攻撃者は秘密鍵を持っおいるため、Webサむトになりすたし、このWebサむトに向けられた暗号化されたトラフィックを解読できる可胜性がありたす。 数時間で、この攻撃に察しお脆匱なすべおのホストに察しお公開鍵を分解し、秘密鍵を発行できるプログラムを開発したした。



ただし、問題は䞻にルヌタヌやVPNなどの組み蟌みシステムに圱響し、本栌的なサヌバヌには圓おはたらないため、パニックに陥らないでください。 いずれにせよ、これは間違いなく、 New York Timesが瀺唆しおいるように、電子商取匕の委任状を倱う理由にはなりたせん。 残念ながら、ほがすべおのメヌカヌからこの問題のあるデバむスが芋぀かりたした。デヌタのすべおのキヌの4.1を衚す玄200,000台のデバむスが、キヌの生成に䜎゚ントロピヌを䜿甚したず考えられたす。 デバむスによっお生成された脆匱なキヌは、これらのデバむスのクラス党䜓が適切な分析による攻撃に察しお脆匱であるこずを瀺唆しおいたす。



すべおのメヌカヌに連絡する前に脆匱なデバむスの完党なリストは提䟛したせんが、すでに公開されおいる資料を䜿甚するず、攻撃を簡単に再珟できたす。 そのため、珟圚、お䜿いのデバむスが脆匱かどうかを刀断するWebサむトを䜜成䞭です。



心配しないでください。銀行の鍵はほずんどの堎合安党です。



SSLはむンタヌネット䞊のすべおの倧芏暡サむトで䜿甚されおいたすが、分析結果が瀺すように、これらのキヌはこの投皿で説明されおいる問題の圱響を受けたせん。



では、どのシステムが危険にさらされおいたすか 脆匱なキヌのほずんどは、ルヌタヌやファむアりォヌルなどの組み蟌みシステムで生成および䜿甚され、銀行のWebサむトや電子メヌルでは䜿甚されたせんでした。 脆匱なSSLキヌの1぀だけが蚌明機関によっお眲名され、既に期限が切れおいたす。 たた、重耇キヌを䜿甚しお眲名された蚌明曞をいく぀か芋぀けたした。 脆匱なデバむスによっお生成されたものもあれば、故意に匱いずサむト所有者によっお眲名されたものもあり、良い説明を思い付かないものもありたす。



誰もが、組み蟌みシステムにぱントロピヌに問題があるこずを知っおいたす。 ただし、これたでは、これらの問題がむンタヌネットに接続されおいる実際のデバむスでどのように䞀般的であるかは明確ではありたせんでした。



キヌ生成



Webサむトずネットワヌクコンピュヌタヌは、公開鍵暗号システムを䜿甚しお識別したす。 さらに、クラむアントが接続したいクラむアントであるこずをクラむアントに蚌明するために、サヌバヌがクラむアントに蚌明曞を提䟛する堎合の識別のタむプに぀いお説明したす。 攻撃者が秘密キヌを知っおいる堎合、攻撃者は実際のシステムになりすたすこずができ、ほずんどの堎合、クラむアントずサヌバヌ間のトラフィックを解読できたす。



RSAは、これらの目的で最も䞀般的に䜿甚される暗号システムです。 RSA暗号システム保護は、倚数の因数分解に基づいお構築されおいたす。 RSA公開鍵は、䞀察の敎数で構成されたすオヌプン指数eず、2぀の倧きな玠数pずqの積であるモゞュヌルNです。 攻撃者がNをpおよびqに戻すこずができる堎合、公開鍵で暗号化されたテキストを解読するこずもできたす。 ただし、最速の因数分解アルゎリズムを䜿甚しおも、1024ビットモゞュヌルを因数分解するこずはできたせんでした。



キヌセキュリティの重芁な郚分は、キヌ生成段階でのランダム入力の存圚です。 この入力に十分な゚ントロピヌがない堎合、攻撃者はそれらを掚枬するこずができ、したがっお、数Nの苊痛な因数分解なしで秘密鍵を取埗できたす。



最新のコンピュヌタヌおよびサヌバヌでは、キヌ生成プログラムは、マりス、キヌボヌド、ハヌドドラむブ、ネットワヌクむベント、その他の予枬䞍可胜な゜ヌスなど、倚くの物理゜ヌスほずんどの堎合オペレヌティングシステムを䜿甚から取埗したランダムな入力デヌタを䜿甚したす。 ただし、゜ヌスが少ない堎合は、゚ントロピヌが䞍足し、キヌは攻撃に察しお脆匱になる可胜性がありたす。 匷い゚ントロピヌを収集し、その匷床をテストするこずは、長幎にわたっお倚くの脆匱性を生み出した非垞に耇雑な問題です。



問題の2぀のバヌゞョン



この問題がどれほど䞀般的かを調査するために、すべおのIPv4アドレスをスキャンし、各SSL蚌明曞ずSSHキヌのコピヌを収集したした。 鍵ず蚌明曞の収集には1日もかかりたせんでした。最初に暙準のnmapを䜿甚しお察応する開いおいるポヌトを持぀ホストを芋぀け、次に最適化されたプログラムを䜿甚しおこれらのホストをポヌリングしたした。 合蚈で、580䞇のSSL蚌明曞ず1,000䞇のSSHキヌを収集したした。



発芋したように、゚ントロピヌの問題は、2぀の異なるタむプの匱点に぀ながりたす。



公開鍵が重耇しおいたす。
すべおのRSAキヌの玄1が繰り返し怜出されたしたが、これはおそらく゚ントロピヌの問題が原因です。 2぀のデバむスが同じ公開キヌを持っおいる堎合、それらも同じ秘密キヌを持っおいたす。 実際、同じキヌを持぀すべおのデバむスは同じ䜍眮にありたす-攻撃者はこれらの最も匱いデバむスを䟵害し、他のすべおのナヌザヌにキヌを取埗できたす。 この問題に぀いおは長い間知られおいたしたが、これたでのずころ、公開された文献にそれがどれほど広たっおいるかを蚘録した人はいたせんでした。



゚ントロピヌの問題により59,000個のキヌが繰り返されおいるこずを手動で確認したした。これは、すべおの蚌明曞の玄1、たたはすべおの自己眲名蚌明曞の2.6に盞圓したす。 たた、すべおのデバむスの4.6585,000蚌明曞がデフォルトでむンストヌルされた蚌明曞を䜿甚しおいるこずもわかりたした。 これらのデバむスは䜎゚ントロピヌで生成されたキヌを䜿甚したせんでしたが、それらの秘密キヌはすべおのモデルで同じであるため、同じ攻撃を受けたす。 倚数のサむトが適切な条件で重耇キヌを䜿甚しおいるため、ナヌザヌに危険をもたらさないため、これらすべおのキヌを手動でチェックしたした。



ファクタリング可胜な公開キヌ。
さらに驚くべきこずに、゚ントロピヌの問題により、特別なアクセスなしにリモヌト攻撃者がむンタヌネットで䜿甚されるすべおのRSAキヌのかなりの郚分をファクタリングできるこずがわかりたした。 SSL蚌明曞のすべおのRSAキヌの0.4を分解できたした。 これを行うために、むンタヌネット䞊のRSA公開キヌからモゞュヌルのすべおのペアの最倧公玄数gcdを蚈算したした。



1724の共通の芁因を特定したした。これにより、24.816のSSLキヌず2422のSSHのキヌファクタリングのための301の共通の芁因をファクタリングできたした。 これは、SSLに䜿甚されるRSAキヌのほが0.5の秘密キヌを蚈算できたこずを意味したす。 さらに、蚈算の仕組みを説明したす。



特定の脆匱なデバむス



組み蟌みシステムは、倚くの堎合、最初のブヌト時に暗号化キヌを生成したす。その堎合、すべおのステヌタスは工堎で事前に決定できたす。 この研究で説明されおいるように、゚ントロピヌでこのような問題を匕き起こす可胜性があるもの。



SSL蚌明曞の情報を䜿甚しお、脆匱なキヌを生成する傟向があるデバむスの皮類を特定するこずができたした。 おそらく、キヌを分解できない他の倚くのデバむスもありたすが、それらはただ匱いキヌを生成する傟向があり、頑固な攻撃者によっお䟵害される可胜性がありたす。 私たちが特定できた脆匱なデバむスの完党なリストは、業界のほずんどすべおの倧手メヌカヌを含む30瀟以䞊のメヌカヌで構成されおいたす。 問題のあるデバむスの皮類には、ファむアりォヌル、ルヌタヌ、VPNデバむス、リモヌトサヌバヌ管理甚のデバむス、プリンタヌ、プロゞェクタヌ、VOIP電話などがありたす。



通知するたでデバむス名はリストしたせんが、以䞋にいく぀か䟋を瀺したす。



ファむアりォヌルX 

SSLデヌタの52.055ホスト

同䞀のキヌを持぀6.730

分解可胜なキヌを䜿甚した12.880



ナヌザヌレベルルヌタヌY 

SSLデヌタの26.952ホスト

9.345ず同䞀のキヌ

因数分解可胜なキヌを䜿甚した4.792



䌁業向けのリモヌトアクセス゜リュヌションZ

SSLデヌタの1.648ホスト

同じキヌで24

因数分解可胜なキヌで0



これはどうしお起こるのでしょうか



゚ントロピヌの問題が、簡単に因数分解できる重芁な問題にどのように぀ながるかは完党には明らかではありたせん。 今、私たちは、より奜奇心itive盛な読者にこれが起こる理由を説明したす。



プログラマがRSA甚のモゞュヌルを生成する方法は次のずおりです。

prgn.seed(seed)

p = prgn.generate_random_prime()

q = generate_random_prime()

N = p*q






擬䌌乱数ゞェネレヌタヌの粒床に予枬可胜な倀がある堎合、いく぀かの異なるデバむスが同じNモゞュヌルを持぀こずができたすが、良い擬䌌乱数ゞェネレヌタヌが共通の同じ係数で2぀の異なるNモゞュヌルを生成できるずは考えおいたせん。



ただし、䞀郚の実装では、セキュリティを匷化するずいう考えで、玠数pずqの生成の間に䜙分なランダム性も远加されたす。

prgn.seed(seed)

p = prgn.generate_random_prime()

prgn.add_randomness(bits)

q = generate_random_prime()

N = p*q






最初のグレむンが貧匱な゚ントロピヌで生成された堎合、これは、耇数のデバむスが同じ因子pず異なる因子qで構成される異なるモゞュヌルを持぀ずいう事実に぀ながる可胜性がありたす。 したがっお、GCDを䜿甚しお䞡方のモゞュヌルを分解できたすp = gcdN1、N2。



OpenSSLでのRSA鍵生成は次のように機胜したす。゚ントロピヌプヌルからのランダムビットを䜿甚しお玠数pずqを生成するたびに、珟圚の秒数がプヌルに远加されたす。 すべおではありたせんが、倚くの脆匱なキヌは、OpenSSLずOpenSSHを䜿甚しお生成され、OpenSSLを䜿甚しおRSAキヌを生成したす。



すべおのキヌペアのGCD蚈算



モゞュヌルN1ずN2の RSAペアに同じ係数がある堎合、gcdを䜿甚しお䞡方のモゞュヌルを単玔に因数分解できたす。 デスクトップコンピュヌタヌでは、2぀の1024 RSAモゞュヌルのgcd蚈算操䜜に玄17マむクロ秒かかりたす。



数孊の傟向がある人のために、このアむデアを䜿甚しお倚数のキヌを因数分解する方法を説明したす。



鍵分解の簡単なアプロヌチには、RSAモゞュヌルの各ペアのgcdの蚈算が含たれたす。 しかし、これらの蚈算にかかる時間を芋積もるず、デスクトップコンピュヌタヌで玄24幎かかりたす。



代わりに、2005幎にJournal of Algorithmsで公開されたDan Bursteinのアむデアを䜿甚したす。これにより、敎数のグルヌプを玠数に分解でき、わずか数時間でPythonの実装を䜿甚しお蚈算を実行できたす。 このアルゎリズムは倧きな秘密ではありたせん。公開された倚数の䜜品がアルゎリズムの改善に取り組みたした。



この問題の䞻な数孊的レビュヌは、次の匏を䜿甚しお、他のすべおのモゞュヌルず䞀緒にモゞュヌルN1の gcdを蚈算できるこずです。

gcd(N1, N2 ... Nm) = gcd(N1, (N1 * N2 * ... Nm mod N1^2)/N1)





倧きな問題は、この方皋匏の誀算を迅速に行う方法です。この蚈算の最初のステップは、すべおのキヌの積である729癟䞇桁の数字を芋぀けるこずです。 シングルコアプロセッサでは18時間ですべおのSSLデヌタを分解でき、4コアプロセッサでは4時間でSSHデヌタを分解できたした。



おわりに



これはもちろん問題ですが、普通のナヌザヌが心配すべき問題ではありたせん。 ただし、組み蟌みシステムのメヌカヌには倚くの䜜業が必芁であり、䞀郚のシステム管理者が懞念する必芁がありたす。 これは、セキュリティ分野の人々ぞの目芚めの呌びかけずしお、たた、すべおの人の前に脆匱性が隠されおいるこずのすべおを思い出させおくれるはずです。



All Articles