Геннадий Евгеньевич Махметов

Кандидат физ.-мат. наук, CISSP


Геннадий Махметов

Специальность

Специалист по компьютерной безопасности и разработке безопасного программного обеспечения.

Занятие

Сейчас занимаюсь консультациями и проведениями тренингов, учебных семинаров. В частности, иногда провожу спецкурсы для студентов факультета Вычислительной Математики и Кибернетики (ВМиК) МГУ.

Основная тематика моих занятий включает:

Trial test result

Март 2005 года. Результаты пробного экзамена на получение сертификата CISSP ((ISC)2 не разглашает результаты реального экзамена). Обратите внимание на три области в которых результаты составали 100%.

/media/images/certificate_2.jpg

И сам сертификат

Опыт

У меня достаточно разнообразный опыт. Так начало моей профессиональной деятельности было университетским: я работал на Физическом факультете МГУ, и в Университете Париж-Юг во Франции. Позже я приобрел опыт работы в ведущих российских компаниях: это и R-Style Softlab, и РНТ, и Информзащита, и ЦБИ.

Как можно заметить, мне довелось работать в очень разных областях. Может даже показаться, они между собой никак не связаны, но это не так: в моей деятельности всегда так или иначе присутствовало программирование и компьютерная безопасностью. И это интересно: одни и те же — по крайней мере, на первый взгляд — методики могут использоваться существенно по-разному, для достижения разных целей.

Прежде чем описать свой опыт подробнее, сделаю маленькое отступление.

Мне всегда везло. Действительно, чем бы я не занимался, в какой бы области, в какой бы организации мне ни доводилось работать, рядом со мной всегда были Мастера своего дела. С одной стороны, это сложно: необходимо много работать, чтобы заслужить их уважение. С другой стороны, работа с квалифицированными специалистами дает возможность повышать свой уровень; иногда простой вопрос типа «а что ты хочешь этим достичь?», заданный в нужный момент, приводит к резкому прорыву в понимании.

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

А теперь вернемся к моему опыту.

Физик

По образованию я физик. Закончил физический факультет МГУ; там же закончил аспирантуру, защитил кандидатскую диссертацию.

Работал научным сотрудником в МГУ. В этой должности я продолжал трудиться в той же лаборатории, в которой учился и студентом, и аспирантом. Таким образом и студентом, и аспирантом, и научным сотрудником я занимался одними и теми же задачами: теоретически изучал процессы электронного обмена между поверхностью твердого тела и движущимися рядом с ними атомными частицами, моделировал эти процессы на компьютере.

Поработал я и в университете Париж-Юг. Университет этот находится в «парижской области», во Франции, очевидно. В этом университете я решал те же самые задачи, что и в Москве; надо сказать, подход к решению наших задач в этом университете существенно отличался от принятого у нас в Москве, и это принесло мне множество интереснейших открытий.

Как я уже писал, мне везло. Так получилось, и в МГУ, и в Париже мне довелось работать в ведущих научных группах, признанных мировых лидерах в своей области («Ты „диаграммы Бара“ из учебника помнишь? Знакомься, это Бара»).

Может показаться, эта работа не имеет никакого отношения к безопасности. Это не так: именно знания, полученные в МГУ, являются сейчас фундаментом для моего понимания системных задач, в частности, задач по оценке рисков.

Программист

На физическом факультете уделяли большое внимание программированию. Нас учили как решать расчетные задачи, учили методам программирования научных программ, языку Fortran. Нас учили автоматизировать эксперимент, языку Assembler для ДВК-шек, программированию взаимодействия программ с внешними устройствами. На военной кафедре мы изучали о-о-очень специализированный компьютер, его железо на уровне отдельных вентилей, его программирование на уровне машинных кодов — нулей и единиц.

Все эти знания я использовал в своей научной работе.

Для физических исследований я применял численное моделирование. Я находил уравнения, которые описывали исследуемую мной систему, и программировал их решение на компьютере. Здесь надо было решить сразу несколько проблем: во-первых, надо было найти математический метод, который был бы устойчив к ошибкам скругления, во-вторых, обойтись ограниченными ресурсами компьютера — памятью и быстродействием.

Очень интересным для меня оказался опыт разработки программ для суперкомпьютера. Когда я работал в университете в Париже, я немного помог свои друзьям разобраться в использовании специализированного, многопроцессорного компьютера — суперкомпьютера, установленного в этом университете. Для того, чтобы эффективно использовать ресурсы такой системы, необходимо было найти математические методы, допускающие параллельную обработку; найти такое деление задачи на подзадачи, которое давало бы возможность эффективно исполнять их на отдельных процессорах, давало возможность подзадачам эффективно обмениваться информацией.

Помогал я друзьям и с автоматизацией эксперимента. Чаще всего это заключалось в разработке специальных библиотек, реализующих низкоуровневое взаимодействие программы с внешними устройствами.

