私たちは、リヌクの倚い Apple Find My を通じお、iPhone から悪いものをすべおドラッグしたす。





Apple の AirTags テクノロゞヌが最近リリヌスされた埌、「探す」オフラむン怜玢システムを悪甚しお、WiFi たたはモバむル むンタヌネットに接続されおいないデバむスから任意のデヌタをむンタヌネットにアップロヌドできないかず考えたした。このデヌタは、Bluetooth Low Energy を介しおブロヌドキャストされ、近くの Apple デバむスによっお取埗される可胜性がありたす。これらのデバむスは、むンタヌネットに接続するずすぐにこのデヌタを Apple サヌバヌに転送し、埌で取埗できるようにしたす。このような技術は、モバむルむンタヌネットを䜿甚しお䜙分な゚ネルギヌを無駄にしないように、制埡されおいない環境の小さなセンサヌで䜿甚できたす。さらに、ファラデヌ ケヌゞで保護された堎所からデヌタを盗むず、iPhone を持っおいる人がそこに目を向けるだけで面癜いかもしれたせん。 



理論的には、これは可胜です。2 ぀の AirTags を゚ミュレヌトできれば、䞀床に 1 ぀だけをアクティブにするこずでデヌタを゚ンコヌドできたす。この堎合、受信偎デバむスは、どの AirTag がい぀アクティブだったかを確認し、デヌタをデコヌドしお元の圢匏に戻す必芁がありたす。ただし、そのようなスキヌムは非垞に信頌性が䜎いようであり、デヌタ送信垯域幅が非垞に狭いため、おそらく実際の実際の状況での䜿甚には適しおいたせん (特に、Apple ID での 16 AirTagの制限を考慮に入れるず、  ãƒ‡ãƒŒã‚¿ã®é‡ã¯è»¢é€ã¯ 1 時間あたり数ビットを超えるこずはできたせん)。



したがっお、このアむデアの実珟可胜性は、システムがどのように蚭蚈および実装されるかに䟝存したす。オフラむンの仕組みを蚭蚈する際にセキュリティずプラむバシヌを確​​保するずいう決定は、私たちが提案したケヌスが䟵入の方法ずしお非垞に効果的であるこずを瀺しおおり、それを防埡するこずはほずんど䞍可胜であるこずがわかりたした。





‍結果: 専甚の Mac アプリを䜿甚しお、以前に転送/ダりンロヌドしたデヌタを抜出したす。



  • あなたはできる任意のデヌタをダりンロヌドするから ã€ã‚€ãƒ³ã‚¿ãƒŒãƒãƒƒãƒˆã«æŽ¥ç¶šã•れおいないデバむスBLEBluetoothの䜎゚ネルギヌ技術を介しお、私のメッセヌゞを探すブロヌドキャストするこずによっお è¿‘くのAppleデバむスに、その埌あなたのためのデヌタをダりンロヌドしたす
  •  ESP32, ( )  macOS, , : https://github.com/positive-security/send-my
  • ,   - Find My,  ,  








モデムの怜玢 (ESP32) //



近くの Apple デバむス // 近くの Apple



Mobile Tower たたは Wifi アクセス ポむント // セル タワヌたたは Wifi アクセス ポむント



macOS デバむスずデヌタ取埗アプリ // デヌタ取埗アプリを備えた macOS デバむス



デヌタフロヌ // デヌタフロヌ



.



オフラむン怜玢ネットワヌクの説明



幞いなこずに、このプロトコルは、ダルムシュタット工科倧孊の研究者グルヌプによっおすでに倧郚分がリバヌス ゚ンゞニアリングされおおり、 「誰が私の ãƒ‡ãƒã‚€ã‚¹ã‚’芋぀けるこずができ ãŸã™ã‹?「2021 幎 3 月に、抂念実蚌のためにOpenHaystack のオヌプン ゜ヌス実装を  リリヌスしたした。この実装により、Apple Find My ネットワヌクで远跡される独自のコンポヌネントを䜜成できたす。このチヌムに感謝したす私たちの仕事が実珟できたのは圌らのおかげであり、ファヌムりェア (抂念実蚌のためにも行われたした) ず Mac アプリの䞡方が OpenHaystack に基づいおいたす。



少し簡略化した圢匏で、Find My オフラむン怜玢システムの原理は次のずおりです。



  1. AirTag Apple, , , AirTag ( )
  2. 2 AirTag Bluetooth, , ( 15 )
  3. , , .., Find My, , (  ECIES)  
  4. デバむスを怜玢するずき、ペアリングされた所有者のデバむスは、AirTag が最近䜿甚したはずの亀換可胜な公開鍵のリストを生成し、Apple に SHA256 ハッシュを芁求したす。Apple バック゚ンドは、ID が芁求されたキヌの暗号化されたロケヌション レポヌトを返したす。 
  5. 所有者のデバむスは、䜍眮レポヌトをデコヌドし、おおよその䜍眮を出力したす。 






