ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.06.2021
Просмотров: 3547
Скачиваний: 3
426
Глава
18.
Криптографическая
защита
void GOST::Enc::ProcessAndXorBlock(const byte *inBlock, const
byte *xorBlock, byte *outBlock) const
{
word32 n1, n2, t;
Block::Get(inBlock)(n1)(n2);
for (unsigned int i=0; i<3; i++)
{
n2 ^= f(n1+key[0]);
n1 ^= f(n2+key[1]);
n2 ^= f(n1+key[2]);
n1 ^= f(n2+key[3]);
n2 ^= f(n1+key[4]);
n1 ^= f(n2+key[5]);
n2 ^= f(n1+key[6]);
n1 ^= f(n2+key[7]);
}
n2 ^= f(n1+key[7]);
n1 ^= f(n2+key[6]);
n2 ^= f(n1+key[5]);
n1 ^= f(n2+key[4]);
n2 ^= f(n1+key[3]);
n1 ^= f(n2+key[2]);
n2 ^= f(n1+key[1]);
n1 ^= f(n2+key[0]);
Block::Put(xorBlock, outBlock)(n2)(n1);
}
void GOST::Dec::ProcessAndXorBlock(const byte *inBlock, const
byte *xorBlock, byte *outBlock) const
{
word32 n1, n2, t;
Block::Get(inBlock)(n1)(n2);
Окончание
листинга
18.5
n2 ^= f(n1+key[0]);
n1 ^= f(n2+key[1]);
n2 ^= f(n1+key[2]);
Стандарт
криптографического
преобразования
данных
ГОСТ
28147-89
427
n1 ^= f(n2+key[3]);
n2 ^= f(n1+key[4]);
n1 ^= f(n2+key[5]);
n2 ^= f(n1+key[6]);
n1 ^= f(n2+key[7]);
for (unsigned int i=0; i<3; i++)
{
n2 ^= f(n1+key[7]);
n1 ^= f(n2+key[6]);
n2 ^= f(n1+key[5]);
n1 ^= f(n2+key[4]);
n2 ^= f(n1+key[3]);
n1 ^= f(n2+key[2]);
n2 ^= f(n1+key[1]);
n1 ^= f(n2+key[0]);
}
Block::Put(xorBlock, outBlock)(n2)(n1);
}
NAMESPACE_END
Листинг
18.6.
Заголовочный
файл
gost.h,
используемый
при
реализации
алгоритма
ГОСТ
на
языке
C++
в
виде
библиотечного
класса
(
библиотека
Crypto++ 5.1)
#ifndef CRYPTOPP_GOST_H
#define CRYPTOPP_GOST_H
#include "seckey.h"
#include "secblock.h"
NAMESPACE_BEGIN(CryptoPP)
struct GOST_Info : public FixedBlockSize<8>,
public FixedKeyLength<32>
{ static const char *StaticAlgorithmName() {return "GOST";}};
Окончание
листинга
18.6
{
class Base : public BlockCipherBaseTemplate<GOST_Info>
428
Глава
18.
Криптографическая
защита
{
public:
void UncheckedSetKey(CipherDir direction,
const byte *userKey, unsigned int length);
protected:
static void PrecalculateSTable();
static const byte sBox[8][16];
static bool sTableCalculated;
static word32 sTable[4][256];
FixedSizeSecBlock<word32, 8> key;
};
class Enc : public Base
{
public:
void ProcessAndXorBlock(const byte *inBlock,
const byte *xorBlock, byte *outBlock) const;
};
class Dec : public Base
{
public:
void ProcessAndXorBlock(const byte *inBlock,
const byte *xorBlock, byte *outBlock) const;
};
public:
typedef BlockCipherTemplate<ENCRYPTION, Enc> Encryption;
typedef BlockCipherTemplate<DECRYPTION, Dec> Decryption;
};
typedef GOST::Encryption GOSTEncryption;
typedef GOST::Decryption GOSTDecryption;
NAMESPACE_END
#endif
Глава
19
Скремблирование
В
речевых
системах
связи
известно
два
основных
метода
закрытия
речевых
сигналов
,
различающихся
по
способу
передачи
по
каналам
связи
:
аналоговое
скремблирование
и
дискретизация
речи
с
последующим
шифрованием
.
Под
скремблированием
понимает
-
ся
изменение
характеристик
речевого
сигнала
,
таким
образом
,
что
полученный
модули
-
рованный
сигнал
,
обладая
свойствами
неразборчивости
и
неузнаваемости
,
занимает
ту
же
полосу
частот
,
что
и
исходный
сигнал
.
Каждый
из
этих
методов
имеет
свои
достоинства
и
недостатки
.
Так
,
для
аналоговых
скремблеров
характерно
присутствие
при
передаче
в
канале
свя
-
зи
фрагментов
исходного
открытого
речевого
сообщения
,
преобразованного
в
частотной
и
(
или
)
временн
о
й
области
.
Это
означает
,
что
злоумышленники
могут
попытаться
пере
-
хватить
и
проанализировать
передаваемую
информацию
на
уровне
звуковых
сигналов
.
Поэтому
ранее
считалось
,
что
,
несмотря
на
высокое
качество
и
разборчивость
восста
-
навливаемой
речи
,
аналоговые
скремблеры
могут
обеспечивать
лишь
низкую
или
сред
-
нюю
,
по
сравнению
с
цифровыми
системами
,
степень
закрытия
.
Однако
новейшие
алго
-
ритмы
аналогового
скремблирования
способны
обеспечить
не
только
средний
,
но
очень
высокий
уровень
закрытия
.
Цифровые
системы
не
передают
какой
-
либо
части
исходного
речевого
сигнала
.
Рече
-
вые
компоненты
кодируются
в
цифровой
поток
данных
,
который
смешивается
с
псевдо
-
случайной
последовательностью
,
вырабатываемой
ключевым
генератором
по
одному
из
криптографических
алгоритмов
.
Подготовленное
таким
образом
сообщение
передается
с
помощью
модема
в
канал
связи
,
на
приемном
конце
которого
проводятся
обратные
пре
-
образования
с
целью
получения
открытого
речевого
сигнала
.
Технология
создания
широкополосных
систем
,
предназначенных
для
закрытия
речи
,
хорошо
известна
,
а
ее
реализация
не
представляет
особых
трудностей
.
При
этом
исполь
-
зуются
такие
методы
кодирования
речи
,
как
АДИКМ
(
адаптивная
дифференциальная
и
импульсно
-
кодовая
модуляция
),
ДМ
(
дельта
-
модуляция
)
и
т
.
п
.
Но
представленная
таким
образом
дискретизированная
речь
может
передаваться
лишь
по
специально
выделенным
широкополосным
каналам
связи
с
полосой
пропускания
4,8–19,2
кГц
.
Это
означает
,
что
она
не
пригодна
для
передачи
по
линиям
телефонной
сети
общего
пользования
,
где
тре
-
буемая
скорость
передачи
данных
должна
составлять
не
менее
2400
бит
/
с
.
В
таких
слу
-
чаях
используются
узкополосные
системы
,
главной
трудностью
при
реализации
которых
является
высокая
сложность
алгоритмов
снятия
речевых
сигналов
,
осуществляемых
в
во
-
кодерных
устройствах
.
430
Глава
19.
Скремблирование
Посредством
дискретного
кодирования
речи
с
последующим
шифрованием
всегда
достигалась
высокая
степень
закрытия
.
Ранее
этот
метод
имел
ограниченное
применение
в
имеющихся
узкополосных
каналах
из
-
за
низкого
качества
восстановления
передавае
-
мой
речи
.
Достижения
в
развитии
технологий
низкоскоростных
дискретных
кодеров
позволили
значительно
улучшить
качество
речи
без
снижения
надежности
закрытия
.
Аналоговые
скремблеры
Аналоговые
скремблеры
подразделяются
на
:
•
речевые
скремблеры
простейших
типов
на
базе
временных
и
(
или
)
частотных
пере
-
становок
речевого
сигнала
(
рис
. 19.1);
•
комбинированные
речевые
скремблеры
на
основе
частотно
-
временных
перестановок
отрезков
речи
,
представленных
дискретными
отсчетами
,
с
применением
цифровой
обработки
сигналов
(
рис
. 19.2).
Рис
. 19.1.
Схема
простейшего
речевого
скремблера
Рис
. 19.2.
Схема
комбинированного
речевого
скремблера
Цифровые
системы
закрытия
речи
подразделяются
на
широкополосные
(
рис
. 19.3)
и
узкополосные
(
рис
. 19.4).
Говоря
об
обеспечиваемом
уровне
защиты
или
степени
секретности
систем
закрытия
речи
,
следует
отметить
,
что
эти
понятия
весьма
условные
.
К
настоящему
времени
не
вы
-
работано
на
этот
счет
четких
правил
или
стандартов
.
Однако
в
ряде
изделий
основные
уровни
защиты
определяются
,
как
тактический
и
стратегический
,
что
в
некотором
смысле
перекликается
с
понятиями
практической
и
теоретической
стойкости
крипто
-
систем
закрытия
данных
.