Весь этот опыт использования компьютеров повлек за собой интерес к системному программированию. Оказалось, даже для выполнения вычислительных задач, желательно хорошо разбираться в принципах работы как «железа», так и системного программного обеспечения. Действительно, чтобы «выжать» из компьютеров максимум, чтобы программировать взаимодействие программы с внешними устройствами, желательно очень хорошо понимать внутреннее устройство операционной системы.

Как я это часто делаю, для систематизации своих знаний я провел спецкурсы. На факультете ВМиК МГУ я прочитал два спецкурса, посвященных системному программированию Unix: один посвященный системным вызовам, другой — ядру Linux.

Во многом, именно эти знания привели меня в компьютерную безопасность. Моя профессиональная деятельность в этой области началась с проекта, одной из центральной частей которого было исследование безопасности HPUX, версии Unix, разработанной в компании Hewlett-Packard. В ходе этого проекта мы ездили в их центр разработки, общались с тамошними инженерами. Я по мере возможности воспользовался своим положением и удовлетворил — хотя не полностью — свое любопытство, расспросив специалистов о применяемых ими методиках.

Хорошим приложением моих знаний стала разработка VPN системы. Я участвовал в этом проекте на всех ранних стадиях: я участвовал в разработке алгоритма ее работы (эта работа проводилась совместно с криптографами), я планировал ее архитектуру, я реализовывал код ядра этой системы.

Есть у меня и опыт работы в большой команде разработчиков. Так я участвовал в разработке системы дистанционного банковского обслуживания. Здесь я занимался как непосредственно программированием — работал с криптографическими модулями, так и анализировал и разрабатывал требования безопасности, которым должна была соответствовать эта система.

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

Специалист по безопасности

Компьютерной безопасностью я стал интересоваться еще на первом курсе Университета. Все началось с того, что мне показали, как на нашем «мэйнфрейме» (EC-1011 под управлением самописной ОС MISS) обходить ограничения для студентов и запускать игрушки.

С тех пор безопасность стала одним из моих хобби. В частности, создавая локальные сети, устанавливая веб-сервера, почтовые сервера, и прочее, я особое внимание уделял их безопасности.

Профессионально работаю в этой области с 2000-го года.

Все началось с моего участия в большом интеграционном проекте. Я уже упоминал об этом проекте в части, посвященной моему опыту разработчика, это тот проект, в котором мы занимались безопасностью HP-UX. Мы создавали информационную систему для одной из силовых структур, и эта система должна была работать на всей территории России.

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

Я руководил одной из групп. Эта группа отвечала за сертификацию HPUX и его интеграцию в систему. В частности, мы ездили в центр разработки Hewlett-Packard в Купертино, знакомились с исходными текстами, задавали вопросы о методах разработки, тестирования, методах достижения надежности и безопасности разработки.

С тех пор я участвовал во множестве проектов. Часть из них была очень крупная, часть — совсем маленькая. Были даже «проекты», вся работа в которых состояла из одно-двух часовой беседы, в ходе которой выяснялись проблемы, с которыми сталкивался клиент, и предлагались варианты их решения.

Из крупных хочется отметить один проект.

Это проект по созданию коммуникационной системы. Об этом проекте я также упоминал в части, посвященной моему опыту программиста. Мы, я и несколько других специалистов, включая криптографов, создавали аппаратно-программный комплекс, реализующий VPN соединения между несколькими объектами; причем к этому комплексу были предъявлены очень специфические требования. Я отвечал за создание коммуникационного протокола, его сетевой уровень (криптографией занимались другие специалисты), кроме того, я отвечал за проектирование и создание программного продукта, этот протокол реализующий.

Иногда я занимался только аналитикой. Так я делал анализ требований к системе дистанционного банковского обслуживания и разрабатывал методику автоматизированной оценки защищенности информационных систем.

Подведу итог этой части. В области компьютерной безопасности, у меня есть опыт как проектирования, так и реализации программных систем, к которым предъявляются высокие требования безопасности.

Преподаватель

Я всегда охотно делился своими знаниями. Для этого есть несколько причин.

Во-первых, общение. Нас, занимающихся компьютерами, считают замкнутыми, не любящими общаться. Думаю, это не совсем так: думаю, все мы люди, и все люди — существа общественные, для которых общение с другими людьми крайне важно; правда, не все мы это показываем. Проведение курсов, консультаций дает возможность пообщаться, получить от этого удовольствие.

Во-вторых, самообразование. Как я люблю повторять, шутка о том, что пока учишь другого, начинаешь понимать сам — не такая уж и шутка. Я много раз замечал, что прочитав спецкурс, еще лучше — разработав его, начинаешь глубже понимать его тематику.

В-третьих, надо говорить честно, это заработок. У меня всегда неплохо получалось как учить по уже готовым материалам, так и разрабатывать собственные курсы. Поэтому все, кто меня знает, очень охотно приглашают меня провести занятия, и готовы платить за это неплохие деньги.

Вернемся к моему опыту преподавания.

