• Профессиональным авторам. Срочный заказ!

    Необходимо сделать развернутое описание каждой из наших услуг. Ограничений на объем текста нет. ЦА - руководство компаний (сухой технический текст). При отсутствии исполнителей среди участников форума, работа будет передана фрилансерам 10 февраля.

    Подробнее о заказе ...

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

al04e

al04e

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

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

[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

valerian38

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

ghost

YW1uZXNpYQo=
Gold Team
12.05.2016
1 562
3 129
Яркий пример ХОРОШО написанной статьи :)
 
  • Нравится
Реакции: al04e
O

oappot

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

Bunder99

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

Darius

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

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

arder

Премиум
25.04.2017
13
3
А лучше выложить обучающий курс по возможности/
 
N

noob

Active member
22.12.2017
32
9
Я просмотрел вашу статью, так и не понял прикола, по факту то что вы написали ну не несет ни какой в себе ползености (слово забыл просто)

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

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

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

al04e

Cyberpunk
Премиум
24.05.2017
293
1 315
Я просмотрел вашу статью, так и не понял прикола, по факту то что вы написали ну не несет ни какой в себе ползености (слово забыл просто)

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

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

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

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

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

noob

Active member
22.12.2017
32
9
Вместо того чтобы комментировать как нужно писать статьи, лучьше напишите свою :)

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

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

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

sinner67

Gold Team
24.03.2017
282
372
Зачем тратить время на то с чего ты не получишь профит
а зачем тогда писать на форуме если от этого вам не будет профита? Вам не понравилась статья и вы решили потратить столь драгоценное для вас время и рассказать нам...
 
al04e

al04e

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

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

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

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

Remir

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

noob

Active member
22.12.2017
32
9
Зря ты так.

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

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

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

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

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

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

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

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

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

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

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

r0hack

DAG
Gold Team
29.09.2017
505
972
Мда, говорит много времени уйдет на написание статьи, а сам километровые посты оставляет. Ну прям логика топ.
Плюс, вы не бесплатно оставляете тут информацию, а можно сказать делитесь ею, а взамен тоже получаете. Понятное дело, львиная доля пришла получать, вы например, но костяк форума делится ею...
 
  • Нравится
Реакции: sormat и The Codeby
M

mkqb

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

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

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

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

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

Remir

Well-known member
05.11.2017
209
339
Я не пытаюсь никого оскорбить ни в коем случае...
Но гораздо проще написать узконаправленно и по иерархии. Так как тут все перепрыгивает и если вы пишите для новичка, то поверьте у него будет каша..
И тебя тут никто не оскорбляет, дружище :)
А ты возьми и напиши сам. Вот именно так, как ты расписал, у тебя уже 1/3 работы сделана. Хочешь - продолжай здесь, а хочешь - вынеси отдельной темой. Я думаю, что возражать никто не будет. Скорее - наоборот. ))
У каждого свой взгляд на изложение, а вместе получится как раз то, что нужно. Он посчитал основным то, что изложил, а ты подходишь к вопросу более детально. Вот и дополни.
Проблема в том, что сейчас много таких, кто хочет "всё и сразу", кому теория "нах" не нужна, им нужен готовый инструмент, причем, желательно с двумя кнопками: "пуск" и "выход". И реалии таковы, что не учитывать таких посетителей тоже нельзя, пусть даже временно. Ну, - жизнь таким судья, а ты как раз изложишь материал для толковых пользователей.
Дерзай :). Сделай это и ты сам увидишь насколько это просто и приятно - делать добро. В изложении ты вполне логичен, определенный стиль есть, рассуждаешь здраво, так что - в путь! Не Боги горшки обжигают! :)
 
  • Нравится
Реакции: studentfn и The Codeby
420coder

420coder

New member
23.11.2017
2
0
Отличная статья для начинающих! Спасибо ?
 
studentfn

studentfn

Well-known member
02.02.2018
94
34
Однозначно респект автору статьи!
 
J

JackRussel

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