Стивен Хокинг

Джордж и код, который не взломать


Скачать книгу

Пока что это выглядит маловероятным! С «Энигмой» такой проблемы не было.

Что такое компьютерный код?

      Код как тайнопись

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

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

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

      Языки программирования

      С точки зрения математики кодирование – это превращение одного набора символов в другой по определённым правилам.

      Если правильно «закодировать» (ещё говорят – «запрограммировать») команды и данные в виде ноликов и единичек, то компьютер их поймёт. Как именно это сделать? По специальным правилам, которые у каждого процессора свои. Получившиеся нолики и единички, которые «понимает» процессор, называются машинным кодом. Каждый набор правил – это особый алгоритм. Запасшись терпением, программу из ноликов и единичек можно составить самому и записать ручкой в тетради. Но у компьютера это получится гораздо быстрее.

      Люди пишут программы на легко читаемых языках программирования, таких как С или FORTRAN; оба эти языка состоят из обычных английских слов, так что нет нужды возиться с ноликами и единичками. Существует много разных языков программирования, на которых мы можем «говорить» с ком пью те ром. Под «компьютерным кодом» мы обычно подразумеваем программу, написанную на одном из таких языков.

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

      Взломать компьютерный код – значит добиться сбоя в программе или сделать нечто совершенно непредвиденное. Так, злоумышленники в интернете из хулиганских или преступных побуждений пытаются получить несанкционированный доступ к компьютеру жертвы (например, чтобы завладеть данными кредитной карты и украсть с неё деньги).

Алгоритмы

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