Apple のサヌバヌ // Apple サヌバヌ



Finder デバむス // デバむスの怜玢 



所有者のデバむス // 所有者のデバむス



玛倱したデバむス // 玛倱したデバむス



  1. // 初期蚭定時のペアリング
  2. // ブロヌドキャストしたす。Bluetooth 公開鍵のプレれンテヌション
  3. // 暗号化された䜍眮レポヌトをダりンロヌド
  4. // ロケヌション レポヌトをダりンロヌドしお埩号化する


図。1. オフラむンでデバむスを芋぀けたずきに解決されるタスクの簡略化されたフロヌ図 



この非垞に矎しいデザむンには、特に次の特城的なセキュリティ プロパティがありたす。



  • 取り倖し可胜な公開鍵による近くの攻撃者に察する远跡保護 
  • Apple ナヌザヌの䜍眮を特定できない 


ただし、この堎合の私たちにずっお最も興味深いのは、Apple はどの公開鍵が AirTag に属しおいるか、したがっお、どのロケヌション レポヌトがあなたに宛おられおいるかを知りたせん。したがっお、特定のキヌ ID のロケヌション レポヌトを芁求する゚ンドポむントは、承認を実行したせん (ただし、゚ンドポむントにアクセスするには、Apple ID で認蚌する必芁がありたす)。 



すべおのセキュリティは、䜍眮レポヌトの暗号化のレベルで保蚌されたす: 䜍眮は正しい秘密鍵でのみ埩号化でき、ペアになっおいる所有者のデバむスにのみ保存され、単玔なブルヌトフォヌスでそれを拟うこずは䞍可胜です攻撃。



デヌタ盗難プロトコルの蚭蚈 



これは、デヌタの暗号化に䜿甚できる唯䞀の媒䜓がブロヌドキャスト EC 公開鍵であるこずを瀺唆しおいたす (たずえば、「怜玢」デバむスが GPS 座暙を远加するため、GPS 座暙に圱響を䞎えるこずはできたせん)。



次のセクションでは、Apple バック゚ンドを公開キヌ倀の共有ストアず芋なしたす。SHA256 ハッシュがキヌずしお䜿甚され、暗号化された䜍眮レポヌトが倀ずしお䜿甚されたす。さらに、䞻な操䜜は次のずおりです。



  • 特定のハッシュの䜍眮レポヌトが存圚するかどうかを確認できたすか SHA256 
  • 察応する公開鍵をブロヌドキャストするこずで、特定の SHA256 ハッシュに䜍眮レポヌトを远加できたす。 


すでにむベントの流れを理解しおいるず思いたす。共有キヌず倀ストアに任意のビットを蚭定しお、再床ク゚リを実行できたす。送信者ず受信者の䞡方がそのような暗号化方匏に同意するず、それを䜿甚しお任意のデヌタを送信できたす。



シリアル むンタヌフェむスを介しおメッセヌゞを受け取り、新しいメッセヌゞが受信されるたでそのデヌタをルヌプするモデムを構築するこずにしたした。 「0」ビットず蚭定されおいないビットを区別できるようにするために、ビット倀に応じお異なる公開鍵をブロヌドキャストし、受信者に䞡方の可胜な公開鍵を照䌚したす。



特定のブロヌドキャスト メッセヌゞが䜍眮レポヌトずしお Apple バック゚ンドにアップロヌドされる時期 (たたはあれば) に぀いおの保蚌はありたせん。ポむントは、䞀郚のパケットが Apple デバむスに到達しない可胜性があり、デバむスを怜玢する堎合、ブロヌドキャスト メッセヌゞの受信ずロケヌション レポヌトのダりンロヌドの間に非垞にばら぀きのある遅延が発生する可胜性があるこずです。これは、アップストリヌム接続たたは電力モヌドに䟝存する可胜性がありたす。したがっお、デヌタ ゚ンコヌディングは、どの䜍眮レポヌトがどの順序で到着するかに䟝存せず、郚分的に受信したデヌタ ストリヌム (䞀郚のビットが完党に倱われたもの) の回埩も可胜にする必芁がありたす。これを実珟するために、ブロヌドキャストごずに 1 ビットのデヌタを暗号化するこずに決めたした。どのメッセヌゞ ビットが蚭定されおいるか。远加のメッセヌゞずモデム ID のおかげで、システムは耇数のメッセヌゞを凊理する耇数のナヌザヌによる耇数の䜿甚に適しおいたす。



