Я большой поклонник Мозиллы.

В то время как Google поджигает открытую сеть на алтаре маммоны, а Microsoft и разжигает пожары, итушит их, Apple сидит в углу и вертит своими многочисленными, многими красиво оформленными большими пальцами. Однако Mozilla — оригинальный провидец браузера как ОС: Mozilla — это OG и, молюсь, будущее. Mozilla нас объединит. Mozilla — Король прошлого и будущего. В расколотых королевствах людей Мозилла — это Страйдер, наследник Исилдура: Мозилла — это Арагорн II Элессар Телконтар.

Я узнал больше от MDN, чем, возможно, от любого другого веб-сайта документации (и я даже не веб-разработчик). Часто это первое место, куда я иду, чтобы узнать о самых свежих, самых ужасных происшествиях или когда у меня есть вопросы об исторических происшествиях (или происшествиях для особо грамотных). Представьте мое удивление, когда я, thegoldenmule: энтузиаст программирования, отправился в MDN, чтобы узнать больше о Web Crypto, и наткнулся на худшую, самую нерешительную (можете ли вы быть наиболее половинчатой?) Документацию по Web Crypto :

Горячий отзыв: Ну, если все так уверены в том, что они делают, я сомневаюсь в существовании веб-сайта с документацией.

Я слышу приглушенный лязг металла и кожи, падающих на землю: перчатка лежит у моих ног. Медленно перевожу взгляд вверх — кто это? Мозилла?! Мой старый друг, как ты мог? По спине пробегает холодок, но я борюсь с ним и восстанавливаюсь.

Глубокий вдох. Твердо стоять.

Вызов принят.

Знакомство с методом обучения пахицефалозаврам

Мне больше всего нравится в документации Mozilla по Web Crypto то, что в ней нет критериев, по которым можно было бы оценить, получили ли вы привилегию использовать их API. Может быть, они предоставили какие-то ссылки? С чего начать? Нет, это было бы слишком просто — гиперссылки не растут на деревьях.

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

1. Криптография на самом деле сложна. Это не проблема абстракций, визуализаций или восприятия — некоторые вещи просто сложны.

2. Я недостаточно знаю о криптографии, чтобы знать, с чего начать, что мне нужно знать или чего мне не нужно знать.

Как вы узнаете что-то, если вы не знаете, что об этом узнать?

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

10

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

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

Помните тот случай 10некоторое время назад? ПЕРЕХОД К 10.

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

Важная часть метода пахицефалозавра заключается в том, что, начав с нескольких псевдослучайных ресурсов, вы не пьете ничьей Kool-aid. Это оказывается важным, особенно для предметов (таких как криптография), в которых доверие имеет большое значение. Стандартный библиотечный подход Java отличается от .NET, BouncyCastle или (когда я в конце концов прочитал) Web Crypto. Цели Фила Циммерманна при создании PGP отличались от целей W3C при создании Web Crypto API — и из-за их разрозненных Umwelten эти стороны будут по-разному относиться к этим концепциям. Mozilla не доверяет мне, и важно, чтобы я не доверял им безоговорочно.

Моя подборка криптографических ресурсов

Я выбрал небольшое количество ресурсов, чтобы начать биться головой о:

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

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

Пока я просматривал эти документы, я просматривал Основы криптографии Одеда Голдрайха. Это 400-страничная книга с Основами в названии и подзаголовком Том I: Основные инструменты, поэтому я считаю, что ее можно правильно классифицировать как фолиант. .

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

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

Пожалуй, лучшим ресурсом была находящаяся в разработке книга Светлина Накова с открытым исходным кодом Практическая криптография для разработчиков. Есть ряд дыр и повторений (как и мне, ему нужен редактор), но эта книга отлично подходит для чтения от корки до корки — на удивление мало кирпичных стен. Я настоятельно рекомендую эту книгу для изучения криптографии. Поверьте мне: абсолютный новичок, который понятия не имеет, чего он не знает. Это отличная отправная точка для возвращения к Основам Голдрайха, когда у вас возникнут дополнительные вопросы, но она также предоставляет отличные детали того, как взаимосвязаны понятия.

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

Наконец, статьи о технологиях ZkSnark превосходны и в высшей степени плотны. Я бы солгал, если бы сказал, что понял половину этих статей достаточно глубоко, но это всего лишь рабочий метод, друзья. Когда я восстановлю смекалку, я вернусь, ZCash.

Вверх и вниз по лестнице

В превосходном эссе Брета Виктора Вверх и вниз по лестнице абстракции он анализирует решение проблем с точки зрения уровней абстракции.

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

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

Следите за своими ногами, потому что вы можете спуститься по этой лестнице слишком низко. Когда я ловлю себя на том, что читаю Гёделя, я понимаю, что могу зря потратить немного времени. Конечно, может быть, я ошибаюсь. Возможно, понимание ZFC является ключом к созданию уникального опыта для конечного пользователя.

Я уже квалифицирован для WebCrypto?

Теперь, прочитав 3 книги, несколько статей и документацию по криптографии на разных платформах, я считаю, что имею право использовать этот API браузера. Это частично из-за всего того, что я только что сказал, но также частично из-за того, что, читая исходный код криптографического приложения на GitHub, я обнаружил поразительное количество TODO. Я думаю, что никто на самом деле не знает, что делает, и ничто не является действительно безопасным.

Но здесь есть мета-вопрос: откуда вы знаете, что узнали то, что вам нужно? Это сложная проблема, для которой я не предложил полного решения. Гёделю действительно есть что предложить здесь, но я недостаточно квалифицирован, чтобы понять или объяснить его теоремы о полноте и неполноте.

Внимание: МЫ СЛИШКОМ НИЗКУЮ СТУПЕНИ

Офигеть Гёделю и его массивному мозгу — я хочу ответить на этот вопрос удовлетворительным, неакадемическим способом, и для этого я хочу стать предельно прагматичным. В следующем посте я собираюсь исследовать недостающую часть метода пахицефалозавра: делать.