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

V_IMA

Members
  • Постов

    3
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные V_IMA

  1. Программный кейлог,проблема с подключением библиотек,заменой в 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);

    }

  2. Для иллюстрации работы алгоритма к статье прикреплена простая реализация ГОСТ 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). Таким образом ключи каждый раз разные и в программе нигде ключ никакой хранить не нужно. Этот метод не решает задачу аутентификации - в этом случае нужно применить ЭЦП - что потребует в кого то зашить закрытый ключ.

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

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

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

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

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

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

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

×
×
  • Создать...