Статья [Начинающим] - Криптография. Введение.

Всем привет дорогие друзья! Сегодня я решил поведать тем, кто только начал свой долгий путь о криптографии.

-------------------------------------------------------------------------------------------------

[1] - Что изучает криптография.

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

А если более заморочено, то wikipedia говорит нам:
Криптография - наука о методах обеспечения конфеденциальности(невозможности прочтения информации посторонним), целостности данных (невозможности незаметного изменения информации), аутентификации(проверки подлинности авторства или иных свойств объекта), а также невозможности отказа от авторства.

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

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


[2] - Где вам оно понадобится.

Криптография очень пригодна ИБ специалисту, т.к. за частую без нее никак)
Часто задания связаные с криптографией встречаются на CTF соревнованиях. Мы сегодня разберем малую часть таких заданий. В дальнейшем они будут все трудней. Чем выше в гору вы взберетесь, тем трудней вам будет.



[3] - Что такое шифрование и как оно осуществляется.

С шифрованием мы имеем дело повседневно. Когда мы находимся на веб ресурсе с протоколом https, когда разговариваем по телефону, говорим текст наоборот(редкие случаи:)), и все этому подобное..
Иными словами
Шифрование - кодирование информации с целью обеспечить конфеденциальность и защиту(чаще всего передоваемой информации).

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

Декодирование - возвращение информации в нормальную(удобную) форму.

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

[3.1] - Симметричное шифрование.

В симетричном шифровании используют один ключь. Этот ключь преднозначен для

  • Кодирования информации(в скором поймете зачем нужны ключи)
  • Декодирование информации.
Этот ключь должен быть как у отправителя, так и у получающей стороны.
symmetric_encryption_graphic_ru.png


[3.2] - Асимметричное шифрование.

Тут дела обстаят интересней. В асимметричном шифровании используют 2 ключа(публичный и закрытый).

Первый - для шифрации.
Второй - для дешифрации.

Эти ключи не должны быть одинаковы. Отсюда собственно и название - асимметричные. Для каждой стороны достаточно иметь и одного ключа.

asymmetric_encryption_graphic_ru.png



[4] - Кодируем информацию с base(64/32/16)

Не молодая кодировка base - алгоритм кодирования информации.
В чем отличия между 64/32/16? - А самое наиглавнейшее отличае в алгоритме. Там информация разделяется на группы. И в каждой кодировке base свое кол-во символов в одной группе. Поясняю.


Base64.

В алфавите a-z, A-Z, 0-9, ?, +. И так, всего в его алфавите 64 символа. Также, в конце шифрования может быть знак "=". Он появляется из-за лишнего нулевого байта. А связано это стем, что при кодировании алгоритм переводит сообщение в двоичную систему которую должен разделить на равные группы. Так вот при нехватке для полноты равенства добавляется 0.

Мы можем как закодировать так и декодировать информацию в base64 без использования ключа.
Откройте свой терминал *nix.
Для работы с этим алгоритмом нам потребуется инструмент который предустановлен в систему. Это base64)
Давайте закодируем сообщение "CoDeBy123"
Для этого запускаем base64.
Код:
base64
Далее пишем наш текст и зажимаем CTRL+D.
Получаем закодированное в base64 сообщение

Код:
Q29EZUJ5MTIzCgo=

2017_12_02_02.06.35-1-1-1.png

Также мы можем и декодировать, для этого пропишите
Код:
base64 -d
Далее пишем наше закодированное сообщение и жмем CTRL+D
2017_12_02_02.09.35-1.png

Или же для работы с алгоритмом кодирования base, можете воспользоватся какими-либо специальными ресурсами.

Base32.

Он не далек от base64, но отличен тем, что

  • В алфавите 32 символа. С A-Z(иногда a-z) и 2-7.
  • При приобразовании, делим на группы так, чтоб в каждой группе было по 5 бит информации.
В конце закодированого сообщения будут специальные символы(=), ситуация одинакова с base64.

В терминале используется аналогично предыдущему.

2017_12_02_02.21.06-1.png

2017_12_02_02.21.42-1.png


Base16.

Этот алгоритм "основан" на шеснадцатиричной системе и содержет в алфавите 16 символов. С A-F и 0-9
При кодировании весь алгоритм не меняется, разве что в группе по 4 бита.


А теперь предлогаю вам решить парочку заданий.

