Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.61/41: Рейтинг темы: голосов - 41, средняя оценка - 4.61
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069

Разрабатываю свой способ шифрования

30.10.2011, 23:32. Показов 8882. Ответов 42

Студворк — интернет-сервис помощи студентам
Разрабатываю свой способ шифрования и как всегда на...вертил так что сам черт не разберет, причем придуманный способ основывался на математических действиях.
Тепер решил сделать замену символа на символ по типу:
C++
1
2
if (Edit1->Text == L) 
Edit2->Text=K;
Только не смейтесь за вопрос, как сделать есле в Edite несколько символов например слово Forum и зашифровать эго по принципу замены символа на символ.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.10.2011, 23:32
Ответы с готовыми решениями:

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

Выполнить шифрование и дешифрование текста, выбрав любой способ шифрования
Собственно надо - "Выполнить шифрование и дешифрование текста, выбрав любой способ шифрования". Я написала какое-то подобие Цезаря. ...

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

42
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
31.10.2011, 13:59
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от LK Посмотреть сообщение
у них текст есть ?
Уважаемый LK, У кого текст есть??? У ситуаций? Я привел пример строки, которую ваш метод не берет. А это самая обычная кириллица

Добавлено через 6 минут
Цитата Сообщение от LK Посмотреть сообщение
и чем тебя не устраивает XOR ? самый простой способ шифрования файла
Например тем, что он не работает как полагается. Пример текста который я привел в сообщении #19
Добавляет "+" в некоторых местах после пробела
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
31.10.2011, 14:01
да , для меня "исключительная ситуация" в Билдере это, например, Access Violation , а это -
Такое не работает. Исключительных ситуаций слишком много. Например такая строка:
какие-то ваши мысли, только вам и понятные .

и я не говорил, что это - "классный пример" , это просто - пример - и, естественно, его дорабатывать и дорабатывать, хотя - зачем, если все уже украдено до нас .
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
31.10.2011, 14:09
__bool, вы хотите, чтобы тут все сделали за вас? Тут в основном-то советы раздают, готовые решения - это несколько иной профиль...
0
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
31.10.2011, 14:20
Цитата Сообщение от LK Посмотреть сообщение
для меня "исключительная ситуация" в Билдере это, например, Access Violation
Ну если не учитывать что большая часть слов в русском языке, включая профессионализмы имеет несколько значений, то я с вами соглашусь

Добавлено через 5 минут
Цитата Сообщение от BRcr Посмотреть сообщение
__bool, вы хотите, чтобы тут все сделали за вас? Тут в основном-то советы раздают, готовые решения - это несколько иной профиль...
Ладно ладно,
Просто по себе сужу: Если выкладываю пример со словами "Чем он не устраивает?" , и, если учитывать что вопрос подразумевает ответ, то нужно быть готовым ответить, а не уходить от темы. Это ведь раздел для программистов все таки.
А мой ответ содержал в себе не критику, а здоровое желание получить еще один совет по поводу указанных мною проблем в алгоритме.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
31.10.2011, 14:33
Цитата Сообщение от __bool Посмотреть сообщение
Ну если не учитывать что большая часть слов в русском языке, включая профессионализмы имеет несколько значений
речь идет не о языке в лингвистическом понимании, а о языке программирования и среде разработки, так что следует быть точным в выражениях, имхо, как говорится, "точность - вежливость королей" , а здесь еще и необходимое условие, что вас поймут.
Например, это:
1. Такое не работает.
2. Исключительных ситуаций слишком много.
2. Например такая строка:
...
сказал я , а не вы , что бы вы мне ответили ?
0
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
31.10.2011, 14:48
Я бы не стал выкладывать пример(ссылку), в работоспособности которого не уверен, со словами "Чем он не устраивает?"
А если бы был уверен, то неприменно, сию же минуту запустил компилятор и попробовал найти изъяны в алгоритме.
А уж если мне это интересно(а раз все мы тут собрались, то очевидно нам всем это интересно), то вместо метания внимания из стороны в сторону, и поиска "некоролевской вежливости", предложил бы вариант решения проблемы, ну или хотя бы совет.
Но судя по всему, интерес тут известные личности видят не столько в Предмете разговора

