криптография

WCF и шифрование трафика

Приведу пример кода для шифрования трафика между клиентом и сервером в WCF комуникаций.

Шифрование сертификатами

на клиенте прописываем

                Uri tcpUri = new Uri("net.tcp://" + settings.cServer + ":7777/");
                EndpointAddress address = new EndpointAddress(tcpUri, EndpointIdentity.CreateDnsIdentity("CertName")); //имя сертификата
                NetTcpBinding binding = new NetTcpBinding();

                binding.Security.Mode = SecurityMode.Transport; //шифруем только траспорт
                binding.Security.Transport.ClientCredentialType = TcpClientCredentialType.None; //аутентификация нам пока не нужна
               
                ChannelFactory<IWCFService> factory = new ChannelFactory<IWCFService>(binding, address);
                factory.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.PeerTrust; //удалённому серверу мы доверяем, так же можно использовать класс для валидации сертификата (смотри другие члены класса X509CertificateValidationMode)
                service = factory.CreateChannel();

На сервере пишем следующий код

Uri baseAddress = new Uri("net.tcp://localhost:7777/");
         
            try
            {
                NetTcpBinding binding = new NetTcpBinding();
                binding.Security.Mode = SecurityMode.Transport;
                binding.Security.Transport.ClientCredentialType = TcpClientCredentialType.None;
               
                svcHost = new ServiceHost(typeof(WCFService), baseAddress);
                svcHost.Credentials.ServiceCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My,
                    X509FindType.FindBySubjectName, "CertName"); //сертификат у нас уже добавлен в хранилище, поэтому делаем его поиск по сабжект нэйм
                svcHost.AddServiceEndpoint(typeof(IWCFService), binding, String.Empty);
                svcHost.Credentials.IssuedTokenAuthentication.CertificateValidationMode = X509CertificateValidationMode.None; //аутентификация не нужна
                svcHost.Open();

Сертификат создаём при помощи утилиты makecert.exe из комплекта вижуал студии.
makecert.exe -sr LocalMachine -ss My -n CN=CertName-sky exchange -sk CertName-key

Шифрование средствами Windows

на клиенте

                Uri tcpUri = new Uri("net.tcp://" + settings.cServer + ":7777/");
                EndpointAddress address = new EndpointAddress(tcpUri);
                NetTcpBinding binding = new NetTcpBinding();


                binding.Security.Mode = SecurityMode.Transport;
                binding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows;
                NetworkCredential credential = new NetworkCredential();
                client = new ServiceClient(binding, address);

                credential.Domain = "Domen";
                credential.UserName = "User";
                credential.Password = "Password";
               
                client.ClientCredentials.Windows.ClientCredential = credential;
                clinet.Func("test");

Класс ServiceClient, каждая функция сервиса должна быть прописана в классе по примеру функции Func

  class ServiceClient : ClientBase<IService>, IService
    {
        public ServiceClient(NetTcpBinding binding, EndpointAddress address)
            : base(binding, address)
        {
        }
         public void Func(string param)
        {
            return base.Channel.Func(param);
        }

}

на сервере

             Uri baseAddress = new Uri("net.tcp://localhost:7777/");
              NetTcpBinding binding = new NetTcpBinding();
              binding.Security.Mode = SecurityMode.Transport;
              binding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows;
               
              svcHost = new ServiceHost(typeof(Service), baseAddress);
              svcHost.AddServiceEndpoint(typeof(IService), binding, String.Empty);

Нужна будет помощь, пишите )

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

768-битный ключ RSA успешно взломан

взлом rsaИнженеры из Японии, Швейцарии, Нидерландов и США успешно вычислили данные, зашифрованные с помощью криптографического ключа RSA длиной 768 бит. По словам исследователей, после их опыта в качестве надежной системы шифрования рекомендуется использовать только криптографические ключи длиной 1024 бита и более. Все лючи имеющие длину менее 768 бит уже сейчас можно взломать, правда с определёнными усилиями.

Взломать криптосистему команде учённых удалось в начале декабря, однако  доклад на эту тему они представили только сегодня. Сами авторы метода взлома говорят, что их работы могут быть восприняты как незаконные в некоторых странах, в виду того что алгоритм RSA много где используется в государственных и военных нуждах, однако исследователи поясняют, что их работа — это чисто академический опыт и ни одного реального ключа, находящегося в использовании они не взломали. Хотя сделать это возможно.

Из описания работы, вычисление значений криптоключа инженеры проводили методом факторизации модульных чисел. Метод основан на сравнительно простых арифметических действиях, объединенных в сложные формулы.

Как пояснил Андрей Тимофеев из института CWI в Амстердаме, для своих расчетов они использовали самое обычное оборудование, доступное в продаже. Самым первым шагом во взломе системы служило вычисление подходящих простых множителей. Если бы эта процедура проводилась основным методом перебора, то на процессоре AMD Opteron 2.2 ГГц он бы занял примерно 1500 лет и около 5 терабайт данных. Но, исследователи решили использовать многомерные математические матрицы.

Создание кластера матриц заняло около 12 часов. На основе матриц размерностью 2200 на 2200 исследователи обнаружили множители, последующие процессы вычисления шли значительно быстрее и уже на базе современных многоядерных процессоров. В результате группе удалось вычислить 232-цифровой ключ, который открыл доступ к зашифрованным данным.

Учёные уверены, что если использовать их метод факторизации, взломать 512-битный RSA-ключ можно было еще лет 5-10 назад.

Данные о работе исследователей можно просмотреть по адресу http://eprint.iacr.org/2010/006.pdf

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Создаём криптоконтэйнеры при помощи TrueCrypt

More →

Перед каждым встаёт вопрос защиты данных имеющих определённую ценность, например файлы с паролями, фотки вашей обнаженной подруги =),да и просто вайлы которые ну просто не как не должны попасть в руки иному лицу. В защите наших данных нам поможет такая замечательная программа как TrueCrypt. Программа даёт нам возможность создавать криптоконэтйнеры, тоесть все наши важные данные будут хранится в едином файле который мы можем примонтировать как обычный виртуальный диск. И так, попробуем.

Скачиваем программку c официального сайты http://www.truecrypt.org/downloads,кстате программа обсолютно бесплатная.

закачка truecrypt

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong