Інтерфейси для введення ентропії

Ядро експортує наступне сімейство інтерфейсів, які можуть використовуватися драйверами і системами для введення даних в пул ентропії

void add_interrupt_randomness(int irq)

void add_keyboard_randomness (unsigned  char scancode)

void add_mouse_randomness(  u32 mouse_data)

Функція add_interrupt_randomnes s () викликається системою обробки переривань, коли приходить переривання, обробник якого зареєстрований з прапором SA_SAMPLE_RANDOM Параметр ir q – це номер переривання Генератор випадкових чисел використовує інтервали часу між перериваннями, як джерело шуму Слід памятати, що не всі пристрої для цього підходять Якщо пристрої генерують переривання детермінованим чином (наприклад, переривання таймера) або на них може впливати зовнішній зловмисник (наприклад, мережеві пристрої), то такі пристрої не можна використовувати для введення інформації в пул Підходяще пристрій – жорсткий диск, який генерує переривання з непередбачуваною частотою

Функція add_keyboard_randomness () використовує скан-коди та інтервали часу між натисканнями клавіш для введення ентропії в пул Цікаво, що ця функція досить інтелектуальна і ігнорує повторення символів при постійному натисканні клавіші, тому що повторюються скан-коди і інтервали часу вносять мало ентропії

Функція add_mouse_randoraness () використовує позицію покажчика миші і інтервали часу між перериваннями для заповнення пулу Параметр mouse_dat a – це позиція покажчика, яка повертається апаратним забезпеченням

Ці три функції додають передані дані в пул ентропії, обчислюють оцінку ентропії додаються даних і збільшують оцінку ентропії пулу на обчислене значення

Всі ці експортовані інтерфейси використовують внутрішню функцію add_timer_randomness () для введення даних в пул Ця функція обчислює інтервали часу між успішними подіями одного типу і додає ці значення в пул Наприклад, інтервали часу між успішними перериваннями жорсткого диска досить випадкові, особливо якщо вимірювати досить точно Наймолодші біти – це зазвичай електричний шум Після того як ця функція вводить дані в пул, вона обчислює кількісну характеристику того, наскільки ці дані випадкові Це робиться шляхом обчислення відхилення першого, другого і третього порядку від попереднього моменту часу і зміни цих відхилень першого, другого і третього порядку Найбільше з цих відхилень, округлене до

12 біт, використовується в якості оцінки ентропії

Джерело: Лав, Роберт Розробка ядра Linux, 2-е видання : Пер з англ – М: ТОВ «ІД Вільямс »2006 – 448 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*