Меню

Криптография. Пособие для начинающих

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

Основа основ

Полвека назад отец научно-технической революции Клод Шеннон опубликовал диссертацию «Математическая теория связи», которая сегодня по праву считается Библией информатики. Название работы является рассекреченной версией более ранней статьи, опубликованной предшественником Шеннона в 1949 году.

Предыдущая засекреченная версия, опубликованная престижным изданием Bell Labs, называлась «Математическая теория криптографии» и была ориентирована на нужды военной экономики.

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

Они настолько похожи, что их невозможно разделить.

Хотя статья, которую вы сейчас читаете, больше сосредоточена на том, что произошло после презентации основных положений «Математической теории коммуникации», для полного представления нам необходимо вернуться на десять лет назад к началу карьеры Шеннона – когда он был 28-летним выпускником Массачусетского Технологического Института.

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

Булева алгебра (алгебра логики), как вы, наверно, догадались, является разделом математики, изучающий высказывания со стороны их логических значений (истинности и ложности, где константа Истина равняется 1s, а константа Ложь – 0s).

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

В 1938 Шеннон опубликовал свою магистерскую работу под названием «Символический анализ релейно-контактной схемы». Этот гениальный труд доказал, что, используя булеву математику, можно концептуально автоматизировать компоновку реле в действующих ручных телефонных станциях.

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

В настоящее время такая структура построения электронных схем лежит в основе всего современного цифрового компьютерного оборудования.

Спустя десятилетие после выхода первой магистерской диссертации, уже работая над своим главным детищем – теорией коммуникации и криптографии в недрах лабораторий Белла, инженер, наконец, решил дать название тому, что, по его мнению, являлось основным элементом всей информации: двоичный знак или бит (от англ. a binary digit).

От битов к байтам

Стоит ли говорить, что Шеннон стал светилом науки о передаче научной информации и военной криптографии (1944–1949), а бит стал стандартной единицей информации для всей вычислительной техники. Компьютеры четко понимают «0s и 1s»…

Отсюда следует вопрос: как мы переходим от двоичного кода к, скажем, тем же буквенно-цифровым символам, которые вы видите сейчас на своем экране?

Обозначение бита

Один бит может принимать только значение ноль или один и иметь только два возможных состояния [0,1]. Для двух битов мы получаем в общей сложности четыре возможных варианта: [00, 01, 10, 11].

Следуя этой схеме, становится очевидным, что для каждого n (энного количества) битов мы имеем 2 ^ n возможных состояний (значений, кодов).

Но перед ученым-компьютерщиком встала проблема: чтобы сделать работу с компьютерами более легкой для разработчиков, нужно больше символов и букв. Как же тогда построить полноценную числовую систему, не говоря уже об алфавите, оперируя только значениями 0s и 1s?

Шестнадцатиричный код исчисления

Если вам когда-либо приходилось настраивать цвет в Интернете, вы, вероятно, в ​​какой-то момент сталкивались с шестнадцатеричной строкой – она обычно выглядят примерно так: # 012f5b.

Дизайнеры очень хорошо знакомы с этой системой нумерации, потому что это – стандартный способ обозначения цветов в цифровом виде. Основное правило шестнадцатеричной системы счисления состоит в том, что каждый символ представлен строго одним из следующих 16 значений: 0-9 и A — F.

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

Опять же, в общей сложности шестнадцать символов означают 16 возможных состояний; по-другому это можно записать так: 16 равно 2⁴. Как же нам выразить эти возможные состояния?

Всего четыре бита: 4 бита = 2⁴ возможных состояний.

Алфавитная интерпретация компьютерного кода (ASCII)

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

В первоначальной версии сегодняшнего стандарта ASCII предлагалась семибитная система; однако вскоре после этого стандартным стало использование расширенной (или производной) версии ASCII, которая сегодня называется восьмибитовый стандарт.

Этот стандарт означает, что любой удобочитаемый символ, выводимый компьютером, может быть представлен восемью битами, которые могут принимать 2⁸ = 256 возможных состояний! Этот восьмибитовый алфавитно-цифровой стандарт приводится в таблице ниже.

Криптография. Пособие для начинающих

Каждый из 256 символов может быть представлен комбинацией из 8 битов.

Байты и иже с ними

Итак, мы рассмотрели рождение и практическую значимость компьютерных вычислений и дали определение биту. Также мы выяснили, как четыре бита (2⁴) формируют нашу шестнадцатеричную систему и как восемь битов (2⁸) дают действующий до сих пор расширенный язык ASCII.

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

Восемь бит (2⁸) на самом деле являются очень важным числом в не только криптографии и криптовалютах, но и во всех вычислениях. Фактически, восемь бит настолько стандартны, что им было присвоено новое имя для обозначения восьмибитной строки: байт. Байт представляет собой строку из восьми бит: 8 бит = 1 байт.

Тот факт, что байты могут представлять один символ, является ключевой причиной того, что самые распространенные числа в криптографии всегда кратны 8, такие как 128 и 256 (используются в известном алгоритме хеширования Биткоин – SHA256).

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

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

Оставить комментарий

ТОП 3 криптобиржи