아학아학 444

Invasive Attack

금번에 세미나를 다녀왔습니다. 주제중에서 Invasive Attack(Invasive Attack, Semiinvasive attack, Non invasive attack)과 관련된 내용이 있었는데 클럭 어택과 관련한 내용이 흥미로웠습니다.(연구하시는 분들은 예전부터 알고 계셨겠지만 전 처음이었습니다.) X-TAL의 클럭 입력에서 클럭에 노이즈를 넣으면(한 클럭이 들어가야하는 데 클럭 노이즈를 실어서 2클럭을 집어넣는 경우 같은) 명령어를 뛰어넘어서 처리하는 경우가 있다는 설명이었습니다. 대표적인게 if, else 구문인데요. 편하게 8비트 어셈인 PIC로 비교하면 f레지스터의 비트 b가 0이면 GOTO exit로 가고 그렇지 않으면 GOTO loop로 가는 명령이 있습니다. if else로 프로그램으..

STM32L4 ADC Low Layer Driver

Low Layer Driver을 사용한 ADC 들어오는 ADC 값의 움직임을 크게 주기 위해 샘플링 주기를 짧게 가져왔습니다.(LL_ADC_SAMPLINGTIME_2CYCLES_5) int main(void) { uint32_t nBuf[128]; uint8_t i; /* Configure the system clock to 80 MHz */ SystemClock_LLConfig(); /* ADC Configuration */ ADC_Configuration(); while(1){ GetADC1(chBuf); for(i = 0; i< 11; i++){ UART1_printf("ADC0 =%02X \r\n", chBuf[i]); } } } #include "math.h" #include "usr_adc.h..

WWDG에서 Watchdog 발생시 클리어 처리

WWDG에서 Watchdog 발생시 클리어 처리 WWDG 사용중에 특정 목적에서는 WWDG가 동작하지 않아야하는데 이런 목적으로 사용할 경우 인터럽트에서 클리어 처리 해주어야 합니다. WWDG나 IWDG는 동작하도록 한번 설정을 하면 플래그에 다시 사용히자 않도록 설정을 하여도 되지 않습니다. 이럴 때를 위해서 인터럽트과 인터럽트가 아닌 곳에서 처리하도록 양쪽에 처리를 하였습니다. (STM32L432에서 구현된 부분) 메인 .c tFunc_Typedef Func_Operate[] = { /* Random Source */ // {GenRandom, "GetADC", 0}, /* UART */ {GetuPacket, "GetUartPacket", 0}, /* SPI */ {GetsPacket, "GetSP..

MAXIM사의 Max3xxxx

Maxim사의 MAX3xxxx 칩입니다. Maxim을 선택한 이유는 RSA 키 생성이 하드웨어로 되어있어 생성 가능하다는 부분이 매력적이었습니다. Big Integer 소수를 MCU급에서 생성한다는 게 너무 어렵습니다. (사실 돌려봤었는데 십여분 기다리다가 생성이 안되서 포기했습니다. 사용하는 유저가 몇초만 기다려도 너무 오래걸린다고 생각하는데 분단위로도 생성이 안된다니!!! - 도어락 개발할 때 문 열릴 때 모터 돌아가는 그 몇초도 길다고 생각해서 멜로디를 넣어 체감시간을 다른 방향으로 돌렸는데 말이죠.) 이 소수 생성기는 추후에 동형 암호에 사용하려고 생각하고 있습니다. (이 MCU에서 별도로 소수 생성 부분만 빼줄 수 있도록 내부 로직이 설계되어 있다면요...) Maxim의 컴파일러는 대부분의 무료..