رمزنگاری صدا بر بستر شبکه‌ی موبایل

برای رمزنگاری بر بستر شبکه‌ی موبایل برخی مشکلات موجود است که به شرح زیر بیان می‌گردد

مشکل اول این که نیاز است تا صوت مکالمه رو هنگام تماس تلفنی از میکروفون گرفته‌شود (یعنی قبل از اینکه به کرنل و بعدش چیپست gsm گوشی تحویل داده بشه). برای این کار تا حد خوبی مستندات و مد منبع بخش audio اندروید و بخش های مربوطه تو سطح کرنل رو مطالعه شده است اما هنوز موفقیتی برای گرفتن صدا حاصل نشده است.

مسئله بعدی رمزنگاری صدا است. چالش های این بخش عبارتند از اینکه: اولا باید یک الگوریتم رمزنگاری استفاده شود که متناسب با محدودیت های شبکه gsm باشد. مثلا delay یا همون latency رمز کردن نباید از یک حدی بیشتر شود، یا مثلا الگوریتم باید بلاک بلاک رمزنگاری کند نه به صورتی استریم چون احتمال تغییر سیگنال و در نتیجه بیت ارسالی با استفاده از اون سیگنال موقع ارسال روی شبکه gsm وجود دارد و اگر حتی یک بیت ارور هم باشد و استریمی رمز شده باشد دیگر نمی‌شود decrypt کرد. ثانیا سازوکار key exchanging و مکان ذخیره کلید ها هم یه مسئله مهم دیگه هست که هنوز مجهول است ولی بعید نیست از قابلیت اپلت های روی سیم کارت هم بتوان استفاده کرد.

مسئله سوم هم مربوط به استانداردها و محدودیت شبکه gsm هست. به عنوان مثال پهنای باند voice channel شبکه gsm که صدا عملا از طریق آن منتقل می‌شود زیاد نیست. ثانیا این شبکه برای صدای انسان طراحی شده است، یعنی اگر چیزی غیر از صدای انسان فرستاده‌شود عملا چیزی ارسال نخواهدشد. حال مشکل اصلی دو چیز است: اول اینکه بعد از رمز کردن صدای طرف مکالمه، الگوهایی که توی اون صدا بوده به هم می‌ریزد و از بین می‌رود و خود چیپست gsm وقتی صدای رمز شده را می‌گیرد فکر می‌کند نویز است و فرآیند noise reduction که انجام می‌گیرد، عملا کل صدای رمزشده به عنوان نویز در نظر گرفته می‌شود و حذف می‌شود. پس کاری که باید صورت بگیرد این است که صوت رمز شده را به روشی دوباره به فرمت صدای انسان برگردانیم. مشکل دوم هم پهنای باند voice channel شبکه gsm هست. چون این پهنای باند زیاد نیست عملا باید صوت رو compress یا همان فشرده کرد. تعداد الگوریتم های فشرده سازی که روی شبکه gsm کار می‌کند زیاد نیست و مشخصه چه الگوریتم هایی هست اما اینکه کدوم بهتر جواب میده رو باید تست کرد.