«ульяновский государственный технический университет» Кафедра «Вычислительная техника»





Скачать 52.52 Kb.
Название«ульяновский государственный технический университет» Кафедра «Вычислительная техника»
Дата публикации23.07.2013
Размер52.52 Kb.
ТипОтчет
100-bal.ru > Информатика > Отчет
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«УЛЬЯНОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

Кафедра «Вычислительная техника»

Отчёт по лабораторной работе №2

«Изучение работы блоковых шифров и способов их объединения»

Вариант №7
Выполнил:

студент группы ИСТд-41

Ильин А. Г.

Проверил:

доцент каф. «Вычислительная техника»

к.т.н. Мартынов А.И.


Ульяновск, 2012 г.

Задание на лабораторную работу

  1. Изучить блочные алгоритмы шифрования: алгоритм перестановки, алгоритм скремблеров, алгоритм замены по таблице, матричный метод преобразования и алгоритм Винжера;

  2. Изучить режимы использования блочных шифров (ECB, CBC, CFB и OFB);

  3. Изучить способы объединения блочных шифров (многократное шифрование, сеть Фейстела);

  4. Реализовать систему и оценить работу алгоритма;


Шифрование методом скремблеров


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

В данной реализации величина сдвига каждого блока определяется значением, которое выдаёт ГСПЧ Парка-Миллера. Далее работа идёт в зависимости от режима использования шифра.

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

Режим обратной связи по шифротексту (режим гаммирования с обратной связью)

Один из вариантов использования симметричного блочного шифра, при котором для шифрования следующего блока открытого текста он складывается по модулю 2 с перешифрованным (блочным шифром) результатом шифрования предыдущего блока.

Шифрование может быть описано следующим образом:

c_0 = iv

c_i = e_k \left( c_{i-1} \right) \oplus p_i

p_i = e_k \left( c_{i-1} \right) \oplus c_i

где i — номера блоков, iv — вектор инициализации (синхропосылка), c_i и p_i — блоки зашифрованного и открытого текстов соответственно, а e_k — функция блочного шифрования.

c:\users\creitve\documents\edu\encryptcfb_2.pngc:\users\creitve\documents\edu\decryptcfb.png

Вектор инициализации iv, как и в режиме сцепления блоков шифротекста, можно делать известным, однако он должен быть уникальным.

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

Существует более сложный вариант использования режима, когда размер блока CFB не совпадет с размером блока шифра.

Листинг программы


Приводится только листинг непосредственно библиотеки функций, так как всё исполнение программы сводится к двум вызовам из неё.

#!/usr/bin/env python

# -*- coding: utf-8 -*-

from hashlib import md5
# Фунции преобразования строки битов в строку символов и наоборот

bits = lambda block: ''.join(bin(ord(x))[2:].zfill(8) for x in block)

chars = lambda bts: ''.join(chr(int(ch, 2)) for ch in (bts[i:i+8] for i in

xrange(0, len(bts),8)))
def scramble(bl, shift):

"""Превращает строку символов в строку бит и возвращает её, сдвинув

на величину shift, пришедшую из ГСПЧ

"""
rshift = lambda st, s: st[-s:] + st[:-s]

shifted = rshift(bits(bl), shift)

return shifted


def PRNG(pwd):

""" Собственно, ГСПЧ Парка-Миллера из первой л/р """

if pwd:

seed = 0

for i in xrange(len(pwd)):

seed += ord(pwd[i]) * (257 ** i)
last = seed

while 1:

last = (16807 * last % 2147483647)

yield (last % 55) + 1

else:

print "Invalid password to use"
def sxor(prim, sec):

""" 'Воркэраунд', xor, обрабатывающий строки бит.

Решает проблему потери бит """

if len(sec) < len(prim):

sec = sec.zfill(len(prim))

res = ''

for a,b in zip (prim, sec):

c = '0' if a == b else '1'

res += c

return res

def encrypt(inf, key, outf, mode='cfb'):
""" Шифрование, переключает тип четвёртым параметром, по умолчанию — cfb,

можно задать ecb. Работает с именами файлов и строкой пароля.
Сначала в файл пишется md5-хеш пароля, затем md5-хеш зашифрованного

содержимого. Затем три байта для обозначения режима шифрования.

Следом идёт сам шифрованный контент.
"""

if not mode == 'cfb':

mode = 'ecb'

print u'Начинаем шифрование в режиме ' + mode

hat = PRNG(key)

result = ''

if mode == 'cfb':

with open(inf, 'rb') as src:

cipher = '1111111'

block = bits(src.read(7))

while block:

t = sxor(block, scramble(cipher, hat.next()))

cipher = chars(t)

result += cipher

block = bits(src.read(7))

else:

with open(inf, 'rb') as src:

block = src.read(7)

while block:

result += chars(scramble(block, hat.next()))

block = src.read(7)
with open(outf, 'wb') as dest:

dest.write(md5(key).hexdigest() + md5(result).hexdigest() + mode +

result)
print u'Шифрование успешно завершено'

def decrypt(inf, key, outf):

""" Расшифровка, по аналогии, но режим шифрования определяется по файлу.

Сначала проверяем хеши паролей и шифротекста. Потом определяем

режим шифрования (cfb/ecb) и расшифровываенм.
"""

print u'Начинается расшифровка'

hat = PRNG(key)

result = ''
with open(inf, 'rb') as src:

if not md5(key).hexdigest() == src.read(32):

print u"Неверный пароль!"

return 0
_hash = src.read(32)

mode = src.read(3)

print u'Режим расшифровки: ' + mode

if _hash == md5(src.read()).hexdigest():

print u"Целостнось шифротекста в норме."

else:

print u"Тело сообщения повреждено!"

# return 0
src.seek(67)

block = src.read(7)

if mode == 'ecb':

while block:

result += chars(scramble(block, -hat.next()))
block = src.read(7)

else:

cipher = '1111111'

while block:
t = scramble(cipher, hat.next())
cipher = block
result += chars(sxor(bits(block),t))

block = src.read(7)




print u'Расшифровка завершена!'
with open(outf, 'wb') as dest:

dest.write(result)

if __name__ == '__main__':

pass

Добавить документ в свой блог или на сайт

Похожие:

«ульяновский государственный технический университет» Кафедра «Вычислительная техника» icon«ульяновский государственный технический университет» Кафедра «Вычислительная техника»
Сформировать познавательный интерес к содержанию учебного материала помочь выработать у студентов стремление к самостоятельной работе...
«ульяновский государственный технический университет» Кафедра «Вычислительная техника» iconСтруктурный синтез гетерогенных подсистем обработки информации в...
Работа выполнена на кафедре «Вычислительная техника» Федерального государственного бюджетного образовательного учреждения высшего...
«ульяновский государственный технический университет» Кафедра «Вычислительная техника» iconФакультет авт кафедра «Вычислительная техника»

«ульяновский государственный технический университет» Кафедра «Вычислительная техника» iconПрограмма разработана в соответствии с: Федеральному Государственному...
Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов для направления 230100. 68...
«ульяновский государственный технический университет» Кафедра «Вычислительная техника» iconУльяновский государственный технический университет
«Программная инженерия» магистерская программа «Методы и средства разработки программных систем» на кафедре «Информационные системы»...
«ульяновский государственный технический университет» Кафедра «Вычислительная техника» icon«ульяновский государственный технический университет» Администрация...
Цель: создание педагогических условий для формирования общих компетенций студентов педагогического колледжа
«ульяновский государственный технический университет» Кафедра «Вычислительная техника» iconФгбоу впо «Брянский государственный технический университет» Факультет энергетики и электроники
Профиль (магистерская программа, специализация): «Промышленная электроника и микропроцессорная техника»
«ульяновский государственный технический университет» Кафедра «Вычислительная техника» iconПермский Государственный Технический Университет Кафедра государственного...
План
«ульяновский государственный технический университет» Кафедра «Вычислительная техника» iconУчебной дисциплины
Фгос) по профессии начального профессионального образования (далее нпо), входящей в состав укрупненной группы профессий 230000 Информатика...
«ульяновский государственный технический университет» Кафедра «Вычислительная техника» iconРабочая программа учебной дисциплины Основы алгоритмизации и программирования...
Фгос нпо, входящей в состав укрупненной группы профессий 230000 Информатика и вычислительная техника, по направлению подготовки 230100...
«ульяновский государственный технический университет» Кафедра «Вычислительная техника» iconРеферат по дисциплине «Введение в специальность»
...
«ульяновский государственный технический университет» Кафедра «Вычислительная техника» iconУчебно-методический комплекс дисциплины культурология федеральное...
«Дальневосточный государственный технический университет (двпи им. В. В. Куйбышева)» в г. Петропавловске-Камчатском
«ульяновский государственный технический университет» Кафедра «Вычислительная техника» iconУчебно-методический комплекс дисциплины социология федеральное агентство...
«Дальневосточный государственный технический университет (двпи им. В. В. Куйбышева)» в г. Петропавловске-Камчатском
«ульяновский государственный технический университет» Кафедра «Вычислительная техника» iconПермский Государственный Технический Университет Кафедра мкмк курсовая работа
Задача о бесконечной ортотропной пластинке с эллиптическим отверстием. Анализ ндс вблизи отверстия
«ульяновский государственный технический университет» Кафедра «Вычислительная техника» iconПрограмма учебной ди c циплины основы информационных технологий правительство...
Фгос) по профессии начального профессионального образования (далее нпо) входящей в состав укрупненной группы профессий 230000 Информатика...
«ульяновский государственный технический университет» Кафедра «Вычислительная техника» iconМетодические указания по выполнению реферата Волгоград
Ысшего профессионального образования «волгоградский государственный технический университет» камышинский технологический институт...


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск