Перейти к содержанию

Закодированная Передача Данных


Рекомендуемые сообщения

Здравствуйте! Помогите пожалуйста с реализацией алгоритма защищенного канала связи, задача и блок схема такая:

1. Приемник шлет передатчику сообщение, что он хочет начать процедуру авторизации (по сути абсолютно любое сообщение, например сигнатуру).

2. Передатчик генерирует случайную последовательность байт (например 8 байт, один блок шифрования) и предает эти данные приемнику (сами данные он сохраняет в памяти как «исходные»).

3. Приемник шифрует полученный блок данных и отправляет обратно, передатчику.

4. Передатчик расшифровывает полученные данные и сравнивает с «исходными». Если данные совпадают – авторизация прошла успешно.

Помогите пожалуйста,написать алгоритм шифрования или помогите пожалуйста с литературой,исходниками. Если кому не жалко. В программировании новичок и в криптографии тоже. Пыталась реализовать задумки по программному кейлогу,найденной информацией из интернета,также aes и des. Среда разработки coocox,микроконтроллер stm32f100rbt6,rfm22 радиомодуль,частота передачи 433МГЦ,тактовая частота 24МГц. Буду очень благодарна за помощь.

post-191470-0-66285700-1433235038_thumb.png

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

keeloq давно взломан

Зачем писать ерунду. Никто его не ломал. Ломали контроллеры, доставая из памяти ключи шифрования. Ломать агоритм нет смысла, он и так в открытом доступе.

Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Что у Вас закрытый ключ делает на обоих сторонах ?

делать нужно так: инициатор передачи данных генерит два ключа - закрытый и открытый. приемнику шлет открытый . приемник генерит ключ шифрования - шифрует его открытым ключом (например при помощи RSA) и отправляет его передатчику. Передатчик расшифровывает ключ шифрования с помощью закрытого ключа и ключом шифрования шифрует отправляемое сообщение (например по DES). Таким образом ключи каждый раз разные и в программе нигде ключ никакой хранить не нужно. Этот метод не решает задачу аутентификации - в этом случае нужно применить ЭЦП - что потребует в кого то зашить закрытый ключ.

Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Все автосигнализации на keeloq бесполезные и легко открываются - так проще?

Если нет защиты, то зачем кодировать? От ложного срабатывания? :)

Изменено пользователем strifonoff
Ссылка на комментарий
Поделиться на другие сайты

Для иллюстрации работы алгоритма к статье прикреплена простая реализация ГОСТ 28 147-89 (DES)

Приведенная реализация алгоритма шифрования состоит всего из трех функций.

void kboxinit(void) –данная функция «инициализирует» криптоядро. На самом деле, она выполняет некоторые предвычисления, которые позволяют в дальнейшем ускорить шифрование/дешифрование.

void gostcrypt(const uint32_t in[2], uint32_t out[2], const uint32_t key[8]) – шифрование, in – открытый текст, out – закрытый текст, key – ключ шифрования.

void gostdecrypt(uint32_t const in[2], uint32_t out[2], uint32_t const key[8]) – дешифрование, in – закрытый текст, out – открытый текст, key – ключ шифрования.

Лучше всего продемонстрировать работу на примере

uint32_t key[8] = {0x11111111, 0x22222222, 0x33333333, 0x44444444, 0x55555555, 0x66666666, 0x77777777, 0x88888888};

uint32_t plain[2] = {0xAAAAAAAA, 0xBBBBBBBB};

uint32_t cipher[2];

uint32_t result[2];

//Инициализация "крипторядра"

kboxinit();

//Шифруем plain ключом key, результат шифрования помешаем в cipher

gostcrypt(plain, cipher, key);

//Дешифруем cipher ключом key, результат шифрования помешаем в result

gostdecrypt(cipher, result, key);

//Проверяем результат работы алгоритма, сравниваем исходный текст с расшифрованным

if(memcmp(plain, result, sizeof(plain)) != 0) {

printf("encrypt/decrypt error\n");

} else {

printf("encrypt/decrypt success\n");

}

Вопрос задам по точнее,как записать общий ключ в микроконтроллеры? Какие библиотеки нужно подключить? Сделать отдельные файлы для подключения или в main можно все прописать?

Что у Вас закрытый ключ делает на обоих сторонах ?

делать нужно так: инициатор передачи данных генерит два ключа - закрытый и открытый. приемнику шлет открытый . приемник генерит ключ шифрования - шифрует его открытым ключом (например при помощи RSA) и отправляет его передатчику. Передатчик расшифровывает ключ шифрования с помощью закрытого ключа и ключом шифрования шифрует отправляемое сообщение (например по DES). Таким образом ключи каждый раз разные и в программе нигде ключ никакой хранить не нужно. Этот метод не решает задачу аутентификации - в этом случае нужно применить ЭЦП - что потребует в кого то зашить закрытый ключ.

Спасибо,что заметили ошибку,блок схему переделаю. Изменено пользователем V_IMA
Ссылка на комментарий
Поделиться на другие сайты

Программный кейлог,проблема с подключением библиотек,заменой в coocox

#include <stdio.h>

#include <stdint.h>

#include <stdlib.h>

#include <string.h>

#include <sys/select.h>

#include <errno.h>

#include <unistd.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <math.h>

#include "keeloq.c"

//set modulation depth here

float l_zero= 0.;

float l_one = 1.;

void delay_ms(int fd,unsigned int sr,unsigned int t )

{

unsigned long count = sr*(double)t/1000.;

while(count-- >0) write(fd,&l_zero,sizeof(float));

}

//outputs a stream of floats at given sample rate to be used for ASK or FSK modulation in gnuradio

void transmit(int fd, unsigned int sr, uint8_t *outcode, uint8_t outcodelen)

{

unsigned int te = .0004*sr; //basic pulse element

int i,j;

float *l_zero_array = malloc(te*sizeof(float));

float *l_one_array = malloc(te*sizeof(float));

for(i=0; i<te; ++i) l_zero_array=l_zero;

for(i=0; i<te; ++i) l_one_array=l_one;

//preamble

for(i=0; i<12; ++i)

{

write(fd,l_zero_array,te*sizeof(float));

write(fd,l_one_array,te*sizeof(float));

}

//header

for(i=0; i<10; ++i) write(fd,l_zero_array,te*sizeof(float));

//pwm encoded bits

uint8_t obitcount=0, obytecount=0;

for(i=0; i<=outcodelen; ++i)

{

unsigned char bit = outcode[obytecount]& (1<<obitcount);

write(fd,l_one_array,te*sizeof(float));

if(i==outcodelen) break;

write(fd,bit?l_zero_array:l_one_array,te*sizeof(float));

write(fd,l_zero_array,te*sizeof(float));

if(++obitcount==8) {obitcount=0;++obytecount;}

}

free(l_zero_array);

free(l_one_array);

}

int main(int argc, char **argv)

{

if(argc!=2) {fprintf(stderr,"Usage: %s outputfile\n",argv[0]); exit(1);}

int fd ;

fd=open(argv[1],O_WRONLY|O_CREAT,0777);

if(fd<0) {perror("cannot open output file"); exit(errno);};

#define MAXOUTCODELEN 256

uint8_t outcode[MAXOUTCODELEN];

uint8_t outcodelen;

KEELOQ_CODE keeloq_crypt=0x123456789abcdef0LL;

//encrypt something

{

uint16_t counter=1111;

outcode[0]=counter&0xff;

outcode[1]=counter>>8;

outcode[2]=0x78;

outcode[3]=0x23;

encrypt((uint32_t *)outcode,&keeloq_crypt);

outcode[4]=0x53;

outcode[5]=0x4d;

outcode[6]=0x08;

outcode[7]=0x20;

outcode[8]=0x02;

outcodelen=65;

}

int i;

printf("TX code: ");

for(i=0; i<9; ++i) printf("%02x ",outcode);

printf("\n");

unsigned int sr=50000; //sampling rate

//just a test - transmit constant data repeatedly

while(1)

{

transmit(fd,sr,outcode,65);

delay_ms(fd,sr,500); //every 500 ms

}

close(fd);

}

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...