Работа над поддержкой USB3-контроллеров DisplayLink

Наш коллега, David Airlie, продолжает разрабатывать драйвер для устройств DisplayLink и решил попробовать USB3 версию. Неожиданно он попал в неловкое положение и просит совета.

Оказалось, что протокол устройства основан на HDCP. Это такой протокол, придуманный копирастами, чтоб портить и ухудшать характеристики бытовых устройств под предлогом защиты т.н. "интеллектуальной собственности", которой, разумеется, не существует. К счастью протокол был взломан, и мастер-ключ HDCP был успешно получен инженерами. Правда затем компанией Intel было объявлено, что использование мастер-ключа HDCP будет преследоваться в уголовном порядке с помощью справедливого и беспристрастного суда США. Так что если вы получите указанную последовательность чисел, например, в результате работы генератора случайных чисел, и собираетесь посетить США, то обязательно пересоздайте другу последовательность, а эту забудьте. Чтоб случайно не воспользоваться запрещенным числом, обязательно распечатайте мастер-ключ HDCP и повесьте его на видное место.

David раскочегарил всеми нами любимый Wireshark и еще кое-какие самописные утилиты, и снял некий набор дампов с USB порта. Проанализировав их, он попытался воспроизвести поведение в самописной утилите, но пока что-то не получается. В паре постов в своем блоге (раз и два) David изложил текущее состояние, и просит тех, кто разбирается в криптоалгоритмах, помочь ему.

Кстати, мы неоднократно жаловались, что ситуация с криптографией в Open Source как-то не очень - стандарта нет, и уровень реализации криптоалгоритмов в библиотеках совершенно разный. В ядре есть хорошая криптоподсистема, но на уровне пользователя она не видна, хотя навскидку вспоминаются несколько интересных проектов по ее задействованию для прозрачной обработки некоего зашифрованного интернет-трафика. Но опять же, общего решения не было - для каждого проекта городилась своя система взаимодействия с криптоподсистемой ядра. Наконец-то появилось кое-что, что претендует на универсальность - сегодня был анонсирован проект libkcapi, userspace-библиотека для задействования криптоалгоритмов ядра. В ней самой никаких алгоритмов и данных нет - она лишь передает все в ядро, и там уже задействует криптографические функции. Есть правдоподобно выглядящее суждение, что качество подсистем ядра в целом выше, чем качество userspace-компонентов, т.к. мол программисты ядра квалифицированней программистов userspace. Если это и правда так, то может статься, что использовать эту библиотеку будет в ряде случае выгоднее, чем известные userspace-решения.