Предлагаю продолжить разговор по теме и мб придем к оптимальному решению, а еще лучше подкрепим теорию хорошим рабочим примером

По-моему из предложенных вариантов шифрование алгоритмом XOR самое оптимальное и простое,
так давайте же улучшим его?
C++
1
2
3
4
5
6
7
8
9
AnsiString XOR_Crypt(AnsiString in, AnsiString pass)
{
AnsiString out;
for (int x=1;x<in.Length()+1;x++)
{
out += (char)(in[x] ^ pass[x%pass.Length()+1]);
}
return out;
}
C++
1
Memo1->Lines->Text = XOR_Crypt(Memo1->Lines->Text,"!");
- после каждой запятой появляется "+"
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
31.10.2011, 15:01
LK, что-то маленько не понимаю, что делает строка:
C++
1
i_key = (char)(str1[i])+2;
Параметр i_key ведь имеет тип int? А присваивается ему параметр типа char сложенный с параметром const int...
что-то не догоняю
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
31.10.2011, 15:02
Цитата Сообщение от LK Посмотреть сообщение
и чем тебя не устраивает XOR ?
не относилось к
 Комментарий модератора 
Дружно прекращаем оффтопить .
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
31.10.2011, 15:14
небольшая цитатка по поводу восклицательного знака отсель:
Применение исключающего ИЛИ(XOR ^).
Примечание:
Этот способ кодирования не приемлет "!" - всклицательного знака.
C++
1
"!" XOR "!" = "\0"
- т.е. конец строки, за этим сиволом, само собой, ничего не отображается.

Любой символ xor сам с собой даст 0. Поэтому чтобы работало гарантированно правильно, надо в нем использовать не строки, завершаемые нулем, а массивы.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
31.10.2011, 15:20
Цитата Сообщение от BRcr Посмотреть сообщение
LK, что-то маленько не понимаю, что делает строка:
C++
1
i_key = (char)(str1[i])+2;
Параметр i_key ведь имеет тип int? А присваивается ему параметр типа char сложенный с параметром const int...
что-то не догоняю
каждый символ имеет соотвествующие числовое значение в таблице символов, вот это значение я и пытаюсь получить:
C++
1
2
3
4
5
6
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int letter_value = (char)'A';
  ShowMessage("Числовое значение символа : "+
                 IntToStr(letter_value));
}
я когда-то для себя сделал вывод, что char это тоже integer - и сразу все понял

C++
1
i_key = (char)(str1[i])+2;
таким образом к числовому значению символа str1[i] прибавляется 2, и новое значение используется для ввода в строку уже нового символа, которому соответствует это новое числовое значение:
C++
1
str2 += (char)i_key;
, как-то-так .
Миниатюры
Разрабатываю свой способ шифрования  
1
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
31.10.2011, 15:33
__bool, почему не попробуешь это? Принцип выглядит рабочим, а какую строчку ты этому алгоритму подсунешь - так это вообще неважно, так как все служебные спецсимволы этот алгоритм тоже прокрутит, что при шифровке, что при расшифровке.

Цитата Сообщение от LK Посмотреть сообщение
а так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString str1,str2;
  str1 = "Гламурное простое шифрование."; // str1 = Edit2->Text;
  int i,i_key,len;
  len = str1.Length();
  for (int i=1; i<=len; i++) {
    i_key = (char)(str1[i])+2; // здесь с +2 можно поизвращаться
    str2 += (char)i_key;
  }
  Memo1->Lines->Add(str2);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  AnsiString str1,str2;
  str1 = Memo1->Text;
  int i,i_key,len;
  len = str1.Length();
  for (int i=1; i<=len; i++) {
    i_key = (char)(str1[i])-2;
    str2 += (char)i_key;
  }
  Memo1->Lines->Add(str2);
}
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
31.10.2011, 15:39
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int letter_value = (char)'A';
  ShowMessage("Числовое значение символа : "+
              IntToStr(letter_value));
  letter_value = letter_value+12;
  char new_char = (char)letter_value;
  ShowMessage(new_char);
}
Миниатюры
Разрабатываю свой способ шифрования  
1
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
31.10.2011, 18:49
Вот что происходит,
Ну вообщем то XOR если улучшать, то норм..
Миниатюры
Разрабатываю свой способ шифрования  
1
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
31.10.2011, 19:54
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//---------------------------------------------------------------------------
const AnsiString EncodeDecodeGG(const AnsiString &sInput)
{
  const int iCount      = sInput.Length() + 1;
  const int iBuffer     = 20;
  AnsiString sResult    = "";
 
  if (sInput.Trim() != "")
  {
    for (int i = 1; i < iCount; i++)
    {
            sResult += (char) (sInput[iCount - i] ^ iBuffer);
    }
  }
  return sResult;
}
//---------------------------------------------------------------------------
C++
1
2
Edit2->Text = EncodeDecodeGG(Edit1->Text);
Edit3->Text = EncodeDecodeGG(Edit2->Text);
Изображения
  
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
31.10.2011, 21:11  [ТС]
Всем учасникам обсуждения большое спасибо за выложенный материал и помощь.

маленькая просьба ребята давайте жить дружно, и получать удовольствие на форуме в обществе людей не лишенных интелекта !
Еще пара слов в защиту LK, его помощ зачастую требует подключения собственных мозгов и рук что в конечном итоге способствует повышению моего уровня знаний, за что ему спасибо, я против банального копипаста если дело серьезное.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
31.10.2011, 22:37
Алгоритм XOR и его взлом (Vener010g)
также интересующиеся могут поискать эту книгу:
Б.Ключевский. Криптографические алгоритмы

Добавлено через 16 минут
Как оказалось, это не совсем
книга
Криптографические алгоритмы

Б. Ключевский

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

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

Кроме этого следует учитывать, что на практике угроза информационной безопасности любого объекта исходит не только от криптоаналитика. В конце концов, каким бы длинным не был криптографический ключ, который используется вами для шифрования файлов, если правоохранительным органам понадобится узнать, что хранится в вашем компьютере, они просто установят камеру и скрупул зно запишут всю информацию, появляющуюся на экране. Недаром, по признанию официальных лиц из АНБ, большинство сбоев в обеспечении информационной безопасности происходит не из-за найденных слабостей в криптографических алгоритмах и протоколах, а из-за вопиющих оплошностей в их реализации. Какой бы стойкостью не обладал криптографический алгоритм, при успешной атаке против него эту стойкость не приходится преодолевать в лоб, е просто уда тся обойти каким-либо окольным пут м. Однако и пренебрегать хорошими криптографическими алгоритмами тоже не следует, чтобы криптография не стала самым слабым звеном в цепи, которое не выдержит напора атакующего.

Как выбрать хороший криптографический алгоритм

Когда заходит речь о выборе хорошего криптографического алгоритма, у выбирающего, как правило, имеется несколько возможностей:

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

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

- Можно обратится к независимому эксперту. Скорее всего, он сможет объективно оценить достоинства и недостатки различных криптографических алгоритмов.

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

- Можно попытаться создать собственный криптографический алгоритм. Мало кто заинтересован сам себя обманывать. Чем ч рт не шутит: а вдруг вы обладаете выдающимися способностями в области криптографии?

Во всех перечисленных возможностях имеются свои существенные изъяны. Полагаться только на одну фирму, на одного эксперта или на одно ведомство не совсем разумно. Многие люди, называющие себя независимыми экспертами, мало понимают в криптографии. Большинство фирм, производящих средства шифрования, ничуть не лучше. В АНБ и ФАПСИ работают лучшие криптографы в мире, однако, по понятным соображениям, они не спешат поделиться своими секретами с первым встречным. Впрочем, и со вторым тоже. И даже если вы гений в криптографии, глупо использовать криптографический алгоритм собственного изобретения без того, чтобы его всесторонне проанализировали и протестировали опытные криптологи.

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

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

