не рандом а псевдо-рандом. При генерации пары ключей используется набор констант. Если использовать одни и те же, то будут получаться те же самые пары ключей. Но если их (константы) готовить с элементом случайности (просить мышкой подвигать юзера, дернуть /dev/random, инструкцию проца специальную, или всё это вместе) то вероятность "попасть" в ту же пару мизерна. Мизерна это означает вероятности меньше чем минус сотые степени двойки. По сравнению с ней угроза получить метеоритом по кумполу в миллиарды раз серьёзнее