Главная страница
Навигация по странице:

  • ПРИЛОЖЕНИЕ А Оконечное шифрование в Skype

  • ПРИЛОЖЕНИЕ Б Установщик драйвера (cryptoaudio.inf)

  • АНАЛИЗ БЕЗОПАСНОСТИ ПЕРЕДАЧИ ГОЛОСОВОГО ТРАФИКА В VOIP И ОБЕСПЕЧЕНИЕ ЕГО ЗАЩИЩЕННОСТИ. Дипломная работа специалиста


    Скачать 1.45 Mb.
    НазваниеДипломная работа специалиста
    АнкорАНАЛИЗ БЕЗОПАСНОСТИ ПЕРЕДАЧИ ГОЛОСОВОГО ТРАФИКА В VOIP И ОБЕСПЕЧЕНИЕ ЕГО ЗАЩИЩЕННОСТИ
    Дата31.05.2022
    Размер1.45 Mb.
    Формат файлаdoc
    Имя файлаanaliz_bezopasnosti_peredachi_golosovogo_trafika_v_voip_i_ob.doc
    ТипДиплом
    #559017
    страница8 из 9
    1   2   3   4   5   6   7   8   9

    5.5.3. Достоинства и недостатки
    Разработанное средство позволяет защитить голосовой трафик, передающийся при помощи IP-телефонии. При этом отсутствует зависимость от каких-либо средств разработки и других инструментов, предоставляемых VoIP-клиентами.


    • тоже время для использования данного средства предъявляются повышенные требования к передаче голоса по сети. Не допускается сильное сжимание потока при передаче, помехи и прочие видоизменения сигнала.


    Данным требованиям могут удовлетворить лишь специализированные, корпоративные средства VoIP, например, программный клиент Cisco Jabber Video for TelePresence, который используется в Правительстве Санкт-Петербурга.

    59
    ЗАКЛЮЧЕНИЕ




    Отдельно рассмотрены проблемы протокола Skype, самого распространенного VoIP-клиента в мире. Показано, что уровень безопасности Skype не является достаточным для безопасного взаимодействия с целью передачи конфиденциальных данных.


    • связи с изложенным, в данной работе предложен способ обеспечения безопасного взаимодействия в рамках Skype, а именно использование оконечного шифрования при передаче голоса и сообщений.


    Было разработано программное средство, реализующее указанный подход, и, поддерживающее весь необходимый для безопасного взаимодействия функционал, а именно:


    1. Установка сеансового ключа по классическому протоколу Диффи-


    Хеллмана с заданным абонентом.


    1. Отправка сообщений, зашифрованных по алгоритму симметричного шифрования ГОСТ 28147-89 заданному абоненту.




    1. Прием зашифрованных сообщений и их расшифрование.




    1. Установка сеансового ключа в момент совершения вызова.




    1. Зашифрования исходящего аудиосигнала.




    1. Расшифрование входящего аудиосигнала.




    • результате было получено средство, обеспечивающее безопасное общение посредством Skype.


    Однако исследования и разработка, проводимые в рамках данной дипломной работы, на этом не закончились.
    Была проанализирована возможность создания средства, обеспечивающего безопасное общение не только посредством Skype, но и любого другого VoIP-клиента.
    Такая возможность была найдена.

    60
    Для этого было использовано виртуальное аудиоустройство и реализованы следующие функции:


    1. Обмен звуковыми потоками между входящим и исходящим интерфейсами, т.е. между динамиком и микрофоном.




    1. Зашифрование или расшифрование сигнала во время обмена потоками между входным и выходным интерфейсами аудиоустройства.




    • результате было получено виртуальное аудиоустройство, реализующее оконечное шифрование передаваемого голосового трафика. Для безопасного взаимодействия посредством VoIP достаточно выбрать его в качестве входного или выходного аудиоинтерфейса.


    Таким образом, в данной работе были предложены способы достижения безопасной передачи голоса посредством VoIP.

    61
    СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ


    1. Студенческая научная конференция "Информатика и кибернетика". [Электронный ресурс] URL: http://www.ftk.spbstu.ru/news/1360008/ (дата обращения:


    09.05.2015).


    1. Baset S., Schulzrinne H. An Analysis of the Skype Peer-to-Peer Internet Telephony Protocol. Department of Computer Science Columbia University, New York 2004.




    1. DoesSkypeuseencryption?[Электронныйресурс].URL:


    https://support.Skype.com/en/faq/FA31/does-Skype-use-encryption?q=security (дата обращения: 09.05.2015).


    1. LoopbackAudioDriver. [Электронный ресурс] URL: https://github.com/02strich/LoopbackAudioDriver (дата обращения: 09.05.2015).




    1. Microsoft Virtual Audio Device Driver Sample. [Электронный ресурс]


    URL: https://code.msdn.microsoft.com/windowshardware/virtual-audio-device-3d4e6150
    (дата обращения: 09.05.2015).


    1. Microsoft помогал АНБ и ФБР шпионить за пользователями Hotmail, Skype и Outlook [Электронный ресурс]. URL: http://habrahabr.ru/post/186460/ (дата обращения: 09.05.2015).




    1. SearchInformSkypeSniffer[Электронныйресурс].URL:


    http://searchinform.ru/main/full-text-search-information-security-product-Skype-sniffer.html (дата обращения: 09.05.2015).


    1. Skype and the Bavarian trojan in the middle [Электронный ресурс]. URL:


    http://wikileaks.org/wiki/Skype_and_the_Bavarian_trojan_in_the_middle (дата обращения: 09.05.2015).


    1. Skype захватил 40% международных разговоров [Электронный ресурс].


    URL: http://www.white-windows.ru/skype-zakhvatil-40-mezhdunarodnykh-razgovorov/
    (дата обращения: 09.05.2015).

    62


    1. Skype меняет топологию своей сети [Электронный ресурс]. URL: http://www.cybersecurity.ru/news/150078.html (дата обращения: 09.05.2015).




    1. Skypeнеуязвим?Миф![Электронныйресурс].URL:


    http://discussiya.com/2012/09/17/Skype-securiry/ (дата обращения: 09.05.2015).


    1. System.Net.Sockets – пространство имен. [Электронный ресурс] URL:


    https://msdn.microsoft.com/ru-ru/library/system.net.sockets(v=vs.110).aspx (дата обращения: 09.05.2015).


    1. Top Ten Security Issues Voice over IP (VoIP). [Электронный ресурс] URL:


    http://www.designdata.com/wp-
    content/uploads/sites/321/whitepaper/top_ten_voip_security_issue.pdf (дата обращения
    09.05.2015).


    1. VoIP Security and Privacy Threat Taxonomy. [Электронный ресурс] URL:


    http://www.voipsa.org/Activities/VOIPSA_Threat_Taxonomy_0.1.pdf (дата обращения 09.05.2015).


    1. Voice Security Primer: Protecting the Voice Infrastructure, Call-Management


    System,Applications,andEndpoints.[Электронныйресурс]URL:
    http://www.cisco.com/c/en/us/solutions/collateral/enterprise/unified-communications-ip-
    communications-voip/net_implementation_white_paper0900aecd80460724.html (дата обращения 09.05.2015).


    1. WDK, debugging tools, and driver samples. [Электронный ресурс] URL:


    https://msdn.microsoft.com/en-us/windows/hardware/gg454513.aspx (дата обращения:
    09.05.2015).


    1. Головкова А.С. Skype: Возможности и угрозы / Головкова А.С.,


    Краснощекова М.С. // Студенческий научный форум: IV Международная студенческая электронная научная конференция (15 февраля – 31 марта 2012).


    1. ГОСТ 28147-89. Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования. [Электронный


    ресурс]URL:http://protect.gost.ru/document.aspx?control=7&id=139177(дата
    обращения: 09.05.2015).

    63


    1. Громов И. А. Стратегия и ход информатизации Санкт-Петербурга: основные задачи на 2013-2015 годы [Электронный ресурс]. URL:


    http://www.cnews.ru/reviews/ppt/forum_plenum/13.%20gromov_ivan.pdf (дата обращения: 09.05.2015).


    1. Идов Р. Правда и вымыслы о прослушивании Skype//Директор по безопасности. 2011. № 7. С. 64–66.




    1. Касаткин Ф. Связанные одной сетью // ИТ-диалог. 2014. № 6. С. 20–23.




    1. Положение о конфиденциальности в Skype [Электронный ресурс]. URL: http://www.Skype.com/ru/legal/privacy/ (дата обращения: 09.05.2015).




    1. Семейство продуктов сетевой безопасности ЗАСТАВА [Электронный ресурс]. URL: http://www.zastava.ru/upload/zastava/zastava_opisanie_2014.pdf (дата обращения: 09.05.2015).

    64
    ПРИЛОЖЕНИЕ А

    Оконечное шифрование в Skype
    namespace CryptoSkype
    {

    class Intercept : IDisposable

    {

    NetworkStream outStream;
    Call call;

    public static ILog log,msg_log;

    public static string nick;
    public static BigInteger p, g, a, b, recv;
    public static BigInteger[] exp = new BigInteger[100]; public static StrongNumberProvider _strongRng = new
    StrongNumberProvider();
    public static bool role = false; public static UserCollection members; public static User user; public static IChat ichat;
    public static byte[] key = new byte[0]; public static bool key_status = false;
    public static bool multi = false, multicall = false; public static string[] users; public static int count;

    public static int index = 0, ii = 0;
    private void skype_MessageStatus(ChatMessage msg, TChatMessageStatus status)
    { //перехват входящих и исходящих сообщений
    if (msg.Body.IndexOf(trigger) == 0 && String.Compare(status.ToString(), "cmsReceived") == 0)

    {
    string mesg = msg.Body.Remove(0, trigger.Length); string type = mesg.Substring(0, 1); mesg = mesg.Remove(0, 1);
    switch (type)
    {//обмен сообщениями по протоколу Диффи-Хеллмана case "m"://групповой чат

    multi = true;

    count = Convert.ToInt32(mesg);
    users = new string[count];

    exp = new BigInteger[100];

    messages = new string[1000];
    mes_num = 0;

    break;

    case "u"://абоненты группового чата

    users[0] = mesg;
    break;

    case "p":

    p = new BigInteger(mesg, 36);

    65
    index = 0;


    1. = 0; key = null;


    key_status = false; role = false;
    break; case "g": g = new BigInteger(mesg, 36); break;
    case "e":
    if (!role) //пассивная роль в установлении //ключа

    {

    if (multi)//групповой чат

    {
    exp[ii] = new BigInteger(mesg, 36);

    if (index == 0)

    {
    a = BigInteger.GenPseudoPrime(512, 30, MicInterceptor._strongRng);

    skype.SendMessage(users[0],

    "!#skey_init#!e" + g.ModPow(a,
    p).ToString(36));

    }

    if (index == count - 1)

    {
    key = new byte[exp[ii].ModPow(a, p).GetBytes().Length];
    key = exp[ii].ModPow(a, p).GetBytes();
    key_status = true;

    msg_log.Info(true,
    "==========================================="); msg_log.Info(true, "Chat opened.");

    }

    else if (index < count - 1)
    {
    skype.SendMessage(users[0], "!#skey_init#!e" + exp[ii].ModPow(a, p).ToString(36));
    }

    index++;

    ii++;
    }

    else //чат с одним абонентом

    {

    recv = new BigInteger(mesg, 36);
    a = BigInteger.GenPseudoPrime(512, 30, MicInterceptor._strongRng);

    skype.SendMessage(msg.Sender.Handle,
    "!#skey_init#!e" +

    MicInterceptor.g.ModPow(MicInterceptor.a,

    MicInterceptor.p).ToString(36));

    66
    key = new byte[recv.ModPow(a, p).GetBytes().Length];

    key = recv.ModPow(a,
    p).GetBytes();

    key_status = true;

    }

    }
    else//активная роль в установлении ключа

    {

    if (multi) //групповой чат
    {
    exp[ii] = new BigInteger(mesg, 36); if (index == count - 1) {
    key = new byte[exp[ii].ModPow(b, p).GetBytes().Length];
    key = exp[ii].ModPow(b, p).GetBytes(); key_status = true;

    for (int i = 0; i < users.Length; i++)

    {
    user = new SKYPE4COMLib.User();

    user.Handle = users[i];

    members.Add(user);

    }
    ichat = skype.CreateChatMultiple(members); msg_log.Info(true,

    "===========================================");
    msg_log.Info(false, "Chat opened.");

    ichat.SendMessage("!#chat_init#!");

    }

    else if (index < count - 1)
    {
    skype.SendMessage(users[0], "!#skey_init#!e" + exp[ii].ModPow(b, p).ToString(36));
    }

    index++;

    ii++;

    }
    else //чат с одним абонентом

    {

    recv = new BigInteger(mesg, 36);
    key = new byte[recv.ModPow(b,

    p).GetBytes().Length];
    key = recv.ModPow(b, p).GetBytes(); key_status = true; role = false;

    }

    }
    break;
    }

    67
    }
    else if (msg.Body.IndexOf(trigger2) == 0 && String.Compare(status.ToString(), "cmsReceived") == 0)
    {//приём и расшифорвание зашифрованного сообщения string mesg = msg.Body.Remove(0, trigger2.Length); byte[] uplain = GetBytes(mesg);
    byte[] decr = new byte[uplain.Length];
    Gost28147.Gost28147EcbDecrypt(decr, uplain, key);

    msg_log.Info(false, " from {0}\n{1} ", msg.FromHandle

    ,GetString(decr));
    }

    }
    void OnSkypeCallStatus(Call call, TCallStatus status) {//установка сеансового ключа в момент совершения вызова
    log.Info(false, "SkypeCallStatus: {0}", status); if (status == TCallStatus.clsRouting) {
    role = true;

    this.call = call;

    nick = call.PartnerHandle;
    key = BigInteger.GenPseudoPrime(512, 30, _strongRng).GetBytes();

    DHkey();

    }
    }
    void DHkey()
    {//установка и отправка параметров для установки сеансового ключа по классическому протоколу Диффи-Хеллмана
    if (role)

    {
    p = BigInteger.GenPseudoPrime(256, 30, _strongRng); b = BigInteger.GenPseudoPrime(256, 30, _strongRng); g = (BigInteger)2;
    skype.SendMessage(nick, "!#skey_init#!p" +

    p.ToString(36));

    skype.SendMessage(nick, "!#skey_init#!g" +
    g.ToString(36));
    skype.SendMessage(nick, "!#skey_init#!e" + g.ModPow(b, p).ToString(36));
    }

    }
    void OnMicServerExecute(object sender, DataReceivedEventArgs
    args)
    {//Зашифрование исходящего аудиопотока if (outStream != null)
    {
    bufferStream.SetLatestInBuffer(args.Buffer); byte[] encr = new byte[args.Buffer.Length];

    68
    Gost28147.Gost28147Ecb(args.Buffer, encr, key); outStream.Write(encr, 0, encr.Length);
    }
    }

    }

    }

    namespace CryptoSkype

    {
    [Export(typeof(MainForm))]
    public partial class MainForm : Form {
    public MainForm()

    {

    InitializeComponent();
    var log = new RichTextLogger(this.richTextBox1);
    var msg_log = new RichTextLogger(this.richTextBox2); audioGraph = new MainFormAudioGraph(log, msg_log); audioGraph.ConnectToSkpe();

    }
    private void button1_Click(object sender, EventArgs e)

    {//сохранение сеансового ключа в файл
    SaveFileDialog save = new SaveFileDialog(); save.InitialDirectory =
    Convert.ToString(Environment.SpecialFolder.MyDocuments); save.Filter = "Session key file (*.KEY)|*.key|All Files

    (*.*)|*.*";

    if (save.ShowDialog() == DialogResult.OK)

    {
    using (FileStream fstream = new FileStream(save.FileName, FileMode.OpenOrCreate))

    {
    fstream.Write(Intercept.key, 0, Intercept.key.Length);

    }

    }
    }
    private void button2_Click(object sender, EventArgs e)
    {//открытие сеансового ключа из файла
    OpenFileDialog open = new OpenFileDialog(); open.InitialDirectory =
    Convert.ToString(Environment.SpecialFolder.MyDocuments); open.Filter = "Session key file (*.KEY)|*.key|All Files

    (*.*)|*.*";
    open.Title = "Select a SessionKey File"; if (open.ShowDialog() == DialogResult.OK) {

    69
    using (FileStream fstream =

    File.OpenRead(open.FileName))

    {
    Intercept.key = new byte[fstream.Length]; fstream.Read(Intercept.key, 0,

    Intercept.key.Length);
    Intercept.log.Info(false, "Session key: {0}", Intercept.GetString(Intercept.key));

    }

    }
    }
    private void button3_Click(object sender, EventArgs e)

    {//установка сеансового ключа с заданным абонентом
    Intercept.role = true;

    if (textBox1.Text == "")

    MessageBox.Show("Имя пользователя не заполнено");
    else

    {

    Intercept.nick = textBox1.Text;

    DHkey();
    textBox3.Text = textBox1.Text;

    }

    }
    private void button4_Click(object sender, EventArgs e)

    {//зашифрованный чат между абонентами
    if (Intercept.key.Count() == 0) MessageBox.Show("Session key is not set");

    else if (textBox2.Text != "" && textBox3.Text != "")

    {

    Intercept.nick = textBox3.Text;
    byte[] plain = Intercept.GetBytes(textBox2.Text); byte[] encr = new byte[plain.Length];
    Gost28147.Gost28147Ecb(plain, encr, Intercept.key); Intercept.msg_log.Info(false, " to {0}\n{1}",

    textBox3.Text,textBox2.Text);
    Intercept.skype.SendMessage(Intercept.nick,
    "!#encr__msg#!" + Intercept.GetString(encr)); textBox2.Clear();
    }

    }

    }

    }

    70
    ПРИЛОЖЕНИЕ Б

    Установщик драйвера (cryptoaudio.inf)
    [Version]
    Signature="$CHICAGO$"

    Class=MEDIA

    Provider=%MSFT%

    ClassGUID={4d36e96c-e325-11ce-bfc1-08002be10318}
    DriverVer = 02/22/2007, 6.0.6000.1

    [SourceDisksNames]

    222="CryptoAudio","",222
    [SourceDisksFiles]
    cryptoaudio.sys=222

    cryptoaudio2.sys=222
    [Manufacturer]

    %MfgName%=MicrosoftDS,NTAMD64
    [MicrosoftDS]
    %cryptoInput.DeviceDesc%=cryptoInput,*cryptoInput

    %cryptoOutput.DeviceDesc%=cryptoOutput,*cryptoOutput
    [MicrosoftDS.NTAMD64]

    %cryptoInput.DeviceDesc%=cryptoInput,*cryptoInput

    %cryptoOutput.DeviceDesc%=cryptoOutput,*cryptoOutput
    [DestinationDirs]

    cryptoInput.CopyList=10,system32\drivers

    cryptoOutput.CopyList=10,system32\drivers

    ;======================================================

    1   2   3   4   5   6   7   8   9


    написать администратору сайта