Задание 1.

Определите кодировку и расшифруйте сообщение ниже. Дешифрованый текст и есть ответ.
Код:
MZWGCZZAFUWT4ICNPFIGCU3TK5XVEZBVGQ3AUCQ=

Задание 2.

Какая из кодировок ниже является base64?
Код:
1. MJQXGZJTGIFA====
2. YmFzZTY0Cg==
3. 626173653634

[5] - Base в Python.

В Python имеется библиотека base64. В ней содержится много плюшек. В том числе и кодирование в base64/32/16

Давайте напишем простую программку которая будет кодировать/декодировать сообщение. Я набросал не много, это сильно автоматизирует действия.

Код:
import base64

bord = """

[1] - Encode
[2] - Decode

"""
print(bord)
my_input_one = input("--> ")

def decoder():
    x = input("Enter base --> ")
    my_input_two = input("Enter base(64/32/16) -> ")
    if my_input_two =="64":
        a = base64.b64decode(x.encode("utf-8"))
        print("Output --> ",a.decode("utf-8"))

    elif my_input_two == "32":
        a = base64.b32decode(x.encode("utf-8"))
        print("Output --> ",a.decode("utf-8"))

   elif my_input_two == "16":
        a = base64.b16decode(x.encode("utf-8"))
        print("Output --> ",a.decode("utf-8"))


def encoder():
    x = input("Enter text --> ")
    my_input_two = input("Enter base(64/32/16) -> ")
    if my_input_two =="64":
        a = base64.b64encode(x.encode("utf-8"))
        print("Output --> ",a.decode("utf-8"))

    elif my_input_two == "32":
        a = base64.b32encode(x.encode("utf-8"))
        print("Output --> ",a.decode("utf-8"))

   elif my_input_two == "16":
        a = base64.b16encode(x.encode("utf-8"))
        print("Output --> ", a.decode("utf-8"))

if my_input_one == "1":
    encoder()
elif my_input_one == "2":
    decoder()

И вот что вышло
2017_12_02_03.09.48-1.png

2017_12_02_03.10.23-1.png


До встречи в следующей части!

 

valerian38

Grey Team
20.07.2016
662
764
BIT
81
Спасибо. Статья зачет, обнаружил для себя некоторые новые моменты
 
  • Нравится
Реакции: Darius
O

oappot

Хорошая статья, особенно, для основ и понимания криптографии.
 

Bunder99

Green Team
19.04.2017
20
12
BIT
2
Хорошая статья, но для меня есть одно большое НО: орфография... Я понимаю, что это не форум о русском языке, однако, это русскоязычный форум, давайте хотя бы вычитывать внимательно статью перед публикацией. Реально глаз режет и отвлекаешься от сути на орфографию, ибо ключЬ - это выше моего понимания)))))
Автор, продолжай раскрывать вопрос, тема достаточно интересная и для меня неизведанная. На меня не обижайся, ничего личного)
 
D

Darius

Хотелось бы подобных примеров различных способов шифрования, или разбор шифрования основанного на своих алгоритмах* . Статья отличная!

*aka насколько возможно
 

arder

Green Team
25.04.2017
18
3
BIT
0
А лучше выложить обучающий курс по возможности/
 

noob

Green Team
22.12.2017
32
7
BIT
0
Я просмотрел вашу статью, так и не понял прикола, по факту то что вы написали ну не несет ни какой в себе ползености (слово забыл просто)

По факту можно более коротко и более емко сказать и дать больше информации.

Например, шифрование состоит из 2-ух составляющих: Зашифровывание и расшифровывание
С помощью шифрования обеспечиваются 3-и состояния безопасности информации:
  1. Конфиденциальность – шифрование используется для скрытия информации от не авторизованных пользователей при передаче или при хранении.
  2. Целостность – шифрование используется для предотвращения изменения информации при передаче или хранении.
  3. Идентифицируемость – шифрование используется для аутентификации источника информации и предотвращения отказа отправителя информации от того факта, что данные были отправлены именно им.
Расписав ее цели и прочие моменты, вопрос надо ли кому-то давать инфу всем, бесплатно тут конечно уже скрывается подноготная. Так как любая информация это время, время деньги.

А так за старание безусловно, потрачено время молодцы, но совершенно ушли не в ту сторону, и надо более узконоправленно и емко разбирать основные моменты если вы конечно понимаете о чем идет речь.
 

vag4b0nd

Red Team
24.05.2017
315
1 498
BIT
58
Я просмотрел вашу статью, так и не понял прикола, по факту то что вы написали ну не несет ни какой в себе ползености (слово забыл просто)

По факту можно более коротко и более емко сказать и дать больше информации.

Например, шифрование состоит из 2-ух составляющих: Зашифровывание и расшифровывание
С помощью шифрования обеспечиваются 3-и состояния безопасности информации:

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

А так за старание безусловно, потрачено время молодцы, но совершенно ушли не в ту сторону, и надо более узконоправленно и емко разбирать основные моменты если вы конечно понимаете о чем идет речь.
Вместо того чтобы комментировать как нужно писать статьи, лучьше напишите свою :)

П.С: Но вашу критику возьму на заметку.
 
Последнее редактирование:
  • Нравится
Реакции: 1 человек

noob

Green Team
22.12.2017
32
7
BIT
0
Вместо того чтобы комментировать как нужно писать статьи, лучьше напишите свою :)

П.С: Но вашу критику возьму на заметку.
Да можно написать, можно расказать все что я знаю дать это людям, но зачем ? Зачем тратить время на то с чего ты не получишь профит, люди не благодарны, я лишь указал на возхможности возможно для кого-то писать и расказывать всем, у меня не очень много желания.
Времени уходит очень много. А пользы с этого нет.

Борд не комерческий, денег у людей тут мало. Школьников много. Так что не рационально.

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

sinner67

Green Team
24.03.2017
279
358
BIT
0
Зачем тратить время на то с чего ты не получишь профит
а зачем тогда писать на форуме если от этого вам не будет профита? Вам не понравилась статья и вы решили потратить столь драгоценное для вас время и рассказать нам...
 

vag4b0nd

Red Team
24.05.2017
315
1 498
BIT
58
Да можно написать, можно расказать все что я знаю дать это людям, но зачем ? Зачем тратить время на то с чего ты не получишь профит, люди не благодарны, я лишь указал на возхможности возможно для кого-то писать и расказывать всем, у меня не очень много желания.
Времени уходит очень много. А пользы с этого нет.

Борд не комерческий, денег у людей тут мало. Школьников много. Так что не рационально.

Если бы я давал тут рекламу какую-то или мне нужно было закрепиться то возможно. Я не в целях оскорбить, а в целях того, что вы много уделяете тем вещам, котоыре не понадобиться рациональнее просто и все.
Я с вами не соглашусь. Школьников везде много(информацию может нати каждый кто постарается). Какова цель написания статей?)
Так вот вам несколько вопросов
Зачем люди пишут книги?
Зачем передовать знания другим?
Почему обычные учителя работают за копейки?

Как распорядится своим временем решать вам. Но при написании статей лично для меня профитом является то, что людям нравится и они просят еще) Это дает своеобразный толчек к дальнейшему написанию.

Дело не всегда в деньгах.
 

Remir

Grey Team
05.11.2017
283
355
BIT
378
По факту можно более коротко и более емко сказать и дать больше информации
Зря ты так.
...все мы нубы в какой-то области...
В заголовке статьи не зря стоит [Начинающим]...
Если ты не почерпнул для себя ничего нового, так ведь оно и не для тебя ))
А им как раз нужны азы. Без них - никуда. Ты ведь, когда читать учился, сначала буквы учил, а не слова целиком. ))
Иди в GRAY, RED, ELITE. На худой конец, купи "Премиум", там литература выложена для твоего уровня.
А человек старался, тратил время. Ему-то это самому без надобности, он это знает, он для других делал. Бесплатно. Уважать нужно чужой труд.
Ты сам что-нибудь напиши, выложи, а потом, прочтя отзывы, поймешь, что на всех не угодишь.
 

noob

Green Team
22.12.2017
32
7
BIT
0
Зря ты так.

В заголовке статьи не зря стоит [Начинающим]...
Если ты не почерпнул для себя ничего нового, так ведь оно и не для тебя ))
А им как раз нужны азы. Без них - никуда. Ты ведь, когда читать учился, сначала буквы учил, а не слова целиком. ))
Иди в GRAY, RED, ELITE. На худой конец, купи "Премиум", там литература выложена для твоего уровня.
А человек старался, тратил время. Ему-то это самому без надобности, он это знает, он для других делал. Бесплатно. Уважать нужно чужой труд.
Ты сам что-нибудь напиши, выложи, а потом, прочтя отзывы, поймешь, что на всех не угодишь.
Что, вы что вы.. Я не пытаюсь никого оскорбить ни в коем случае. Я рад что подомные статьи имеют место быть.

