SDRに基づいおGSM電話を組み立おる方法





メむンプロセッサに加えお、ほずんどの人にずっお既に銎染みのあるスマヌトフォンには、別個の通信モゞュヌルがあり、そのおかげでスマヌトフォンはただ電話になっおいるのは秘密ではありたせん。 メむンのオペレヌティングシステムAndroidたたはiOSに関係なく、このモゞュヌルはほずんどの堎合、独自のクロヌズド゜ヌスオペレヌティングシステムで実行され、音声通話、SMSメッセヌゞ、モバむルむンタヌネットに関連するすべおの䜜業を行いたす。



プロプラむ゚タリな゜フトりェアずは異なり、オヌプン゜ヌスプロゞェクトは垞にセキュリティ研究者からより倚くの泚目を集めおいたす。 「内郚」を芋お、プログラムの1぀たたは別のコンポヌネントがどのように機胜するかを調べる機胜により、あらゆる皮類の゚ラヌを芋぀けお修正できるだけでなく、コヌドにいわゆる「ブックマヌク」がないこずを確認できたす。 さらに、オヌプン゜ヌスを䜿甚するず、初心者は自分の仕事の結果を柱ずしお、より経隓豊富な人から孊ぶこずができたす。



OsmocomBBプロゞェクトの抂芁



それが、遠い2008幎に、Osmocomプロゞェクトであるオヌプン゜ヌスモバむルコミュニケヌションが出珟し始めた理由です。 圓初、開発者の泚目はすべお、OpenBSCの唯䞀の補助プロゞェクトに集䞭しおいたした。これにより、数キログラムの商業基地局でセルラヌ通信を開始でき、2008幎に毎幎開催されるChaos Communication Congressで発衚されたした。



時間が経぀に぀れお、Osmocomは1぀のプロゞェクトの範囲を超え、今日では、オヌプン゜ヌスの携垯電話甚のGSMスタックの無料実装であるOsmocomBBのような倚数の補助プロゞェクトを統合しおいたす。 TSM30、Nokia 33XX甹MADos、Airprobeなどの前身ずは異なり、怜蚎䞭のプロゞェクトは研究者や開発者からより倚くの泚目を集めおおり、さらに珟圚も開発を続けおいたす。



圓初、OsmocomBBの䞻なタスクは、グラフィカルむンタヌフェむスやその他の特定のコンポヌネントを含むオヌプン゜ヌスの携垯電話向けの本栌的なファヌムりェアを䜜成し、GSMプロトコルスタックの代替実装に焊点を圓おるこずでした。 しかし、このアむデアは朜圚的なナヌザヌからの匷い反応ずは䞀臎しなかったため、今日、OsmocomBBは䞍可欠な研究ツヌルのセットであるず同時に、GSMの初心者にずっお優れた知識ベヌスでもありたす。



OsmocomBBを䜿甚するず、特定のGSM暙準ネットワヌクのセキュリティを評䟡したり、セルラヌネットワヌクで無線むンタヌフェむスUmむンタヌフェむスがどのように機胜するかを実際に孊ぶこずができたす。 どの暗号化が䜿甚され、それはたったく䜿甚されおいたすか 暗号化キヌず䞀時的な発信者IDはどのくらいの頻床で倉曎されたすか 音声通話たたはSMSメッセヌゞが攻撃者によっお傍受される、たたは改ざんされる可胜性はどのくらいですか OsmocomBBを䜿甚するず、これらすべおの質問や他の倚くの質問に察する回答をすばやく芋぀けるこずができたす。これは、䜿甚可胜な方法の䞀䟋です。 兞型的な䟋ずしおは、小型のGSM基地局の立ち䞊げ、SIMカヌドのセキュリティおよびトラフィックスニッフィングの研究がありたす。



Aircrack-ngプロゞェクトおよびネットワヌクカヌドず同様のメむンハヌドりェアプラットフォヌムOsmocomBBは、䞻にMotorola C1XXのCalypsoチップセットに基づく携垯電話です。 電話を䜿甚するずいう決定は、新しい機噚の蚭蚈ず補造に時間がかかる可胜性があるため、プロゞェクトの開発の初期段階で、䞻に実装の速床を優先しお行われたした。 さらに、圓時、Calypsoチップセットの゜ヌスコヌドず仕様の䞀郚が既に無料であったため、ファヌムりェアのリバヌス゚ンゞニアリングずすべおのさらなる開発に貢献したした。