В какой-то степени, преподавать я начал еще в школе. Тогда общественная работа была обязательной для всех учеников, и я в качестве такой работы избрал помощь пропустившим занятия. Как говорят, получалось хорошо.

В университете я так же получил некоторый опыт преподавания. Так мне довелось еще на первом курсе принимать экзамены (скорее проводить собеседование) со школьниками, которые хотели учится в вечерней школе физиков при нашем факультете. А в аспирантуре педагогическая практика была вообще была обязательной дисциплиной.

В конце 90-х годов я обучал системных администраторов Unix. Тогда это была экзотическая для России система, а у меня был почти десятилетний опыт ее использования. Я преподавал в авторизованных учебных центрах SCO OpenServer, Sun Solaris, имел соответствующие сертификаты.

На факультете ВМиК МГУ я прочитал два курса по системному программированию. Первый курс был посвящен системным вызовам в Unix, второй курс — программированию ядра Linux.

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

Конечно, университетские курсы не приносят дохода. Тем не менее, мне нравится их проводить, они очень хороши для систематизации собственных знаний, и общение со студентами помогает найти и исправить слабые стороны курса, значит, слабые стороны моих знаний.

Разрабатывал я курсы и для «взрослой» аудитории. Так относительно недавно я разработал и провел курс для специалистов по безопасности. Курс был посвящен взаимодействию «безопасников» и программистов; он был посвящен разработке требований безопасности и проверке их исполнения в готовом продукте.

Таким образом, в той или иной степени я занимаюсь преподаванием столько, сколько я себя помню.

Специалист по Unix

Когда говорят «компьютеры» — видят Windows. Так сложилось, что большинство людей используют именно эту операционную систему.

Я бо́льшую часть времени работал с Unix.

Конечно, начинал я с других систем. Надо упомянуть и самописную систему MISS на нашей ЕС-1011, и клоны IBM VM, работавшие на других наших ЕС-ках. Работал я и на персональных компьютерах под управлением DOS, тогда еще без Windows.

Но, как только появилась возможность, я перешел на Unix. В конце 80-х годов были выпущены первые Intel процессоры, которые могли работать в защищенном режиме. Соответственно, стали появляться персональные компьютеры с этими процессорами; и мы купили один из них в нашу лабораторию (ох, и дорого!); конечно, я установил на него Unix.

Почему я выбрал Unix? Сейчас это для меня очевидно: в нем были механизмы защиты, которых не было ни в DOS, ни в только появившейся тогда Windows, ни в знаменитой OS/2.

Unix очень удачно вписался в нашу лабораторию. Во-первых, он позволял использовать всю доступную память для одной программы, это было очень хорошо для расчетных задач. Во-вторых, он разделял пользователей, и мы могли, не боясь помешать работе другого, использовать компьютер для своих целей. В-третьих, он содержал все необходимые коммуникационные программы, в частности, поддерживал появившуюся тогда у нас электронную почту (кстати, почта у нас появилась вследствие моих усилий, как и доступ к интернету впоследствии).

Позже, использование Unix только расширялось. Компьютер был замен более мощным, «диалап» доступ к интернету был заменен на выделенную линию. Постепенно, сервер стал ядром локальной сети кафедры, он предоставлял все сервисы: почту, веб сервис, dns, и все прочее.

Работа в университете в Париже стала раем для моего внутреннего юниксоида. В нашей лаборатории была развернута большая локальная сеть, включавшая, среди прочего, около десятка очень хороших рабочих станций Hewlett-Packard, под управлением HPUX. И здесь мне довелось иметь дело как с задачами по системному и сетевому администрированию этих станций, так и с задачами использования ресурсов этих станций для выполнения расчетов (необходимо было «выжать» из них максимум).

Позже, уже в Москве, я использовал полученные знания для подработки. Я проектировал сети для небольших организаций, консультировал системных администраторов; как я уже писал, обучал системных администраторов SCO OpenServer, Sun Solaris.

Поинтересовался я и системным программированием в Unix. Частично, понимание системы было необходимо для максимального использования ресурсов вычислительных машин для решения расчетных задач, частично — было просто интересно. Результатом этого интереса стала работа по сертификации HPUX (о ней я писал выше), исследование его ядра с точки зрения безопасности. Другим результатом стали спецкурсы для студентов ВМиК по системным вызовам Unix и программированию ядра Linux (о них я так же писал выше).

Сейчас у меня на домашнем компьютере установлен Linux. Практически всю работу я выполняю в этой системе; конечно, на виртуальной машине у меня установлен Windows, но я стал замечать, что все реже и реже обращаюсь к этой системе.

Заключение

У меня достаточно разнообразный опыт. Этот опыт позволяет мне быть уверенным, что я могу эффективно делать аналитическую работу, консультировать и обучать в области, где пересекаются ИТ, разработка программного обеспечения и компьютерная безопасность.

И еще я надеюсь, у меня будет множество оснований расширить эту страницу.