antique
pragmaticperl.com
Pragmatic Perl 23
ru
perl, programming
pragmaticperl.com
calibre 2.32.1
9.10.2015
a1ed7fc2-6484-4482-b967-412719acca90
1.0
pragmaticperl.com
2015
Pragmatic Perl 23
pragmaticperl.com
Выпуск 23. Январь 2015
Другие выпуски и форматы журнала всегда можно загрузить с pragmaticperl.com. С вопросами и предложениями пишите на почту editor at pragmaticperl dot com.
Комментарии к каждой статье есть в html-версии. Подписаться на новые выпуски можно по ссылке pragmaticperl.com/subscribe.
Авторы статей: Андрей Шитов, Сергей Бронников, Алексей Варяник, Владимир Леттиев
Обложка: Марко Иванык
Корректор: Андрей Шитов
Выпускающий редактор: Вячеслав Тихановский
Ревизия: 2015-10-09 11:27
© «Pragmatic Perl»
Pragmatic Perl 23
От редактора. Опрос
Взгляд на 2014 г.
Тестирование с помощью Mock-объектов
Имитация поведения HTTP::Tiny
Инъекция зависимости
Фабричный метод
Углубленное тестирование
Проверка поведения при неуспешном ответе сервера
Проверка поведения при неправильном JSON
Проверка, что JSON правильно преобразуется в Perl-структуру
Проверка, что метод get вызывается с правильными параметрами
Заключение
Tapper — система тестирования ПО полного цикла
Что внутри
Как это работает
Результаты тестирования
Интеграция с другими сервисами и инструментами
Заключение
Как нанять Perl-программиста
Об авторе
Собеседования
Слышу звон, не знаю где он
Предыстория
Набор
Тестовые задания
Начало
Домашнее задание
Проблема №1: Проверка
Проблема №2: Статистика
Проблема №3: Апелляция
Английский
Собеседование
Выводы
Использование TLS в Perl
Словарик криптографа
Алиса, Боб и другие персонажи
Шифрование
Симметричные алгоритмы
Асимметричные алгоритмы, или алгоритмы с открытым ключом
Аутентификация и целостность
Цифровая подпись
Криптографическая хеш-функция
Сертификат, центры сертификации и инфраструктура публичных ключей (PKI)
Отзыв сертификата, CRL
OCSP, OCSP stapling
Протокол TLS
Полная процедура согласования
Сокращённая процедура согласования
Совершенная прямая секретность (Perfect forward secrecy, PFS)
Алгоритм Диффи-Хеллмана
Алгоритм Диффи-Хеллмана на эллиптических кривых
Диффи-Хеллман в TLS
Шифры
Расширения TLS-протокола
Сессионные билеты
Указание имени сервера (SNI)
Запрос статуса сертификата
Поддержка шифров на эллиптических кривых (EC)
ALPN и NPN
Heartbeat
Использования сжатия в TLS
Обзор модулей для использования TLS в Perl
IO::Socket::SSL
AnyEvent::TLS
Заключение
P.S. Protocol::TLS
Обзор CPAN за декабрь 2014 г.
Статистика
Новые модули
Mojo::JSON_XS
App::Prove::Watch
AnyEvent::GnuPG
Alien::Web
Thrust
Debug::Statements
Crypt::Rijndael::PP
SQL::Interpol
Обновлённые модули
perl 5.21.7
Email::MIME::Kit 3.000001
Want 0.25
Class::Accessor::Inherited::XS 0.07
XML::RSS 1.56
PadWalker 2.0
Log::Any 1.02
Gearman 1.12
HTTP::Parser::XS 0.17
PerlPowerTools 1.003
Image::Info 1.37
autodie 2.26
Интервью с Рикардо Сигнесом (Ricardo Signes)
От редактора. Опрос
Промежуточные результаты опроса читателей журнала
С праздниками, дорогие друзья!
У нас появился онлайн irc-чат, где можно пообщаться на Perl-темы и не только. А также OPDS-каталог для тех, кто пользуется электронными книжками.
С 11 декабря прошлого года мы проводим опрос «Как сделать журнал лучше?». Опрос будет еще открыт до следующего 24-го выпуска. А пока промежуточные результаты.
На текущий момент ответили на вопросы 112 человек.
Оцените журнал в целом
Отлично — 58% (65)
Хорошо — 42% (47)
Плохо — 0% (0)
Оцените сложность статей
Все сложные — 3% (4)
Разного уровня — 87% (97)
Слишком легко — 10% (11)
Оцените глубину статей
Довольно подробно — 16% (18)
Вполне адекватно — 73% (82)
Очень поверхностно — 11% (12)
Оцените объем выпусков
Слишком много статей — 0% (0)
Вполне нормально — 65% (72)
Мало статей — 35% (38)
Чего не хватает?
Картинок в статьях — 46% (34)
Оценок статьям — 32% (23)
Форума на сайте — 22% (16)
Некоторые комментарии уже выполнены:
работающее оглавления в PDF;
веб-клиент для IRC (http://irc.pragmaticperl.com).
Хотели бы вы стать автором?
Да, обязательно стану — 26% (27)
Сомневаюсь — 43% (45)
Нет, только читаю — 31% (32)
По мере возможностей будем освещать подсказанные вами темы. Спасибо за ваши добрые пожелания и отзывы!
Друзья, журнал ищет новых авторов. Не упускайте такой возможности! Если у вас есть идеи или желание помочь, пожалуйста, свяжитесь с нами.
Приятного чтения.
■ Вячеслав Тихановский
Взгляд на 2014 г.
Краткий обзор заметных событий в мире Perl за прошедший год
1 января
Выпущена версия 1.0 beta компилятора RPerl (Restricted Perl) — проекта по созданию компилятора с трансляцией кода на Perl в C++ и последующим возможным исполнением через Inline::CPP в обычном перле.
8 января
Вышли из строя несколько дисков на сервере PAUSE. Сервис был недоступен в течение трех дней.
21 января
Взломан сайт blogs.perl.org. В открытый доступ выложен дамп MySQL-таблицы mt_author, содержащей электронные адреса и зашифрованные пароли 3135 зарегистрированных участников. В качестве защитной меры отключены все CGI-скрипты.
25 января появился апдейт с некоторыми объяснениями: взломщик загрузил что-то через Movable Type, что и дало ему доступ. Движок платформы переустановлен и пропатчен; шифрование пароля усилено; ищется замена Movable Type.
1 февраля
В девелоперскую версию 5.19.9 добавлена реализация сигнатур функций, созданная Zefram’ом (Andrew Main). Сигнатуры появляются в качестве экспериментальной возможности и позднее вошли в четную версию 5.20.
24 марта
Конференция YAPC::Russia 2014, проведение которой было запланировано еще в конце 2013 года в Киеве, из-за нестабильной обстановки перенесена в Москву.
11 апреля произошел еще один перенос. В итоге YAPC::Russia 2014 прошла не в Москве, а в Санкт-Петербурге.
Отчеты о конференции, опубликованные в журнале:
Отчет о конференции от организатора
Еще один отчет о конференции
5 мая
Вышел очередной релиз компилятора Perl 6 Rakudo Star, впервые с поддержкой виртуальной машины MoarVM.
27 мая
Вышел Perl 5.20. Одновременно с этим начата работа над 5.21 и объявлено, что версия 5.22 будет выпущена в мае 2015 года.
Статьи в журнале о новых возможностях Perl 5.20:
Что нового в Perl 5.20.0
Синтаксические новинки в Perl 5.20
Сигнатура функции в Perl 5.20
16 августа
Впервые прошел день CPAN. Многие годы день рождения CPAN отмечали 26 октября, по дате официального анонса CPAN. Neil Bowers вместе с Philippe Bruhat предложили считать дату 16 августа днем CPAN, поскольку именно 16 августа 1995 года Andreas König загрузил на CPAN первый модуль (Symdump 1.20) через интерфейс PAUSE.
22 августа
Объявлено место проведения конференции YAPC::Europe 2015: Гранада, Испания. На победу претендовало две группы — Гранада из Испании и Клуж из Румынии. Не исключено, что Клуж подаст заявку и на 2016 год.
2 октября
Booking.com выделил 60 000 долларов в фонд поддержки Perl 5.
12 октября
Исполнилось 20 лет модулю DBI. В этот день вышел публичный релиз проекта, работа над которым началась еще двумя годами ранее.
29 октября
Объявлены даты проведения конференции YAPC::Asia 2015 (20–22 августа). Эта конференция — десятая по счету и последняя, которую планирует организовать нынешняя команда.
YAPC::Asia собирала до тысячи человек (что втрое больше европейских конференций), в том числе из-за того, что организаторы старались привлечь участников и за пределами Perl-сообщества. Помещение для конференции 2015 года способно вместить 2000 участников.
конец октября — начало ноября
На сайте конференции FOSDEM появился анонс о том, что 31 января Ларри Уолл объявит, что Perl 6 станет доступен для использования в продакшне в 2015 году.
Статья в журнале про текущее положение Perl 6:
Perl 6 XXI века
16 декабря
Открыт сайт конференции YAPC::Europe 2015: yapc.eu/2015.
18 декабря
Языку программирования Perl исполнилось 27 лет.
24 декабря
Объявлен конкурс 2015 CPAN Pull Request Challenge. Желающие принять в нем участие в течение 2015 года будут раз в месяц получать название случайного модуля (находящегося не только на CPAN, но и на GitHub), в который они должны сделать пул-реквест с любыми разумными изменениями в коде, тестах или документации.
■ Андрей Шитов
Тестирование с помощью Mock-объектов
Рассмотрены основные задачи Mock-объектов и их разновидности в Perl
Продолжаем цикл статей про тестирование: Тестирование в Perl. Лучшие практики, Тестирование в Perl. Практика.
Mock-объекты обычно применяются в тестировании и представляют собой аналогичные по поведению и интерфейсу имитаторы настоящих объектов, позволяют просто подставлять возвращаемые данные, проверять, какие данные были переданы в методы и т.д. Mock-объекты удобны, когда реализация настоящего объекта крайне сложна, его не так просто инициализировать, он требует особого окружения и т.п. Также они применяются при начальной разработке, когда некоторые подсистемы еще не разработаны, но их интерфейс и поведение в целом понятны.
Рассмотрим пример тестирования модуля, который делает запрос на получение списка товаров через API некоего сервиса. Интерфейс модуля будет выглядеть примерно так:
package API;
use strict;
use warnings;
sub new {
my $class = shift;
my $self = {};
bless $self, $class;
return $self;
}
sub list_orders {
...
}
В качестве модуля HTTP-клиента воспользуемся HTTP::Tiny, он с некоторых пор идет вместе с ядром Perl. Допустим, что мы ничего не знаем о тестировании и сразу приступили к реализации модуля.
package API;
use strict;
use warnings;
use JSON ();
use HTTP::Tiny;
sub new {
my $class = shift;
my $self = {};
bless $self, $class;
return $self;
}
sub list_orders {
my $self = shift;
my $response = HTTP::Tiny->new->get('http://api.example.com/orders/');
die "Failed!\n" unless $response->{success};
my $content = $reponse->{content};
return JSON::decode_json($content);
}
У этой реализации много проблем. Во-первых, ее невозможно протестировать без доступа к интернету и работающему API, во-вторых, нет проверок на возникновение различного рода ошибок.
Имитация поведения HTTP::Tiny
Если мы приступим к тестированию, то сразу заметим, что нужно как-то подставить результат GET-запроса, чтобы сэмулирвать различные сценарии. Здесь нам и пригодятся Mock-объекты. Имитация объекта HTTP::Tiny должна как-то попасть внутрь метода list_orders.
Есть как минимум два способа это сделать:
инъекция зависимости;
фабричный метод.
Инъекция зависимости
В этом случае объект HTTP::Tiny передается в конструктор класса API. Таким образом мы можем передавать любой объект, который реализует метод get и возвращает соответствующий HASH.
package API;
use strict;
use warnings;
sub new {
my $class = shift;
my (%params) = @_;
my $self = {};
bless $self, $class;
$self->{ua} = $params{ua};
return $self;
}
sub list_orders {
my $self = shift;
my $ua = $self->{ua};
...
}
Тест может выглядеть следующим образом:
use stict;
use warnings;
use Test::More;
subtest 'returns orders' => sub {
my $api = API->new(ua => TestUA->new)
my $orders = $api->list_orders;
is scalar @$orders, 1;
is $orders->[0]->{foo}, 'bar';
};
done_testing;
package TestUA;
sub new {
my $class = shift;
my (%params) = @_;
my $self = {};
bless $self, $class;
return $self;
}
sub get {
return {
success => 1,
content => '[{"foo":"bar"}]'
}
}
В этом тесте создается имитатор HTTP::Tiny, объект класс TestUA, который при вызове метода get возвращает тестовый набор данных.
Вручную создавать Mock-объекты может быть довольно утомительно. На CPAN существует несколько модулей, который позволяют создавать Mock-объекты с различными свойствами. Здесь мы воспользуемся Test::MonkeyMock. После применения этого модуля тест будет выглядеть следующим образом:
use stict;
use warnings;
use Test::More;
use Test::MonkeyMock;
subtest 'returns orders' => sub {
my $ua = Test::MonkeyMock->new;
$ua->mock(get => sub { {success => 1, content => '[{"foo":"bar"}]'}});
my $api = API->new(ua => $ua);
my $orders = $api->list_orders;
is scalar @$orders, 1;
is $orders->[0]->{foo}, 'bar';
};
done_testing;
С помощью метода mock класса Test::MonkeyMock можно эмулировать поведение метода get оригинального класса HTTP::Tiny.
Фабричный метод
В этом случае объект HTTP::Tiny создается внутри API с помощью фабричного метода, который во время тестирования можно заменить своим методом, который будет возвращать Mock-объект.
package API;
use strict;
use warnings;
sub new {
my $class = shift;
my (%params) = @_;
my $self = {};
bless $self, $class;
return $self;
}
sub list_orders {
my $self = shift;
my $ua = $self->build_ua;
...
}
sub _build_ua { HTTP::Tiny->new }
Модуль Test::MonkeyMock позволяет заменить методы в объектах нужными, тест будет выглядеть следующим образом:
use stict;
use warnings;
use Test::More;
use Test::MonkeyMock;
subtest 'returns orders' => sub {
my $ua = Test::MonkeyMock->new;
$ua->mock(get => sub { {success => 1, content => '[{"foo":"bar"}]'}});
my $api = API->new;
$api = Test::MonkeyMock->new($api);
$api->mock(_build_ua => sub { $ua });
my $orders = $api->list_orders;
is scalar @$orders, 1;
is $orders->[0]->{foo}, 'bar';
};
done_testing;
Какой вариант подстановки использовать, зависит от задачи. В нашем случае удобнее использовать передачу через конструктор. Поэтому дальше будет использоваться первый вариант. Однако, это не значит, что он лучше или хуже. Все зависит от конкретной реализации и возможностей.
Углубленное тестирование
Рассмотрим, какие случаи нужно протестировать:
Модуль должен бросать исключение в случае неуспешного ответа от сервера.
Модуль должен бросать исключение в случае неправильного JSON.
Модуль должен преобразовывать ответ из JSON в Perl-структуру.
Модуль должен правильно вызывать метод get у объекта HTTP::Tiny.
Проверка поведения при неуспешном ответе сервера
Исключения удобно проверять с помощью Test::Fatal:
use Test::Fatal;
subtest 'throws exception when answer is not successful' => sub {
my $ua = Test::MonkeyMock->new;
$ua->mock(get => sub { {success => 0}});
my $api = API->new(ua => $ua);
ok exception { $api->list_orders };
};
Просто проверить, что было исключение, обычно не достаточно. Нужно проверить и ошибку. Конечно, лучше всего бросить специальное исключение и проверять имя класса, а не сообщение.
use Test::Fatal;
subtest 'throws exception when answer is not successful' => sub {
my $ua = Test::MonkeyMock->new;
$ua->mock(get => sub { {success => 0}});
my $api = API->new(ua => $ua);
like exception { $api->list_orders }, qr/Failed!/;
};
Если проверяются тексты исключений, то лучше пользоваться like, так как там обычно добавляется в конце информация об источнике исключения, которая может меняться при рефакторинге и ломать тесты.
Проверка поведения при неправильном JSON
subtest 'throws exception when answer is not valid JSON' => sub {
my $ua = Test::MonkeyMock->new;
$ua->mock(
get => sub {
{
success => 1,
content => 'invalid JSON'
};
}
);
my $api = API->new;
$api = Test::MonkeyMock->new($api);
$api->mock(_build_ua => sub { $ua });
like exception { $api->list_orders }, qr/JSON error!/;
};
В реальной жизни лучше обернуть парсинг JSON в свой собственный eval и бросать исключение со своей ошибкой. Здесь для наглядности нам достаточно ошибки, которую бросает JSON.
Проверка, что JSON правильно преобразуется в Perl-структуру
Здесь все просто. Воспользуемся фунцией is_deeply для проверки получаемой структуры.
subtest 'correctly parses JSON response' => sub {
my $ua = Test::MonkeyMock->new;
$ua->mock(
get => sub {
{
success => 1,
content => '[{"foo":"bar"}]'
};
}
);
my $api = API->new(ua => $ua);
my $orders = $api->list_orders;
is_deeply $orders, [{foo => 'bar'}];
};
Проверка, что метод get вызывается с правильными параметрами
В этом тесте мы проверяем, что get вызывается с правильным url. Test::MonkeyMock позволяет это делать с помощь метода mocked_call_args. Например:
subtest 'calls get with correct arguments' => sub {
my $ua = Test::MonkeyMock->new;
$ua->mock(
get => sub {
{
success => 1,
content => '[{"foo":"bar"}]'
};
}
);
my $api = API->new(ua => $ua);
$api->list_orders;
my ($url) = $ua->mocked_call_args('get');
is $url, 'http://example.com/orders/';
};
На данном этапе полностью протестировано поведение модуля. Но есть еще что улучшить в самих тестах. Как видно, создание тестируемого объекта везде одинаково, и его можно выделить в отдельный фабричный метод. Например:
subtest 'returns orders' => sub {
my $ua = Test::MonkeyMock->new;
$ua->mock(
get => sub {
{
success => 1,
content => '[{"foo":"bar"}]'
};
}
);
my $api = _build_api(ua => $ua);
my $orders = $api->list_orders;
is scalar @$orders, 1;
is $orders->[0]->{foo}, 'bar';
};
sub _build_api {
my (%params) = @_;
my $ua = delete $params{ua};
return API->new(ua => $ua);
}
Также можно выделить и создание Mock-объекта HTTP::Tiny, который по умолчанию будет возвращать успешный ответ, но при необходимости можно изменить поведение.
subtest 'returns orders' => sub {
my $ua = _mock_ua();
my $api = _build_api(ua => $ua);
my $orders = $api->list_orders;
is scalar @$orders, 1;
is $orders->[0]->{foo}, 'bar';
};
sub _mock_ua {
my (%params) = @_;
my $ua = Test::MonkeyMock->new;
$ua->mock(
get => sub {
{
success => 1,
content => '[{"foo":"bar"}]',
%params
};
}
);
return $ua;
}
sub _build_api {
my (%params) = @_;
my $ua = delete $params{ua};
return API->new(ua => $ua);
}
В итоге тест приобретает более чистый и понятный вид.
use stict;
use warnings;
use Test::More;
use Test::Fatal;
use Test::MonkeyMock;
subtest 'returns orders' => sub {
my $ua = _mock_ua();
my $api = _build_api(ua => $ua);
my $orders = $api->list_orders;
is scalar @$orders, 1;
is $orders->[0]->{foo}, 'bar';
};
subtest 'throws exception when answer is not successful' => sub {
my $ua = _mock_ua(success => 0);
my $api = _build_api(ua => $ua);
ok exception { $api->list_orders };
};
subtest 'throws exception when answer is not valid JSON' => sub {
my $ua = _mock_ua(content => 'invalid JSON');
my $api = _build_api(ua => $ua);
like exception { $api->list_orders }, qr/JSON error!/;
};
subtest 'correctly parses JSON response' => sub {
my $ua = _mock_ua();
my $api = _build_api(ua => $ua);
my $orders = $api->list_orders;
is_deeply $orders, [{foo => 'bar'}];
};
subtest 'calls get with correct arguments' => sub {
my $ua = _mock_ua();
my $api = _build_api(ua => $ua);
$api->list_orders;
my ($url) = $ua->mocked_call_args('get');
is $url, 'http://example.com/orders/';
};
sub _mock_ua {
my (%params) = @_;
my $ua = Test::MonkeyMock->new;
$ua->mock(
get => sub {
{
success => 1,
content => '[{"foo":"bar"}]',
%params
};
}
);
return $ua;
}
sub _build_api {
my (%params) = @_;
my $ua = delete $params{ua};
return API->new(ua => $ua);
}
Заключение
Таким образом осуществляется тестирование с помощью Mock-объектов. Не стоит однако сильно увлекаться Mock-объектами, когда они совершенно ни к чему. Опасность заключается в том, что при изменении интерфейса или поведения оригинального модуля тесты будут и дальше проходить, и вы будете уверены, что ничего не нужно исправлять. Такие ошибки должны проявиться в интеграционном тестировании, когда тестируется вся система в сборе как черный ящик. Об этом читайте в следующих выпусках.
■ Вячеслав Тихановский
Tapper — система тестирования ПО полного цикла
Рассмотрена экосистема для автоматического тестирования
В мире открытого ПО не так уж и много систем для организации тестирования ПО в промышленных масштабах, которые бы охватывали полный цикл автоматического тестирования: планирование тестирования, подготовка тестовых окружений, запуск тестов, анализ тестовых данных и т.д. Если бы меня попросили перечислить такие системы, то я бы вспомнил проект autotest, разрабатываемый компаниями RedHat, Google, IBM и проект Tapper.
Про последний я сегодня вам и расскажу. Кстати, несмотря на то, что Tapper это обычный opensource-проект, он отличается хорошей документацией. Поэтому если вы захотите внедрить систему или разобраться с ней более детально, то документация вам сильно в этом поможет. Я же, чтобы не пересказывать документацию, расскажу, какие задачи можно решать с помощью Tapper, его наиболее интересном функционале и попробую сделать так, чтобы вам захотелось попробовать его самим.
Tapper — это cистема, разработанная для обеспечения работы инфраструктуры, ориентированной на выполнение всех аспектов тестирования программного обеспечения. Используя Tapper, группы по контролю качества программного обеспечения могут организовать проведение всего жизненного цикла тестирования, от планирования и выполнения тестовых заданий до генерации отчетов. Tapper предназначен для тестирования больших проектов: гипервизоров, операционных систем и т.д. Просто потому, что разворачивание такой большой инфраструктуры для меньших проектов может быть неоправданным.
Проект был создан двумя разработчиками из Центра исследования операционных систем компании AMD для тестирования систем виртуализации. В 2011 году исходный код системы был опубликован под лицензией BSD. Проект разрабатывается до сих пор и используется для тестирования программного обеспечения в компании Amazon.
Что внутри
Архитектура Tapper состоит из нескольких сервисов. Каждый сервис реализован в виде набора CPAN-модулей. И это даёт гибкость в настройке всей системы: если какой-то компонент не нужен, то его можно и не устанавливать. Некоторые сервисы являются общими для всей системы и запускаются в одном экземпляре, а некоторые запускаются в нескольких экземплярах, по одному на каждом сервере. Поэтому потенциально система может неплохо масштабироваться.
Основные сервисы:
Master Control Program — это центральный сервис, контролирующий запуск всех тестов в инфраструктуре. Может запускаться в единственном экземпляре для всей инфраструктуры;
Program Run Control — процесс, с помощью которого тесты запускаются непосредственно на серверах. Необходим на каждом сервере, где будут запускаться тесты;
Reports Receiver — сервис, принимающий отчёты о тестировании;
Reports API — сервис для приёма дополнительной информации к отчётам о тестировании и формирования отчётов с результатами;
Reports Web — веб-интерфейс для отображения результатов и запуска новых тестов, RSS-оповещения о результатах и т.д.
Все данные хранятся в базе данных, в роли которой может выступат как MySQL, так и sqlite.
Больше подробностей — докладах автора Tapper с конференций YAPC::EU 2009, YAPC:EU 2011 и LinuxCon EU 2011.
Как это работает
Вместо общего описания Tapper я пошагово расскажу, как происходит запуск теста, чтобы не наскучить описанием возможностей Tapper.
Перед началом тестирования все серверы должны быть зарегистрированы в Tapper. Каждому серверу можно назначить набор свойств (имя, количество оперативной памяти, производитель, количество процессорных ядер и т.д.). Тогда появится возможность запускать тесты только на тех машинах, которые обладают нужным тесту набором параметров.
Тестирование на голом железе имеет один недостаток - в случае багов в ПО вы можете остаться без доступа к ОС на сервере. Во избежание этого Tapper поддерживает интеграцию Power Distribution Unit. Но на данный момент поддерживается только одна модель, хотя поддержка других моделей не должна быть сложной. Это всего лишь небольшой модуль, который обращается к PDU удалённо. Поэтому если вы хотите построить тестирование, минимально зависимое от ручного вмешательства, то это ваш выбор.
Итак, добавляем новый сервер pragmatic-perl, делаем его активным и добавляем его в очередь update8:
$ tapper-testrun newhost --name pragmatic-perl --active --queue update8
Посмотрим список всех серверов:
$ tapper-testrun listhost --verbose
ID | Name | Active | TestrunID | Comment | Queues
===========================================================================
30 | pragmatic-perl | active | 24976 | | update8
31 | ps18 | active | 24962 | | update7
27 | ps17 | active | 24929 | testplanexperimenting | update7
22 | ts49 | active | free | | update7
После добавления серверов нужно для каждого теста подготовить сценарий подготовки сервера. В терминах Tapper это называется precondition. Это может быть установка операционной системы, копирование архива с тестом на сервер, монтирование удалённой файловой системы и т.д.
В простейшем случае precondition может выглядеть так:
# tapper-mandatory-fields: kernel_version
# tapper-optional-fields: kernelpkg
---
precondition_type: image
arch: linux64
image: suse/suse_sles10_64b_smp_raw.tar.gz
mount: /
partition: vz
---
precondition_type: copyfile
Для тестирования в промышленных масштабах подготовка тестовых окружений — обязательное требование. Tapper позволяет автоматически разворачивать ОС на сервере, подготавливать ОС к запуску тестов и осуществлять непосредственный их запуск. Установка ОС реализована за счёт интеграции с сервисами NFS, TFTP, PXE, DHCP.
Установка ОС может происходить как с использованием готовых образов установленной системы, так и штатными средствами с задействованием таких технологий, как RHEL Kickstart, Debian Preseed или OpenSUSE AutoYast.
Добавляем precondition:
$ tapper-testrun new [all usual options] \
--macroprecond=FILENAME \
-Did=value1 \
-Dkernel=2.6.37
Когда пул серверов подготовлен, вы можете составить тест-план, который будет содержать список тестов, которые вы хотите запустить, серверов, на которых они будут запускаться, и ссылок на сценарии для подготовки серверов.
Обычно тест-план выглядит как шаблон, в переменные которого подставляются настоящие значения при запуске тестов:
### Allowed params:
### - -Dqueue=QUEUE
### - -Dtests=TEST1,TEST2,TEST3
### - -Dmachines=HOST1,HOST2
[%# define default values %]
[%- IF queue == '' %][% queue = 'update8' %][% END -%]
[%- IF tests == '' %][% tests = 'tcpbench' %][% END -%]
[%- IF machines == '' %][% machines = 'pragmatic-perl' %][% END -%]
[% AllTests = tests.split(',') %]
[% AllDistros = distros.split(',') %]
[% AllMachines = machines.split(',') %]
[%- FOREACH machine = AllMachines %]
[%- FOREACH test = AllTests %]
---
type: multitest
description:
shortname: [% test %]
topic: Topic-[% AllTests.join('-') %]
queue: [% queue %]
requested_hosts_all:
- [% machine %]
preconditions:
- ...
-
precondition_type: testprogram
program: /opt/tapper/bin/tapper-testsuite-autotest
parameters:
--test
- [% test %]
- ...
После составления тест-плана его нужно добавить в планировщик:
$ tapper-testrun newtestplan --guide --file pragmatic-perl-testplan
This is an example testplan
Allowed params:
- -Dqueue=QUEUE
- -Dtests=TEST1,TEST2,TEST3
- -Dmachines=HOST1,HOST2
Просмотр очереди тестов:
$ tapper-testrun listqueue -v
11 | update8 | 1000
17 | update7 | 100
8 | update7_1 | 100
4 | update7_2 | 100
где первая колонка это номер очереди, вторая — название и третья — приоритет очереди по сравнению с другими очередями.
Посмотрим детально на нашу новую очередь:
$ tapper-testrun listqueue --name update8
Id: 10
Name: update8
Priority: 1000
Active: yes
Bound hosts: pragmatic-perl
Queued testruns(ids): 146, 138
Детали запланированного теста:
$ tapper-testrun list --id 146
id: 146
topic: track-workload-stress-opensuse_11.4_32
state: schedule
queue: update8
requested hosts: pragmatic-perl
auto rerun: no
precondition_ids: 15
Получили тест, запущенный на машине pragmatic-perl, в очереди update8.
Результаты тестирования
Как выше было сказано, Tapper позволяет агрегировать все результаты в одном месте для последующего анализа и формирования отчётов о тестировании.
Все тестовые результаты сохраняются в стандартном формате TAP (Test Anything Protocol), популярном в Perl-сообществе. Формат очень удобен для понимания даже неподготовленному человеку:
1..15
ok 1 TestSnapshotsCT.hostname_check
ok 2 TestSnapshotsCT.diskspace_check
ok 3 TestSnapshotsCT.veth_IP_check
ok 4 TestSnapshotsCT.veth_MAC_check
ok 5 TestSnapshotsCT.venet_IP_check
ok 6 TestSnapshotsCT.physpages_check
ok 7 TestSnapshotsCT.swappages_check
ok 8 TestSnapshotsCT.cpu_limit_check
ok 9 TestSnapshotsCT.cpu_units_check
ok 10 TestSnapshotsCT.Check_Quotas
ok 11 TestSnapshotsCT.resize_increase_ve_start
ok 12 TestSnapshotsCT.resize_decrease_ve_start
ok 13 TestSnapshotsCT.resize_increase_ve_stop
ok 14 TestSnapshotsCT.resize_decrease_ve_stop
ok 15 TestSnapshotsCT.Leak_checks
Но из-за своей простоты у формата есть недостаток — формат никак не регламентирует поля для дополнительной информации о тестовом окружении. Tapper в этих целях использует комментарии:
1..1
ok 1 - tapper-suite-meta
# Tapper-suite-name: Pragmatic Perl Testsuite
# Tapper-suite-version: 1.0
# Tapper-machine-name: pragmatic-perl
# Tapper-uname: Linux 2.6.32-042stab102.8
# Tapper-osname: Parallels Cloud Server
# Tapper-cpuinfo: Intel(R) Xeon(R) CPU E5-2403 0 @ 1.80GHz
# Tapper-ram: 32776
Интеграция с другими сервисами и инструментами
Проект поддерживает интеграцию с другими инструментами для тестирования и анализа результатов:
запуск тестов в уже упомянутой системе autotest, предназначенной для тестирования ядра Linux;
выгрузку тестовых данных в Codespeed, веб-приложение для анализа результатов тестирования производительности;
возможность планировать тесты с помощью TaskJuggler, инструмента для управления проектами;
возможность установки операционной системы с помощью Cobbler.
Заключение
К сожалению разработка проекта продвигается не так быстро, как хотелось бы. Steffen Schwigon, разработчик Tapper, обещал выложить сделанные в Amazon изменения в репозиторий на Github, но пока этого не случилось. Несмотря на это, существующего функционала уже достаточно для построения рабочей системы тестирования. Если вы заинтересовались проектом, то приглашаю поучаствовать в разработке и тестировании. Исходный код расположен на Github, модули для установки — на CPAN. Если хотите попробовать Tapper в деле, то есть несколько вариантов установки: с помощью CPAN-модулей и с помощью пакетного менеджера в ОС. Установочные пакеты есть для Fedora, ALT Linux, и есть OpenBSD-порт (не добавлены в официальное дерево портов, поэтому пакеты пока не собираются).
■ Сергей Бронников
Как нанять Perl-программиста
Про один удачный эксперимент по найму программистов
Если вы один из тех, кто когда-либо собеседовал человека на работу, вам наверняка приходилось сталкиваться с проблемой подбора хороших кадров. В статье я постараюсь опубликовать максимум всех материалов, которые были задействованы во время постановки эксперимента.
Но прежде чем начать — позвольте представиться.
Об авторе
Меня зовут Алексей Варяник, друзья зовут меня cono (как, в принципе, и многие коллеги).
Занимаюсь Perl-разработкой начиная с 4-го курса университета (2004 год). В стенах comScore.com подрос до TeamLead. После того, как проект отдали на поддержку в Кювейт, перешёл работать в компанию Provectus на проект livenation.com (поддержка сайта ticketmaster.com). В скором времени на этом проекте вырос до Software Engineering Manager, а как вам всем наверняка известно, одной из обязанностей software manager является подбор и собеседование «кадров» :)
Собеседования
По началу набирать программистов не составляло особого труда. HR-отдел находил «бесценных» Perl-разработчиков, мы их собеседовали, ну и, если уж совсем понравился, брали на работу. Команды состояли из back-end- (BE, perl), front-end- (FE, js) и QA-инженеров. Именно в такой последовательности и хотели нанимать. Но к сожалению, всё выходило с точностью до наоборот. Cначала появлялись QA, после чего FE, и только лишь после гигантских усилий BE. Постепенно проблема подбора BE становилась всё сложнее и сложнее. То ли разработчики «заканчивались», то ли люди становились более избалованные, и Чёрное море больше никого не привлекало :)
Слышу звон, не знаю где он
Кололись, плакали, но продолжали есть кактусы. Одним из первых «спасательных» решений было — нанимать людей из других областей (язык, технологии). И вот тут началось самое интересное. Наконец-то пошли люди и довольно много, но в то же время достаточно интересные «кадры».
— Опишите пожалуйста процесс передачи GET параметров? — Они появлюятся в переменной $_GET.
Бывали и очень серьёзные ребята, которые пишут на «плюсах» под кастомную архитектуру:
— Объясните пожалуйста, что такое Template в C++? — Шаблон! — Хорошо, а для чего они используются? — Эээ…
Бывали и просто хорошие программисты:
— Напишите пожалуйста функцию, которая принимает целое число и возвращает 0, если число чётное и 1 в противном случае. — Я, наверное, вам не подойду.
Нагромоздив некое количество костылей (предварительное тестовое задание, технические вопросы от HR, …), нам удалось снизить поток шарлатанов и бездарей. В целом, мы смогли нанять ещё парочку смышлёных ребят.
И вот тут-то звоночек и зазвонил. Решили рассматривать другие варианты найма.
Предыстория
В году эдак 2008-м, когда я был программистом на banner.kiev.ua, соседи по офису набирали Perl-разработчиков на проект mail.ua (уже mail.ru), и встретили те же самые проблемы, что и мы сейчас. Тогда было принято решение: набирать смышлённых мальчуганов и девчонок и обучать их великому делу! (программировать на Perl).
В тот раз этот эксперимент закончился очень удачно, мы набрали замечательных ребят (и девочку, привет Янка!). Некоторые из них, даже открыли собственную компанию: WebbyLab.
Набор
Тогда я участвовал как преподаватель, но в этот раз пришлось поучаствовать и в организации процесса. Списался с одним из организаторов прошлых курсов (Олег Савчук aka oSa), попросил перечень тем, по которым вели прошлые курсы:
Обзор курсов. Обзор возможностей Perl. Настройка среды.
Введение в Perl. Скалярные данные. Основные операции с числами.
Массивы и хеши. Цикл foreach. Специальные переменные ($_). Операторы next, last, redo.
Операции над строками. Регулярные выражения.
Процедуры и функции. Пакеты и модули.
Ссылки и объекты.
CGI.
DBI.
Темы равномерно распределили между разработчиками, уже работающими у нас. Попросил каждого подготовить доклад по теме (не более чем на полтора часа) и тестовые задания (о них более детально расскажу чуть позже).
Далее вступили в бой наши HR и PR. Отдельное спасибо хочется сказать Оле Ковальской, она провела титанический труд по общению с кандидатами, а их было уж очень много.
Было сформировано следующее объявление о наборе:
Время учить Perl
Perl устарел? Нет, не слышали… Perl не просто жив и процветает, он еще и достаточно востребован!
Provectus IT объявляет набор на курсы Perl с возможностью последующего трудоустройства.
Обучение будет включать в себя лекционные и практически занятия с акцентом на самостоятельное обучение. Такой подход предоставит учащимся возможность в дальнейшем быстрее вникнуть в проект, справляться со сложными задачами, оперативно принимать решения.
Курс рассчитан на 3 недели (по 2 занятия в неделю). Всех желающих ждет строгий отбор ведущих Perl-истов команды Live Nation/Ticketmaster.
Требования:
Предпочтительно образование в области компьютерных наук или математики.
Логическое и аналитическое мышление.
Способность быстро обучаться.
Наличие опыта работы с любым объектным языком программирования.
Базовое знание Perl будет плюсом.
Английский язык (письменный и устный).
Опыт работы с MySQL (предпочтительно) либо с другими СУБД.
Знания алгоритмов и прикладной математики.
Обучение будет проходить на бесплатной основе!
На выходе мы получили огромное количество резюме (более сотни). И люди попадались абсолютно разные: студенты, бывалые программисты, моряки дальнего плавания и даже преподаватель :)
Из всего списка мы отобрали 54 человека и разослали им пригласительное письмо. Надеясь хоть как-то отсеять народ, мы придумали три тестовых задания, которые нужно было выполнить, чтобы прийти на собеседование. Но до собеседования дошли все 54 человека. Было принято решение вести собеседование по проделанным тестовым заданиям и не более 20 минут (такой вариант конечно даёт очень много false-negative-результатов, но пришлось чем-то жертвовать).
Пригласительное письмо
Привет!
В ответ на Ваше резюме на позицию trainee Perl, спешим пригласить Вас на собеседование, которое состоится в день_недели, дата июля в время в виде группового отбора.
В прикреплённом файле Вы найдёте тестовое задание. Мы рассчитываем на Ваше выполнение этого задания на любом понятном нам языке программирования (BASIC, C, C++, Java, Pascal, Perl, Python, PHP) или просто в виде алгоритма. Собеседование будет включать Ваше устное описание выполненного задания и ответы на наши вопросы. Выполненное тестовое задание просим подготовить по возможности в виде распечатки (если с этим возникнут сложности — приносите в электронном виде, и мы поможем распечатать).
Как будет проходить собеседование? Мы попросим Вас заполнить анкету, а затем побеседовать с нашими Software Engineers на тему выполненного задания. Даже если Вы затрудняетесь выполнить часть задания — это не беда: нам будет интересно пообщатсья с Вами о ходе мысли и в целом на программистские темы. Так как мы работаем на международную компанию, то просим Вас подготовиться рассказать о себе на английском языке.
Как будет проходить обучение? Курс рассчитан на 7 тем, по каждой планируется 1-2 лекции и практические задания. Лекции будут происходить в первой половине дня (ориентировочно с 10:00) дважды в неделю в нашем офисе. Там же Вы регулярно сможете пообщаться с опытными разработчиками и задать им интересующие вопросы. Курс продлится около 5 недель. По окончании курса все успешные студенты будут допущены к собеседованию, по результатам которого происходит трудоустройство. Мы хотим взять на работу всех. Нет, честно.
Как мы сообщали ранее, курсы бесплатные, а значит — мы оставляем за собой право выбора учеников. Благодарим за понимание.
Тестовые задания
Про тестовые задания хотелось поговорить более детально и упомянуть, на что обращали внимание, какие вопросы задавали. Итак, первое задание:
В цикле от 1 до 71 вывести c*10 для каждого с, кратного 3, и c*100 для каждого c, кратного 7. Если c не кратно 3 и c не кратно 7 – не выводить ничего. Посчитать и вывести две суммы выведенных чисел.
Первое задание очень простое, больше для мотивации, чем для проверки каких-либо знаний, чтобы дать человеку понимание что он может выполнить эти задания.
Вопросы задавали по code-flow и оптимизации:
а что случится если переставить эти строки местами;
как модифицировать программу так, чтобы выводить c в случае некратности 3 и 7 (числа не просто так были выбраны простыми, дабы увидеть вариант: c % 21);
как прооптимизировать программу (хотели добиться ухода от перебора 1 .. 71 и приходу к простому суммированию).
Второе задание немного сложнее:
Написать функцию, которая сгенерирует пагинацию (список номеров страниц с указанием текущей страницы).
Входные параметры:
a: общее количество записей b: количество записей на странице c: стартовая страница
Пагинация имеет вид:
< 1 2 [3] 4 5 … >
Всегда отображается 5 страниц и троеточие в стороне, в которой есть неотображённые страницы. Если текущая страница приближается к первой или последней — всё равно выводим 5 номеров страниц, приближая пагинатор к нужной стороне.
< … 6 7 8 [9] 10>
Эта задача для определения крайних случаев (edge-case’ов):
общее количество записей 0;
стартовая страница вне диапазона;
страниц меньше 5 (многоточие должно было исчезнуть с обеих сторон).
Если какой-либо критерий не был выполнен, спрашивали, как нужно модифицировать программу чтобы добиться нужного эффекта.
И последняя задача (две в одной):
На входе – бинарный файл. Представив его как последовательность символов в кодировке ASCII, подсчитать количество символов z и Y в этом файле. Вывести оба числа в системах счисления от 2 до 16.
В этом задании преследовалось две цели, но во время проверки нарисовалась и третья:
capacity testing (нагрузочное тестирование — прим. ред.) — понимает ли кандидат, как нужно изменить программу, если на вход подаётся файл размером в несколько террабайт;
проверка математических знаний (системы счисления);
соответствие техническим требованиям, почему-то именно эта задача вызвала большие сложности с пониманием технического задания (Y & y — это разные буквы, от 2 до 16, это и 3, и 4, и 5, …).
Начало
В итоге мучительных интервью-сессий были отобраны 20 человек (планировалось 10, очень не хотелось прощаться с некоторыми). И одного попросили добавить по блату (мы же в Украине живём, куда ж без этого :)
ИТОГО: 21
Первая лекция была вводной, мы просто собрались вместе, познакомились. Ученики увидели своих будущих учителей, учителя — учеников. Одним из важных на мой взгляд моментов было расстановка всех точек над И. А именно:
Это бесплатные курсы.
Лекции будут читать простые программисты (и далеко не все из них с даром преподавателя).
Т.е. на первом же этапе мы определили простые правила приличия: относиться с уважением друг к другу, ведь никто никому ничего не должен. Любые несогласные могли покинуть данные курсы в любой момент. Ребята оказались все взрослые, и курсы проходили «без сучка и задоринки».
С технической стороны всем были выданы виртуальные машинки для VirtualBox (дабы снизить риск ошибок environment и архитектуры). Базовые инструкции: как установить виртуальную машину, как зайти, как писать код, как тестировать, проблемы с сетью и т.д., и т.п.
Домашнее задание
Старт дан, и на этом этапе мы начали задумываться о контроле успеваемости и о том, как узнать результаты в конце эксперимента. Материал хотелось закрепить практическими задачами. Поэтому каждый из восьми преподавателей взял на себя обязанность придумать (подсмотреть) 1-3 задания по своей теме.
Написать программу нахождения корней квадратного уровнения: ax2+bx+c=0.
Перевод числа из десятичной системы счисления в другую и обратно.
Подсчитать частоты возникновения слова в тексте.
Нахождение циклов в циклической структуре данных.
Замены подстрок в строке (хеш соответствий).
Написать простейший shell.
Произведение двух матриц.
Аналог Data::Dumper.
Написать классы Date & Calendar.
SQL-executor.
CGI-приложение.
Более детальное описание заданий вы можете найти в этом документе.
К каждому тестовому заданию был написан некий набор тестов, о которых мы поговорим далее.
Проблема №1: Проверка
Дальнейший процесс развивался спонтанно, эволюционно и по мере возникновения проблем. И первой такой проблемой явилась проверка выполненных заданий.
Т.к. environment был задекларирован ещё на первой встрече, среда тестирования уже была определена. VirtualBox обладает замечательным механизмом snapshot-ов. При каждом тестировании востанавливаем виртуальную машину к исходному (не испорченому) состоянию и запускаем тесты.
Запускать 21 программу * N тестов вручную было очень накладно, поэтому на коленке были написаны shell-скрипты для тестирования.
На первых заданиях делались всяческие поблажки: вывод подправить, shebang исправить, и т.д. Не все были готовы к олимпиадному подходу (строгие входные данные, строгие выходные данные), но после первых результатов всё быстро стало на круги своя.
Вариант приёма исходников тоже по-началу был не идеален (кто в скайп, кто в почту: — А можно я исправленную версию пришлю?). На коленке была написан небольшой скрипт загрузки результатов, через которую можно было отправить решение хоть миллион раз до определённого времени. После этого времени — только один раз.
Все результаты складывались в git (на тот момент не публичный). В этом же репозитории находились и номинальные решения от «преподавателей».
Тестируемому скрипту передавалось имя файла с входными данными (тестовые данные определены в model/*/dat).
Проблема №2: Статистика
Статистики хотелось получить как можно больше — а значит и объективнее. В погоне за статистикой первыми были получены результаты прогона тестов, они имели следующий вид:
Таблица результатов
+/- означают прошёл тест или нет, и «T» — прерван по таймауту (если алгоритм зацикливался).
Этой статистики показалось мало, а так как результаты загружались через Web, можно было подсчитать среднее время, затраченное на решение (планировалось использовать эту статистику, если кто-то будет с одинаковыми оценками, но так и не пригодилась :)
Результирующая таблица получилась следующей:
Общая таблица результатов
Статистика выкладывалась постепенно и соревновательный дух не прекращался ни на секунду.
Проблема №3: Апелляция
Как бы не приноравливались наши «ученики» к оллимпиадному режиму, всё равно допускалось много ошибок, связанных с выводом (и даже ошибки в номинальных решениях). Ввиду этого было принято решение соблюсти все каноны Олимпиадного режима и добавить этап апелляции. Как говорилось ранее, исходники складывались в git, поэтому с точки зрения реализации решили использовать github + merge request. Патчи принимались только те, которые не изменяли логику работы программы, а только ошибки вывода.
В итоге наши студенты ещё и научились простейшим операциям с git (commit, push, merge-request, …)
Английский
В конце курса обучения было обещано собеседование с присутствием заказчика (американец), поэтому одно из изначальных требований было умение объясниться технически на английском. У нас в компании проводятся разговорные встречи клуба английского языка (бесплатные), поэтому всем участникам эксперимента было предложено бесплатное посещение занятий в течение всего курса обучения.
Собеседование
Собеседование решили проводить от высшей оценки к низшей. Статистически вышло так, что мы прособеседовали только тех, у кого бал был выше пяти.
На собеседованиях ребята очень волновались, хотя на английском их сильно и не спрашивали, но присутствие иностранного заказчика наводило некий ужас :)
В результате собеседований мы наняли пять человек на ставку Junior BE и ещё двух человек без зарплаты на позицию trainee. К сожалению, с нами на текущий момент остались только лишь четверо.
Выводы
Во всём есть свои «+» и «-», именно их и хотелось бы опубликовать как выводы.
Достоинства
Мы получили четырех SUPER-Junior разработчиков. Которые в течение месяца смогли показать отличную обучаемость. Как и в течение дальнейшего периода работы на компанию.
Интересный опыт для «преподавателей».
Последующее отношение «преподавателей» к своим успешным «ученикам» — очень тёплое и способствует хорошему командному духу (все заинтересованы в дальнейшем их успехе).
Вхождение в проект этих разработчиков в разы быстрее, чем просто нанятых посредством интервью (опять же ввиду скорости обучаемости).
Есть маленький шанс получить на выходе сразу Middle-разработчиков (если входные данные были опытными программистами :)
Имидж компании.
Новые люди в Perl-сообществе.
Недостатки
Таким образом практически невозможно набрать Senior-разработчиков (но при должном подходе junior очень быстро могут стать senior-разработчиками).
Затраченное время (хотя вы получите целеустремлённых разработчиков, которые в разы лучше «зажравшихся» професионалов).
Затраченное время. И всё же, как бы я не убеждал вас в успешности эксперимента, четыре раза подумайте о затраченном времени на него. Есть ли в этом смысл конкретно для вас. Не стоит относиться ко всему как к панацее, переложите изложеный опыт на свои реалии.
■ Алексей Варяник
Использование TLS в Perl
Ликбез по криптографии и практика применения TLS (Transport Layer Security — безопасность транспортного уровня) в Perl.
В последнее время в интернете обозначился тренд по использованию защищённой передачи данных. Откровения Эдварда Сноудена о работе NSA, стремление спецслужб различных стран прослушивать каждый бит информации, а также всевозможные атаки по подмене содержимого передаваемого по сети контента заставляют всех более серьёзно подходить к защите коммуникаций.
Основной способ защиты соединений — это использование криптографического протокола TLS, позволяющего транслировать данные приложения в зашифрованном виде. TLS выполняет несколько защитных функций: аутентификация сторон обмена, шифрование и контроль целостности передаваемого трафика. Таким образом исключаются атаки по перехвату трафика между сторонами коммуникации с попыткой подменить сервер для клиента и клиента для сервера, обеспечивается конфиденциальность и неизменность передаваемой информации.
Важно также отметить, что предшественник TLS — протокол SSL, разработанный корпорацией Netscape, больше не считается безопасным. Разработаны методологии атак, которые позволяют расшифровывать части передаваемых сообщений, поэтому использование SSL должно быть исключено в принципе.
Прежде чем приступить к детальному рассмотрению протокола TLS, отметим самый главный недостаток TLS и криптографических алгоритмов — это невероятная сложность теории и математика 80-го уровня. Это отталкивает от изучения и приводит к заучиванию команд и строчек конфигураций протокола как магических мантр. В свою очередь, тотальное невежество приводит к выраженному консервативному развитию протоколов: не дай бог изменение сломает какую-нибудь древнюю систему на SSL 2.0, которую никто не умеет настраивать, давайте-ка оставим всё обратно-совместимым. Удивительно, но обратная совместимость — это именно то, что нужно злоумышленникам — вы можете использовать самые передовые технологии безопасности, но оставляете лазейку для старых и уязвимых протоколов и шифров. Косвенно на такое положение дел влияют государства, стандартизируя более слабые алгоритмы или параметры шифрования, чем существуют на сегодняшний день.
К счастью, браузерная гонка, развернувшаяся в последние годы, меняет положение к лучшему, предоставляя клиенту самые свежие и сильные протоколы шифрования, стимулируя и развитие серверных средств шифрования. Например, в Firefox при использовании протоколов SPDY/HTTP2 по умолчанию могут использоваться только самые строгие профили шифрования: TLS последней версии 1.2 и шифры с использованием эллиптических кривых. Поисковик Google стал учитывать при ранжировании сайтов наличие https, чтобы стимулировать веб-мастеров обзаводиться защищённым доступом к сайтам. Ну и новость последних дней — в 2015 г. браузер Chrome будет показывать обычные http-сайты как небезопасные так же, как показывает https-сайты с невалидным сертификатом.
Словарик криптографа
До изложения основной темы статьи необходимо кратко описать основные используемые термины, чтобы облегчить понимание базовых принципов работы защищённых коммуникаций.
Алиса, Боб и другие персонажи
При построении схем обмена данными, криптографы придумали различные имена для различных участников обмена информации. Например, вместо указания, что участник А, передаёт данные стороне Б, им дали более благозвучные имена: Алиса и Боб. Поэтому если вы слышите упоминания об Алисе и Бобе, то на 100% речь идёт о процедуре передаче данных между двумя сторонами, без привязки к конкретным личностям.
Также могут упоминаться Ева (от слова eavesdropper — подслушивающий), участник, который может иметь возможность прослушивать трафик обмена между другими сторонами. Ну и Мэллори (от слова malicious — злонамеренный), который может не только прослушивать, но и изменять данные, передаваемые другими участниками; сама атака по подмене данных в этом случае называется MITM (man in the middle — человек посередине).
Шифрование
Шифрование — это процесс изменения открытого сообщения в шифрокод по определённому алгоритму. Дешифрование — это обратный процесс преобразования шифрокода в исходное сообщение.
Как правило, сами алгоритмы шифрования всегда известны, а их стойкость ко взлому определяется большей частью выбранным размером ключа, который обычно измеряется в битах. Ключ шифрования — это некоторое секретное число, которое используется в процессе шифрования.
Сами алгоритмы шифрования делятся на два вида: симметричные и асимметричные.
Симметричные алгоритмы
Симметричные используют один и тот же ключ для шифрования и дешифрования, этот ключ должен держаться сторонами обмена в секрете. Также различают потоковые и блочные шифры. Потоковые шифры могут кодировать данные побайтно, например алгоритм RC4. Блочные шифры кодируют данные блоками, например по 64, 128 бит. Один из самых первых стандартизированных и широко применяемых алгоритмов блочного шифрования стал алгоритм DES, который использовал ключи длиной 56 бит и кодировал блоки в 64 бита. В 2001 году был стандартизирован алгоритм AES, также известный под именем Rijndael, который и сейчас активно используется.
Симметричные алгоритмы, как правило, работают очень быстро. Многие современные процессоры имеют расширенный набор инструкций для ускорения выполнения операций шифрования. Основной недостаток симметричных алгоритмов — обе стороны должны иметь общий секретный ключ. Если одной стороне потребуется передать ключ, то канал передачи должен быть защищён от прослушивания/изменения.
Асимметричные алгоритмы, или алгоритмы с открытым ключом
Асимметричные алгоритмы используют разные ключи для процессов шифрования и дешифрования, один из этих ключей называют открытым (публичным), а другой закрытым (приватным). Закрытый ключ всегда держится в секрете, в то время как открытый может свободно распространяться и не составляет секрета.
Например, если Алиса хочет передать зашифрованное сообщение Бобу, она воспользуется публичным ключом Боба для шифрования. Расшифровать шифротекст сможет только Боб, у которого есть приватный ключ.
Основное преимущество асимметричного шифрования в том, что публичный ключ для шифрования может передаваться по незащищённому каналу. Слабость алгоритма заключена в том, что он основывается на некой сложной вычислительной задаче, и, до тех пор пока вычислительная сложность сохраняется, алгоритм может использоваться. Современные процессоры непрерывно совершенствуются, всё это приводит к тому, что требуются всё большие длины ключей, чтобы противостоять натиску прогресса.
Один из первых и остроумных алгоритмов с открытым ключом, который до сих пор широко используется является алгоритм RSA.
Ключи RSA генерируются по следующему алгоритму:
Выбираются два больших простых числа p и q.
Вычисляется произведение n = p * q.
Вычисляется φ(n) = (p-1)(q-1).
Выбирают публичную экспоненту e, взаимно простую с φ(n) (например, 3, 257, 65537).
Находят секретную экспоненту d, такую что d * e ≡ 1 (mod φ(n)).
Теперь значения e и n публикуются как публичный ключ, а значения d, n становятся секретным ключом.
Чтобы зашифровать сообщение m, число m возводится в степень e и находится остаток от деления на число n:
m^e mod n = c
Чтобы расшифровать сообщение, шифротекст возводится в секретную экспоненту d и находится остаток от деления на n:
c^d mod n = (m^e mod n)^d mod n = m^(e*d) mod n = m
Действительно, по условию выбора экспоненты d мы получим исходное зашифрованное сообщение.
Вся сложность расшифровки посторонним лицом сводится к сложности вычисления чисел p и q по известному n, т.е. нахождения разложения на множители очень большого числа. Известны успешные операции по взлому RSA-ключей длиной в 768 бит, не за горами и взлом 1024-битного ключа, поэтому на сегодняшний день минимальный рекомендуемый размер ключа RSA — 2048 бит.
Но увеличение ключа приводит к дополнительной проблеме — требуется большие вычислительные ресурсы для шифрования. Например, на типичном современном процессоре (Intel Xeon X5460) можно выполнить порядка 500 операций шифрования в секунду ключом RSA 2048 бит, в то время как AES-128 может шифровать поток в 100 Мбайт/сек. Поэтому обычно RSA используют только для передачи секретного сеансового ключа симметричного шифрования, который затем уже используется для шифрования данных.
Аутентификация и целостность
Аутентификация, в широком смысле, — это процедура проверки подлинности. Может проверяться подлинность одной или обеих сторон обмена — в этом случае в данной статье и будет использоваться данный термин. Может проверяться подлинность сообщений, когда к оригинальному сообщению добавляется код MAC (message authentication code — код аутентификации сообщения), в этом случае будет применяться термин целостность сообщения, чтобы не запутаться.
Цифровая подпись
Цифровая подпись — это, в принципе, всё тот же MAC — код, который подтверждает авторство данного сообщения и его целостность.
Например, если Боб решит передать открытое сообщение Алисе и подтвердить, что это именно его сообщение. Он шифрует сообщение с помощью закрытого ключа и добавляет полученный шифротекст к оригинальному сообщению. Теперь Алиса (и вообще кто-угодно) может расшифровать код с помощью публичного ключа Боба и убедиться, что полученный текст совпадает с оригиналом.
Основные используемые алгоритмы цифровой подписи на сегодняшний день — это RSA, DSA и ECDSA.
Криптографическая хеш-функция
Создавать цифровую подпись или MAC-код размером равными самому сообщению бывает непрактично. Поэтому подписью защищается не сам текст, а результат хеш-функции от текста. Криптографическая хеш-функция — это необратимое преобразование входных данных по определённому алгоритму в битовую строку определённой длины. Криптографические хеш-функции должны быть стойки к коллизиям, т.е. создаются таким образом, чтобы невозможно было создать вычислительный алгоритм, позволяющий подобрать два сообщения с одинаковым значением хеша или подобрать текст, который имеет заданное значение хеша.
Ранее широко используемые алгоритмы хеш-функции MD5 и SHA-1 теперь не рекомендуются. Предпочтение отдаётся SHA-2, который включает вариации SHA-224, SHA-256, SHA-384 и SHA-512 (по длине ключа). Также недавно был выбран претендент на звание SHA-3, которым стала хеш-функция Keccak. Скоро ожидается завершение процедуры его стандартизации.
Сертификат, центры сертификации и инфраструктура публичных ключей (PKI)
Сертификат — это стандартизированный формат, используемый для обмена публичными ключами, защищённый цифровой подписью. По сути, это структура данных, которая описывает: чей это публичный ключ, для чего может использоваться этот ключ, когда начал действовать этот публичный ключ и когда он устареет и т.д. Сертификат обязательно подписан цифровой подписью, чтобы исключить его подделку. Если сертификат подписан с использованием своего же секретного ключа, то такой сертификат называют самоподписанным, и его часто используют в тестовых целях. Но важно понимать, что подделать самоподписанный сертификат не составляет никакого труда, поэтому самоподписанный сертификат бесполезен для любых практических задач.
Чтобы решить проблему с доверием к сертификатам, была создана целая инфраструктура по поддержке обмена публичными ключами, так называемые центры сертификации. Центр сертификации создаёт свою пару ключей (публичный и приватный), пользователи получают публичный ключ центра сертификации и считают его доверенным. Например, во многих дистрибутивах Linux есть пакет ca-certificates, который содержит сертификаты с публичными ключами всех доверенных центров сертификации. Каждый веб-браузер, как правило, также несёт с собой узелок с сертификатами, которым он доверяет.
Теперь если ваш сертификат подписан цифровой подписью центра сертификации, которому доверяет пользователь, то в этом случае пользователь может быть уверен в том, что вы тот, за кого себя выдаёте, т.к. это подтверждает центр сертификации.
Конечно, если центр сертификации потеряет свой закрытый ключ, то это моментально сделает все подписанные им сертификаты скомпрометированными. Чтобы минимизировать подобные риски, обычно строят иерархию сертификационных центров. Верхний уровень — это корневые сертификаты, их не так много. Они подписывают сертификаты сертификационных центров более нижнего уровня, которые затем также могут сертифицировать другие центры или конечные сертификаты пользователей. Таким образом образуются цепочки доверия.
Например, цепочка доверия для сайта google.ru:
Equifax Secure Certificate Authority
|
++ GeoTrust Global CA
|
++ Google Internet Authority G2
|
+ *.google.com.ru
Важно, чтобы при проверке сертификата проверялся каждый сертификат цепочки. Если хотя бы один из сертификатов подписан недоверенным центром, то доверять сертификату нельзя. Это, кстати, также важно знать и владельцам сертификатов: если ваш сертификат заверен каким-то новым центром сертификации, есть вероятность, что сертификата этого центра ещё нет у браузера пользователя. Поэтому стоит передавать клиенту связку сертификатов промежуточных сертификационных центров (как правило, просто объединяют файлы сертификатов в порядке цепочки доверия в один файл).
Основными характеристиками криптостойкости сертификата являются выбранный алгоритм и длина публичного ключа, а также криптографическая функция, которая была выбрана для цифровой подписи сертификата. Можно выбрать хороший ключ RSA-2048, но если цифровая подпись сертификата выполнена с применением алгоритма SHA-1, то сертификат, по современным меркам, слабо защищён. Google и Microsoft заявили, что с 2016 года сайты с сертификатами SHA-1 будут считаться невалидными, а большинство центров сертификации начали бесплатный перевыпуск существующих сертификатов с использованием SHA-2.
Отзыв сертификата, CRL
Сертификаты могут отзываться в случае, если произойдёт, например, компрометация закрытого ключа. Для этих целей создаётся файл в формате CRL, в который добавляются серийные номера отозванных сертификатов. Файл подписывается цифровой подписью центра сертификации.
Поскольку сертификат может быть отозван в любой момент, следует проверять не только корректность сертификата, но и его отсутствие в CRL-списках.
OCSP, OCSP stapling
Чтобы решить проблему с огромными CRL-списками, которые надо каким-то образом регулярно обновлять, был создан протокол OCSP (Online Certificate Status Protocol — протокол онлайн запросов статуса сертификата). Теперь Алисе достаточно выполнить запрос с серийным номером сертификата Боба к нужному центру сертификации, чтобы получить информацию о статусе сертификата. OCSP-ответы всегда подписаны цифровой подписью для защиты от подделки.
OCSP-запрос вносит дополнительную задержку в процедуре обмена, поэтому для оптимизации может применяться техника OCSP stapling, когда вместе со своим сертификатом Боб может отправить прикреплённый (stapled) ответ OCSP-сервера. Такой ответ всегда содержит время, когда был сделан запрос и время истечения валидности ответа и заверен цифровой подписью центра сертификации, поэтому ему можно доверять.
Протокол TLS
После того, как базовые понятия определены, можно приступить к рассмотрению работы протокола TLS. Протокол TLS традиционно относят к сессионному уровню в сетевой модели OSI, между транспортным уровнем (tcp) и уровнем приложения (http, smtp, imap, …). Действительно, до начала передачи данных уровня приложения стороны должны согласовать параметры протокола: используемая версия, шифр, сжатие и т.д. После выполнения согласования (TLS Handshake) данные приложения передаются в рамках определённых правил — TLS-сессии.
Существуют две процедуры согласования: полная и сокращённая.
Полная процедура согласования
При полной процедуре клиент отправляет сообщение ClientHello, в котором сообщает серверу, какую версию протокола он предпочитает, список поддерживаемых шифров, поддерживаемые методы сжатия и список поддерживаемых расширений протокола. Сервер на это должен ответить своим ServerHello, в котором уведомляет клиента о том, какую он выбрал версию протокола, шифр, метод сжатия и расширения из того, что прислал клиент. Далее он должен отправить свой сертификат Certificate и сигнализировать об окончании передачи с помощью ServerHelloDone.
Теперь клиент проверяет сертификат сервера (можно ли ему доверять, подписан ли он доверенным центром), если используется алгоритм RSA, то клиент извлекает из сертификата публичный ключ и с его помощью шифрует некоторый случайный секрет. Этот случайный секрет затем используется для создания ключей шифрования и контроля целостности для данной сессии. После чего клиент отправляет этот зашифрованный секрет серверу в сообщении ClientKeyExchаnge. Далее с помощью сообщения ChangeChiperSpec сигнализирует серверу, что он начал применять новые ключи шифрования и контроля целостности, и самое первое зашифрованное сообщение Finished содержит в себе хеш от всех предыдущих сообщений согласования в данной сессии.
Сервер, получив от клиента зашифрованный секрет, расшифровывает своим приватным ключом, генерирует по такому же алгоритму ключи шифрования и проверки подлинности. Теперь сервер может расшифровать сообщение Finished от клиента, в котором он проверяет хеш с тем, что получилось у него. Если всё совпало, то сервер сигнализирует, что новые шифры действуют и в направлении сервер — клиент: шлёт ChangeCipherSpec и свой вариант Finished с хешем.
Клиент расшифровывает и проверят хеш от сервера — если всё совпало, то начинают передаваться данные приложения, зашифрованные и подписанные сгенерированными при согласовании ключами.
.......... ..........
. Client . . Server .
.......... ..........
____
____ |====|
| | | |
|____| | |
/::::/ |____|
.--------------.
. Client Hello .---------->.-----------------.
'--------------' . ServerHello .
/. Certificate .
.--------------------. / . ServerHelloDone .
. ClientKeyExcahnge . <------' '-----------------'
. [ChangeChiperSpec] .\
. Finished . \ .--------------------.
'--------------------' '------> . [ChangeCipherSpec] .
/. Finished .
.------------------. / '--------------------'
. Application Data .<-------'
'------------------'\ .------------------.
'-------->. Application Data .
'------------------'
Как видно, протокол обеспечивает три вида защиты:
Аутентичность. Сервер отправляет сертификат в формате X.509, который клиент проверяет на доверие. Зашифровав некий секретный ключ, клиент может быть уверен, что расшифровать его сможет только легитимный сервер, имеющий закрытый ключ сертификата.
Конфиденциальность. После выработки общего секрета по известному алгоритму формируются ключи для шифрования. Алгоритм шифрования выбирается из того, что согласовали клиент и сервер. Это может быть потоковый шифр RC4 или блочный 3DES или AES. Блочные шифры как правило используют режим CBC — блочное сцепление, когда следующий блок XOR’ится с предыдущим зашифрованным блоком, чтобы повысить стойкость шифрования. Данные приложения передаются зашифрованными, и нет никакой возможности третьей стороне их расшифровать.
Целостность. Клиент и сервер согласуют функцию для хеширования данных. Это могут быть функции HMAC_SHA или HMAC_MD5, когда генерируется хеш от защищаемого текста и некой секретной соли. Таким образом гарантируется, что сообщение не было искажено при передаче. Кроме того, защищена от подмены и начальная стадия согласования (когда ещё не применяется шифрование) благодаря тому, что в сообщении Finished стороны обмениваются хешем всех предыдущих сообщений, чтобы убедиться, что каждая сторона получила одинаковые данные.
Здесь видна и основная проблема полной процедуры согласования: требуется два полных цикла отправки-приёма. Таким образом, протокол добавляет задержку при подключении, равную двум RTT.
Сокращённая процедура согласования
Чтобы решить проблему с задержкой, была создана сокращённая процедура согласования. При первом соединении клиента и сервера происходит обычная полная процедура, при этом сервер в сообщении ServerHello сообщает клиенту уникальный номер сессии и сохраняет контекст (главный секрет, версия протокола, шифр и т.д.). Клиент может запомнить номер сессии и связанный контекст и при следующем подключении в ClientHello сразу передать номер сессии. Если сервер сохранил данные об этой сессии, то он уведомляет об этом клиента в ServerHello и сразу же применяет этот контекст, отправляя ChangeCipherSpec и Finished клиенту. Клиент также применяет контекст шифрования и отправляет свои ChangeCipherSpec и Finished. Сразу же могут начать передаваться данные приложения.
.......... ..........
. Client . . Server .
.......... ..........
____
____ |====|
| | | |
|____| | |
/::::/ |____|
.--------------.
. Client Hello .---------->.--------------------.
'--------------' . ServerHello .
/. [ChangeCipherSpec] .
.--------------------. / . Finished .
. [ChangeChiperSpec] . <------' '--------------------'
. Finished .\
. Application Data . \ .------------------.
'--------------------' '------> . Application Data .
'------------------'
Как видно, в сокращённой схеме согласования дополнительная задержка составляет всего один RTT.
С другой стороны, это накладывает требования к серверу для хранения контекста сессий для каждого подключаемого клиента. К счастью, на этот случай было разработано специальное расширение для протокола Session Ticket (RFC5077). Сервер отправляет клиенту не только номер сессии, но и билет, в котором только серверу известным способом зашифрованы параметры сессии. Если клиент хочет начать сокращённую процедуру согласования, то с ClientHello отправляется билет, который сервер расшифровывает и использует. Это аналог зашифрованных cookie для хранения данных сессии в HTTP-протоколе.
Совершенная прямая секретность (Perfect forward secrecy, PFS)
Представим себе страшное происшествие: хакеры выкрали секретный RSA-ключ сервера, и теперь, имея записи шифрованного трафика и приватный ключ сервера, они смогут выполнить расшифровку всех предшествующих сессий пользователей сервера. Для того, чтобы исключить подобный сценарий, были разработаны алгоритмы PFS. Суть всех подобных алгоритмов в том, что начальный секретный ключ не передаётся от клиента к серверу, а формируются клиентом и сервером совместно.
Алгоритм Диффи-Хеллмана
Один из самых первых и популярных алгоритмов, обеспечивающих обмен ключами по незащищённым каналам, стал алгоритм Диффи-Хеллмана. Вкратце суть алгоритма такова:
Алиса и Боб выбирают числа g и p (они публичны). Затем Алиса формирует секретное число a, а Боб число b. Затем они обмениваются числами A и B — результатами следующих вычислений:
A = g^a mod p
B = g^b mod p
Теперь если Алиса возведёт число Боба B в степень a и найдёт остаток от деления на p, то получит число K:
B^a mod p = (g^b mod p)^a mod p = g^(b*a) mod p = K
Нетрудно заметить, что если Боб возьмёт число Алисы A, возведёт его в степень b и вычислит остаток от деления на p, то получит тоже самое число K:
A^b mod p = (g^a mod p)^b mod p = g^(a*b) mod p = K
Это и будет общим секретным ключом. При этом Ева, даже имея возможность наблюдать за обменом Алисы и Боба, не сможет рассчитать число К, поскольку перед ней возникает задача вычисления дискретного логарифма, и в зависимости от выбранных чисел p, a, b это может представлять собой неразрешимую вычислительную задачу. На практике, в качестве g обычно берут число 2, поскольку это основание степени удобно для вычислений на компьютерах, ну а число p должно быть простым, и его размер является определяющим для стойкости алгоритма, как правило минимальное приемлемое значение имеет длину 1024 бит.
Алгоритм Диффи-Хеллмана на эллиптических кривых
Алгоритм Диффи-Хеллмана также замечательно может применяться на эллиптических кривых. Не вдаваясь в довольно сложную теорию эллиптических кривых, рассмотрим базовые принципы. Предположим у нас есть эллиптическая кривая
y^2=x^3+аx+b
Мы определяем поле как конечный набор точек, удовлетворяющих уравнению кривой на эллиптической кривой по модулю p, где p — это простое число:
y^2=x^3+аx+b (mod p)
На эллиптической кривой определены операции сложения и умножения точек.
Таким образом, Алиса передаёт Бобу известные параметры: выбранное уравнение эллиптической кривой, число p и некоторую базовую координатную точку G на кривой. Алиса выбирает некоторое случайное целое число (не превышающее число элементов в поле) da и передаёт результат умножения:
А=da*G
Боб выполняет ту же операцию:
B=db*G
Теперь общий секрет вычисляется как
B*da = db*G*da = K
A*db = da*G*db = K
Существуют множество вариантов выбора эллиптических кривых; помимо описанного поля нечётной характеристики используются также поля характеристики 2. Но смысл алгоритма остаётся прежним, и криптографическая стойкость достигается за счёт вычислительной сложности дискретного логарифма на эллиптической кривой.
Основное достоинство эллиптических кривых — это значительно меньше требования к размеру ключа. Например, 2048-битный ключ RSA соответствует по стойкости ключу в 224 бита для эллиптических кривых. Кроме того, некоторые подобранные кривые требует меньше вычислительных мощностей по сравнению с классическими RSA/DSA. Например, nistp224 (ECDSA 224 бита) выдаёт порядка 10000 операций шифр/сек против 500 у RSA-2048 на современном процессоре.
Диффи-Хеллман в TLS
Различные модификация алгоритма Диффи-Хеллмана получили соответствующие обозначения DHE и ECDHE. Использовать их самостоятельно нельзя, поскольку они уязвимы к атакам MITM. Поэтому их используют совместно с RSA/DSA/ECDSA. В этом случае схема согласования немного изменена. После отправки сертификата сервер также отправляет сообщение ServerKeyExchange, в котором передаёт параметры Диффи-Хеллмана и подписывает их с помощью цифровой подписи RSA/DSA/ECDSA. Т.е. клиент обязательно проверяет валидность цифровой подписи по присланному сертификату сервера, убеждаясь, что он получил корректные параметры, и они не были подделаны по пути к нему:
.......... ..........
. Client . . Server .
.......... ..........
____
____ |====|
| | | |
|____| | |
/::::/ |____|
.--------------.
. Client Hello .---------->.-------------------.
'--------------' . ServerHello .
. Certificate .
.--------------------. /. ServerKeyExchange .
. ClientKeyExcahnge . <-------' . ServerHelloDone .
. [ChangeChiperSpec] .\ '-------------------'
. Finished . \ .--------------------.
'--------------------' '------> . [ChangeCipherSpec] .
/. Finished .
.------------------. / '--------------------'
. Application Data .<-------'
'------------------'\ .------------------.
'-------->. Application Data .
'------------------'
Таким образом, секретный ключ, который будет использоваться в TLS-сессии, всегда будет различный, и его невозможно будет восстановить, даже имея на руках приватный ключ сертификата сервера, поскольку сервер не сохраняет параметры DH сессии (отсюда и буква E в названиях DHE/ECDHE — эфемерные).
Шифры
Как уже было выяснено, безопасность протокола TLS базируется на четырёх компонентах: аутентичность, конфиденциальность, целостность и совершенная прямая секретность. Каждый из этих компонентов может обеспечиваться различными криптографическими алгоритмами, например, шифрование данных может выполняться с помощью алгоритма AES, а целостность — алгоритмом SHA. Таким образом, шифр, используемый в TLS-сессии, в свою очередь задан из четырёх компонент. Один или несколько компонентов могут быть пустыми, т.е. соответствующий алгоритм не используется, но это снижает (и зачастую делает бесполезной) защищённость.
Например, рассмотрим название шифра, определяемого IANA как TLS_DHE_RSA_WITH_AES_128_CBC_SHA256. Как видно, название шифра включает в себя комбинацию из четырёх алгоритмов, каждый из которых используется для своих задач. Фрагмент TLS обозначает, что это шифр протокола TLS, далее строка DHE указывает на алгоритм PFS, RSA — алгоритм публичного ключа, используемый в сертификате сервера. После секции WITH следуют название алгоритма блочного шифрования: AES, указывается также длина ключа — 128 бит, подстрока CBC уточняет режим шифрования — сцепление блоков шифротекста для повышения стойкости ко взлому. Последним следует алгоритм криптографической хеш-функции SHA256.
Комбинаций из четырёх компонент можно получить достаточно много, поэтому существующих шифров достаточно много (судя по кодированию в uint16 — потолок составляет 65536 вариаций). Но к выбору шифра стоит подходить со вниманием, т.к. существуют подобные шифры:
TLS_NULL_WITH_NULL_NULL — никакой защиты нет;
TLS_RSA_WITH_NULL_SHA — есть аутентификация и проверка целостности, но контент открыт и не шифруется;
TLS_ECDH_anon_WITH_AES_128_CBC_SHA — отсутствует аутентификация, шифр уязвим к атаке MITM.
Поэтому основные рекомендацию по выбору шифрования на сегодняшний день такие:
Использовать только протокол TLS, SSL должен быть отключён.
Для обеспечения секретности рекомендуется использование ECDHE (с меньшим приоритетом — DHE).
Шифрование — использование AEAD шифров, т.е. шифров, обеспечивающих одновременно и целостность, и секретность, например AES с длиной ключа 128 бит и режимом GCM: AES_128_GCM_SHA256. Ни при каких обстоятельствах не использовать NULL, RC4, DES.
Аутентификация — использование сертификатов RSA с ключом 2048 бит с алгоритмом хеша SHA256. Использование цифровой подписи ECDSA пока ещё не очень популярно. В случае клиента — всегда обязательно проверять сертификат на валидность.
Возобновляемые сессии удобны для сокращения задержки, но для улучшения секретности рекомендуется устанавливать небольшое время жизни для сессий (несколько минут).
Расширения TLS-протокола
В протоколе TLS предусмотрена возможность для создания и использования расширений, которые могут так или иначе влиять как на саму процедуру согласования, так и на передачу данных в рамках TLS-сессии. Выбор используемых расширений определяется клиентом, который в ClientHello передаёт список поддерживаемых расширений. Это касается даже серверных расширений, чтобы дать понять серверу, какие расширения поддерживаются клиентом. Сервер может начать использовать только те расширения, которые поддерживает клиент. Рассмотрим некоторые популярные расширения.
Сессионные билеты
О сессионных билетах уже было упомянуто в главе о сокращённой процедуре согласования. Сервер может сохранить зашифрованные параметры сессии на стороне клиента, чтобы не хранить их у себя. Когда клиент подключается повторно, он прикладывает сессионный билет в ClientHello и, если расшифровка билета пройдёт успешно, сервер может начать сокращённую процедуру согласования.
Указание имени сервера (SNI)
Server Name Indication — указание имени сервера определено в RFC6066. Как известно, протокол HTTP 1.1 позволял клиенту путём указания HTTP-заголовка Host сообщить серверу, к какому именно сайту нужно выполнить подключение. Это позволило в условиях дефицита ipv4-адресов размещать на одном ip-адресе десятки и даже сотни виртуальных сайтов. Но с применением шифрования TLS такая возможность была потеряна, поскольку на этапе TLS-согласования сервер не знал сертификат какого виртуального сайта следует направить клиенту.
Расширение SNI даёт возможность клиенту в ClientHello обозначить, по какому доменному имени он хочет получить доступ. Таким образом, сервер на этапе согласования имеет возможность отправить нужный сертификат виртуального сайта.
Запрос статуса сертификата
Certificate Status Request или более известный как OCSP stapling, также уже был описан выше. Позволяет клиенту попросить сервер приложить ответ OCSP-сервера о статусе сертификата, чтобы сэкономить на времени одного запроса.
Поддержка шифров на эллиптических кривых (EC)
Действительно, протокол TLS изначально не содержал поддержки EC, поэтому, чтобы клиент и сервер могли использовать шифры с применением криптографии на эллиптических кривых, должно быть задействовано расширение, описанное в RFC4492.
ALPN и NPN
Application-Layer Protocol Negotiation — согласование протокола на уровне приложения. Расширение определено в RFC7301 и позволяет клиенту и серверу согласовать, какой протокол будет использоваться на уровне приложения. Например, клиент может отправить список протоколов уровня приложения в порядке приоритета, которые он поддерживает: “h2-16”, “http/1.1”. А сервер может выбрать из этого списка один и указать его в ServerHello. Данное расширение было специально создано для новой версии протокола http2, чтобы на переходном периоде клиент и сервер могли договориться, какую именно версию они хотят использовать. Данное расширение позволит отказаться от использования механизма http Upgrade.
Расширение ALPN было создано на основе TLS-расширения NPN, которое было разработано в Google для протокола, предшественника HTTP2 — SPDY.
Стоит отметить, что ALPN и NPN достаточно новые расширения. NPN появился в openssl 1.0.0d, а поддержка ALPN появится только в версии 1.0.2, которая ещё в статусе беты.
Heartbeat
Heartbeat — это расширение, опубликованное в RFC6520, реализующее функциональность keep-alive в TLS. Большую известность расширение получило благодаря багу Heartbleed в реализации openssl.
Использования сжатия в TLS
Протоколом TLS предусмотрена возможность сжатия данных. Алгоритм сжатия выбирается на этапе согласования, а затем применяется на данных до их шифрования. Данная возможность имеет больше недостатков, чем преимуществ. Поскольку сжатие производится независимо от типа контента, то это может быть неэффективно в случае сжатия медиаданных и приводит к бесполезному расходованию ресурсов процессора.
Но крест на использовании сжатия в TLS поставила успешная атака CRIME, которая позволяла путём отправки запросов и наблюдению за изменением длины передаваемого шифротекста определять части передаваемых данных, например, http-заголовка Cookie.
Таким образом, сжатие должно быть отключено, и не только для клиента, но и для сервера, чтобы исключить возможность применения подобных атак.
Обзор модулей для использования TLS в Perl
На сегодняшний день свободной, популярной и полной реализацией TLS-протокола и сопутствующих криптофункций является библиотека OpenSSL. Нельзя сказать, что это идеальная реализация: код безумно сложен, очень характерная история безопасности и неповоротливость развития. Но это лучше, чем ничего. Для работы с openssl в Perl разрабатывается и активно развивается низкоуровневая обертка — модуль Net::SSLeay.
Помимо Net::SSLeay cуществуют и другие обертки к OpenSSL, например Crypt::SSLeay. Но на сегодняшний день он не развивается и его использование не рекомендуется, поскольку в нём используется только протокол SSLv3. Также входящий в состав дистрибутива модуль Net::SSL не умеет проводить верификацию сертификата сервера.
Существуют также экзотические имплементации других SSL/TLS-библиотек: Crypt::NSS — обертка к крипто-библиотеке NSS, используемой в Firefox, Crypt::MatrixSSL — обертка к крипто-библиотеке MatrixSSL. Но их возможности достаточно ограниченные, на CPAN нет зависимых от них модулей, т.е. по всей видимости их никто не использует.
Таким образом, большинство модулей на CPAN, которые используют сокеты с использованием шифрования TLS, базируются на Net::SSLeay или производных от него модулях. Поскольку интерфейс библиотеки довольно низкоуровневый и тяжеловат для понимания, существует модуль-обёртка IO::Socket::SSL, который имеет более привычный интерфейс IO::Socket::INET. Кроме IO::Socket::SSL существуют модули AnyEvent::TLS, IO::Async::SSL, POE::Filter::SSL и т.п., которые применяются для работы с TLS-сокетами в соответствующих IO-фреймворках.
На практике, Net::SSLeay напрямую используется не часто. Детальному разбору API модуля можно посвятить отдельную статью. Гораздо интереснее с практической точки зрения модули, построенные на его основе.
IO::Socket::SSL
IO::Socket::SSL — это удобный и отличный выбор для применения. Основное его достоинство конечно же в простом интерфейсе, который наследуется от знакомого и привычного IO::Socket::INET. Второе достоинство — активная поддержка и развитие.
Клиент
Рассмотрим пример тривиального https-клиента:
my $cl = IO::Socket::SSL->new('www.google.com:443')
or die "error=$!, ssl_error=$SSL_ERROR";
print $cl "GET / HTTP/1.0\r\n\r\n";
print <$cl>;
В зависимости от версий IO::Socket::SSL/Net::SSLeay этот код может вести себя по-разному. Начиная с версии 1.950 IO::Socket::SSL стал проверять сертификат сервера по умолчанию. В версии 1.971 также начинает использоваться TLS-расширение SNI для того, чтобы передать требуемое имя сервера. В версии 1.984 появилась поддержка OCSP stapling, по умолчанию анонсируется поддержка расширения и запрашивается статус сертификата. В версии 2.000 исключается использование версии протокола SSLv3 и SSLv2. Ну и наконец в версии 2.001 по умолчанию включается поддержка ECDHE/DHE для активации PFS.
Конструктор с опциями по умолчанию для последней версии модуля выглядит так:
my $cl = IO::Socket::SSL->new(
'www.google.com:443',
# Список шифров в порядке предпочтения
# Шифры с предшествующим знаком '!' --- запрещены
SSL_cipher_list => '
ECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-ECDSA-AES128-SHA256
ECDHE-ECDSA-AES256-GCM-SHA384
ECDHE-ECDSA-AES256-SHA384
ECDHE-ECDSA-AES128-SHA
ECDHE-ECDSA-AES256-SHA
ECDHE-RSA-AES128-SHA256
ECDHE-RSA-AES128-SHA
ECDHE-RSA-AES256-SHA
DHE-DSS-AES128-SHA256
DHE-DSS-AES128-SHA
DHE-DSS-AES256-SHA256
DHE-DSS-AES256-SHA
AES128-SHA256
AES128-SHA
AES256-SHA256
AES256-SHA
EDH-DSS-DES-CBC3-SHA
DES-CBC3-SHA
RC4-SHA
!EXP !LOW !eNULL !aNULL !DES !MD5 !PSK !SRP',
# Полностью исключены SSLv3 и SSLv2
SSL_version => 'SSLv23:!SSLv3:!SSLv2',
# Обязательная проверка сертификата сервера
SSL_verify_mode => SSL_VERIFY_PEER,
# SNI имя сервера
SSL_hostname => 'www.google.com',
# запрос статуса сертификата
SSL_ocsp_mode => SSL_OCSP_TRY_STAPLE
)
Таким образом, рекомендуемая для работы клиента версия IO::Socket::SSL должна быть не меньше 2.001. Конечно, такая политика изменения опций по умолчанию ломает обратную совместимость, зато обеспечивает высокий уровень безопасности. Поэтому рекомендуется без необходимости не указывать явно параметры, связанные с безопасностью, например, список шифров, т.к. в будущем эти параметры могут оказаться слабыми, а параметры по умолчанию всегда будут изменяться в пользу большей защищённости.
Cервер
Рассмотрим пример простого TLS-сервера.
my $srv = IO::Socket::SSL->new(
LocalAddr => '0.0.0.0:1234',
Listen => 10,
SSL_cert_file => 'server-cert.pem',
SSL_key_file => 'server-key.pem',
);
$srv->accept;
TLS-сервер должен обязательно иметь сертификат и соответствующий приватный ключ. Для включения PFS IO::Socket::SSL активирует параметры DHE и ECDHE в Net::SSLeay. Кроме того, при выборе шифра сервер будут ориентироваться не по приоритетам, заданным клиентом, а по собственным приоритетам. Таким образом, по умолчанию добавляются следующие опции:
my $srv = IO::Socket::SSL->new(
...,
# Группы шифров в порядке предпочтения
# Шифры с предшествующим знаком '!' --- запрещены
SSL_cipher_list => '
EECDH+AESGCM+ECDSA EECDH+AESGCM
EECDH+ECDSA +AES256 EECDH
EDH+AESGCM EDH ALL +SHA +3DES +RC4
!LOW !EXP !eNULL !aNULL !DES !MD5 !PSK !SRP',
# Сервер использует свои приоритеты при выборе шифра
SSL_honor_cipher_order => 1,
# Заранее сгенированные параметры Диффи-Хеллмана
# длиной 2048 бит
SSL_dh => "...",
# Задаются параметры эллиптической кривой для ECDHE
# длина 256 бит
SSL_ecdh_curve => 'prime256v1',
);
В случае, если сервер должен поддерживать несколько виртуальных хостов (т.е. выбирать сертификат по имени хоста в случае использования SNI), используется следующий конструктор:
my $srv = IO::Socket::SSL->new(
LocalAddr => '0.0.0.0:1234',
Listen => 10,
SSL_cert_file => {
'www1.example.com' => 'server-cert-www1.pem',
'www2.example.com' => 'server-cert-www2.pem',
'' => 'default-cert.pem',
},
SSL_key_file => {
'www1.example.com' => 'server-key-www1.pem',
'www2.example.com' => 'server-key-www2.pem',
'' => 'default-key.pem',
},
);
Для каждого хоста задаётся своя пара сертификатов/ключей, а также указывается хост по-умолчанию в случае, если клиент не поддерживает SNI или указывает имя, отсутствующее в списке.
Инъекция параметров IO::Socket::SSL
Возможно вы никогда не используете IO::Socket::SSL напрямую, но вам приходится сталкиваться с модулями, которые используют этот модуль. Если данные модули не предоставляют возможности изменить параметры подключения, но при этом вам требуется их изменить, то для этих случаев создана специальная функция set_args_filter_hack.
Рассмотрим, для примера, модуль Mail::POP3Client, который служит для подключения к POP3-серверу, в том числе и с использованием TLS-подключения. Если POP3-сервер находится в локальной сети и использует сертификат, подписанный неизвестным центром CA или вообще самоподписанный сертификат, то при использовании последней версии IO::Socket::SSL модуль больше не сможет осуществлять подключение. Как один из вариантов решения, можно повлиять на параметры создаваемого сокета с помощью set_args_filter_hack:
use Mail::POP3Client;
use IO::Socket::SSL;
# установка хака
IO::Socket::SSL::set_args_filter_hack( sub {
my ($is_server, $args) = @_;
# Явное указание отпечатка сертификата сервера
$args->{SSL_fingerprint} = 'SHA1$BE:EF:CA:FE:CO:DE:...';
} );
my $pop = Mail::POP3Client->new(
HOST => "pop3.server.local",
USER => "user",
PASSWORD => "password",
USESSL => 1,
);
printf "Count: %d\n", $pop->Count();
В данном примере мы задаём функцию, которая будет вызываться при создании сокета. В этой функции имеется возможность переопределить аргументы, которые были переданы в конструктор IO::Socket::SSL. Здесь мы указываем ожидаемый отпечаток сертификата в опции SSL_fingerprint. Отпечаток сертификата можно получить, например, с помощью команды openssl:
$ openssl x509 -noout -fingerprint < pop3.server.cert
SHA1 Fingerprint=BE:EF:CA:FE:CO:DE:BE:EF:CA:FE:CO:DE:BE:EF:CA:FE
Это лишь один из вариантов, который можно использовать для самоподписанных сертификатов. Если сертификат заверен неизвестным центром сертификации, можно указать путь к файлу сертификата этого центра в опции SSL_ca_file.
Таким образом можно переопределить и другие опции, которые по тем или иным причинам вас не устраивают. Функция set_args_filter_hack появилась в версии IO::Socket::SSL 1.969.
AnyEvent::TLS
Модуль AnyEvent::TLS может неявно использоваться в других модулях пространства имён AnyEvent, если у сокета указываются параметры TLS.
Клиент
Например, при создании объекта AnyEvent::Handle клиента TLS:
my $h = AnyEvent::Handle->new(
fh => $fh,
tls => 'connect',
);
В этом случае автоматически создаётся объект AnyEvent::TLS, который загружает и инициирует модуль Net::SSLeay. К сожалению, автор AnyEvent::TLS не так активно следит за прогрессом Net::SSLeay по сравнению с разработчиками IO::Socket::SSL, поэтому чтобы получить сравнимый уровень защищённости, необходимо задавать некоторые параметры. Например, для клиента:
my $h = AnyEvent::Handle->new(
fh => $fh,
tls => 'connect',
tls_ctx => {
# Отключаем поддержку SSLv3
sslv3 => 0,
# Включаем проверку сертификата сервера
verify => 1,
# Включаем поддержку сессионых билетов
session_ticket => 1,
}
);
К сожалению, ни OCSP stapling, ни SNI включить невозможно без переопределения метода AnyEvent::TLS::_get_session.
Сервер
В случае TLS-сервера создаётся такой конструктор:
use AnyEvent;
use Net::SSLeay;
my $h = AnyEvent::Handle->new(
fh => $fh,
tls => 'accept',
tls_ctx => {
cert_file => 'server-cert.pem',
key_file => 'server-key.pem',
# Отключаем поддержку SSLv3
sslv3 => 0,
# Включаем поддержку сессионых билетов
session_ticket => 1,
# Функция вызываемая после создания
# объекта AnyEvent::TLS
prepare => sub {
my $tls = shift;
# Контекст Net::SSLeay
my $ctx = $tls->ctx;
# Инициализация ECDHE
# Требуется Net-SSLeay >= 1.56 и openssl >= 1.0.0
if ( exists &Net::SSLeay::CTX_set_tmp_ecdh ) {
my $curve = Net::SSLeay::OBJ_txt2nid('prime256v1');
my $ecdh = Net::SSLeay::EC_KEY_new_by_curve_name($curve);
Net::SSLeay::CTX_set_tmp_ecdh( $tls->ctx, $ecdh );
Net::SSLeay::EC_KEY_free($ecdh);
}
}
}
);
В функции-колбеке prepare можно получить контекст Net::SSLeay и произвести с ним некоторые необходимые манипуляции. Например, установить параметры для алгоритма Диффи-Хеллмана на эллиптических кривых. Как мы уже знаем, это позволит использовать шифры с эллиптическими кривыми, которые снижают процессорную нагрузку и обеспечивают лучшую прямую секретность.
По умолчанию AnyEvent::TLS использует заранее сгенерированные параметры обычного DH длиной 1539 бит. Если требуется более надёжное значение, сгенерируйте параметры DH с помощью openssl:
$ openssl dhparam -out dh-2048.pem 2048
Или выберите заранее сгенированные значения в AnyEvent::TLS нужной длины:
tls_ctx => {
...
# Путь к файлу с DH
dh_file => 'dh-2048.pem',
# Или встроенные значения со странными названиями
# skip512, skip1024, skip2048, skip4096
# schmorp1024, schmorp1539, schmorp2048, schmorp4096, schmorp8192
dh => 'schmorp2048',
}
Настроить поддержку SNI в AnyEvent простыми методами пока затруднительно.
Заключение
Надеюсь, что эта сжатая статья поможет заполнить пробелы в знаниях о защищённом протоколе TLS и тех принципах безопасности, на которых он основан. Для подробного изучения темы рекомендую следующие источники:
Криптография:
«Практическая криптография» Нильс Фергюсон, Брюс Шнайер
«Прикладная криптография» Брюс Шнайер
TLS:
«RFC 5246»
«High Performance Browser Networking»
«SSL/TLS Deployment Best Practices»
Насколько быстр TLS
Тестирование SSL/TLS-серверов
P.S. Protocol::TLS
В качестве Post Scriptum информация к размышлению о небольшом, но амбициозном проекте Protocol::TLS.
Рассмотрев работу протокола TLS, можно сделать достаточно простой вывод: логика протокола (машина состояний/конечный автомат) отделена от криптографических функций. Именно поэтому и возникла идея создания модуля Protocol::TLS, который должен стать реализацией протокола TLS на чистом Perl. При этом реализация набора криптографических функций может выделена в отдельные плагины, которые могут быть основаны на различных криптобекендах в зависимости от требуемого функционала или каких-то других требований. Своеобразный аналог DBI, который подключает нужный драйвер СУБД при создании подключения, при этом предоставляя единый интерфейс приложениям.
На сегодняшний день Protocol::TLS частично реализует RFC5246 (TLS v1.2), поддерживает несколько шифров, в том числе обязательный TLS_RSA_WITH_AES_128_CBC_SHA. В качестве пока единственного криптографического плагина используется модуль CryptX, который является самодостаточным модулем без внешних зависимостей, который несёт в себе C-библиотеку libtomcrypt. Данный криптографический бекенд содержит практически всю необходимую базу современных криптографических алгоритмов, включаю криптографию эллиптических кривых. Библиотека LibTomCrypt имеет двойную лицензию: общественное достояние (Public Domain) и DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE (делайте, что вам вздумается). Модули CryptX и Protocol::TLS имеют обычную Perl-лицензию (Аrtistic || GPL). Поэтому с точки зрения лицензирования такой модуль имеет преимущество по сравнению с OpenSSL, лицензия которого несовместима с GPL.
Также, в качестве эксперимента, создан модуль IO::Socket::TLS, который эмулирует API IO::Socket::SSL, но при этом под капотом использует модуль Protocol::TLS. Такая обёртка может быть удобна для тестирования существующих приложений, основанных на IO::Socket::SSL. Модуль пока не на CPAN из-за неполноты реализации и довольно наглого названия.
В планах реализация поддержки TLS 1.1/1.0, дополнительного криптобекенда на основе модулей на чистом Perl, чтобы обеспечить возможность fatpack-упаковки модуля и всех его зависимостей.
■ Владимир Леттиев
Обзор CPAN за декабрь 2014 г.
Рубрика с обзором интересных новинок CPAN за прошедший месяц
Статистика
Новых дистрибутивов — 296
Новых выпусков — 909
Новые модули
Mojo::JSON_XS
Модуль Mojo::JSON_XS позволяет использовать в Mojolicious более быструю XS-реализацию JSON-кодировщика, основанного на модуле Cpanel::JSON::XS. Модуль должен быть загружен раньше, чем будет загружен Mojo::JSON и использованы какие-либо из его функций:
use Mojo::JSON_XS;
use Mojo::JSON qw(to_json from_json);
Следует, однако, отметить, что Cpanel::JSON::XS и Mojo::JSON в некоторых случаях могут производить различный вывод. Примеры таких расхождений перечислены в документации модуля.
App::Prove::Watch
Утилита provewatcher позволяет наблюдать за изменениями файлов в каталоге и, в случае появления таких изменений, запускать заданную команду, например prove или dzil test. К сожалению, утилита реагирует на изменения в любых файлах, например, в своп-файлах vim. Возможно, в более новых версиях появится файловый фильтр.
AnyEvent::GnuPG
AnyEvent::GnuPG — это обёртка к утилите gpg, позволяющая выполнять различные операции с шифрованием и цифровой подписью как синхронно, так и асинхронно. В настоящий момент модуль работает только с gnupg версий 1.x.
Alien::Web
Alien::Web — это модуль, который определяет пространство имён для распространения всевозможных JavaScript/CSS библиотек через CPAN, по аналогии с пространством имён Alien, которое используют для сборки/конфигурации, например, C/C++-библиотек. При инсталляции модуля, соответствующие файлы помещаются в share-каталог дистрибутива модуля (определяется как File::ShareDir::dist_dir()).
Это позволяет, например, следующим образом собирать веб-приложение:
use Plack::Builder;
use Plack::App::Directory;
use File::ShareDir;
builder {
mount "/js/extjs" => Plack::App::Directory->new({
root => dist_dir('Alien-Web-ExtJS-V3')
})->to_app;
...
};
Thrust
Thrust — это байндинг к одноимённому кросс-платформенному фреймворку приложений, основанному на Chromium. Модуль Thrust позволяет создавать приложения с интерфейсом, созданным на основе привычных HTML/CSS/JavaScript. Своеобразный симбиоз браузера и веб-сервера в одном приложении.
Debug::Statements
Модуль Debug::Statements упрощает написание отладочных сообщений. Типичный отладочный код может выглядеть так:
my $DEBUG = 1;
print "\$x = '$x', \$array[2] = '$array[2]'\n" if $DEBUG;
Это выведет сообщение:
$x = 'some value', $array[2] = 'three'
С помощью Debug::Statements отладочный код можно существенно упростить:
use Debug::Statements;
# $d -- задает уровень отладки
my $d = 1;
d '$x $array[2]'; # Печатается при уровне отладки $d >= 1
d2 '@array'; # Печатается при уровне отладки $d >= 2
Отладочный вывод:
DEBUG: $x = 'some value'
DEBUG: $array[2] = 'three'
DEBUG2: @array = [
'one',
'two',
'three'
]
Как видно, печатается не только значение переменной, но и её название. Правда при использовании модуля Debug::Statements придётся пожертвовать переменной $d, которая задаёт уровень отладки (максимум три уровня).
Crypt::Rijndael::PP
Crypt::Rijndael::PP — это реализация криптографического алгоритма Rijndael (больше известного как AES) на чистом Perl. Реализация совместима с Crypt::Rijndael и может использоваться в Crypt::CBC для 256-битных ключей.
SQL::Interpol
Выпущен форк модуля SQL::Interp. Модуль позволяет интерполировать Perl-переменные в SQL-выражения, например:
my %item = ( column1 => "value1", "column2" => "value2" );
my ($sql, @bind) = sql_interp 'INSERT INTO table', \%item;
# $sql = "INSERT INTO table (column1, column2) VALUES(?, ?)"
# @bind = ( "value1", "value2" )
Выполнен рефакторинг кода парсера, удалён код DBIx::Interp, удалена поддержка строгого (strict) режима.
Обновлённые модули
perl 5.21.7
В декабре был выпущен очередной релиз Perl для разработчиков 5.21.7. Значимым этот релиз делают несколько оптимизаций, появившихся в данном релизе:
Новая операция OP_MULTIDEREF, которая выполняет одно или несколько разыменований, если индексы/ключи являются константами или простыми скалярами, что позволяет сократить общее число операций. Например, получение значения $a[0]{$k}[$i] вместо четырёх операций теперь требует только одну.
Ускорен вызов методов как с явным (Class->method()), так и динамическим именем (Class->$dynamic_method) в среднем на 30%. Вызов метода родительского класса (SUPER::method()) ускорен на 50%. Также ускорены вызовы вида $obj->Class::method(), поскольку теперь во время исполнения не требуется сканировать имя метода на наличие ::. Важно отметить, что автором и инициатором включения этих изменений в Perl стал Олег Пронин (syberrus) из компании Crazy Panda. Очень надеемся, что в будущих номерах журнала мы увидим его статью об этих изменениях, а также тех, которые ещё планируется сделать для Perl.
Помимо прочего, в perldelta вскользь упомянуто об обновлении модуля PerlIO::scalar с исправлением бага №123443. На самом деле это очень важное исправление, поскольку исправляет проблему безопасности при работе с данными в скалярах через файловые дескрипторы. Исправление касается операций seek и read. Применение операции seek для задания смещения в файловом дескрипторе к скаляру позволяло задать смещение далеко за пределами скаляра. А последующее чтение read с такой позиции могло приводить к краху приложения. Например:
my $buf = "hello";
open my $fh, '<', \$buf or die $!;
seek( $fh, 2**32, SEEK_SET ); # смещение на большую позицию
read( $fh, my $tmp, 1 ); # чтение 1 байта с этого смещения
Perl при чтении попытается расширить скаляр до нужного смещения, что приведёт к ошибке сегментации на Perl ≥ 5.16 и к попытке выделения огромного сегмента памяти на более ранних версиях. Также seek, хоть и с предупреждением, но может устанавливать отрицательное смещение. И если ваш код не проверяет ошибку seek, то последующее чтение позволяет читать произвольные участки памяти вашего процесса. Если в памяти процесса содержатся переменные с паролями, приватными ключами, то все они могут уплыть при чтении за пределами скаляра. Получили аналог Heartbleed для Perl.
Таким образом, до исправления бага во всех поддерживаемых стабильных релизах Perl лучше избегать использования PerlIO::scalar, воспользовавшись альтернативой: IO::Scalar. Если это невозможно, то необходимо обязательно самостоятельно проверять аргументы seek, чтобы смещение не выходило за пределы скаляра.
Email::MIME::Kit 3.000001
Вышел новый мажорный релиз генератора почтовых сообщений из шаблонов Email::MIME::Kit. Модуль не просто компонует сообщение из отдельных фрагментов текста, но и полностью отвечает за подготовку multipart-сообщений, текстовой и html-альтернатив сообщения, кодирования, внутренних связей контента и проверки параметров. Новый релиз имеет важное несовместимое изменение: при чтении шаблонов с диска они декодируются в UTF-8 только если формат шаблона указан как текстовый (text/*).
Want 0.25
Новая версия модуля Want, который является развитием функции wantarray. Обновлённый модуль поддерживает новую операцию OP_MULTIDEREF, появившуюся в perl 5.21.7, позволяя корректно определять тип первой операции разыменования. Например:
sub foo {
if (wantref eq 'ARRAY') {
...
}
}
foo()->[1]{key}
Первая из двух операций разыменования – доступ к элементу массива с индексом 1, поэтому wantref, как и ожидается, вернёт ‘ARRAY’.
Class::Accessor::Inherited::XS 0.07
Продолжает активно развиваться модуль Class::Accessor::Inherited::XS для создания акцессоров/мутаторов, совместимых с Class::Accessor::Grouped. В представленных бенчмарках данный модуль работает на порядок быстрее Class::Accessor::Grouped.
XML::RSS 1.56
Новый релиз XML::RSS исправляет потенциальную проблему безопасности при обработке RSS-лент. Злоумышленник может создать RSS-файл, включив в него элемент с внешней сущностью. Если результат обработки может быть доступен, то злоумышленник может получить содержимое любого файла с сервера. Например, получить содержимое /etc/passwd можно, указав такую сущность в XML-файле:
<!DOCTYPE title [ <!ELEMENT title ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
А затем вывести его в тело документа, сославшись на имя сущности:
<title>&xxe;</title>
Эксплойт и информация о других уязвимых продуктах доступны по ссылке. Важно отметить, что уязвимы и другие модули, которые используют XML::RSS, такие как XML::Feed и другие
PadWalker 2.0
Вышел новый мажорный релиз PadWalker, позволяющий инспектировать и даже менять лексические переменные внутри текущей области видимости. Новый релиз теперь полностью совместим с последними изменениями в blead perl.
Log::Any 1.02
Представлен первый мажорный релиз универсального API для логирования Log::Any. В новом релизе были объединены дистрибутивы Log::Any и Log::Any::Adapter, вычищены все зависимости, не входящих в базовую поставку Perl (по состоянию для Perl 5.8.1).
Gearman 1.12
После многолетнего перерыва обновлена Perl-реализация клиента Gearman::Client, рабочего Gearman::Worker и сервера задач Gearman::Server. Новый релиз содержит множество исправлений, касающихся процедуры соединения и таймаутов.
HTTP::Parser::XS 0.17
Выпущена новая версия самого быстрого парсера HTTP-заголовков HTTP::Parser::XS. В новом релизе обновлена входящая в состав модуля C-библиотека picohttpparser, которая также используется в высокопроизводительном HTTP-сервере H2O, превосходящим по скорости даже nginx.
PerlPowerTools 1.003
Обновлённый выпуск PerlPowerTools — набор классических UNIX-утилит, написанных на Perl. Проект был возрождён брайном ди фоем, один из выпусков был специально подготовлен для доклада на конференции Saint Perl 2014.
Image::Info 1.37
Обновлён модуль Image::Info для извлечения информации об изображении. В новом релизе исправлены проблемы при чтении битых TIFF-файлов. Также вместо использования встроенного в Perl средства для работы с файловым дескриптором к скалярной переменной PerlIO::scalar теперь используется IO::Scalar. Связано это с обнаруженным критическим багом в PerlIO::scalar < 0.21.
autodie 2.26
Обновлена прагма autodie, заменяющая системные функции аналогами, которые генерируют исключение в случае ошибки. В новой версии исключены функции umask и fileno, так как если они возвращают undef, это не является ошибкой. Также обновились зависимости модуля: вместо base теперь используется parent.
■ Владимир Леттиев
Интервью с Рикардо Сигнесом (Ricardo Signes)
Рикардо Сигнес (Ricardo Signes) — американский Perl-программист, в настоящее время pumpking, ответственный за выпуск релизов perl
Когда и как научился программировать?
В детстве у меня в семье был TI-99/4A, современник Commodore 64. Мне было четыре или пять, когда я научился писать программы на BASIC по отгадыванию чисел или по подсчету возраста, если ввести день рождения. В то время я только учился писать, и компьютер тоже был особым пишущим устройством, где пишешь и что-то происходит. Я до сих пор думаю о компьютерах в этом ключе.
Программировал лишь изредка, пока не закончил университет. Мне просто нравилось решать небольшие задачки. Я писал для BBS-серверов на Pascal и C, писал небольшие утилиты для фильтрации USENET и интернета. Оно работало, но кое-как. Я не изучал, как писать качественный профессиональный код, — если согласиться, что этим я занимаюсь сейчас — пока не закончил университет и не получил работу.
Какой редактор используешь?
Первым на памяти редактором был KEDIT, клон XEDIT. Мой отец работал с 3270, часто пользовался XEDIT, а дома был KEDIT. Редактор был странным, но конечно лучше, чем EDIT.COM, поэтому я его и использовал. Позже я переехал на elvis, потому что сидел на Slackware, затем JED, о котором остались самые нежные воспоминания. Помню, что в 1995 году весь софт, написанный на библиотеке S-Lang, выглядел впечатляюще. Все мои сегодняшние схемы подстветки наследуются из JED и slrn.
Сейчас я использую Vim. Я не Vim-фанатик или даже не эксперт, но я кое-что знаю и написал достаточно Vim-скриптов, чтобы больше не хотеть этого делать. Мне нравится пробовать новые редакторы, но сомневаюсь, что я его сменю когда-нибудь снова.
Когда и как познакомился с Perl?
Когда я только пересел на Slackware в 1995 году, мне нужно было написать несколько небольших программ для автоматизации таких задач как объединение USENET-постов и их декодирования. Я написал (ужасный) Си-код, и, наверное, смог бы закончить утилиты, но подозревал, что это будет мучительно. В Slackware было полно Perl-кода, и я решил выучить Perl.
Но это был Perl 4. Slackware, насколько я помню, очень медленно переходило на Perl 5. В конце концов он был доступен, но нужно было ставить отдельный пакет, указывающий на /usr/bin/perl5. Меня это не сильно волновало. Perl 4 мог делать все! И мне было тогда невдомек, зачем нужны модули и ссылки.
Я не начинал учить Perl 5 до 2001 года. У меня была первая полноценная работа, и я самостоятельно писал на PHP 4. Все отлично работало, но мне было понятно, что язык не помогает мне писать софт, который я смогу поддерживать длительное время. Мне нужно было что-то дисциплинирующее, и мне досталась в наследство книга Camelbook. Я ее прочел, переписал все на Perl 5 и никогда об этом не пожалел.
Наверное, я единственный человек, который начал использовать Perl потому, что он дисциплинирует.
С какими еще языками интересно работать?
Большинство серьезной работы я делаю на Perl 5, поэтому с другими языками я только играюсь. Иногда я работаю над большими проектами и всегда ищу причины использовать другие языки.
Есть много языков, похожих на Perl: PHP, Python, Ruby, JavaScript. Конечно, больше всего мне нравится Perl. Люди переоценивают разницу между ними.
В прошлом году я серьезно занялся Forth. В прошлом я пытался учить ассемблер и всегда его ненавидел. Forth мне показался ассемблером, который я всегда хотел. Он был простой, прямой, близкий к машине и укладывался у меня в голове. На конференциях я, бывает, убеждаю людей больше писать на Forth.
Мне действительно нравится Smalltalk (язык, не его странно работающее окружение), и мне нравится решать небольшие задачки на Prolog для разминки. Хотелось бы найти причины, чтобы больше писать на языке Io.
Я с удовольствием вспоминаю все языки, на которых по разным причинам когда-либо доводилось писать. Кроме Visual Basic 5.
Что, по-твоему, является самым большим преимуществом Perl?
Есть объектно-ориентированные языки, функциональные языки, логические языки и языки других парадигм. Парадигма же Perl — ориентированность на результат. Perl это рабочий язык. Если работа будет выполнена один раз, можно набросать нечто монстроподобное и никогда об этом не говорить. Если работа должна выполняться каждый день в течение десяти лет, можно написать красивый надежный код и быть уверенным, что программа будет работать на будущих версиях Perl. Это не свойство языка, но это принцип по которому он эволюционирует с течением времени. Мы стараемся помочь вам сделать работу, никак не влияя на то, что уже работает.
Между прочим, можно многое узнать, просто наблюдая за Perl-сообществом, беря во внимание описанную выше идею.
Что, по-твоему, является самой важной особенностью языков будущего?
Многозадачность. Действительно, это одна из самых важных особенностей языков настоящего. Очевидно, что множество программ, которые мы пишем, могут быть гибче и производительней, если бы были спроектированы с акцентом на многозадачность. Perl 5 не ужасен в многозадачности. Есть множество фреймворков для разных видов многозадачности. Это частая практика у современных языков.
Мне кажется, что действительно важной особенностью языков будущего является простота и повсеместная абстракция для многозадачности во всем языке. В этой области на такие языки как Go и Erlang стоит обратить внимание.
Почему так много модулей? Когда это все закончится?
Разве это уже не закончилось? Мне страшно посмотреть на график своей активности!
Когда я решаю какую-то проблему так, что это можно использовать и в другом проекте, я выделяю решение в модуль. Иногда у модуляризации есть свои проблемы, поэтому возникает еще один уровень модуляризации. Через некоторое время это все накапливается, и в конце концов у меня получаются модули из других модулей для управления другими модулями своих модулей. Вот!
Уже некоторое время я чувствую, что у меня достаточно утилит. Пока я не столкнусь с какими-то странными задачами, я буду выкладывать модули небыстро и стабильно. Но опять же, у меня есть список идей, которые бы хотелось реализовать: замена URI.pm, Mason-подобный шаблонизатор, zasm-компилятор…
Какая твоя текущая роль в разработке perl?
Я «pumpking», что-то вроде «временный великодушный диктатор». Эта должность переходит от человека к человеку. Со своей стороны я стараюсь, чтобы список рассылки perl5-porters не стагнировал и пинаю тогда, когда нужно запустить остановившийся процесс. Так же я пытался укрепить цивилизованное поведение в perl5-porters. Не хочу работать в условиях грубости; предполагаю, что и другие люди тоже.
Что ожидать от 5.22?
На данный момент 5.22 сильно отличается от 5.20. В 5.20 мы добавили множество захватывающих фишек, на которые можно показать пальцем и сказать: «Круто, я хочу это использовать!». 5.22 в основном это улучшение производительности — и их очень много! Вызовы методов стали быстрее, глубокое разыменование стало быстрее, есть несколько других оптимизаций. Конечно, есть также исправленные ошибки и другие хорошие небольшие фишки.
Если бы мне нужно было выбрать самое интересное, я бы выбрал новые экспериментальные псевдонимы ссылок:
\$x = \$y
…и обе будут одинаковые переменные, будучи псевдонимами друг друга. Это можно использовать и в циклах:
my @input = ( [ 1, 2, 3 ], [ 8, 9, 10 ] );
for \my $x (\ (@input) ) {
$x++;
}
…и получить список ([2,3],[9,10]). Другими словами, можно получить такое же поведение, как и при использовании $_ без использования этой переменной.
Какое сейчас направление в разработке perl самое главное?
Не думаю, что было бы правильным утверждать, что таковое есть. Есть несколько людей, который работают над perl в зависимости от своих собственных интересов. Я пытаюсь поддерживать то, что будет полезно и отговаривать от редких изменений, которые, по-моему, никогда не будут внедрены.
Безусловно, есть определенное количество людей, работающих над увеличением производительности, но есть также и много других областей разработки: улучшение генерации кода, чисел с плавающей запятой, оптимизация памяти и даже возобновление совместимости с EBCDIC (кодировка — прим. перев.). Мое видение в том, что если больше людей работают и делятся своей работой и планами, то все будет идти хорошо. Пытаться направлять людей туда, где им не нравится, никак не поможет ни Perl, ни тому как сейчас обстоят дела.
Есть некоторые, которые говорят, что обратная совместимость уже не в приоритете. Что можешь ответить на это?
Это явно не наш случай. Когда вопросы по изменению языка обсуждаются в perl5-porters, всегда поднимается вопрос об обратной совместимости, и это весомый фактор при принятии решения о том, что будет хорошо для Perl. Да и как я уже упоминал, мы не хотим ломать ваш существующий код, который работает.
Разные люди хотят разного размера изменений, и они хотят поменять разные части языка, поэтому часто возникают споры. Но тем не менее, и это должно быть явно видно из наблюдений за процессом в perl5-porters, обратная совместимость в приоритете. В прошлом году мы решили явно указывать причины некоторых редких нарушений обратной совместимости, которые войдут в документ «направление perl» до 5.22.
Есть ли что-нибудь из внутренней разработки perl, о чем ты хотел бы, чтобы узнали пользователя языка?
Это очень интересно! Еще задолго до того, как я начал принимать участие в разработке perl, я читал рассылку p5p для удовольствия. Много я удалял не читая, так как мне не было интересно, но очень многое было захватывающим. Я познакомился с различными странными хитростями языка, некоторые из которых были намеренными. У меня появилось понимание причин разных приоритетов, назначенных разных частям языка разными людьми. Я узнал много об операционных системах, обмене данными, алгоритмах, структурах данных и динамике социальных групп. Кроме того, просто круто наблюдать, как умные люди работают вместе.
Даже когда мне не было интересно работать над perl, было захватывающим наблюдать все это, и это хорошо меня подготовило в дальнейшем, когда я захотел внести некоторые советы и изменения и быть более вовлеченным в разработку.
Что думаешь по поводу Perl 6?
Я осторожно оптимистичен. Я пытался не спускать глаз с разработки Perl 6, что было очень интересным. Каждый год, или вроде того, я писал небольшую программу на Perl 6, и это было весело. Perl 6 один из немногих языков, знакомых мне, который пытаются предоставить абстракции для многозадачности, оставаясь в то же время динамическим языком. Я точно буду продолжать пробовать что-нибудь писать на нем. Но этого языка так много, и до сих пор у меня не получалось все удержать в своей голове. Хотя это может сильно измениться, если я буду использовать его чаще, чем раз в год!
Где сейчас работаешь? Сколько времени проводишь за написанием Perl-кода?
Я работаю в Pobox.com уже около десяти лет. Мы предоставляем сервисы по использованию вашего email-адреса, и мы занимаемся этим уже двадцать лет, что меня сильно потрясает, учитывая продолжительность жизни других сервисов, которые я пытался использовать.
Наш внутренний код практически полностью написан на Perl. Есть немного Ruby, Python, C и PHP, и, конечно же, JavaScript, но где-то 95% своего времени я пишу на Perl. Мы пытаемся выкладывать на GitHub или CPAN наиболее полезный для общих задач код, поэтому большая часть моего кода на CPAN была написана для работы.
Стоит ли сейчас советовать молодым программистам учить Perl?
Мы должны советовать молодым программистам не забывать, что компьютеры это инструменты общего назначения для решения разного рода задач. Это может означать, что некоторые задачи могут требовать программирования. Не думаю, что выбор языка имеет значение, в той мере, что он помогает им решать текущую задачу и позволяет им чувствовать возможность решить и следующую.
Для меня Perl идеален. Мне кажется, что таким он будет и для многих других людей. С другой стороны, если бы я увидел ребенка, решающего задачи тем способом, которым он научился в «JavaScript для детей», я не буду ему говорить: «Тебе стоило написать это на Perl».
Для тех, кто хочет стать серьезным программистом, я хочу порекомендовать Forth! Дайте-ка я немного расскажу вам о нем…
Вопросы от читателей
Поедешь на FOSDEM?
Конечно! Я слышал много позитивного о FOSDEM, и всегда хотел поехать. В этом году я достаточно продвинулся с реализацией своей идеи и купил билет! Я буду в Perl-аудитории, но также и в других местах, надеюсь. Также предвкушаю дегустацию всего, что может предложить Брюссель, а также встречу со многими людьми, которые никогда не были на конференциях в Штатах.
Чем увлекаешься?
Последнее время я пытаюсь доказать себе, что незавишу от сладостей. Перестал употреблять колу, кондитерские изделия, шоколад и много других вещей, кроме некоторых исключений. Это не делает меня несчастным, но и не легко.
Кроме этого я стараюсь увлекаться некоторым списком недорогих хобби. Я мог бы бросить одно из них в любое время, но после этого мне нужно найти новое. Мне не очень удается просто убивать время. Может быть, я завишу от желания быть всегда занятым.
Удалось ли тебе наконец восстановить все резервные копии?
Ух! Это до сих пор кусается! Наверное это о моей миграции музыки в июне. Самой большой проблемой было то, что я удалил копии, которые думал, что восстановил. В итоге я потерял огромное количество файлов. Мне удалось восстановить большинство, но теперь у меня нет треков всех моих любимых альбомов. Альбомы у меня не пропали целиком, поэтому мне тяжело заставить себя спуститься в подвал, распаковать CD-диски и снова их «рипнуть». На сегодняшний день отсутствуют 1598 файлов. Я должен что-то сделать. В большинстве случаев это «что-то» значит «слушать больше Spotify».
■ Вячеслав Тихановский
/9j/4AAQSkZJRgABAQAASABIAAD/4gogSUNDX1BST0ZJTEUAAQEAAAoQAAAAAAIQAABtbnR
yUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwQVBQTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AA9tUAAQAAAADTLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAApkZXNjAAAA/AAAAHxjcHJ0AAABeAAAACh3dHB0AAABoAAAABRia3B0AAAB
tAAAABRyWFlaAAAByAAAABRnWFlaAAAB3AAAABRiWFlaAAAB8AAAABRyVFJDAAACBAAACAx
nVFJDAAACBAAACAxiVFJDAAACBAAACAxkZXNjAAAAAAAAACJBcnRpZmV4IFNvZnR3YXJlIH
NSR0IgSUNDIFByb2ZpbGUAAAAAAAAAAAAAACJBcnRpZmV4IFNvZnR3YXJlIHNSR0IgSUNDI
FByb2ZpbGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGV4dAAAAABDb3B5
cmlnaHQgQXJ0aWZleCBTb2Z0d2FyZSAyMDExAFhZWiAAAAAAAADzUQABAAAAARbMWFlaIAA
AAAAAAAAAAAAAAAAAAABYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAAB
jaWFlaIAAAAAAAACSgAAAPhAAAts9jdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgAL
QAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4A
sgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUU
BTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAh
QCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWA
yEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRj
BHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX
2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvw
fSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5
Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMM
XAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwk
PJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEi
YSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4F
ZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlF
GWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1
wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhzi
H7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmt
yboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9Es
BSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYI
xujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5
w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gP
iA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTO
RRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kw
qTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19Tql
P2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5
Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBk
lGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWB
tuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdv
h3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4Cog
QqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyosw
i5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY
0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6
G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtR
K24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5
wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkb
Gw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08
bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4
cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M
8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7
c/23////bAEMACgcHCAcGCggICAsKCgsOGBAODQ0OHRUWERgjHyUkIh8iISYrNy8mKTQpIS
IwQTE0OTs+Pj4lLkRJQzxINz0+O//bAEMBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7O
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
XGuwzT/VWhvZxbYw06tx4DAWWRLhwTVi4hqKB1sloaj2r2ZlR2sFSyFuoOLQC1zS7G4A+l0
Vkaqjto4fmmbPHHT9pMGBodI4a9iQSAM4P81naW4VlDq9lqZYQ/3gxxAPquc881TM6aolfL
I73nvcST8SlyHC7LWhrbbSyXPXLVFlXA6GMiBuRkh2SNe3LGN+aU9yoKez0tOWyzTQVntLo
3xN7N4w0FudWeTeeOqpkQtkRpWXu2NrK2d89ym9thki+cY09kHjGw197Hw9PCvpq2gdanW2
rdUMYyoM8ckUbXE5AaQQXDGwHU/FVSJchQSLoXSjp7XRR0slR7VR1JqG64W6CSW7Z1Z20+G
64VUlmnfNUR+2RySZcIA1uhjj/fzkgH+7nzVYiEqKRoGtoncJUYrJJ4x7VLpdDGH9GcwSPx
XmLiCGknigpY5m0UcDoCdemU6jqc8EbA5AwPJVT7jWPoxRvqZHU7eURd3R8FGS5Ch2lrXV0
E0AiZcbnUangu7fAa1v8Ah1HUfiF5vtbSV9XHNSOmLWwsjcJYw091obkYceeFWIhKikWlRW
0VZbqCKbt2TUjeyc1jAWvYXl2Qc5BweWF9ZWW51NPbpW1DaQTumppWta6RmRjDhkA5AbnBG
4VUiDKi0p62goaqRsLJ5qSeAwz9ppa8gnOWgZAwQ08zyXplZbqGlqIaJ1TJJVt7J8s0bW9n
HkEgNDjknA3yFUogyov5rrbH8Q0FwbJVdlTCLWDA0OJjAxjv9cfDzXOluFthqbq98tVorIn
Rx4gbkanB2T3+mMdfyVIiXIyIIiIaBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAR
EQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBER
AEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREA
REQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBE
RAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAERE
AREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQB
ERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAf/
2Q==
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
z+YxN2CwV2O5nQiG20TYiykDKoa9RBFQ2z2nlbPPYYywYkZuc6tDk6alSmWMqcwBAUnVXAa
jhXXV/jNJ05h6Pksfu7XkFOSx+7teQV+eJ292jRhOAKlQ4zU3G1vKBEF9YYQgaDdJUVrKuI
IIsDw6a+P7QbTYri2xoUhGDPTlSVPRZEZasq20KAKklSVFJBuBpa97mlTdG1v0Tksfu7XkF
KqL2140qDzEnZ3DMSmwcTlsurlQ0jcLTIcQEdfNSoDXp01Gh0rXjbEbPQzDMeE43yF1Tsa0
p792pVs1udwNhccOOmprsNNpLKDdX3R/Waz3SetfnPvWW63aatxf+FbPB1t1vD9ytpS1NFl
9xvdlYsrLlUMoPUNK+f8J2fGBnBORu/Zxc3pY5W9bN+Oa9r62va+tr1290nrX5z703Setfn
PvUvuU5kTZfCYOK/akdh5MwtpaU4ZTqs6QnKAoFRCtB0jjrxrptfcP9yv1NN0nrX5z71g22
kpOqvvK/rPWaXcGkrUrDdJ61+c+9N0nrX5z71MLlnSsN0nrX5z703SetfnPvTBlnSsN0nrX
5z703SetfnPvTBlypmyeCz8SdxGVGdckvMKjuK5S6AWyLFOUKtax6uOvHWjOymCx8IfwlqM
4mJISEOI5S6SpIFgnNmzAW0sDa2ldXdJ61+c+9N0nrX5z71bxSb25MHZLBcOmRZcSK62/DZ
LDKjJdVlbuTlIKiCLk6G9tOoV2aw3SetfnPvTdJ61+c+9Jm9ZKpnSsN0nrX5z703SetfnPv
UwuWdKw3SetfnPvTdJ61+c+9MGWdfD95H5if9hWO6T1r8596+FpOZGq/vp/rPWPnXXTVwnV
dS+SNlcBl4y3jEjC47k5uxDpTxI4EjgSOgkXHRSRsrgMvGW8YkYXHcnN2IdKeJHAkcCR0Ei
46K6PJm/id9VXvTkzfxO+qr3rVozOc9J2kS+sMYThbjQUcil4m4hSk9BIDBsflc/jWL2zWG
YlLbxPEYCEzy0lD26fXkWBrlVbKHEg8Myf8V0+TN/E76qvenJm/id9VXvQcbENiNn8Vcfcn
RHn1yHUOrKpj33k5strL5oGY6Cw8BWU7YrZ3Ew7yzDg8XmktOqLqwp1KbZcxCrqIsOcdfnX
X5M38Tvqq96cmb+J31Ve9BwXdgNmnzNL0J504glKZWea+rehJBTe6+ggW6uHCuXtb+z1rEc
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
BMYbu5c7y74J9qblzvLvgn2q1K1M6O5c7y74J9qblzvLvgn2q1KCO5c7y74J9qblzvLvgn2
q1KCO5c7y74J9qblzvLvgn2q1KCO5c7y74J9qblzvLvgn2q1KDVS0vlTg5Q59xOtk9avlVN
y53l3wT7VGTLbhKfkOpeUhDaLhllbq9VKGiUAqP8AgVxMI2sZmYtiMZ1GJKSmWhuODhUhIQ
ktNmyju+bzio862hvwtTWaHody53l3wT7U3LneXfBPtVqUEdy53l3wT7U3LneXfBPtVqUEd
y53l3wT7U3LneXfBPtVqUEdy53l3wT7U3LneXfBPtVqUEdy53l3wT7U3LneXfBPtVqUEdy5
3l3wT7U3LneXfBPtVqUEdy53l3wT7U3LneXfBPtVqUEdy53l3wT7VOS0sRXSZDhsg6EJ10/
Ctqoyv5R78tX6UDcud5d8E+1Ny53l3wT7Vwdp9pkYUzumUzkvpkx0qWjDnnEFCnUBQCwgpJ
KSRob3NhrXagYgxiTKnmESUJSrKRIiuMKv/a4lJI142tSMim5c7y74J9qblzvLvgn2q1KCO
5c7y74J9qblzvLvgn2q1KCO5c7y74J9qblzvLvgn2q1KCO5c7y74J9qblzvLvgn2q1KCO5c
7y74J9qm60sOM/8AmHDdZ6E6c0/KtqovfxGPzD/qqgblzvLvgn2puXO8u+CfavNv7YsJ2ih
sIbxQRlxn1ON/ZEnMpYU3lIG7zEAFXDTUX6K9Mw8mQw28gLCXEhQDiFIUAetKgCD8iL02sY
7lzvLvgn2puXO8u+CfarUoI7lzvLvgn2puXO8u+CfarUoI7lzvLvgn2puXO8u+CfarUoI7l
zvLvgn2puXO8u+CfarUoI7lzvLvgn2puXO8u+CfarUoNWM0sxWiJDgugaAJ00/CqblzvLvg
n2pF/lGfy0/pVqCO5c7y74J9qblzvLvgn2q1KCO5c7y74J9qblzvLvgn2q1KCO5c7y74J9q
ValBymf4Df9o/SteeziLoRyCYxGtfPvY5duPlZabHx/CqtBzcostNso/p/wDms7O/GjyH3r
JOrTGjnx4UrDORRIWRyNncVLcdHPUVXVmBBAuVnUWtqeFtcWcLmOTWZWJzmpPJiVMIZjlpK
VEFOZV1KJNiRpYanTq6VnfjR5D70s78aPIfeg5rOFzHJrMrE5zUnkxKmEMxy0lKiCnMq6lE
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
AE6AVlcdR8DWbag42lYBAULi9HVBptTigSEi5AFzSi2Fx1HwNRkRWJWUPBwhP9IUpKT+IBs
ofI3rbtTLSi0rjqPlNLjqPgarlplpRaVx1HwNLjqPgarlplpRaVx1HwNLjqPgarlplpRaVx
1HwNNLp0P3h0HrquWmXUfiKsRkmcM94nqV5TTeJ6leU1nSvR5sN4nqV5TTeJ6leU1nSgw3i
epXlNN4nqV5TWdKDDeJ6leU03iepXlNZ0oMN4nqV5TTeJ6leU1nSgkFjeqNlfdH9J+dZbxP
Urymvo++T8h/+ayoMN4nqV5TTeJ6leU1nSgw3iepXlNN4nqV5TWdKDDeJ6leU03iepXlNZ0
oMN4nqV5TTeJ6leU1nSgw3iepXlNN4nqV5TWdKDDeJ6leU03iepXlNZ0oMN4nqV5TTeJ6le
U1nSgw3iepXlNYurBaWLK1Sf6TVaxXqhQ+RoPm8T1K8ppvE9SvKazpQYbxPUrymm8T1K8pr
OlBhvE9SvKabxPUryms6UGG8T1K8ppvE9SvKazpQYbxPUrymm8T1K8prOlBhvE9SvKaxWsF
SNFaK+E9RqtYq4p/H/8AFB83iepXlNN4nqV5TWdKDDeJ6leU03iepXlNZ0oMN4nqV5TTeJ6
leU1nSgw3iepXlNN4nqV5TWdKDDeJ6leU03iepXlNZ0oMN4nqV5TTeJ6leU1nSgk0sBpAsr
RI/pNZbxPUrymvqNEJHyFZUGG8T1K8ppvE9SvKazpQYbxPUrymm8T1K8prOlBhvE9SvKaVn
SgxtWJQC4lXUCKUqKIRlTb5k/8AesQ0AlsfD7UpQA0AlsfD7VkpNxa9rnW1KURhubBQSoi6
uNzfhX3dHQFaiLEaG1KUUDaiCM51A6ayQiybXJ/E3pSgxQ1kCbE8LEX0r5uiUqzKvmSbilK
DJTZJJzEEcLHSvhaFyMytTf7xpSiKWpalKKWpalKBalqUoFqWpSg+634C3419pSqhSlKBSl
KBSlKBSlKD50mgv0gUpQfaUpQKUpQKUpQKUpQKUpQKUpQKUpQK+HUUpQDe+gFvxr7SlApSl
ApSlApSlApSlAr4eilKBrfUC3419pSgUpSgUpSgUpSgUpSgUpSgx1AFgD+JrKlKBSlKBSlK
BSlKD//Z