Криптографически безопасный RNG в C ++ для RSA PKCS # 1 (генерация ключей) - PullRequest
1 голос
/ 01 марта 2020

Я пытаюсь повторно реализовать генерацию RSA-ключа в C ++ (в качестве площадки для хобби / обучения), и, безусловно, моей самой большой проблемой, похоже, является генерация случайного числа в диапазоне x, y, которое также криптографически secure (например, p и q).

Я полагаю, что использование mt19937 или std :: rand с безопасным случайным начальным числом (например, / dev / urandom или OpenSSL RAND_bytes et c) будет не считаться «криптографически безопасным» в этом случае (RSA)?

ISAA C выглядело многообещающе, но я понятия не имею, как его использовать, так как не смог найти любой документации вообще.

Примечательно, что это также мой первый проект на C ++ (я уже делал некоторые C, Rust et c раньше ... Так что C ++, по крайней мере, кажется мне немного знакомым, и я не полный новичок ie, заметьте).

1 Ответ

1 голос
/ 02 марта 2020

Я полагаю, использование mt19937 или std :: rand с безопасным случайным начальным числом (например, / dev / urandom или OpenSSL RAND_bytes et c) не будет считаться «криптографически безопасным» в этом случае (RSA)?

Нет, они не криптографически безопасны практически для любых целей.

ISAA C выглядело многообещающе, но я понятия не имею, как его использовать, поскольку я не был смог найти любую документацию вообще.

Ну, это стоило времени, которое я предполагаю. Но я бы просто использовал библиотеку C ++, такую ​​как Crypto ++ или Botan или что-то подобное, а затем просто реализовал бы бит генерации пары ключей RSA, заимствуя один из их безопасных случайных генераторов. Если повезет, у них также есть библиотека bignum, так что вам не придется это реализовывать.

...