Пояснительная записка к курсовому проекту кп080511пз разработал Орсик М. К. гр. 080511 Скудняков Ю. А
Скачать 448 Kb.
|
14 Методы и средства защиты информации в сетиОсновные методы защиты информации: 1 Установка препятствия – метод физического преграждения пути злоумышленнику к защищаемой информации, в т.ч. попыток с использованием технических средств съема информации и воздействия на нее; 2 Управление доступом – метод защиты информации за счет регулирования использования всех информационных ресурсов, в т.ч. автоматизированной информационной системы предприятия. Управление доступом включает следующие функции защиты: – идентификацию пользователей, персонала и ресурсов информационной системы (присвоение каждому объекту персонального идентификатора); – аутентификацию (установление подлинности) объекта или субъекта по предъявленному им идентификатору; – проверку полномочий (проверка соответствия дня недели, времени суток, запрашиваемых ресурсов и процедур установленному регламенту); – разрешение и создание условий работы в пределах установленного регламента; – регистрацию (протоколирование) обращений к защищаемым ресурсам; – реагирование (сигнализация, отключение, задержка работ, отказ в запросе) при попытках несанкционированных действий. 3 Маскировка – метод защиты информации с использованием инженерных, технических средств, а также путем криптографического закрытия информации. Методы защиты информации на практике реализуются с применением средств защиты. Принято выделять пять основных средств защиты информации: технические, программные, криптографические, организационные, законодательные. Технические средства – защиты это механические, электромеханические, оптические, радио, радиолокационные, электронные и другие устройства и системы, способные выполнять самостоятельно или в комплексе с другими средствами функции защиты данных. Программные средства защиты – это специальные программы, включаемые в состав программного обеспечения системы, для обеспечения самостоятельно или в комплексе с другими средствами, функций защиты данных. Криптографические средства защиты – это методы специального шифрования данных, в результате которого их содержание становится недоступным без применения некоторой специальной информации и обратного преобразования. Организационные средства защиты – это специальные организационно-технические и организационно-правовые мероприятия, акты и правила, осуществляемые в процессе создания и эксплуатации системы для организации и обеспечения защиты информации. Законодательные средства защиты – это законодательные акты, которые регламентируют правила использования и обработки информации, и устанавливают ответственность, и санкции за нарушение этих правил. Основной особенностью любой сетевой системы является то, что её компоненты распределены в пространстве и связь между ними физически осуществляется при помощи сетевых соединений (коаксиальный кабель, витая пара, оптоволокно и т. п.) и программно при помощи механизма сообщений. При этом все управляющие сообщения и данные, пересылаемые между объектами распределенной вычислительной системы, передаются по сетевым соединениям в виде пакетов обмена. Программные средства и методы зашиты активнее и шире других применяются для защиты информации в персональных компьютерах и компьютерных сетях, реализуя такие функции защиты, как разграничение и контроль доступа к ресурсам; регистрация и анализ протекающих процессов, событий, пользователей; предотвращение возможных разрушительных воздействий на ресурсы; криптографическая защита информации; идентификация и аутентификация пользователей и процессов. Следующая группа методов защиты от удалённых атак программно-аппаратные. К ним относятся: программно-аппаратные шифраторы сетевого трафика, методика Firewall, защищенные сетевые криптопротоколы. В общем случае методика Firewall реализует следующие основные функции, как многоуровневая фильтрация сетевого трафика, создание приватных сетей с "виртуальными" IP-адресами и др. В нашей сети будет применяться Firewall, антивирусное программное обеспечение, программы анализа трафика, что позволит тщательно отслеживать входные и выходные потоки данных. ЗаключениеВ данном курсовом проекте согласно техническому заданию была спроектирована информационно-вычислительная сеть. Перед проектированием сначала было определенно количество узлов сети и способы их связи между собой и источниками информации, а так же параметры и места размещения каналов связи и т.п. Выбор структуры при проектировании основывался на том, чтобы обеспечить оптимальную топологическую структуру по всем критериям, хотя самым главным критерием оптимизации в моем курсовом проекте являлась стоимость сети. В ходе проделанной работы были выбраны: сетевое оборудование, среды передачи данных, конфигурации рабочих станций и серверов сети, сетевые протоколы, сетевая операционная система; размещение сетевого оборудования в учебных корпусах. Были рассмотрены такие: важные и интересные вопросы, как удаленный доступ к сети, подключение локальных информационных систем к глобальным сетям типа Internet. Список использованных источников
Приложение А – Листинг программы Исходные коды //--------------------------------------------------------------------------- using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Microsoft.DirectX.DirectSound; using System.IO; using System.Threading; using System.Net.Sockets; using System.Net; using g711audio; namespace VoiceChat { public partial class VoiceChat : Form { private CaptureBufferDescription captureBufferDescription; private AutoResetEvent autoResetEvent; private Notify notify; private WaveFormat waveFormat; private Capture capture; private int bufferSize; private CaptureBuffer captureBuffer; private UdpClient udpClient; //Listens and sends data on port 1550, used in synchronous mode. private Device device; private SecondaryBuffer playbackBuffer; private BufferDescription playbackBufferDescription; private Socket clientSocket; private bool bStop; //Flag to end the Start and Receive threads. private IPEndPoint otherPartyIP; //IP of party we want to make a call. private EndPoint otherPartyEP; private volatile bool bIsCallActive; //Tells whether we have an active call. private Vocoder vocoder; private byte[] byteData = new byte[1024]; //Buffer to store the data received. private volatile int nUdpClientFlag; //Flag used to close the udpClient socket. public VoiceChat() { InitializeComponent(); Initialize(); } /* * Initializes all the data members. */ private void Initialize() { try { device = new Device(); device.SetCooperativeLevel(this, CooperativeLevel.Normal); CaptureDevicesCollection captureDeviceCollection = new CaptureDevicesCollection(); DeviceInformation deviceInfo = captureDeviceCollection[0]; capture = new Capture(deviceInfo.DriverGuid); short channels = 1; //Stereo. short bitsPerSample = 16; //16Bit, alternatively use 8Bits. int samplesPerSecond = 22050; //11KHz use 11025 , 22KHz use 22050, 44KHz use 44100 etc. //Set up the wave format to be captured. waveFormat = new WaveFormat(); waveFormat.Channels = channels; waveFormat.FormatTag = WaveFormatTag.Pcm; waveFormat.SamplesPerSecond = samplesPerSecond; waveFormat.BitsPerSample = bitsPerSample; waveFormat.BlockAlign = (short)(channels * (bitsPerSample / (short)8)); waveFormat.AverageBytesPerSecond = waveFormat.BlockAlign * samplesPerSecond; captureBufferDescription = new CaptureBufferDescription(); captureBufferDescription.BufferBytes = waveFormat.AverageBytesPerSecond / 5;//approx 200 milliseconds of PCM data. captureBufferDescription.Format = waveFormat; playbackBufferDescription = new BufferDescription(); playbackBufferDescription.BufferBytes = waveFormat.AverageBytesPerSecond / 5; playbackBufferDescription.Format = waveFormat; playbackBuffer = new SecondaryBuffer(playbackBufferDescription, device); bufferSize = captureBufferDescription.BufferBytes; bIsCallActive = false; nUdpClientFlag = 0; //Using UDP sockets clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); EndPoint ourEP = new IPEndPoint(IPAddress.Any, 1450); //Listen asynchronously on port 1450 for coming messages (Invite, Bye, etc). clientSocket.Bind(ourEP); //Receive data from any IP. EndPoint remoteEP = (EndPoint)(new IPEndPoint(IPAddress.Any, 0)); byteData = new byte[1024]; //Receive data asynchornously. clientSocket.BeginReceiveFrom(byteData, 0, byteData.Length, SocketFlags.None, ref remoteEP, new AsyncCallback(OnReceive), null); } catch (Exception ex) { MessageBox.Show(ex.Message, "VoiceChat-Initialize ()", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void btnCall_Click(object sender, EventArgs e) { Call(); } private void Call() { try { //Get the IP we want to call. otherPartyIP = new IPEndPoint(IPAddress.Parse(txtCallToIP.Text), 1450); otherPartyEP = (EndPoint)otherPartyIP; //Get the vocoder to be used. if (cmbCodecs.SelectedText == "A-Law") { vocoder = Vocoder.ALaw; } else if (cmbCodecs.SelectedText == "u-Law") { vocoder = Vocoder.uLaw; } else if (cmbCodecs.SelectedText == "None") { vocoder = Vocoder.None; } //Send an invite message. SendMessage(Command.Invite, otherPartyEP); } catch (Exception ex) { MessageBox.Show(ex.Message, "VoiceChat-Call ()", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void OnSend(IAsyncResult ar) { try { clientSocket.EndSendTo (ar); } catch (Exception ex) { MessageBox.Show(ex.Message, "VoiceChat-OnSend ()", MessageBoxButtons.OK, MessageBoxIcon.Error); } } /* * Commands are received asynchronously. OnReceive is the handler for them. */ private void OnReceive(IAsyncResult ar) { try { EndPoint receivedFromEP = new IPEndPoint(IPAddress.Any, 0); //Get the IP from where we got a message. clientSocket.EndReceiveFrom(ar, ref receivedFromEP); //Convert the bytes received into an object of type Data. Data msgReceived = new Data(byteData); //Act according to the received message. switch (msgReceived.cmdCommand) { //We have an incoming call. case Command.Invite: { if (bIsCallActive == false) { //We have no active call. //Ask the user to accept the call or not. if (MessageBox.Show("Call coming from " + msgReceived.strName + ".\r\n\r\nAccept it?", "VoiceChat", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { SendMessage(Command.OK, receivedFromEP); vocoder = msgReceived.vocoder; otherPartyEP = receivedFromEP; otherPartyIP = (IPEndPoint)receivedFromEP; InitializeCall(); } else { //The call is declined. Send a busy response. SendMessage(Command.Busy, receivedFromEP); } } else { //We already have an existing call. Send a busy response. SendMessage(Command.Busy, receivedFromEP); } break; } //OK is received in response to an Invite. case Command.OK: { //Start a call. InitializeCall(); break; } //Remote party is busy. case Command.Busy: { MessageBox.Show("User busy.", "VoiceChat", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); break; } case Command.Bye: { //Check if the Bye command has indeed come from the user/IP with which we have //a call established. This is used to prevent other users from sending a Bye, which //would otherwise end the call. if (receivedFromEP.Equals (otherPartyEP) == true) { //End the call. UninitializeCall(); } break; } } byteData = new byte[1024]; //Get ready to receive more commands. clientSocket.BeginReceiveFrom(byteData, 0, byteData.Length, SocketFlags.None, ref receivedFromEP, new AsyncCallback(OnReceive), null); } catch (Exception ex) { MessageBox.Show(ex.Message, "VoiceChat-OnReceive ()", MessageBoxButtons.OK, MessageBoxIcon.Error); } } /* * Send synchronously sends data captured from microphone across the network on port 1550. */ private void Send() { try { //The following lines get audio from microphone and then send them //across network. captureBuffer = new CaptureBuffer(captureBufferDescription, capture); CreateNotifyPositions(); int halfBuffer = bufferSize / 2; captureBuffer.Start(true); bool readFirstBufferPart = true; int offset = 0; MemoryStream memStream = new MemoryStream(halfBuffer); bStop = false; while (!bStop) { autoResetEvent.WaitOne(); memStream.Seek(0, SeekOrigin.Begin); captureBuffer.Read(offset, memStream, halfBuffer, LockFlag.None); readFirstBufferPart = !readFirstBufferPart; offset = readFirstBufferPart ? 0 : halfBuffer; //TODO: Fix this ugly way of initializing differently. //Choose the vocoder. And then send the data to other party at port 1550. if (vocoder == Vocoder.ALaw) { byte[] dataToWrite = ALawEncoder.ALawEncode(memStream.GetBuffer()); udpClient.Send(dataToWrite, dataToWrite.Length, otherPartyIP.Address.ToString (), 1550); } else if (vocoder == Vocoder.uLaw) { byte[] dataToWrite = MuLawEncoder.MuLawEncode(memStream.GetBuffer()); udpClient.Send(dataToWrite, dataToWrite.Length, otherPartyIP.Address.ToString(), 1550); } else { byte[] dataToWrite = memStream.GetBuffer(); udpClient.Send(dataToWrite, dataToWrite.Length, otherPartyIP.Address.ToString(), 1550); } } } catch (Exception ex) { MessageBox.Show(ex.Message, "VoiceChat-Send ()", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { captureBuffer.Stop(); //Increment flag by one. nUdpClientFlag += 1; //When flag is two then it means we have got out of loops in Send and Receive. while (nUdpClientFlag != 2) { } //Clear the flag. nUdpClientFlag = 0; //Close the socket. udpClient.Close(); } } /* * Receive audio data coming on port 1550 and feed it to the speakers to be played. */ }. Приложение Б – Схема алгоритма У |