Лучше всего исходить из предположения, заключающегося в том, что АНБ, ФАПСИ и иже с ними могут прочесть любое сообщение, которое они пожелают прочесть. Однако эти ведомства не в состоянии читать все сообщения, с содержанием которых хотят ознакомиться. Главной причиной является ограниченность в средствах, выделяемых правительством на криптоанализ. Другое разумное предположение состоит в том, что компетентным органам гораздо легче получить доступ к зашифрованной информации с помощью грубой физической силы, чем пут м изящных, но очень трудо мких математических выкладок, приводящих к вскрытию шифра.

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

Криптографические алгоритмы, предназначенные для экспорта

В настоящее время у пользователей персональных компьютеров имеется возможность применять шифровальные алгоритмы, встроенные в различные программные продукты. Достаточно приобрести, например, текстовый редактор Word, или операционные системы Windows NT и Netware, или редактор электронных таблиц Excel. У всех этих программных продуктов есть ещ одно общее свойство, кроме наличия в них встроенных алгоритмов шифрования. Они изготовлены в Соедин нных Штатах, и прежде чем начать торговать ими за рубежом, американские производители в обязательном порядке должны получить разрешение у своего правительства на их экспорт за пределы США.

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

- время от времени отдельные биты ключа подмешиваются в шифртекст;

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

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

- любое шифрованное сообщение содержит отрезок случайного открытого текста вместе с соответствующим ему шифртекстом.

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

Симметричный или асимметричный криптографический алгоритм?

Какой алгоритм лучше - симметричный или асимметричный? Вопрос не совсем корректен, поскольку предусматривает использование одинаковых критериев при сравнении криптосистем с секретным и открытым ключом. А таких критериев не существует.

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

Однако, по мнению одного из изобретателей криптосистем с открытым ключом - американского криптолога У. Диффи, их следует рассматривать не как некую совершенно новую разновидность универсальных криптосистем. Криптография с открытым ключом и криптография с секретным ключом - это "две большие разницы", они предназначены для решения абсолютно разных проблем, связанных с засекречиванием информации. Симметричные криптографические алгоритмы служат для шифрования данных, они работают на несколько порядков быстрее, чем асимметричные алгоритмы. Однако и у криптографии с открытым ключом есть области применения, в которых криптографии с секретным ключом делать нечего. К ним относятся работа с ключами и многочисленные криптографические протоколы.

Шифрование в каналах связи компьютерной сети

Одной из отличительных характеристик любой компьютерной сети является е деление на так называемые уровни, каждый из которых отвечает за соблюдение определ нных условий и выполнение функций, которые необходимы для общения между собой компьютеров, связанных в сеть. Это деление на уровни имеет фундаментальное значение для создания стандартных компьютерных сетей. Поэтому в 1984 году несколько международных организаций и комитетов объединили свои усилия и выработали примерную модель компьютерной сети, известную под названием OSI (Open Systems Interconnection).

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

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

Канальное шифрование

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

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

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

Узел 1 Узел 2 Узел 3 Узел 4
Канал 1 Канал 2 Канал 3
P P


Рис. 1. Канальное шифрование

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

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

Сквозное шифрование

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

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

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

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

Узел 1 Узел 2 Узел 3 Узел 4
Канал 1 Канал2 Канал 3
P P


Рис. 2. Сквозное шифрование

Комбинированное шифрование

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

При комбинированном шифровании работа с ключами вед тся раздельно: сетевые администраторы отвечают за ключи, используемые при канальном шифровании, а о ключах, применяемых при сквозном шифровании, заботятся сами пользователи.

Шифрование файлов

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

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

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

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

- нередко после шифрования файла его незашифрованная копия благополучно забыва тся на другом магнитном диске, на другом компьютере или в виде распечатки, сделанной на принтере;

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

- скорость шифрования файлов при помощи выбранного для этой цели криптографического алгоритма должна соответствовать скоростям, на которых работают устройства ввода/вывода современных компьютеров;

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

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

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

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

Аппаратное и программное шифрование

Аппаратное шифрование

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

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

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

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

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

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

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

Программное шифрование

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

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

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