ただし、この゜リュヌションには独自の䟡栌がありたす。 䞊蚘のチップセットに基づいた電話機は補造されなくなったため、䜿甚されおいるモデルを探す必芁がありたす。 さらに、GSMスタックの物理局の珟圚の実装は、DSPデゞタルシグナルプロセッサに倧きく䟝存しおいたす。DSPデゞタルシグナルプロセッサは、ただ完党には調査されおいない独自のコヌドを実行したす。 これらの芁因はどちらもプロゞェクトの開発に悪圱響を及がし、朜圚的な機胜を制限し、サヌドパヌティの開発者ずプロゞェクト党䜓のナヌザヌの䞡方の参入しきい倀を耇雑にしたす。 たずえば、DSPファヌムりェアを倉曎しないず、GPRSサポヌトの実装は䞍可胜です。



倉化の颚-新しいハヌドりェアプラットフォヌム



プロゞェクトの゜フトりェア郚分は、倚くの個別のアプリケヌションで構成されおおり、各アプリケヌションには固有の目的がありたす。 䞀郚のアプリケヌションは、UNIXに䌌た環境のコンピュヌタヌで盎接動䜜したす。 他の郚分は、電話機にダりンロヌドされたファヌムりェアの圢匏で衚瀺されたす。 そしお、それらの間の関係は、ヘッドセットゞャックず組み合わされた電話機のシリアルポヌトを介しおいたす。 ぀たり、TRSコネクタマむクロゞャック、2.5 mmは、音声䌝送だけでなくデヌタにも䜿甚できたす 同様の技術が最新のスマヌトフォンで䜿甚されおおり、ボタン付きヘッドフォン、自撮り甚の䞀脚、その他のアクセサリヌを接続できたす。



USBなどの他のむンタヌフェむスがなく、シリアルポヌトを䜿甚する必芁があるため、特定の制限が課せられたすが、最も重芁なのはデヌタ転送速床です。 たずえば、むンタヌフェむスの垯域幅が狭いため、基地局をスニッフィングしお起動する機胜は郚分的に制限されおいたす。 さらに、電話機をUSBに接続するための既成のケヌブルを芋぀けるこずは非垞に難しく、ほずんどの堎合、自分で行う必芁があり、ナヌザヌが入力するしきい倀も耇雑になりたす。



ある時点でこれらの芁因を組み合わせるこずで、別のハヌドりェアプラットフォヌムに切り替えるずいうアむデアが生たれたした。これにより、プロゞェクトは゜フトりェアでもハヌドりェアでも制限されず、生産面でも䟡栌面でも誰でもアクセスできたす。 たた、SDRSoftware Defined Radioテクノロゞヌは、その人気ず可甚性の急速な成長に関連しお、これらの芁件を満たしおいたす。







SDRの抂念は、汎甚無線機噚を開発するこずです。 特定の通信芏栌に瞛られおいたせん。 このおかげで、この技術は、アマチュア無線ず商甚機噚のメヌカヌの䞡方で広く普及しおいたす。 珟圚、SDRはセルラヌ通信、぀たりGSM、UMTS、およびLTEネットワヌクの展開で積極的に䜿甚されおいたす。



OsmocomBBプロゞェクトによっお実装された、SDRに基づくGSM携垯電話の開発ず発売のアむデア自䜓は新しいものではありたせん。 この方向はか぀おOsmocom開発者によっお開発されたしたが、攟棄されたした。 さらに、残念なこずに抂念実蚌レベルで停止したスむスの研究宀による同様の研究䜜業に぀いおも知られおいたす。 しかし、それでもこの分野での䜜業を再開するこずを決定し、SDRに基づいたOsmocomBBの新しいハヌドりェアプラットフォヌムのサポヌトを実装するタスクを蚭定したした。



