Биометрия в криптографии

  • Вид работы:
    Реферат
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    650,25 kb
  • Опубликовано:
    2012-01-22
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Биометрия в криптографии

Введение

Целью данной работы является создание криптографического протокола аутентификации пользователя интернет- магазина на основе биометрии. В качестве средства разработки была выбрана Adobe Dreamweaver CS3 и язык программирования PHP.

.       
Биометрия в криптографии

В настоящее время в биометрии и криптографии проводится множество исследований с целью разработки надежного и применимого на практике метода использования биометрических данных в системах криптографической защиты. Анализ этих исследований выявил, что для обеспечения возможности успешного применения биометрических данных в системах криптографической защиты информации, а именно для генерации криптографических ключей, необходимо учитывать их особенности, а так же преимущества и недостатки.

Среди преимуществ биометрических данных при использовании их в качестве источника ключевого материала можно выделить следующие:1) биометрические признаки уникальны; 2) биометрические признаки воспроизводимы и всегда готовы к использованию; 3) удобство и экономическая эффективность; 4) гибкость, сочетаемость разных признаков. Однако проблемными остаются такие аспекты: 1) наличие ошибок первого и второго рода; 2) биометрические данные неточно воспроизводимы и не имеют равномерного распределения вероятностей; 3) биометрические данные не являются секретными; 4) биометрические данные могут меняться со временем и в зависимости от физического и эмоционального состояния их владельца [1].Ключи, полученные на основе биометрических признаков, обладают рядом особенностей, которые создают преимущества при разработке и применении средств криптографической защиты:

) Особенность, связанная с носителем ключевого материала. Ключ, полученный на основании биометрических признаков, может существовать в двух видах. Первый вид - неявный вид, в таком виде ключ прибывает постоянно, т.е. человек, имея биометрические признаки, является носителем ключевого материала. При необходимости из неявного вида при помощи процедуры экстракции или воспроизведения ключ может переходить в явный вид. При этом переходе образуется дополнительный ключевой материал (шаблон). В случае уничтожения всех экземпляров ключа он возвращается снова в неявный вид. Кроме того, явный вид характеризуется тем, что ключ в нем может переходить из нечеткой формы в четкую, то есть из биометрического материала в ключ.

) Особенность, связанная со свойствами ключевого материала. Поскольку ключевой материал нечетко воспроизводится, а для фазы штатного использования ключа нужно однозначно определенное значение, то необходимо определить, как и когда осуществлять преобразование из нечеткой формы в четкую. Возможно два варианта такого преобразования. Преобразовывать его сразу и вся та часть жизненного цикла, которая представляет фазу явного существования ключа, осуществляется с четко определенными значениями ключа. Такое преобразование реализуется при помощи метода нечетких экстракторов [2]. При втором варианте преобразования весь жизненный цикл организуется для нечеткого ключа и лишь при необходимости его применения для осуществления криптографических операций выполняется его преобразование. Данный вариант осуществляется при помощи специальных криптосхем, которые позволяют получить правильный результат при допустимой погрешности значения ключа.

) Особенностью, связанной с конструкцией криптосистем. В симметричных криптосистемах ключи с внедренной в них биометрической информацией удается эффективно использовать для шифрования только тогда, когда процедуры зашифрования и расшифрования осуществляет один субъект, который является владельцем биометрических данных. Это связано с тем, что для процесса восстановления ключа необходимо присутствие субъекта, являющегося владельцем биометрических данных, из которых первоначально был получен секретный ключ. В асимметричных криптосистемах биометрические данные можно использовать для генерации секретных ключей в любых условиях.

.       
Алгоритм хэширования MD5

Функция хэширования H представляет собой отображение, на вход которого подаётся сообщение M произвольной длины, а на выходе получается значение h конечной длины, где h = H(M).

В общем случае хэш-значение h гораздо меньше исходного сообщения M. Так для MD5 h=128 бит. Хэш-функция должна обладать следующими свойствами:

) По достаточно большому сообщению M хэш-функция должна быстро вычислить h значение, которое должно зависеть от каждого бита сообщения M;

) Необратимость: по h значению невозможно восстановить исходный текст M;

) Вычислительно очень трудно (почти невозможно) найти два сообщения M и M1, которые дают два одинаковых h-значения;

Хэш-значение является контрольной суммой исходного сообщения M и называется MDC (Manipulation Detection Code - код обнаружения изменений) или MIC (Message Integrity Check - проверка целостности сообщения). Если хэш-функция использует для своей работы ключ (пароль), то получаемое значение называется MAC (Message Authentication Code - код аутентичности сообщения).