Сжатие и шифрование

Алгоритмы сжатия данных очень хорошо подходят для совместного использования с криптографическими алгоритмами. На это есть две причины:

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

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

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

Как спрятать один шифртекст в другом

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

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

Самый простой способ сделать это потребует использования одноразового блокнота. Пусть P - настоящий открытый текст, D - невинный открытый текст, C - шифрованный текст, K - настоящий ключ, а - подставной ключ. Антон шифрует P:

P A K = C

Поскольку у Бориса имеется копия ключа K, он может без проблем расшифровать сообщение Антона:

C A K = P

Если контрразведчики попытаются заставить Антона и Бориса выдать используемый ими ключ, вместо K они могут сообщить в контрразведку:

K = C A D

В результате контрразведчики смогут прочитать невинный открытый текст:

C A K = D

Так как Антон и Борис пользуются одноразовым блокнотом, то K является полностью случайным и доказать, что является подставным ключом, практически невозможно (не прибегая к пыткам).

Антон мог бы зашифровать P не с помощью одноразового блокнота, а пользуясь любым из своих самых любимых криптографических алгоритмов и ключом K. Сложив C с отрезком какого-либо общеизвестного произведения (например, с отрывком из второй главы "Идиота" Достоевского) по модулю 2, Антон получит K . Теперь если к Антону пристанут "дяденьки" из контрразведки, он предъявит им C вместе с K и скажет, что K - это одноразовый блокнот для C и что он просто захотел попрактиковаться в криптографии, зашифровав для этой цели отрывок из первой попавшейся книги. И пока контрразведчики не получат в сво распоряжение ключ K, доказать, что Антон занимался чем-то противозаконным, они не смогут.
2
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
13.11.2011, 13:06  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
а так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString str1,str2;
  str1 = "Гламурное простое шифрование."; // str1 = Edit2->Text;
  int i,i_key,len;
  len = str1.Length();
  for (int i=1; i<=len; i++) {
    i_key = (char)(str1[i])+2; // здесь с +2 можно поизвращаться
    str2 += (char)i_key;
  }
  Memo1->Lines->Add(str2);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  AnsiString str1,str2;
  str1 = Memo1->Text;
  int i,i_key,len;
  len = str1.Length();
  for (int i=1; i<=len; i++) {
    i_key = (char)(str1[i])-2;
    str2 += (char)i_key;
  }
  Memo1->Lines->Add(str2);
}
дешифрование немного кривится, не вариант исправить...
Миниатюры
Разрабатываю свой способ шифрования  
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
13.11.2011, 13:42
Насколько я помню, дело в злощастном Memo, который добавляет перенос на следующую строку при визуальном варианте из-за этого получается лишняя информация. Если использовать текущий вариант, то
C++
1
for (int i=1; i<len; i++)
а не:
Цитата Сообщение от Samrisbe Посмотреть сообщение
for (int i=1; i<=len; i++)
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
13.11.2011, 14:23  [ТС]
К сожалению непомогло.
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
13.11.2011, 14:42
В обоих случаях изменил?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.11.2011, 14:42
Помогаю со студенческими работами здесь

Возможно ли узнать способ шифрования
Доброе утро. Я могу получить вот такой JSON: В нем мне интересен ключь &quot;file&quot;. Предположительно в подобной...

Свой алгоритм шифрования [Проблема]
Вот решил попробовать сделать. Аналог HEX. И вот появилась проблема. $EnSe =...

Придумать к имеющейся программе свой алгоритм шифрования
Нужно придумать к имеющейся программе СВОЙ алгоритм шифрования, стало интересно как это работает, кто может объяснить и привести свой...

Предлагаю свой способ написания первого скрипта
Доброго времени и суток !!! Сегодня я хочу представить Вам свою новую тему, которую я посвятил помощи новичкам в линукс (хотя пока сам...

Классный способ увеличить трафик на свой сайт бесплатно!
Приветствую! Если у вас проблемы с посещаемостью вашего сайта или блога это не проблема, я знаюкак можно увеличить трафик бесплатным и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru