Кто сказал, что за качество всегда нужно платить? Crypto 101 — доказательство того, что из этого правила есть исключения. Это бесплатное руководство по науке о криптографии, которое, говоря обыденным языком, удовлетворяет потребности каждого разработчика программного обеспечения в правильном включении и применении криптографических элементов при построении своего программного обеспечения.
Криптография — неизбежное зло, которое так или иначе становится неотъемлемой частью повседневной деятельности разработчика. Несмотря на сжатие криптоалгоритмических реализаций в модули, библиотеки или функции, которые делают ненужными математические знания для их использования, их эффективное обращение по-прежнему требует больших усилий.
Блочные и потоковые чиперы, шифрование и подписывание, симметричное и асимметричное шифрование — вот лишь некоторые из аспектов, которые вам следует понять, иначе вы не только рискуете снизить производительность, но и рискуете вызвать полную противоположность криптографии. был изобретен для обеспечения конфиденциальности, подлинности и целостности.
Поэтому каждый разработчик должен как минимум понимать основы: что такое криптография, на что она нацелена, как сделать правильный выбор и применение алгоритмов, а также как компоненты работают и взаимодействуют.
Можно подумать, что такая важная образовательная услуга стоит дорого, но это не всегда так. К счастью, есть также бесплатные, надежные и качественные решения, такие как книга Crypto 101.
Crypto 101 — это исчерпывающий и простой в использовании путеводитель по миру криптографии, разработанный Лоренсом Ван Хаутвеном (lvh), главным инженером Rackspace Managed Security, где он работает над информационной безопасностью, криптографией и распределенными системами. Он любезно предоставил его по разрешительной лицензии Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0).
Просматривая указатель, кажется, что в его книге есть все:
Эксклюзивное или / XOR рассматривает этот столп криптографии как с теоретической точки зрения:
«Вы можете применять XOR в любом порядке: a ⊕ b = b ⊕ a, независимо от того, какие значения a и b».
и практические перспективы:
«Python, например, предоставляет оператор ^ (каретка), который выполняет побитовое XOR для целых чисел. Он делает это, сначала выражая эти два целых числа в binary4, а затем выполняя XOR для их соответствующих битов. Отсюда и название, побитовое XOR».
Блочные шифры исследуют понятия открытого текста и зашифрованного текста, в то время как появляются первые ссылки на шифрование с симметричным ключом, AES, DES и 3DES. За ними следуют глубокие технические подробности внутренней работы алгоритма (SubBytes, ShiftRows, MixColumns AddRoundKey и т. Д.), Которые, несмотря на их образовательную ценность, помечены как несущественные для понимания, поскольку они не дают многого для процесса написания лучше. программное обеспечение, как таковые их можно бездумно пропустить.
Потоковые шифры — это глава, в которой подчеркивается стиль «наращивания», принятый автором; Выделение и деконструкция темы для демонстрации того, как она работает и с какими проблемами она сталкивается, а затем основывается на ней, представляя ее лучшего преемника, в котором содержатся решения этих проблем.
Это как раз тот случай, когда объясняется режим EBC и способы, которыми он может быть атакован, например, атака оракула, при которой злоумышленник может расшифровать сообщения, получив доступ к оракулу шифрования, проблема, которая впоследствии была решена путем перехода в режим CBC, что-то, что впоследствии приводит к атакам заполнения CBC, которые впоследствии приводят к … вы понимаете дрейф.
В обмене ключами используется классический способ Алисы и Боба, пытающегося найти способ безопасного обмена сообщениями в ненадежной сети. Это обсуждение привело к протоколу Диффи-Хеллмана и его вариациям, дискретным логарифмам и эллиптическим кривым, и объясняет, что, несмотря на то, что они способны гарантировать общий секрет на небезопасной среде, им по-прежнему не хватает целостности сообщений, поскольку они подвержены злоумышленникам Атаки посередине (MITM).
Затем в остальных главах рассматривается шифрование с открытым ключом и компоненты, которые должны взаимодействовать друг с другом для сохранения конфиденциальности, целостности и аутентичности секретного сообщения.
Поэтому на пути к функциям получения ключей и безопасному хранению паролей он переходит от хэш-функций к кодам аутентификации сообщений, а затем к алгоритмам подписи, где все детально и классифицируется в зависимости от функциональности:
«Так же, как и шифрование, аутентификация может иметь как частный ключ (симметричный), так и открытый ключ (асимметричный). Симметричные схемы аутентификации обычно называются кодами аутентификации сообщений, в то время как эквивалент открытого ключа обычно называется подписью».
или же:
«Обратите внимание, что мы говорим здесь« сообщение »вместо« открытый текст »или« зашифрованный текст ». Эта двусмысленность является преднамеренной. В этой книге нас больше всего интересуют MAC как способ достижения аутентифицированного шифрования, поэтому сообщение всегда будет зашифрованным. . Тем не менее, нет ничего плохого в том, что MAC применяется к текстовому сообщению «.
Я цитирую эти два абзаца как свидетельство уровня изучения материала, используемого простого языка и эффективного способа передачи концепций.
Затем книга заканчивается примерами полных криптосистем, таких как SSL и TLS, OpenPGP и GPG и OTR.
Подводя итог, это не просто хорошая книга, это отличная книга. И, прежде всего, сколько вы за нее платите? Нуль. Это поднимает представление о соотношении цены и качества на новый уровень. По правде говоря, это кража; Я определенно заплачу за такую работу. Единственным недостатком является то, что здесь и там есть довольно много заполнителей «ДОЛЖНО ДЕЛАТЬ», поскольку работа над ней постоянно продолжается, она постоянно редактируется и дополняется.
Я бы определенно порекомендовал вариант краудфандинга книги, чтобы автору помогли своевременно добавлять больше материала, как, например, Help Kickstart First Ever PerlDancer Book. Как вы думаете?