.1 Описание алгоритма MD5

алгоритм используется в приложениях криптографии и электронно-цифровых подписей для генерации ключа шифрования. Алгоритм разработан, что бы быть достаточно быстрым на 32-битных системах и не требовать больших объемов памяти. MD5 является чуть более медленным, чем MD4, но является более устойчивым к криптографическим атакам. Далее под "словом" будет подразумеваться количество информации в 32 бита, а под "байтом" - 8 бит. Последовательность бит интерпретируется в естественной форме - как последовательность байт, где каждая группа из 8 бит является отдельным байтом, причём старший бит байта идет первым. Аналогично представляется последовательность байт, как последовательность слов, только младший байт идет первым. Предполагается, что в качестве входного потока имеется поток данных N бит. N - неотрицательное целое (возможно 0), не обязательно кратное 8. Для вычисления MD5 хэш-функции необходимо выполнить следующие 5 шагов.

Шаг 1: выравнивание потока.

Входной поток выравнивается так, что бы его длина стала конгруэнтной (сравнимой) с 448 по модулю 512. Выравнивание происходит следующим образом: к потоку добавляется один бит '1', а затем биты '0' до тех пор, пока длина потока не будет сравнима с 448 по модулю 512. Выравнивание происходит всегда, даже если длина потока была уже сравнима с 448 по модулю 512. Таким образом к потоку добавляется минимум 1 бит, максимум - 512.

Шаг 2: добавление длины.

битное представление длины входного потока (длины потока до выравниваия) добавляется к результату предидущего шага. Если длина потока превосходит 2^64, то добавляются младшие 64 бит. Эти биты добавляются как 2 32-битных слова, младшее слово добавляется первым. Таким образом на этом шаге длина потока становится кратной 512 битам или 16 32-битным словам. Далее будем рассматривать входной поток как массив M[0 ... N-1] слов длиной N.

Шаг 3: инициализация MD буфера.

Буфер из 4 слов {A, B, C, D} используется для вычисления хэш функции, который инициализируется в следующие значения:

A = 0x67452301= 0xEFCDAB89= 0x98BADCFE= 0x10325476

Определим четыре вспомогательные функции, каждая из которых принимает три параметра размеров в слово и производит результат - слово.

(x, y, z) = (x & y) | (~x & z)(x, y, z) = (x & z) | (y & ~z)

H(x, y, z) = x ^ y ^ z(x, y, z) = y ^ (x | ~z)

Напомним, что & - побитовое И, | - побитовое ИЛИ, ^ - побитовое исключающее ИЛИ, ~ - побитовое отрицание. Функция F для каждого бита дает следующий результат: если X, то Y, иначе Z.

На этом шаге также используется таблица T[1..64], которая построена с помощью функции синуса:

T<i> = int(4294967296 * abs(sin(i))), где int() - целая часть. Например:

T[1] = int(4294967296 * abs(sin(i))) = int(3614090360,282...) = 3614090360.

Также следует определить операцию x <<< y, как циклический сдвиг x влево на y бит. Теперь рассмотрим сам алгоритм вычисления MD5 хэш функции.

Код

// обработать входной поток блоками по 16 слов

for i = 0 to N/16 - 1 do

{

// копировать блок i в Xj = 0 to 15 do[j] = M[i * 16 + j]

// Сохранить значения A, B, C, D

AA = A= B= C= D

// проход 1

// пусть [abcd k s i] обозначает операцию

// a = b + ((a + F(b, c, d) + X[k] + T<i>) <<< s)

// исполнить 16 следующих операций

[ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4]

[ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8]

[ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12]

[ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]

// проход 2

// пусть [abcd k s i] обозначает операцию

// a = b + ((a + G(b, c, d) + X[k] + T<i>) <<< s)

// исполнить 16 следующих операций

[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20]

[ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24]

[ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28]

[ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]

// проход 3

// пусть [abcd k s i] обозначает операцию

// a = b + ((a + H(b, c, d) + X[k] + T<i>) <<< s)

// исполнить 16 следующих операций

[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36]

[ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40]

[ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44]

[ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]

// проход 4

// пусть [abcd k s i] обозначает операцию

// a = b + ((a + I(b, c, d) + X[k] + T<i>) <<< s)

// исполнить 16 следующих операций

[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52]

[ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]

[ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60]


A += AA+= BB+= CC+= DD

}

Шаг 5: вывод MD5.

Результат вычисления (хэш) представлен четырьмя 32 битными словами -A, B, C, D (младшим записывается A, старшим - D). 128-битный MD5 хэш готов!

Примеры:

"a" - cc175b9c0f1b6a831c399e269772661

"abc" - 90150983cd24fb0d6963f7d28e17f72

123456789012345678901234567890123456789012345678901234567890123456 78901234567890" - 57edf4a22be3c955ac49da2e217b67a

.2      MD5 в PHP

В PHP и MD5 и все остальные алгоритмы хэширования, как правило используются для шифровки паролей, проверки целостности файлов, хранящихся на сервере и др. Он реализован функцией md5($str), где $str - любая строка или данные. Вычисляет MD5 хэш строки str используя алгоритм MD5 RSA Data Security, Inc. и возвращает этот хэш. Хэш представляет собой 32-значное шестнадцатеричное число. Если необязательный аргумент raw_output имеет значение TRUE, то возвращается бинарная строка из 16 символов.

Пример 1. Пример использования md5():

<?php

$str = 'apple';

if (md5($str) === '1f3870be274f6c49b3e31a0c6728957f') {"Would you like a green or red apple?";

exit;

}

?>

3.  
Практическая часть

Протокол реализован посредством Adobe Dreamweaver CS3 на языке PHP и позволяет проводить аутентификацию по картинке, используя вместо пароля координаты точек выбранные пользователем при регистрации на сайте.

Первым делом протокол предлагает пользователю зарегистрироваться, использую форму для регистрации(рис.1). Сначала требует выбрать картинку из нескольких предложенных. Далее следует выбрать точки на картинке и ввести свой логин(рис.2). Пользователю следует запомнить выбранные им точки а так же их последовательность. При нажатии на кнопку отправить выходит сообщение о том, что регистрация пройдена успешно, и предлагает нам авторизоваться(рис.3). В форме авторизации пользователю нужно выбрать картинку, отметить на ней точки с правильной последовательностью и ввести свой логин(рис.4). При успешной авторизации появляется сообщение «Authorization is DONE». Логин и пароль хранится в файле passwords.txt. Они разделены знаком «&», причем пароль хранится в хэшированном виде(рис.5).

Рис. 1. Страница для регистрации пользователя

Рис. 2. Процесс регистрации пользователя: выбор картинки и точек на ней, а так же ввод логина

Рис. 3. Сообщение об успешной регистрации

Рис. 4. Процесс авторизации

Рис. 5. Логин и пароль(в хэшированном виде) в .txt файле.

Исходный код

//регистрация

<a href="login.php">To authorization</a><br/>

<b>Registraciya:</b><br/>

<?php

$action = 'reg.php';_once 'lib.php';run()

{($_POST) {($_POST as &$el) {

$el = str_replace(array("\n","\r","\t", '&'),array('','','',''),$el);

}($_POST['login']&& $_POST['password']) {

$f = fopen('passwords.txt','r+');($str = fgets($f)) {(stripos($str,$_POST['login']) === 0) {'User s takim imenem uwe est’';

}

}

} else {'Ne wybrano ni odnoi to4ki';

}($f);

$f = fopen('passwords.txt','a');

                   $md5password=md5($_POST['password']);($f, "\n" . $_POST['login'] . '&' . $md5password);($f);

return '<b>Registraciya proidena uspewno.Poprobuem <a href="login.php">avtorizovatsa</a>?</b>';

}

}

$text = run();

?>

<form method="post" action="<?php print $action ?>" onsubmit="if($('#password').val() == '') {alert('Click on image');return false;}">

<input type="hidden" value="" name="password" id="password"/>

. Eto pole nuwno zapolnit'(Login):<br/>

<input type="text" name="login" value="<?php print rand(0, 10000) ?>" onclick=""/><br/>

<input type="submit"/>

</form>

<?php print '<br/><b>' . $text .'</b>' ?>

//авторизация

<a href="reg.php">K registracii</a><br/>

<b>Authorization:</b><br/>nuwno tu we kartinku I te we to4ki(+-10 pixels).<br/>vawna.<br/>

<?php

$action = 'login.php';_once 'lib.php';run()

