Колин Персиваль, автор tarsnap — математик, криптограф и программист. Невольный пособник крипты

a5mqt-m2f6jxrxhwgbjuhhkbdt4.jpegВыдающиеся программисты современности часто оказываются самоучками. Иногда попадаются специалисты с официальным академическим образованием в области компьютерных наук. Или учёные из других областей: физики, математики, криптографы. Все они вносят в программирование академические знания и научную основательность.

Типичный пример — д-р математических наук Колин Персиваль (Colin Percival), бывший директор по безопасности FreeBSD, автор уникального сервиса резервного копирования Tarsnap и других проектов.

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

▍ Биография вундеркинда


ly4w9jowcigp9euwsj91sgveiqu.jpegКолин Персиваль родился в Канаде в 1980 году. О его детстве и образовании известно мало. В школе он был победителем многочисленных олимпиад по математике, часто со 100% результатом. В 13 лет юный Колин начал посещать лекции математического факультета университета Саймона Фрейзера (государственный университет в провинции Британская Колумбия), официально поступил туда в 15, а затем пошёл в аспирантуру Оксфордского университета, где изучал распределённые системы.

В 1998—2000 гг он разработал и поддерживал распределённый проект PiHex по поиску числа Пи, используя формулу Беллара. Это была прикладная реализация его научных изысканий. Распределённая система поставила несколько рекордов, в том числе нашла квадриллионный бит:

1110 0110 0010 0001 0110 1011 0000 0110 1001 1100
   ^ Квадриллионный бит Пи
1011 0110 1100 0001 1101 0011


… после чего её закрыли.

Ещё во время обучения Колин начал программировать и присоединился к проекту FreeBSD, где разработал систему обновлений FreeBSD Update. В то время обновления ОС распространялись только как патчи для исходного кода, что затрудняло обновление работающих систем. Персиваль разработал более эффективный алгоритм дельта-кодирования под названием bsdiff. На его основе позже был реализован также инструмент portsnap для безопасного распространения снапшотов коллекции портов FreeBSD с цифровой подписью.

В 2006 году Колин Персиваль защитил диссертацию по темам сопоставления строк, сжатия данных и синхронизации файлов, описав ту самую утилиту bsdiff, и выпустился из Оксфорда.

Но в Оксфорде Колин занимался не только учёбой. C 2004 года он начал присылать коммиты для FreeBSD, вошёл в команду FreeBSD Security Team, а в следующем году вообще возглавил её в качестве FreeBSD Security Officer. Эту должность он занимал до 2012 года. Это была его основная работа до появления программы резервного копирования Tarsnap, которая приносит доход вплоть до настоящего времени.

▍ Другие программные проекты


В 2009 году для сервиса Tarsnap Колин Персиваль разработал адаптивную криптографическую функцию формирования ключа на основе пароля scrypt, которая устойчива к брутфорсу с массированной параллелизацией и использует функции жёсткой памяти (memory-hard function, MHF). Такие функции для вычисления требуют значительных объёмов памяти. Они стали активной сферой исследования в криптографии, потому что защищают от брутфорса через ограничения памяти. По этой причине именно scrypt выбрали во время разработки Litecoin и некоторых других криптомонет. По их протоколу, майнинг возможен только при использовании scrypt. Наверное, Колин и сам не ожидал, каким образом будет использовано его детище.

В 2016 году IETF опубликовала scrypt как стандарт RFC 7914.

frosterp-qowp5sdzuzt90u1gi8.png
Примерная стоимость оборудования для взлома пароля за один год, источник

В течение шести лет Персиваль приложил немало усилий, чтобы запустить FreeBSD на инстансах Amazon EC2. В конце концов ему удалось преодолеть технические трудности. В ноябре 2012 года Amazon торжественно объявила об официальной поддержке новой ОС. Колин продолжил работу по интеграции FreeBSD на EC2, за что спустя семь лет получил награду AWS Community Hero.

Среди других проектов:

  • spiped, демон защищённых каналов обеспечивает симметричное шифрование между двумя сокетами;
  • kivaloo, высокопроизводительное хранилище «ключ-значение»;
  • dual-dhclient, демон замены dhclient, который порождает отдельные IPv4 и IPv6 клиенты dhclient;
  • утилита Pipelined HTTP GET (назначение понятно из названия)

На личном сайте перечислены его проекты для FreeBSD. Среди них выделяется depenguinator (депингвинатор) — утилита для удалённой установки FreeBSD. Из описания программы:

Многие компьютерные системы по всему миру захвачены пингвинами; в некоторые даже мёртвыми крысами. В свете этого хочется изгнать этих злых духов и заменить их милым, дружелюбным демоном…

Я собрал некоторый код для сборки образа диска FreeBSD, который загрузится в память, настроит сеть, установит рутовый пароль и включит SSH. Это можно использовать для «депингвинизации» Linux-компьютера, не имея никакого доступа, кроме сетевого подключения.


Основные работы убийцы пингвинов в области криптографических алгоритмов и технологий:

▍ Tarsnap


Tarsnap — уникальная программа (и сервис) для инкрементальных бэкапов, которая идёт под девизом «онлайн-бэкапы для настоящих параноиков». Вероятно, одним из таких параноиков является сам Колин Персиваль.

Сам клиент tarsnap размером 615,7 КБ распространяется с открытым исходным кодом.

hfraqqxyyzjv8z-evbmzmcof8lu.png

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

7f1zzel11qtvqfnxpxh-ycpkfrc.png


Создание архива

Tarsnap автоматически находит уникальные данные внутри файлов. Конкретно эти данные затем сжимаются и шифруются, а на сервере Tarsnap присоединяются к старым зашифрованным данным, тем самым актуализируя архив. На самом деле объединение зашифрованных данных — нетривиальная задача. Но код серверной части закрыт. Остаётся надеяться, что Колин корректно решил эту задачу, то есть объединение данных происходит без их расшифровки.

biueyaximotnodxldl4rkqq_cbg.png
Дедупликация

Tarsnap — это максимальная степень безопасности плюс максимальная эффективность передачи данных. Добавьте сюда простоту в использовании, интуитивно понятный интерфейс — и получите самую привлекательную комбинацию с точки зрения системных администраторов.

Вдобавок ко всему, Tarsnap реализует автоматическое хранение нескольких копий данных на нескольких удалённых серверах, то есть автоматическое резервирование. Это означает, что даже если один из серверов Tarsnap повреждён, все сохранённые данные будут восстановлены.

Как уже говорилось, основной код сервера закрыт. Но клиент использует открытую библиотеку libarchive, и Колин стал уже практически основным мейнтейнером этой библиотеки, прислав более сорока коммитов с исправлениями багов, с улучшениями и абсолютно новым кодом вроде scrypt.

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

Что касается личной жизни, о ней не известно практически ничего, кроме наличия диабета и игры на виолончели в юности. Такого лаконичного описания личной жизни не найдёшь ни в одной статье Википедии:

rd-s9cyyp26bxujt_4dx5caawvo.png

Надо полагать, всё своё внимание выдающийся учёный уделяет бизнесу Tarsnap. Кроме реализации новых фич и исправления багов, нужно управлять бизнес-процессами, удерживая маржу между расходами (хостинг на AWS) и доходами (тарифы 250 пикодолларов за байт-месяц хранения и столько же трафик, больше никаких скрытых платежей). В общем, много забот…

Итак, что мы думаем о TarSnap? Чувак явно был гением, но тратил своё время на бэкапы вместо решения проблем тысячелетия. Я говорю это с величайшим уважением. Может, предпринимательство становится ловушкой для всех?  — из комментария на HN


Выдающиеся программисты 21 века. Предыдущие статьи серии


hc88sbzi7apcmcvqt2icby4azas.jpeg

© Habrahabr.ru