Но гораздо проще написать узконаправленно и по иерархии. Так как тут все перепрыгивает и если вы пишите для новичка, то поверьте у него будет каша..

Тут не раскрыта многая информация, а она является де-факто в данном "мире". Зачем вообще созданы 2-а этих типа шифрования, что они гарантирует, почему безопасны, привести банальную схему шифровки и прочие аспекты, например если мы знаем что симметричный тип шифрования AES сейчас безопасен то для взлома данного шифра перебором (брутофорсом) нам потребуется перебрать 2^256 = N

Давайте проведем простую арифметику, тогда получается:

Код:
2^256 = 115792089237316195423570985008687907853269984665640564039457584007913129639936

Мы получаем 78 разрядное число вариаций то есть для взлома шифра AES-256 вам потребуется перебрать это 78 разрядное число.

Расказать какие алгоритмы были, почему их прекратиили спользовать, провести сравнительные анализ АЕS и чачу например, или просто AES и предыдущие типы шифрования.

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

Расказать более кратко из серии:

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

Асимметричный метод шифрования – 2-а ключа открытый (публичный от англ. Public) и закрытый (приватный от англ. Private).

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

r0hack

DAG
Platinum
29.09.2017
522
1 089
BIT
0
Мда, говорит много времени уйдет на написание статьи, а сам километровые посты оставляет. Ну прям логика топ.
Плюс, вы не бесплатно оставляете тут информацию, а можно сказать делитесь ею, а взамен тоже получаете. Понятное дело, львиная доля пришла получать, вы например, но костяк форума делится ею...
 
M

mkqb

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

В целом, тут можно написать километровый пост на тему почему ты не прав, но это не имеет смысла.

Хотя я и не вижу смысла расписывания огромных постов , которые уже вдвое длиннее самой статьи если это не приносит тебе Профит.

Человек отдает свои знания. Отдает как умеет и как желает. И если именно Вам данная статья кажется не интересной и не полной , то я думаю одного конструктивного поста с критикой , а ещё лучше в ЛС , будет более чем достаточно.

Творца обидеть может каждый. Не каждый может создавать.
 

Remir

Grey Team
05.11.2017
283
355
BIT
378
Я не пытаюсь никого оскорбить ни в коем случае...
Но гораздо проще написать узконаправленно и по иерархии. Так как тут все перепрыгивает и если вы пишите для новичка, то поверьте у него будет каша..
И тебя тут никто не оскорбляет, дружище :)
А ты возьми и напиши сам. Вот именно так, как ты расписал, у тебя уже 1/3 работы сделана. Хочешь - продолжай здесь, а хочешь - вынеси отдельной темой. Я думаю, что возражать никто не будет. Скорее - наоборот. ))
У каждого свой взгляд на изложение, а вместе получится как раз то, что нужно. Он посчитал основным то, что изложил, а ты подходишь к вопросу более детально. Вот и дополни.
Проблема в том, что сейчас много таких, кто хочет "всё и сразу", кому теория "нах" не нужна, им нужен готовый инструмент, причем, желательно с двумя кнопками: "пуск" и "выход". И реалии таковы, что не учитывать таких посетителей тоже нельзя, пусть даже временно. Ну, - жизнь таким судья, а ты как раз изложишь материал для толковых пользователей.
Дерзай :). Сделай это и ты сам увидишь насколько это просто и приятно - делать добро. В изложении ты вполне логичен, определенный стиль есть, рассуждаешь здраво, так что - в путь! Не Боги горшки обжигают! :)
 
J

JackRussel

Спасибо за статью, доступно написано. А делать что либо ради профита - мне кажется минимум скупо. Тут сидят как профи так и новички. Представьте если бы все было тут ради профита, чтобы получилось? Какой-то онлайн магазин наверно..Глазами новичка скажу что проект супер, я за пару дней прочитал столько всего такого, чего в книгах не напишут, а главное ( лично для меня ) это то, что написано все человеческим языком, а не сухо, скупо и скучно как в некоторых книгах.( я не школьник )
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!