{($_POST) {($_POST as &$el) {

$el = str_replace(array("\n","\r","\t",'&'),array('','','',''),$el);

}($_POST['password']) {

$f = fopen('passwords.txt','r+');($str = fgets($f)) {(stripos($str,$_POST['login']) === 0) {($login, $password) = explode('&',$str);

$coords = explode(';', rtrim($password,";\n "));

$lCoords = explode(';', rtrim($_POST['password'],';'));

$count = count($coords);

}($a=0;$a<$count;$a++) {($x,$y) = explode(',', $coords[$a]);($lX,$lY) = explode(',', $lCoords[$a]);($x+10 > $lX && $x-10 < $lX && $y+10 > $lY && $y-10 < $lY) {

} else {'ne vernyi parol’<br/>' .

'debug:<br/>' .

'Koordinata №' . $a . '<br/>' .

'$x+10 > $lX (' . ($x+10) . ' > ' . $lX . ')<br/>' .

'$x-10 < $lX (' . ($x-10) . ' < ' . $lX . ')<br/>' .

'$y+10 > $lY (' . ($y+10) . ' > ' . $lY . ')<br/>' .

'$y-10 < $lY (' . ($y-10) . ' < ' . $lY . ')<br/>';

}

}'<b>Authorization is DONE<b> <a href="reg.php">Try again?</a>';

}

}'Ne vernoe imya polzovatelya';

}($f);

}

}

$text = run();

?>

<form method="post" action="<?php print $action ?>" onsubmit="if($('#password').val() == '') {alert('Click on image');return false;}">

<input type="password" style="display: none;" value="" name="password" id="password"/>

. Syuda nuwnovvesti cifry\bukvy s registracii( pole Login):<br/>

<input type="text" name="login" value="" onclick=""/><br/>

<input type="submit"/>

</form>

<?php print '<br/><b>' . $text .'</b>' ?>

//библиотеки

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

.        Vyberite kartinku:

<?php

$images = array('1.jpg','2.jpg','3.jpg','4.jpg');($images as $img) {'<a href="#" onclick="showImg(\'' . $img . '\');"><img src="' . $img . '" width="50px"></a>';

}

?>

<br/>

. Vyberite to4ki na kartinke:<br/>

<div id="continer">

</div>

<script>showImg(img)

{

$('#continer').html('<div style="position:relative"><img src="'+img+'" onclick="imgClick(event);"></div>');

}imgClick(evt)

{(!evt.offsetX) {x = evt.layerX;

} else {x = evt.offsetX;

}(!evt.offsetY) {y = evt.layerY;

} else {y = evt.offsetY;

}(evt.pageX-10,evt.pageY-10,20,20);

$('#password').val($('#password').val()+x+','+y+';')

}drawRectangle(left, top, width, height)

{(document.createElement) {=document.createElement("div");.style.position="absolute";.style.left = left+"px";.style.top = top+"px";.style.width = width+"px";.style.height = height+"px";.style.backgroundColor = 'yellow';.style.opacity = '0.5';.style.visibility = 'visible';.innerHTML = "";.body.appendChild(newdiv);

}

}

</script>

алгоритм хэширование криптографический аутентификация

Заключение

Итогом работы является сайт, имеющий протокол аутентификации на основе биометрии. В частности посредством выбора точек на изображении и ввода логина. Отличительной чертой протокола является то, что координаты хранятся в хэшированном виде. Однако защищенность использования хэш-функции MD5 не высока. На данный момент существуют несколько видов «взлома» хешей MD5 - подбора сообщения с заданным хешем: Перебор по словарю, Brute-force, RainbowCrack. Для полного перебора или перебора по словарю можно использовать программы PasswordsPro, MD5BFCPF, John the Ripper.Для перебора по словарю существуют готовые словари.- еще один метод взлома хеша. Он основан на генерировании большого количества хешей из набора символов, чтобы по получившейся базе вести поиск заданного хеша. Хотя генерация хешей занимает много времени, зато последующий взлом производится очень быстро.

Список литературы

1.   Ященко В.В. Введение в Криптографию. - Питер, 2001 г.

2.      Шнайер Б. Прикладная криптография: Протоколы, алгоритмы, исходные тексты на языке Си. - Триумф, 2002 г.

3.      F. Hao, R. Anderson, J. Daugman. Combining cryptography with biometrics effectively. Techreport, 2005. <http://www.cl.cam.ac.uk/techreports/UCAM-CL- TR-640.htm>

4.      Y. Dodis, L. Reyzin, A. Smith. Fuzzy Extractors: How to Generate Strong Keys from Biometrics and Other Noisy Data. Proceedings from Advances in Cryptology - EuroCrypt, 2004


Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!