Secure RemoBot Control

Slides:



Advertisements
Similar presentations
Number Recognizer. Team 이성우 컴퓨터소프트웨어학과 조윤성 전자통신공학과
Advertisements

암호 알고리즘을 이용한 “ 단문 암호화 프로그램 ” 제작 주제탐구학습발표대회 발표자료 교과영역학교학년성명 수학하안초등학교 6 윤승환 지도교사 : 김 지 민 선생님 경기도광명교육지원청부설영재교육원.
옴니아 2 무선 인증 매뉴얼 ( 윈도우 모바일 폰 설정 동일 ). ▶다음 화면은 옴니아 2 및 윈도우모바일을 사용하는 스마트폰 기기들의 무선인증을 하기 위한 화면입니다. ▶윈도우 모바일폰의 경우 무선인증서를 발급받기 위해 폰의 레지스트리 설정을 조정해 주어야 합니다.
순천향대학교 정보보호연구회 김현민 DES (Data Encryption Standard)
I. 프로젝트 동기 II. 프로젝트 목표 III. 파일시스템 IV. 암호화 및 복호화 V. 인터페이스 VI. FBR READ/WRITE VII. 프로그램 흐름도 VIII. 미 구현 사항 IX. 프로젝트 기대효과 X. 프로그램 요구사항 및 팀원 역할분담 XI. 시연 XII.
HTTPS Packet Capture Tutorial
Mobile 모바일 싱크 기반 무선 센서 네트워크 류재희, 이호성, 김소영.
일반 요구 사항 비즈니스 요구사항 고객/정보/위치/상태 탐색방법 제품/서비스 홍보 및 광고 방법
캡스톤 디자인 이해경 조나라.
해시 함수.
SQL Injection Member 최병희, 김상우, 조용준, 유창열.
암호화 기술 SSL와 IPSec의 개요 및 동작과정
Chapter 3 Symmetric Key Crypto
연결리스트(linked list).
제 9 장 구조체와 공용체.
DES (Data Encryption Standard)
교과목 소개 정보보호.
암호학 응용 Applied cryptography
File Depender 중간 발표.
07. 디바이스 드라이버의 초기화와 종료 김진홍
공개키 암호화 프로그래밍 전자상거래보안.
23 장 OSI 상위계층 23.1 세션(session)층 23.2 표현(presentation)층
DES를 이용한 GPS 위치 정보 암호화 송신 2조 김민수 문형진 안인석 조우람.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
Error Detection and Correction
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
23장. 구조체와 사용자 정의 자료형 2.
Chapter 6 Contemporary Symmetric Ciphers
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
프로그래밍 랩 – 7주 리스트.
TCP/IP Socket Programming…
Method & library.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
Transmission & Analysis
발표자 : 노수현 조원 : 장종훈,유창열,김범용 전인철,김세원
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
Device Driver 임베디드 시스템 I.
웹어플리케이션보안 암호프로그래밍, crypto-js
자바스크립트 암호 프로그래밍 Javascript Cryptography Programming
22 장 전송층(Transport Layer)
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
24장. 파일 입출력.
전자서명의 형태 수기서명 디지털서명. 전자서명의 형태 수기서명 디지털서명 전자서명의 필요성.
Lab 1 Guide: 교재 2장 DrawX ( 쪽)
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
뇌를 자극하는 Windows Server 장. 원격 접속 서버.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
자율주행 차량용 드라이빙 컴퓨팅 하드웨어 플랫폼 05
3D 프린팅 프로그래밍 01 – 기본 명령어 강사: 김영준 목원대학교 겸임교수.
8장 쿠키와 세션 한빛미디어(주).
자바 가상 머신 프로그래밍 Chap 10. 자바 컴파일링의 안쪽 ② Pslab 오민경.
15강. 폼 데이터 값 검증 Validator를 이용한 검증 ValidationUtils 클래스
2 네트워크 모델 학습 목표 모듈 개념을 알아보고 계층 구조의 필요성을 이해한다.
비대칭 암호화 알고리즘 공개키 암호화 알고리즘 소속 : 한세사이버보안고등학교 조장 : 안도현
Fucntion 요약.
VHDL를 이용한 DES 설계 정보통신컴퓨터공학부 5조 김인옥, 백미숙
SSL, Secure Socket Layer
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
Level 0 Level 1 Level 2 Level 3 공모전 후기 모음 웹 서비스 1. 웹 페이지 설계 2. 웹 서버 구현
MEGA8_XBee CPUPLAZA
DK-128 개발환경 설정 아이티즌 기술연구소
오라클 11g 보안.
컬럼 대칭키 암호화 작업(SQL 2008) ① 마스터 키 생성 ② 인증서 생성 초기 한번만 실행 ③ 대칭키 생성
컴퓨터공학과 손민정 Computer Graphics Lab 이승용 교수님
제 4 장 Record.
암호 시스템 (Crypto system) 신효철
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
 6장. SQL 쿼리.
CODE INJECTION 시스템B 김한슬.
6 객체.
Presentation transcript:

Secure RemoBot Control SEA 암호모듈을 이용한 보안형 원격 이동체 제어 이동은 emapas@empas.com 2007 Feb 23

Remobot 보안 통신 구현 개요 유/무선통신 기술의 발전으로 수많은 정보 소통이 이뤄지고 있지만 많은 경우 보안에 대한 고려가 전혀 없거나 취약한 보안으로 구성된 경우가 많다. 유비쿼터스시대로의 진입에 있어 보안은 선택이 아닌 필수 요건이 되어야 한다. 점차 개인화 다중화 되는 정보 교류에 있어서 보안이 없다면 편리함 보다 그 위험성이 더욱 크다 할 수 있다. 본 장에서는 데이터 보안 통신을 Remobot 원격제어에 응용한 사례에대해 소개하고자 한다. SEA (Simple Encryption Algorithm)에 대한 간단한 소개와 TinyOS에서의 실제 구현모듈인 Exor모듈의 구성과 작동에 대해 소개하고자 한다.

센서노드와 보안 노드간의 전달 정보는 RF전송되므로 스케닝 후 해석 및 재 가공하여 발신 가능 권한이 없는 사람이 임의의 명령을 호출할 수 있다. (가령 출입구 open명령을 스캐닝 후 재발송하여 무단 침입 가능) 보안기능이 필수적으로 요구됨.

Cryptography 암호화 기능의 구현은 어렵다? :일반적으로 암호기법의 이해와 관련 API의 이용은 난해한 편이다. 암호키의 길이나 메시지 크기의 제약이있다. 세부적인 알고리즘 원리가 기밀사항인 경우가 많다(back door key 존재 가능성)

TinyOS 와 보안 보통 보안모듈은 많은 계산을 요구하게되는데 센서노드의 경우 매우 제한적인 자원만을 이용해야하는 제약을 갖고있다. TinyOS에도 TinySec 등의 보안관련 모듈을 제공한다. TinySec의 기본 암호모듈의 예 - SkipJack ; 80bit key/ 64bit data length 알고리즘은 미 정부의 기밀 사항.

SEA (Simple Encryption Algorithm) 키 길이의 제한이 없다 :가변 키길이 및 가변 메시지 폭. 키길이를 가변적으로 조절할 수 있으므로 암호화 강도 및 계산비용을 필요에따라 조정할 수 있다. 암호화 및 복호화 연산이 동일 하나의 메인키로부터 파생된 서브키를 이용하여 유사 OTP를 생성하여 암호화에 이용 (암호방식은 OTP와 동일하다.) 알고리즘 선택형( 특정 알고리즘에 의존하지 않음) :유사 OTP생성을 위해 SHA1-160 같은 Secure Hash Algorithm이나 Cipher Algorithm을 선별적으로 사용할 수 있다. 다양한 확장성 :기본 원리가 매우 단순하고 파일 암호화 및 스트림 통신 등의 모든 방식으로의 응용 및 확장 개발이 용이하다.

SEA 구성도 Subkey Spare Module OTP 암호화 OTP 복호화 SHA1 가상 OTP 생성기 = mainkey + indexkey … TEA SEED RJINDAEL SHA256 Spare Module … SHA1 Protocol 정의 가상 OTP 생성기 OTP 생성을 위한 삽입 모듈은 용도에 적합하게 선별적으로 이용가능 XOR OTP 암호화 Cipher text Plain text OTP XOR연산기 :암호화 모듈과 복호화 모듈이 동일하다. XOR OTP 복호화 Plain text Cipher text

SEA 의 nesC 구현모듈을 위한 interface /** * Exor.nc ; 본 파일은 ExorM 모듈이 제공하는 인터페이스 정의입니다. * 참고로, SEA의 nesC 구현 모듈의 이름은 ExorM입니다. * **/ interface Exor { * sha1 method ; OTP생성을위해 SHA1 Hashsum을 이용. 다른 hashier나 cipher의 이용도 가능합니다. */ command result_t sha_hash(uint8_t *data, uint32_t *hash); command result_t sha_init(uint32_t *hash); // 이하 Exor Method * Encryption plaintext ( len <= 20 ) command result_t encrypt( uint8_t *src, uint8_t *key, uint8_t len); command result_t exor( uint8_t *src, uint8_t *key, uint8_t len); //encrypt와 동일 * Decryption Ciphertext ( len <= 20 ) command result_t decrypt( uint8_t *src, uint8_t *key, uint8_t len); //encrypt와 동일 command result_t dxor( uint8_t *src, uint8_t *key, uint8_t len); //encrypt와 동일 /* Terminology * 1)OTP (One Time Password / Pads) }

ExorM.nc SEA의 nesC구현 모듈 예 // ExorM.nc 모듈의 command 일부 command result_t Exor.sha_init(uint32_t *hash) { hash[A]=Ai; hash[B]=Bi; hash[C]=Ci; hash[D]=Di; hash[E]=Ei; return SUCCESS; } command result_t Exor.encrypt( uint8_t *src, uint8_t *key, uint8_t len) { uint8_t i; // 주어진 key로 OTP 생성 call Exor.sha_init( hashval ); call Exor.sha_hash( key , hashval ); // len 만큼 src와 xor 연산한다. for(i=0; i<len; i++) src[i] ^= exor_otp[i]; ….나머지 생략…. Exor 모듈 기능요약 가상의 OTP생성용 해쉬생성기를 초기화 2. 입력받은 서브키(일회용 암호키)를 이용하여 특정 폭(이 경우 20바이트)의 해시코드를 생성합니다. 3. 암호화할 원문과 생성된 OTP를 XOR연산하여 암호문으로 변환 합니다. 참고: OTP(One Time Password 또는 Pads) SEA(Simple Encryption Algorithm)의 실제 암호화 변환을 위한 연산은 한 줄에 불가하다. (옆 코드에서 Blue 색상) 본 기법에서 실제로 핵심을 이루는 부분은 어떻게 main키 하나로 다수의 가상 일회용 키를 생성하게 할 것 인지와 관련한 protocol 정의이다.

Protocol 정의 Sub키 정의 (subkey = mainkey+time+random_seed ) SEA의 암호화 기법은 XOR연산에 불가하고 구현자의 필요에 따라 가상의 OTP키 생성을 위한 sub키 정의와 변형여부 파악을 위한 헤더 , crc ,hashsum 체크 방법들을 어떻게 정의(Protocol)하는가에 그 핵심이 있다. Sub키 정의 (subkey = mainkey+time+random_seed ) OTP폭 정의 (20bytes, 5bytes, n bytes) 암호문 구조체 정의 암호문 변형여부판별을위한 header/crc/hashsum 정의

SEA 지원 Msg 구조 정의의 예 /** * ;RemobotMsg.h * * ;Remobot 제어명령 구조체 등 정의 **/ enum { AM_REMOBOTMSG = 0xE5, CRYPT_EXOR = 0xE4, // 암호화 방식 MODE HASH_SHA1 = 0xA0 // EXOR에서 사용되는 HASH type }; typedef struct RemobotMsg { uint16_t action; // test 위해 암호화 되지 않은 data 값 기록. // EXOR Msg 시작 //msg header uint8_t mode; // 0xE4 == CRYPT_EXOR ; encrypt type uint8_t opt1; // 0xA0 == HASH_SHA1 ; hashcode type uint8_t opt2; // ?? ; exor_header len; uint8_t opt3; // ?? ; exor_data len; uint16_t src_moteid; // message from uint32_t keydate; // element of subkey uint32_t keyindex; // element of subkey // encrypted data ; 암호문은 기본형의 경우 20Bytes까지 가능. uint8_t EXOR_header[10]; // 암호문 해독검증정보; code/CRC/hashsum etc. uint8_t EXOR_data[10]; // 이곳이 data공간 //EXOR Msg 끝 }__attribute((packed)) RemobotMsg;

평문/암호문 Data 비교 (Remobot의경우) 34 => 정지 명령 []plain AM모드 receive '4' sizeof time_t: 4 keydate: 45cbc524(1170982180) keyindex: 2b9b0a60 cmd: 4 Begin v-[0xbfffebcb] Address 0 1 2 3 4 5 6 7 8 9 a b c d e f ASCII Code 0xbfffebc0 0A BB BB 24 C5 CB 45 60 0A 9B 2B 65 58 4F 52 2D ...$..E`..+eXOR- 0xbfffebd0 45 58 4F 72 00 [34] 00 00 00 00 00 00 00 00 00 FF EXOr.4.......... [STOS Msg] 7e 41 00 24 00 00 00 00 00 15 00 e5 00 99 99 e4 a0 0a 0a bb bb 24 c5 cb 45 60 0a 9b 2b 65 58 4f 52 2d 45 58 4f 72 00 [34] 00 00 00 00 00 00 00 00 00 da 26 7e []encrpyt AM모드 keydate: 45cbc402(1170981890) keyindex: c2be6058 Begin v-[0xbfffdddb] 0xbfffddd0 0A BB BB 02 C4 CB 45 58 60 BE C2 65 58 4F 52 2D ......EX`..eXOR- 0xbfffdde0 45 58 4F 72 00 [34] 00 00 00 00 00 00 00 00 00 FF EXOr.4.......... 0xbfffddd0 0A BB BB 02 C4 CB 45 58 60 BE C2 FA 2F A4 21 41 ......EX`.../.!A 0xbfffdde0 B2 68 3B EF 76 [0E] CD 68 DE 73 A2 FE D3 48 8F FF .h;.v..h.s...H.. 7e 41 00 24 00 00 00 00 00 15 00 e5 00 99 99 e4 a0 0a 0a bb bb 02 c4 cb 45 58 60 be c2 fa 2f a4 21 41 b2 68 3b ef 76 [0e] cd 68 de 73 a2 fe d3 48 8f d5 43 7e (Remobot의경우) 34 => 정지 명령 항상 같은위치에 같은정보가 있다. 쉽게 분석되고 공격받을 수 있음. 인증을 위한 메시지 헤더값 가령 “eXOR-EXOr” 복호화한 뒤 헤더값 일치 여부로 변형여부를 판별한다. 34 => 0E로 암호화되었다. 매번 다른 값으로 암호화 되므로 분석할수 없다.

nesC components 구성도