LINUX.ORG.RU

GOST89 вместо DES

 ,


0

1

Суть такова:
есть задача написания генерации зашифрованных паролей, все открытые реализации (практически) которые я нарыл используют DES fcrypt из openssl. гост89 судя по замерам разных людей раза так в два побыстрее и в составе libressl он есть из коробки.

Однако генерация не главная цель, главная цель как раз подбор паролей.
гост подойдет для этого или нет? Или с его 256 битными ключами это будет подбираться вечность? (я просто в этом пока слабо разбираюсь еще)

★★★

Последнее исправление: uin (всего исправлений: 1)

судя по замерам [..] раза так в два побыстрее
главная цель [..] подбор паролей

Ну вот и будет оно у тебя в два раза быстрее подбираться.

beastie ★★★★★
()
Ответ на: комментарий от beastie

PS: для брус-форса паролей длина конечного хеша не играет никакой роли. Хоть 20 бит, хоть 20k бит. Роль играют только длина самого пароля и скорость алгоритма.

Чем длинней пароль и медленней алгоритм — тем более он устойчив он к перебору. (И желательно, что бы у алгоритма было как можно меньше коллизий.)

beastie ★★★★★
()
Ответ на: комментарий от beastie

Чет блин слишком сложно все.
Где вы обычно документацию берете по части использования тех или иных библиотек?

Не исходники же полностью изучаете в самом деле

unsigned char *GOST2814789IMIT(const unsigned char *d, size_t n,
		unsigned char *md, int nid,
		const unsigned char *key, const unsigned char *iv);

uin ★★★
() автор топика
Последнее исправление: uin (всего исправлений: 2)
Ответ на: комментарий от uin

Где вы обычно документацию берете по части использования тех или иных библиотек?

Не исходники же полностью изучаете в самом деле

Именно this

beastie ★★★★★
()
Ответ на: комментарий от beastie

Кошмар, проще уж тогда самому писать или кусочками выкалупать то что нужно.

#define GOSTR341194_LONG unsigned int

#define GOSTR341194_LENGTH	32
#define GOSTR341194_CBLOCK	32
#define GOSTR341194_LBLOCK	(GOSTR341194_CBLOCK/4)

typedef struct gost2814789_key_st {
	unsigned int key[8];
	unsigned int k87[256],k65[256],k43[256],k21[256];
	unsigned int count;
	unsigned key_meshing : 1;
} GOST2814789_KEY;

typedef struct GOSTR341194state_st {
	GOSTR341194_LONG	Nl, Nh;
	GOSTR341194_LONG	data[GOSTR341194_LBLOCK];
	unsigned int		num;

	GOST2814789_KEY		cipher;
	unsigned char		H[GOSTR341194_CBLOCK];
	unsigned char		S[GOSTR341194_CBLOCK];
} GOSTR341194_CTX;

GOST2814789IMIT(const unsigned char *d, size_t n, unsigned char *md, int nid,
    const unsigned char *key, const unsigned char *iv)
{
	GOST2814789IMIT_CTX c;
	static unsigned char m[GOST2814789IMIT_LENGTH];

	if (md == NULL)
		md = m;
	GOST2814789IMIT_Init(&c, nid);
	memcpy(c.mac, iv, 8);
	Gost2814789_set_key(&c.cipher, key, 256);
	GOST2814789IMIT_Update(&c, d, n);
	GOST2814789IMIT_Final(md, &c);
	explicit_bzero(&c, sizeof(c));
	return (md);
}

uin ★★★
() автор топика
Ответ на: комментарий от uin

может быть эта функция описана в man-ах openssl, но надеяться на это не стоит, там с документацией не всё хорошо

Harald ★★★★★
()
Ответ на: комментарий от uin

Где вы обычно документацию берете по части использования тех или иных библиотек?

По именам можно погадать.

const unsigned char *d

Данные, наверное.

size_t n

Длина данных

unsigned char *md

Message Digest. Туда будет складываться результат работы.

const unsigned char *key

Ключ

const unsigned char *iv

Initialization Vector

int nid

А в это уже надо вникать. (Похоже на идентификатор набора параметров алгоритма. Что-то вроде NID_id_Gost28147_89_CryptoPro_A_ParamSet).

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от next_time

Как раз о чём. Т.к. чем меньше времени на проверку (более быстрый алгоритм хеширования), тем больше мы успеем перепробовать.

GPU тут ортогональны. Мы сравниваем 2 алгоритма на одном виде вычислителя. А будешь ли ты использовать CPU, GPU, FPGA или ASIC — это уже дело десятое.

DES будет быстрее BlowFish на любом из них.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 2)
Ответ на: комментарий от beastie

GPU тут ортогональны.

scrypt? Некоторые алгоритмы хорошо считаются на GPU, некоторые нет.

i-rinat ★★★★★
()
Ответ на: комментарий от beastie

Мы сравниваем 2 алгоритма на одном виде вычислителя.

нет, на разных: шифрование/дешифрование в норме ведётся на ЦПУ, а вот злоумышленник будет использовать ГПУ

тем больше мы успеем перепробовать.

эта разница покрывается лишней буквой в пароле с огромным запасом

next_time ★★★★★
()
Ответ на: комментарий от uin

Только `GOST2814789IMIT` это не шифрование. Это имитовставка, полу-шифрование. 16 раундов из 32.

i82 ★★
()
Ответ на: комментарий от next_time

Да хоть карандаш с бумажкой. Ты не видишь принципиальной разницы?

Про длину пароля я сказал ещё с самого начала.

beastie ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.