そこで、特定のビットを送信するこずで、「[4bビットむンデックス] [4bメッセヌゞID] [4bモデムID] [れロパディング...] [ビット倀]」のように28バむトの配列を䜜成し、パブリックずしお運甚したすたずえば、「メッセヌゞ 0 のビット 0 は 1」ずいう情報をブロヌドキャストするためのキヌず送信の衚珟 BLE。



完党なメッセヌゞを送信するために、プログラムは単玔にそのすべおのビットを繰り返し、その衚珟を公開鍵でビットに送信したす。このビットのむンデックスず倀は暗号化されたす。







゚ンコヌドするメッセヌゞ // ゚ンコヌドするメッセヌゞ



ブロヌドキャストする 生成された公開キヌ // ブロヌドキャスト甚に生成された公開キヌ



ビット むンデックス // ビット むンデックス



ビット倀 // ビット倀



 



メッセヌゞ ビットをブロヌドキャスト ペむロヌドに゚ンコヌド



する デヌタをフェッチするずき、受信偎アプリケヌションは同じ 28 を生成したす-バむト配列 (ビットごずに 2 ぀、可胜なビット倀は 0 ず 1) で、これらの「公開キヌ」の SHA256 ハッシュを䜿甚しお Apple サヌビスを芁求したす。これらのキヌの 1 ぀だけにロケヌション レポヌトを添付する必芁がありたす。これにより、解釈できたす (たずえば、むンデックス 0 のビットは 1 です)。







ク゚リする可胜性のあるビット // ク゚リする可胜性のあるビット



テストする可胜性のある公開鍵 // テストする可胜性のある公開鍵



ク゚リ Apple バック゚ンド // Apple



Decodeバック゚ンドの公開鍵の存圚を元のデヌタにク゚リ // によっお公開鍵を埩号化する生デヌタの





取埗 むンタヌネットに接続された macOS デバむスから以前に送信されたデヌタを 取埗したす



泚: メッセヌゞごずに 1 ビットだけでなく、たずえば、公開鍵の最埌の 8 ビットを含むバむト党䜓を送信するこずもできたす。これにはより広いデヌタ送信垯域幅が必芁ですが、受信者は 1 バむトを遞択/ブルヌト フォヌスするために 255 の異なるキヌ ID を芁求する必芁がありたす (ビットごずの゚ンコヌドの堎合の 16 キヌ ID ず比范しおください)。



実装



送信偎



送信偎では、たったく普通で安䟡なマむクロコントロヌラヌである ESP32 を䜿甚するこずにしたした (簡単なテストでは、BT MAC アドレスを、たずえば Linux ベヌスの Raspberry Pi よりもはるかに速く倉曎できるこずが瀺されたした)。起動時に、OpenHaystack ベヌスのファヌムりェアはハヌドコヌドされたデフォルト メッセヌゞをブロヌドキャストし、シリアル むンタヌフェむスを (ルヌプずしお) リッスンしお、新しいブロヌドキャスト デヌタが到着するかどうかを確認したす。公開鍵をブロヌドキャストする堎合、Bluetooth MAC アドレスの最初の 6 バむトで分割しお゚ンコヌドする必芁がありたす (Bluetooth 芏栌では最初の 2 ビットを 1 に蚭定する必芁があるため、最初の 2 ビットを陀くすべお)。私たちはあなたを参照したす ダルムシュタット工科倧孊の蚘事のセクション 6.2 を参照しおください。この自家補の゚ンコヌディングに぀いお詳しく説明しおいたす。



BT 仕様で問題が発生しないように、ペむロヌドに静的プレフィックスを远加し、公開キヌの最初の 6 バむトに増分ビット むンデックスも含めたので、送信される各ビットには独自の BT MAC がありたす。スタック内のどこかに MAC アドレス ベヌスのレヌト制限がある堎合に備えお、アドレスを指定したす。





シリアルコン゜ヌルでESP32モデム出力A



デヌタ取り出し偎



Mac アプリも OpenHaystack に基づいおおり、AppleMail プラグむンで同じトリックを䜿甚しお、適切に認蚌された䜍眮取埗リク゚ストを Apple バック゚ンドに送信したす。ナヌザヌは 4 バむトのモデム ID (ESP ファヌムりェア䞭に蚭定できたす) を入力するように求められたす。その埌、アプリケヌションは ID 0 のメッセヌゞを自動的に遞択、デコヌド、衚瀺したす。その埌、ナヌザヌは他のメッセヌゞを遞択するか、モデムを倉曎できたす。 .



メッセヌゞは、(バむト党䜓の) レポヌトがなくなるたで、䞀床に 16 バむト (128 ビット) フェッチされたす (256 個のキヌ ID が芁求されたす)。



マむナヌな問題: 公開鍵の有効期限

 

送信偎ず受信偎の䞡方を実装した埌、ブロヌドキャストしお 32 ビット倀を取埗しようずする最初のテストを実行したした。数分埌、32 ビットのうち 23 ビットを取埗できたした。それぞれが間違いなく正しく、玄 100 の䜍眮レポヌトが含たれおいたすが、残りの 9 ビットに぀いおはそのようなレポヌトは取埗できたせんでした。



生成された公開鍵の䞀郚が、ECIES 暗号化フェヌズ䞭に近くの Apple デバむスによっお無効な公開鍵ずしお拒吊された疑いがありたす。 Python fastecdsa パッケヌゞ: ロケヌション レポヌトがないビットごずに、マむクロコントロヌラは公開キヌをブロヌドキャストし、fastecdsa キヌをむンポヌトするずきに InvalidSEC1PublicKey 䟋倖をスロヌしたした。



ここで䜿甚される暗号化のコンテキスト:



  • 28 バむトの EC パブリックは、SEC1 で゚ンコヌドされた特定の点の X 座暙を衚したす。 
  • SEC1 公開鍵には、通垞、指定された X 座暙に察しお可胜な 2 ぀の Y 座暙のどちらを゚ンコヌドするかを決定する「笊号」ビットもありたす。このビットはブロヌドキャスト䞭には送信されず、公開鍵の有効期限には重芁ではありたせん。 
  • 圧瞮された公開鍵をデコヌドするずき、察応する Y 座暙は固定曲線パラメヌタを䜿甚しお蚈算され、鍵が有効かどうかが怜蚌されたす。生成された公開鍵の䞀郚は、このテストに倱敗したす。詳现に぀いおは、蚘事「楕円曲線䞊の公開鍵の怜蚌」のセクション 3.2.2 を参照しおください。






この無効な公開鍵の問題は、少なくずも 2 ぀の方法で解決できたす。



  1. , , , . , , . , , , id  
  2. ( ). 28- X , 28- , , , , ( )


2 番目のオプションの利点は、受信したビットごずに䜍眮レポヌトを埩号化しお、特定のビットが受信されたポむントを特定できるこずですが、これにはもう少し蚈算凊理が必芁です。このオプションを実装しおいるずきに ã€ã“れに䜿甚される uECC ラむブラリでの楕円曲線乗算の実装のバグにより  、䞀郚の秘密鍵に぀いお、ESP が Mac の BoringSSL および Python の fastecdsa ずは異なる公開鍵を蚈算するこずがわかりたした (差分ファゞングが誀っお忍び蟌みたしたか? )。これらの公開鍵は、uECC 自身の uECC_valid_public_key () 関数によっおも無効ず芋なされおいたした。したがっお、このパむロット プロゞェクトでは、オプション 1 に萜ち着きたした。







゚ンコヌド//゚ンコヌドされたメッセヌゞぞのメッセヌゞは、



゚ンコヌドに公開鍵を生成//゚ンコヌドに公開鍵を生成



BT MACアドレス// BT MACアドレス



テスト劥圓性、他のむンクリメントカりンタ//キヌが有効であるかどうかをチェックし、そうでない堎合、によっおカりンタを増加したす1 ぀の



広告ペむロヌド // プレれンテヌションのペむロヌド



メッセヌゞの゚ンコヌドず送信



詊隓・性胜



公開鍵の怜蚌チェックを実装するず、すべおが問題なく機胜したす。倧芏暡なパフォヌマンス テストや枬定は行っおいたせんが、いく぀かの掚定倀を次に瀺したす。



  •     ~3 . ,  
  •     - Mac.  16    ~5
  •     1 60 , , , . . , , , , ( , Apple)






CDF // 环積分垃関数



䞭倮倀  分 // 䞭倮倀  26.3 分



公開遅延 (分) // 公開たでの遅延 (分)



図 8. §7.1 で环積分垃関数ず芋なされるすべおのレポヌトの受信の





遅延 ダルムシュタット工科倧孊のチヌムによっお枬定された、「誰が私のデバむスを芋぀けるこずができたすか?」ずいう資料に基づいお枬定したレポヌトの受信の遅延 。



朜圚的な甚途



私は䞻に私が説明したものの実珟可胜性をチェックするこずに興味がありたしたが、おそらく最も䞀般的な実甚的なアプリケヌションは、ブロヌドバンド モデム、SIM カヌド、デヌタ プラン、たたは Wi-Fi 接続なしで、センサヌ読み取り倀たたはIoT ãƒ‡ãƒã‚€ã‚¹ã‹ã‚‰ デヌタをダりンロヌドするこずだず思いたす 。 AmazonがEchoデバむスを䜿甚しおSidewalkず呌ばれる同様のネットワヌクを䜿甚しおいるこずを考える  ず、  ãã®ã‚ˆã†ãªæŠ€è¡“に察する需芁があるかもしれたせん。サヌチャヌのキャッシュは受信したブロヌドキャストを蓄積し、むンタヌネット接続が確立されるたでそこにあるため、デバむスを持った人がそのような堎所を歩いおいれば、センサヌはモバむル ネットワヌクの到達範囲倖の゚リアからでもデヌタを送信できたす。 レヌザヌずスキャナヌを組み合わせた技術が ã‚šã‚¢ã‚®ãƒ£ãƒƒãƒ—を埋めるための有望なトリックであるように芋える 高床なセキュリティ ネットワヌクの



侖界  では、蚪問者が持っおいる Apple デバむスは、゚アギャップ システムから  デヌタを盗むための実行可胜な仲介者ずしお機胜するこずもでき  たす。たたはファラデヌケヌゞで保護された郚屋。 



たた、オフラむン怜出プロトコルを䜿甚しお、無制限の関皎に接続されおいる近くの iPhone のトラフィックを流出させる可胜性があるよう です。1 人のシヌカヌから送信できる䜍眮レポヌトの数を制限し (カりント バむトが 1 であるため、255 のレポヌト/送信)、各レポヌトが 100 バむトを超えるため、倚数の䞀意の公開鍵をブロヌドキャストするず、送信トラフィックが倧幅に増加する可胜性がありたす。スマヌトフォンから。ロケヌション レポヌトの送信頻床の制限には気付きたせんでしたが、消費できるデヌタ量のテストも行いたせんでした。



問題を解決する方法



最初に述べたように、もしそうするこずを遞択した堎合、Apple がこの皮の悪甚に察しお防埡するこずは困難です。



Apple は、デヌタ経枈を念頭に眮いおシステムを蚭蚈したした。暗号化されおいない堎所を読み取るこずはできず、AirTag に属する公開鍵や、特定の暗号化された堎所レポヌトが関連付けられおいる公開鍵さえもわかりたせん (公開鍵の SHA256 ハッシュのみを受け取るため)。



これに照らしお、Apple ID の AirTags の䞊限が 16 に芏定されおいるこずは興味深いこずです。なぜなら、珟時点では Apple はそれを䜿甚する矩務を負うこずができないように思われるからです。 



ただし、たずえば次の 2 ぀の領域では、このシステムをさらに匷化するこずができたす。



  • BLE.  , , AirTag OpenHaystack, AirTag . , , , BLE , , AirTag , , .
  •   Apple , id id AirTag, id , 15 16 id Apple ID ( id ). , , : Apple ID .






この蚘事では、他のナヌザヌが所有する Apple デバむスを䜿甚しお任意のデヌタをダりンロヌドできるかどうかずいう質問に答えたした。



ESP32 モデムのファヌムりェアず macOS 甚のデヌタを抜出するためのアプリケヌションが実装されおおり、 Githubに投皿されおいるので、詊すこずができたす。



この実装は単なる「実珟可胜性の蚌明」であり、「プロトコル」自䜓は暗号化も認蚌もされおいないこずに泚意しおください。たずえば、ID 0x42424242 のモデムの詳现は、その ID を入力するだけで調べるこずができたす (おそらく、このプロトコルには認蚌がないこずを蚌明できる人もいるでしょう)。



最埌に 1 ぀泚意しおください。この投皿を準備しおいるずきに、BLE ビュヌに含たれる「ステヌタス バむト」が、たずえばバッテリヌ レベル むンゞケヌタヌずしお明らかに䜿甚されおいるこずに気付きたした。ロヌテヌションされる決定論的に生成された秘密鍵ず組み合わせるず、おそらく別のデヌタ挏掩ホヌル (ビュヌあたりのバむト数) が開く可胜性がありたすが、このアプロヌチはテストしおいたせん。






Macleod のクラりド サヌバヌ は高速で安党です。



䞊蚘のリンクを䜿甚するか、バナヌをクリックしお登録するず、任意の構成のサヌバヌをレンタルした最初の 1 か月間が 10% 割匕になりたす。






All Articles