![]() Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
![]() Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
![]() |
Другие способы скрытия информации
Иногда разработчики следуют древнему способу обеспечения безопасности – тотальной секретности. И вместо применения испытанных криптографических алгоритмов они пытаются скрыть данные при помощи хорошо известных обратимых алгоритмов, как, например, UUEncode, Base64 или комбинации каких-нибудь простых методов. В этом случае все, что нужно для расшифровки, – это повторно преобразовать зашифрованное сообщение при помощи алгоритма, ранее использованного для его зашифровки. Часть разработчиков пользуется кодировкой данных при помощи операции исключающего ИЛИ (XOR) вместо применения криптографических алгоритмов с ключом. Для кодировки сообщения ключ не нужен. Ниже рассмотрены некоторые широко известные алгоритмы кодирования.
XOR В качестве промежуточного шага многие сложные и безопасные алгоритмы шифрования используют операцию XOR. Часто можно встретить данные, которые пытались скрыть операцией XOR. XOR – сокращение от английских слов ИСКЛЮЧАЮЩЕЕ ИЛИ (exclusive or). ИСКЛЮЧАЮЩЕЕ ИЛИ – логическая операция, таблица истинности которой представлена в табл. 6.2. Операция выполняется на битах A и B. Результат операции равен 0 только в том случае, если оба бита одинаковы. В противном случае результат равен 1.
Таблица 6.2. Таблица истинности операции XOR
Посмотрите на простой пример кодировки и восстановления данных с помощью операции XOR. В примере используется один ключевой символ («A») для преобразования сообщения, состоящего из единственного символа («B»). В результате получится зашифрованное сообщение «ciphertext» (см. табл. 6.3).
Таблица 6.3. Операция XOR над «А» и «В» Предположим, что известны величина «B» и результат шифрования сообщения «ciphertext».
Как найти неизвестный ключ «A»? Требуется восстановить ключ для раскодирования другого закодированного сообщения «ciphertext2», битовое представление которого 00011010. Для этого нужно выполнить операцию XOR с операндами «B» и «ciphertext» и восстановить ключ «A». Результат воcстановления показан в табл. 6.4.
Таблица 6.4. Результат операции XOR на операндах «ciphertext» и «В» После восстановления ключа им можно воспользоваться для декодирования «cipher2» и в результате закодировать символ «Z» (см. табл. 6.5).
Таблица 6.5. Результат операции XOR на операндах «cipher2» и «А»
Конечно, это слишком простой пример. Скорее всего, на практике придется столкнуться с ключами, состоящими из нескольких символов. Кроме того, кодирование сообщений операцией XOR может выполняться последовательно несколько раз.
Манипуляции над абстрактными 0 и 1 могут оказаться трудными для восприятия, если ранее читатель не сталкивался с двоичными числами и величинами. Поэтому автор решил привести пример простой программы, которая выполняет серию из трех операций XOR на различных перестановках ключа для кодирования сообщения. В этой короткой программе на языке Perl используется свободно распространяемый модуль IIIkey для обращения к внутренней функции шифрования XOR. Для того чтобы воспользоваться приведенной программой, следует загрузить модуль IIIkey по адресу www3.marketrends.net/encrypt.#!/usr/bin/perl
#!/usr/bin/perl
# Encodes/Decodes a form of XOR text
# Requires the IIIkey module
# Written specifically for HPYN 2nd Ed.
# by FWL 01.07.02
# Use the IIIkey module for the backend
# IIIkey is available from http://www3.marketrends.net/
encrypt/
use IIIkey;
# Simple input validation
sub validate() {
if (scalar(@ARGV) < 3) {
print “ Error: You did not specify input correctly!\n”;
print “ To encode data use./xor.pl e \“ Key\” \“ String
to Encode\”\n”;
print “ To decode data use./xor.pl d \“ Key\” \“ String
to Decode\”\n”;
exit;
}
}
validate();
$tmp=new IIIkey;
$key=$ARGV[1];
$intext=$ARGV[2];
if ($ARGV[0] eq “e”) { # encode text
$outtext=$tmp->crypt($intext, $key);
print “Encoded $intext to $outtext”;
} elsif ($ARGV[0] eq “d”) { # decode text
$outtext=$tmp->decrypt($intext, $key);
print “Decoded $intext to $outtext”;
} else { # No encode/decode information given!
print “To encode or decode? That is the question.”;
exit;
}
А вот пример отчета работы программы.
$./xor.pl e “my key” “secret message”
Encoded secret message to 8505352480^0758144+510906534
$./xor.pl d “my key” “8505352480^0758144+510906534”
Decoded 8505352480^0758144+510906534 to secret message
Date: 2015-06-05; view: 508; Нарушение авторских прав |