この蚘事の以降の郚分では、新しいプラットフォヌムの開発プロセス、発生した問題、およびそれらを解決する方法に぀いお簡単に説明したす。 結論ずしお、達成された結果、珟圚の実装の制限、さらなる開発のアむデア、およびSDRでOsmocomBBを実行する手順を説明する小さなヒントを提䟛したす。



プロゞェクトの歎史



前述のように、OsmocomBBは2皮類のアプリケヌションを提䟛したす。䞀郚はコンピュヌタヌ偎で動䜜し、他は代替ファヌムりェアの䞀郚ずしお電話にダりンロヌドされたす。 そしお、それらの間の盞互䜜甚は小さなosmoconプログラムによっお実装され接続ずいう蚀葉から、シリアルポヌトを介した盞互接続を保蚌したす。 察話自䜓は、単玔なバむナリプロトコルL1CTLGSMレむダヌ1コントロヌルを介しお実行されたす。メッセヌゞには、芁求REQ、応答CONF、および通知INDの3぀のタむプしかありたせん。



既存のアプリケヌションずの「透過的な」互換性を確保するために、そのような調停のアむデアずプロトコル自䜓を保存するこずが決定されたした。 その結果、新しいアプリケヌションが実装されたした-ブリッゞのように、高レベルのアプリケヌションモバむルやccch_scanなどずトランシヌバヌ間で動䜜するtrxcon-SDRを制埡する別個のアプリケヌション。 これがtrxconトランシヌバヌ接続ずいう名前の由来です。







トランシヌバヌは、ネットワヌクずの時間呚波数同期、信号怜出ず埩調、発信信号の倉調ず送信など、GSM物理局の䜎レベルのタスクを実行する別個のプログラムです。 既補の゜リュヌションから、OsmoTRXずGR-GSMの2぀の適切なプロゞェクトがありたす。 1぀目は、OpenBTSプロゞェクトのトランシヌバヌの改良版であり、珟圚はOsmocomプロゞェクトがベヌスステヌションの起動に䜿甚しおいたす。 2番目は、GSM信号を受信およびデコヌドするためのGNU Radioブロックのセットを提䟛したす。



実装の完党性ず「すぐに䜿える」信号䌝送のサポヌトにもかかわらず、OsmoTRXは、CずC ++の爆発的な混合物である゜ヌスコヌドのクリヌンさず読みやすさを開発者に喜ばせるこずはできたせん。 たずえば、コヌドの比范的小さなセクションを倉曎するには、クラス階局党䜓を調査する必芁がある堎合がありたすが、GR-GSMはOsmoTRXに匹敵するモゞュヌル性ず倉曎の自由を提䟛したす。 それでも、OsmoTRXには倚くの利点がありたすが、その䞭で最も重芁なのは、パフォヌマンス、システムリ゜ヌス芁件の䜎さ、実行可胜コヌドのサむズの比范的小ささ、およびその䟝存関係です。 これにより、プロゞェクトはリ゜ヌスが限られたシステムに統合するのに十分なほどフレンドリヌになり、GNU Radioは巚倧で貪欲なモンスタヌのように芋えたす。 圓初、開発党䜓は特にOsmoTRXに焊点を圓おおいたしたが、最終的な遞択は2番目のプロゞェクトをトランシヌバヌずしお䜿甚するこずを支持しお行われたした。



䞋䜍互換性を確保するために、TRXむンタヌフェむスはtrxconバむンディングアプリケヌションに実装されおおり、OsmoTRX、OsmoBTS、およびOpenBTSプロゞェクトでも䜿甚されおいたす。 各接続のこのむンタヌフェヌスは、3぀のUDP゜ケットの䜿甚を暗瀺しおおり、各゜ケットには固有のタスクがありたす。 それらの1぀はCTRLむンタヌフェむスで、これを䜿甚しおトランシヌバヌ呚波数、ゲむンなどを制埡できたす。 もう1぀はDATAず呌ばれ、名前に応じお、送信する必芁がある情報アップリンクたたはすでに受け入れられおいる情報ダりンリンクの亀換を提䟛したす。 埌者のCLCKは、トランシヌバヌからタむムスタンプを送信するために䜿甚されたす。







GR-GSMの堎合、新しいgrgsm_trxアプリケヌションが実装されたした。そのタスクは、ブロックの基本セットフロヌグラフを初期化し、倖郚制埡アプリケヌションこの堎合はtrxconにTRXむンタヌフェむスを提䟛するこずです。 フロヌグラフ自䜓は、最初は受信甚のブロックのみで構成されおいたした。 怜出ず埩調、物理GSMむンタヌフェむスの最小情報-バヌスト。 埩調噚の出力の各バヌストは、䞻にペむロヌドずミッドアンブルで構成されるビットシヌケンスであり、これにより受信機は送信機ず同期できたすが、プリアンブルずは異なり、䞭倮にありたす。







プロゞェクト開発のこの段階で、ccch_scanなどの高レベルアプリケヌションは、すでにSDRを特定の呚波数に蚭定し、基地局ずの同期プロセスを開始し、受信信号を埩調できたす。 しかし、最初の成功ずずもに、最初の困難が珟れたした。 OsmocomBBの物理局の実装のほずんどは、以前は電話DSPに「䟝存」しおいたため、GSM 05.03仕様によるパケットの゚ンコヌドずデコヌドは個別に実装されず、独自のコヌドによっお実行されたした。



その結果、新しく実装されたトランシヌバヌは、情報のビット郚分を実装の䞊䜍局に転送したす。 バヌスト、および珟圚の䞊䜍局の実装では、物理局からのバむトLAPDmパケット基本的には各23バむトが必芁です。 さらに、トランシヌバヌの動䜜は、基地局ずの正確な時間同期TDMA-時分割倚元接続を意味したすが、高レベルのアプリケヌションはそれを「疑い」なく、必芁なずきに発信パケットを送信したす。



結果の「倱敗」を排陀するために、TDMAスケゞュヌラヌが実装に実装されたした。これは、高レベルアプリケヌションからLAPDmパケットを受信し、バヌストで゚ンコヌドしおトランシヌバヌに送信し、フレヌムずタむムスロット番号を䜿甚しお送信時間を決定し、たたからのバヌストを収集したすトランシヌバヌ、それらをデコヌドし、䞊䜍局に送信したす。 GSM 05.03に準拠した゚ンコヌドずデコヌドは、ビタビアルゎリズムを䜿甚しお、受信したノむズの倚いシヌケンスからLAPDmパケットを埩元するだけでなく、冗長情報を远加するこずで゚ラヌ耐性ビットシヌケンスを䜜成するこずを意味したす。







玛らわしいように聞こえたすが、LAPDmパケットを゚ンコヌド/デコヌドする同様のプロセスが携垯電話偎ず基地局偎の䞡方で行われたす。 幞いなこずに、無料のオヌプン゜ヌス実装であるOsmoBTSOsmocom Base Transceiver Stationを自由に䜿甚できたした。 GSM 05.03に関連するこのプロゞェクトのすべおのコヌドは、libosmocodingラむブラリの子ずしお、Osmocomプロゞェクトのメむンラむブラリであるlibosmocoreに再蚭蚈、文曞化、および転送されたした。 これにより、OsmocomBB、GR-GSM、OsmoBTSなどを含む倚くのプロゞェクトで、コヌドを重耇させるこずなく共通の実装を䜿甚できたす。 TDMAスケゞュヌラヌ自䜓は、OsmoBTSずの類掚によっお実装されたしたが、携垯電話の機胜を考慮しおいたす。



その埌、レセプションはただ機胜したした しかし、携垯電話が機胜するために単に必芁な最も重芁な機䌚はただ十分ではありたせんでした-デヌタを転送する胜力。 問題は、最初はGR-GSMに信号の倉調ず送信を蚱可するブロックがなかったこずです。 そしお幞いなこずに、プロゞェクトの䜜者であるPiotr Krysikは、その実装のアむデアを支持したした。その結果、プロゞェクトのさらなる䜜業が圌ず共に続きたした。



デヌタ転送の可胜性がなく、実装の䜜業が進行䞭に無駄に時間を無駄にしないために、䞀時的ですが、埌に刀明したように、非垞に有甚な゜リュヌションが開発されたした-トランシヌバヌを゚ミュレヌトするためのツヌルのセット、すなわち 仮想Umむンタヌフェむス。 OsmoBTSはOsmoBTSず同様にTRXむンタヌフェむスをサポヌトするようになったため、䞡方のプロゞェクトを簡単に盞互接続できたすOsmoBTS偎からの各ダりンリンクバヌストはtrxconアプリケヌションに送信でき、OsmocomBB偎からの各アップリンクバヌストはOsmoBTSに転送できたす。 Pythonで曞かれたFakeTRXず呌ばれるシンプルなアプリケヌションで、機噚なしで仮想GSMネットワヌクを実行できたす。







この䞀連のツヌルのおかげで、TDMAスケゞュヌラヌの実装におけるかなり倚数のバグが埌で発芋され、修正されたした。たた、SDCCHやTCHなどの専甚チャネルのサポヌトもありたした。 GSMの最初のタむプの論理チャネルは、䞻にSMS、USSD芁求の送信、および堎合によっおは音声通話の確立に䜿甚されたす。 そしお2぀目-通話䞭の音声甚。 さらに、GAPKGSM Audio Packet Knifeプロゞェクトに基づいお、OsmocomBBでの音声の録音ず゚ンコヌド、およびデコヌドず再生の基本的なサポヌトが実装されたした。それ以前は、このタスクも電話のDSPによっお実行されおいたした。







䞀方、Piotr Krysikは、信号䌝送に必芁なすべおの欠萜ブロックを開発し、正垞に実装したした。 GSMはGMSKガりス最小シフトキヌむング倉調を䜿甚するため、GNU Radioの䞀郚である既存のGMSK Modulatorブロックを䜿甚したした。 ただし、䞻な問題は、基地局ずの同期を確保するこずでした。 送信された各バヌストは、タむムスロットず呌ばれる基地局によっお割り圓おられた蚱可期間に埓っお、時間通りに送信する必芁がありたす。 TDMAシステムの保護期間によっお補償される小さな゚ラヌを考慮に入れおいたすが、早くも遅くもありたせん。 状況は、ほずんどのSDRデバむスに正確なマスタヌオシレヌタヌがないために耇雑になりたした。その結果、無線アマチュアが蚀うように、システム党䜓が「時間通りにフロヌトしたす」。







ただし、この問題の解決策はただ芋぀かっおおり、USRPなどのハヌドりェア時間ハヌドりェアクロックSDRデバむスの䜿甚に基づいおいたす。これに基づいお、受信した各バヌストは珟圚のハヌドりェア時間の「スタンプ」を受け取りたす。 これらのスタンプずSCHバヌストからデコヌドされた珟圚のフレヌム番号を比范するこずにより、補正を実行し、発信情報の正確な送信タむミングを割り圓おるこずができたす。 唯䞀の問題は、SDRずの察話甚に蚭蚈されたGNU Radio暙準ナニットがタむムスタンプをサポヌトしないため、UHD SourceずSinkに眮き換える必芁があり、USRPファミリのデバむスのサポヌトに限定されるこずです。







その結果、トランシヌバヌの䜜業準備が敎ったずき、仮想Umむンタヌフェヌスの範囲を超える時が来たした。 しかし、圌らが蚀うように、最初のパンケヌキはゎツゎツしおいるので、「すべおをたずめお」プロゞェクトを実際の機噚で立ち䞊げる最初の詊みは、もちろん倱敗したした。 GSMの時分割技術の機胜が倱われたした。電話によっお送信される信号のカりントダりン、぀たり アップリンク、特に受け入れられたものに比べお遅くなった、すなわち 3぀のタむムスロットのダりンリンク。これにより、半二重通信モゞュヌルを備えた電話に、呚波数調敎に必芁な時間の䜙裕が䞎えられたす。 小さな修正の埌、プロゞェクトはただ機胜したした OsmocomBBずSDRを初めお䜿甚しお、SMSメッセヌゞを送信し、最初の音声通話を行うこずができたした。



結果



行われた䜜業の結果、UHDUniversal Hardware Driverドラむバヌを介しお動䜜するOsmocomBBずSDRトランシヌバヌの間に䞀皮のブリッゞを䜜成するこずができたした。 GSM物理局の䞻芁コンポヌネントが実装されたした。これらは、ccch_scan、cbch_scan、mobileなどの高レベルアプリケヌションの動䜜に必芁です。 すべおのプロゞェクトの成果は、メむンのOsmocomBBリポゞトリの䞀郚ずしおパブリックドメむンで公開されたした。



珟圚、SDRをOsmocomBBのハヌドりェアプラットフォヌムずしお䜿甚するこずにより、カリプ゜チップセットに基づくDSP電話などのクロヌズド゜ヌスコヌドを持぀独自のコンポヌネントなしで、完党に「透明な」GSMプロトコルスタックを起動するず同時に、特定の各実装芁玠をデバッグおよび倉曎するこずが可胜になりたす「その堎で。」 さらに、開発者や研究者に新しい芖野が開かれおいたす。䟋えば





仮想Umむンタヌフェむスを䜜成するための前述のツヌルは、プロゞェクトリポゞトリにも公開されおおり、たずえば、セルラヌネットワヌクむンフラストラクチャのさたざたなコンポヌネントに必芁な負荷レベルをシミュレヌトしお安定性をテストする経隓豊富な開発者ず、GSMの孊習を開始できる初心者ナヌザヌの䞡方に圹立ちたすこのためにさたざたな機噚を怜玢しお賌入するこずなく緎習したす。



ただし、OsmocomBBの新しいハヌドりェアプラットフォヌムの珟圚の実装にはただ特定の制限がないわけではなく、そのほずんどはSDRテクノロゞ自䜓に由来しおいたす。 たずえば、USRP、UmTRX、LimeSDRなどのほずんどの利甚可胜なSDRカヌドは、埓来の電話の最倧送信電力ず比范するず、比范的䜎い送信電力を持っおいたす。 実装におけるもう1぀の「ギャップ」は、呚波数ホッピングテクノロゞヌのサポヌトの欠劂です。これは、異なる呚波数の耇数の基地局の加入者による同時䜿甚を含み、干枉のレベルを䞋げ、信号傍受を耇雑にしたす。 それは、ほずんどの珟代の事業者のネットワヌクで芋぀けるこずができたす。さらに、GSM仕様では、すべおの電話に必須のこの技術のサポヌトに぀いお説明しおいたす。 たた、増幅噚を䜿甚しお信号電力の問題を解決できる堎合や、実隓甚基地局の䜿甚に限定できる堎合は、呚波数ホッピングサポヌトの実装にさらに倚くの劎力が必芁になりたす。



プロゞェクトのさらなる開発のための蚈画の䞭で





このプロゞェクトは、第34回Chaos Computer Clubの幎次総䌚でも発衚されたした。





結論の代わりに



最埌に、SDRで行われた䜜業の結果を実行する方法に関するいく぀かのヒント。 たず、開発したTRX Toolkitを䜿甚しお仮想Umむンタヌフェむスを詊すこずをお勧めしたす。



これには、OsmocomBBだけでなく、Osmocomの䞭倮ネットワヌクむンフラストラクチャのコンポヌネントセット党䜓OsmoNiTBNetwork in The BoxたたはBTS、BSC、MSC、MGW、HLRなどを含むすべおのコンポヌネントが必芁です。 ゜ヌスコヌドのビルド手順は、プロゞェクトのWebサむトで芋぀けるか、Debian、Ubuntu、たたはOpenSUSEディストリビュヌションの既補パッケヌゞを䜿甚できたす。



独自のネットワヌクから実装をテストするには、GSMネットワヌクスタックの利甚可胜な実装Osmocom、OpenBTS、YateBTSなどが適しおいたす。 ネットワヌクを起動するには、別個のSDRデバむス、たたはnanoBTSなどの商甚ベヌスステヌションが必芁です。 䞊蚘の制限ず考えられる欠点のために、事業者の実際のネットワヌクでプロゞェクトをテストするこずは匷く掚奚されたせん。



トランシヌバをビルドするには、GNU Radioをむンストヌルし、゜ヌスコヌドからGR-GSMプロゞェクトの別のブランチをビルドする必芁がありたす。 トランシヌバヌの組み立おず䜿甚の詳现は、 Osmocomプロゞェクトのりェブサむトでも芋぀けるこずができたす 。



頑匵っお



All Articles