МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра «Захист інформації»
/
КУРСОВА РОБОТА
з дисципліни:
«Мікропроцесори в системах технічного захисту інформації»
на тему:
«Проектування та програмування мікроконтролерних пристроїв захисту інформації»
Варіант № 14
Зміст
1. Вступ.........................................................................................................................3
2.Завдання.....................................................................................................................4
1. Схема електрична принципова ..............................................................................5
2. Розрахунок схеми.....................................................................................................6
3. Лістинг програми.....................................................................................................7
4. Результат симуляції в середовищі Proteus...........................................................12
5. Специфікація елементів схеми.............................................................................13
6. Висновок.................................................................................................................14
7. Список літератури..................................................................................................15
ВСТУП
Серед десятків сімей мікроконтролерів, які випускають в наш час, особливо виділяються мікроконтролери сім’ї AVR фірми Atmel. Високі технічні характеристики, мала споживана потужність та низька вартість зумовили їх широку популярність у світі й, зокрема, в Україні. Зростанню популярності також сприяла наявність розвинених і недорогих інструментальних і програмних засобів розроблення та налагодження. Все це дає змогу розглядати мікроконтролери AVR як промисловий стандарт серед 8-розрядних мікроконтролерів.
Основна сфера застосування цих мікроконтролерів – це різноманітні системи автоматизації, управління і вимірювання. Широко використовуються мікроконтролери AVR і для побудови охоронних сенсорів та сигналізацій, систем контролю доступу, детекторів поля та іншої спеціалізованої апаратури. Для задач, у яких вимоги до захисту інформації особливо високі – смарт-карти, електронна комерція, автентифікація користувачів, шифрування даних, фірма Atmel пропонує спеціалізовані мікроконтролери – зокрема, сім’ї SecureAVR, які поєднують звичайне AVR-ядро з додатковими модулями для підтримки криптографічних операцій та підвищення фізичної захищеності мікросхем до різного роду атак. Вивчення мікроконтролерів AVR забезпечує додаткові переваги спеціалістам з інформаційної безпеки.
Завдання
Скласти електричну принципову схему і написати програму для функціонування вимірювальної частини технічної системи захисту інформації, структурна схема якої представлена на рис. 1.
/
Рис. 1. Структурна схема проектованої СТЗІ
Система здійснює оцифрування вхідного аналогового сигналу Vin з заданою частотою дискретизації Fd. Отримані дані шифруються за заданим алгоритмом і записуються в мікросхему енегронезалежної EEPROM – пам‘яті та передаються через інтерфейс RS232 з заданною швидкістю R.
Таблиця 1
Параметри типової СТЗІ
Варіант
Діапазон
вхідного
сигналу Vin, В
Частота
дискретизації
Fd, Гц
Алгоритм шифрування
Мікросхема EEPROM-пам‘яті
Швидкість передачі R, біт/сек
14
0 ...0.5
5
XTEA
24FC512
(65536x8 біт
I2C Serial
EEPROM)
4800
Схема електрична принципова
/
Рис.2. Схема електрична принципова
2. Розрахунок схеми
Джерелом струму є дві алкалайнові батареї . Отже для живлення нашої схеми доцільно використати мікросхему Step-Up стабілізатора LTC3525-5, спеціально призначену для живлення портативної апаратури від батарей та акумуляторів.
Розрахунок Step-Up стабілізатора LTC3525-5.
/
Рис. 3. Схема Step-Up стабілізатора LTC3525-5
На виході нашого стабілізатора ми отримуємо напругу Vout =5 В. На вхід стабілізатора подається напруга Vbat = 3 В.
Розрахунок кола підсилення, масштабування та фільтрації
Кола масштабування та підсилення повинні забезпечити, щоб діапазон вхідного сигналу АЦП відповідав діапазону перетворення АЦП. Коло фільтрації повинне забезпечити виконання умов теореми Котельникова та ослабити шуми і завади.
Діапазон перетворення АЦП становить 0 ... Vref, де Vref – опорна напруга. Я використав мікроконтроллер ATmega16 з вбудованим АЦП. Опорна напруга 5 В подається через вхід AVCC , отже діапазон перетворення АЦП 0 .. 5
Діапазон вхідного сигналу – 0 ... 0.5 В, отже нам перед передачею сигналу на АЦП необхідно його підсилити в 10 разів. Використовуємо підсилювач напруги на базі ОП (TLV2252IDR) з неінвертуючим включенням.
/
Рис. 3. Схема неінвертуючого включення операційного підсилювача
Коефіцієнт підсилення К = 1+ (R3/R2). Для К = 10, R3 = 180 кОм, R2 =20 кОм.
Для виконання теореми Котельникова я використовую пасивний фільтр нижніх частот першого порядку. Частота дискретизації фільтра Fd = 2 * Fmax, Fd = 5 Гц , тоді Fmax = 2,5 Гц. Отже fзр = 2,5 Гц.
, R1 = 20 кОм, С1 = 3.3 мкФ.
3. Лістинг програми
Програма здійснює перетворення аналогового сигналу в цифровий, шифрування його за алгоритмом ТЕА і передачу через UART.
#include <mega16.h>
#include <delay.h>
#include <stdio.h>
#include <crypto.c>
#include <stdlib.h>
/* now you can include the I2C Functions */
#include <i2c.h>
#define FOSC 7372800 // Тактова частота
#define BAUD 4800 // Необхідна швидкість передачі USART
#define MYUBRR 95 // FOSC/16/BAUD-1
#define N_1 1439 // Значення, записане в регістр порівняння OCR1A
// береться з формули N=Fosc/fd/1024-1
#define EEPROM_BUS_ADDRESS 0xa0// згідно datasheet
// Прототипи функцій.
void Init(void);
void eeprom_write(uint8_t* data);
void USART_Init(uint16_t);
uint16_t strt_addr=0;
uint16_t ADC_Data[4]; // масив для данних з АЦП
uint16_t Enc_Data[4]; //маств данних для шифрування
uint16_t Dcr_Data[4]; //масив даних для данних після шифрування
uint8_t Buffer_Full_flag=0;
uint8_t Sample_Cnt=0;
uint8_t Byte_Cnt;
uint8_t* Ptr_8bit = (uint8_t*)&Dcr_Data;//вказівник на адресу зашифрованих даних
// Переривання
interrupt [USART_DRE] void usart_int (void)
{
UDR = *Ptr_8bit++; // відправити шашифровані дані з масиву Dcr_Data через USART
Byte_Cnt++;
if( Byte_Cnt == 8 )
{
Byte_Cnt = 0;
Ptr_8bit = (uint8_t*)&Dcr_Data;
UCSRB = UCSRB&(~(1<<UDRIE));
}
}
// Підпрограма обробки переривання при співпадінні OCR1A і регістра лічби
interrupt [TIM1_COMPA] void timer1_ovf_isr(void)
{
ADCSRA|=(1<<ADSC); //Зробити одне ADC.
}
// Обробка по закінченню ADC
interrupt [ADC_INT] void adc_isr(void)
{
ADC_Data[Sample_Cnt++] = ADCW;
if(Sample_Cnt==4)
{
Buffer_Full_flag=1;
Enc_Data[0]= ADC_Data[0]; // 0x4344;
Enc_Data[1]= ADC_Data[1]; // 0x4142;
Enc_Data[2]= ADC_Data[2]; // 0x4748;
Enc_Data[3]= ADC_Data[3]; // 0x4546;
Sample_Cnt=0;
}
}
void main(void)
{
uint32_t key[4] = { 0x00010203, 0x04050607, 0x08090a0b, 0x0c0d0e0f };
Init(); // Ініціалізація таймера1, i2c , uart і ADC.
#asm("sei") // Дозволити переривання в програмі.
while (1)
{
if( Buffer_Full_flag == 1 )
{
xtea_encipher((uint32_t*)Enc_Data, key); //виклик функції зашифрування
Dcr_Data[0]=Enc_Data[0];
Dcr_Data[1]=Enc_Data[1];
Dcr_Data[2]=Enc_Data[2];
Dcr_Data[3]=Enc_Data[3];
Buffer_Full_flag=0;
UCSRB = UCSRB|(1<<UDRIE);
eeprom_write((uint8_t*)Dcr_Data);
}
}
}
// Функції!!!
void Init (void) // Ініціалізація таймера т1 і ADC.
{
// ADC.
SFIOR=0x00; //тут нулі бо додаткові функції(такі як неінвертувальний
// аналогоаий компаратор)нам не потрібні !
ADMUX = (1<<MUX0)|(1<<REFS0);
ADCSRA=(1<<ADEN)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1);
// Частота роботи ADC задалася ADPS2 і ADPS1 тобто FOSC\4 = 115.200 kHz,
// зовнішнє джерело опорної напруги на AREF, режим однократного запуску вимірювань .
USART_Init ( MYUBRR ); // Ініціалізація USART.
/* initialize the I2C bus */
i2c_init();
// Таймер T1.
// Занести в регістр порівняння таймера Т1 розраховану константу N
OCR1A = N_1;
// Запустити таймер Т1,задати DIV=1024, скидання TCNT1 в ноль при співпадінні
TCCR1B = (1<<WGM12) | (1<<CS12) | (1<<CS10);
// Дозволити переривання від таймера Т1 в режимі порівняння
TIMSK = (1<<OCIE1A);
}
void USART_Init(uint16_t ubrr) // Ініціалізація USART.
{
/* Set baud rate */
UBRRH = (uint8_t)(ubrr>>8);
UBRRL = (uint8_t)ubrr;
/* Enable receiver and transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Set frame format: 8data, 2stop bit */
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
}
/* write a byte to the EEPROM */
void eeprom_write(uint8_t* data) {
uint8_t i;
for(i=0;i<8;i++)
{
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write((strt_addr>>8));
i2c_write((unsigned char)strt_addr);
i2c_write(data[i]);
i2c_stop();
/* 5 ms delay to complete the write operation */
delay_ms(5);
strt_addr++;
}
}
crypto.c
#include <stdint.h>
void xtea_encipher(uint32_t *v, uint32_t const *k)
{
uint8_t i;
uint32_t v0=v[0], v1=v[1], sum=0, delta=0x9E3779B9;
for (i=0; i < 32; i++)
{
v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]);
sum += delta;
v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]);
}
v[0]=v0; v[1]=v1;
}
void xtea_decipher(uint32_t *v, uint32_t const *k)
{
uint8_t i;
uint32_t v0=v[0], v1=v[1], delta=0x9E3779B9, sum=delta*32;
for (i=0; i < 32; i++)
{
v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]);
sum -= delta;
v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]);
}
v[0]=v0; v[1]=v1;
}
4. Результат симуляції в програмі Proteus
//
Рис. 4. Результат симуляції в програмі Proteus
5. Специфікація елементів схеми
Специфікація
№
К-ть
Позначення
Опис
Маркування
Виробник
Корпус
Номінал
Резистори
1
1
R1,R6
SMD-резистор, 5%, 0.125 Вт
Any
Any
0805
20кОм
2
1
R2
SMD-резистор, 5%, 0.125 Вт
Any
Any
0805
2.2МОм
3
3
R3, R4
SMD-резистор, 5%, 0.125 Вт
Any
Any
0805
10кОм
4
1
R5
SMD-резистор, 5%, 0.125 Вт
Any
Any
0805
180кОм
Конденсатори
5
1
С1,С2
SMD-конденсатор, 10%, 16В
Any
Any
0805
3.3мкФ
6
1
С3
SMD-конденсатор, 10%, 16В
Any
Any
0805
10мкФ
7
2
С4, С5
SMD-конденсатор, 10%, 16В
Any
Any
0805
22пФ
8
3
С6, С7, С8
SMD-конденсатор, 10%, 16В
Any
Any
0805
100нФ
Мікросхеми
9
1
U1
Мікроконтроллер
ATmega16
Atmel
44-QFP
10
1
U2
Мікросхема EEPROM- пам’яті
24AA256
Microchip
11
1
U5
Перетворювач рівнів
MAX232
Atmel
12
1
J1
Роз‘єм CONN-D9F
Any
Any
13
1
DA1
Операційний підсилювач
TLV2252IDR
Texas
Instruments
SOIC-8
14
1
U4
Cтабілізатор Step-Up 5 В
LTC3525-5
Linear Technology
10-QFN
Решта
15
2
L1,L2
SMD-індуктивність, 20%, 1.65 А
Any
Any
0805
10мкГн
6. Висновок
На даний момент йде активний розвиток науки і техніки, і разом з ними розвиваються системи для здобуття інформації та системи технічного захисту інформації.
Мікропроцесори в системах технічного захисту інформації відіграють що далі то більшу і більшу роль, оскільки іхні потужності та можливості постійно зростають, а розміри зменшуються.
В цьому курсовому проекті я реалізував пристрій на базі мікроконтроллера AVR ATmega16 , котрий зчитує аналоговий сигнал з джерела, оцифровує його, потім кодує за допомогою алгоритму шифрування XТЕА і передає зашифроване значення через інтерфейс RS232.
7. Список літератури
1. Проектування та програмування мікроконтролерних пристроїв захисту інформації // Методичні вказівки до розрахункової роботи з курсу «Мікропроцесори в системах технічного захисту інформації» для студентів напряму 6.170102 «Системи технічного захисту інформації» / Укл. Я. Р. Совин – Львiв: Національний університет "Львівська політехніка", 2013. – 17 с.
2. Побудова охоронних систем з GSM-сигналізацією на AVR-мікроконтролерах.
Знайомство з середовищем CodeVisionAVR // Методичні вказівки до лабораторної роботи No 4 з курсу «Мікропроцесори в системах технічного захисту інформації» для студентів напряму 6.170102 «Системи технічного захисту інформації» / Укл. Я. Р. Совин, М. Ю. Стахів – Львiв: Національний університет "Львівська політехніка", 2010. – 22 с.
3. Побудова інфрачервоних детекторів руху на AVR-мікроконтролерах // Методичні вказівки до лабораторної роботи No 3 з курсу «Мікропроцесори в системах технічного захисту інформації» для студентів напряму 6.170102 «Системи технічного захисту інформації» / Укл. Я. Р. Совин, М. Ю. Стахів - Львiв: Національний університет "Львівська політехніка", 2010. - 15 с.
4. Евстифеев А. В. Микроконтроллеры AVR семейства Classic фирмы «ATMEL». – М. Издательский дом “Додэка-ХХI”, 2002. – 288 с.