슬라이드 1

Similar documents
Chapter #01 Subject


슬라이드 1

Microsoft PowerPoint - CSharp-10-예외처리

untitled

K&R2 Reference Manual 번역본

Observational Determinism for Concurrent Program Security

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

<C6F7C6AEB6F5B1B3C0E72E687770>


<C3D6C1BEBAB8B0EDBCAD2E687770>

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

API 매뉴얼

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Interstage5 SOAP서비스 설정 가이드

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

슬라이드 1

11장 포인터


Frama-C/JESSIS 사용법 소개

PowerPoint 프레젠테이션

03장.스택.key

Microsoft PowerPoint - a10.ppt [호환 모드]

PowerPoint 프레젠테이션

chap7.key

강의10

U.Tu System Application DW Service AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

BMP 파일 처리

Lab 3. 실습문제 (Single linked list)_해답.hwp

PowerPoint 프레젠테이션

서현수

02 C h a p t e r Java

초보자를 위한 C# 21일 완성

SRC PLUS 제어기 MANUAL

Microsoft PowerPoint - [2009] 02.pptx

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

슬라이드 1

금오공대 컴퓨터공학전공 강의자료

chap 5: Trees

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

DE1-SoC Board

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

슬라이드 1

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

PowerPoint 프레젠테이션

제4장 기본 의미구조 (Basic Semantics)

6주차.key

MAX+plus II Getting Started - 무작정따라하기

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

¿ÀǼҽº°¡À̵å1 -new

슬라이드 1

슬라이드 1

Deok9_Exploit Technique

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap12-고급기능.pptx

untitled

1217 WebTrafMon II

Microsoft PowerPoint - o8.pptx

PowerPoint 프레젠테이션

2007_2_project4

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

untitled

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

<B1D4B0DDBCAD202D20C4DAB5E520B1E2B9DD2E687770>

untitled

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

VOL /2 Technical SmartPlant Materials - Document Management SmartPlant Materials에서 기본적인 Document를 관리하고자 할 때 필요한 세팅, 파일 업로드 방법 그리고 Path Type인 Ph

슬라이드 1

/chroot/lib/ /chroot/etc/

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

歯9장.PDF

Microsoft PowerPoint - chap03-변수와데이터형.pptx


Microsoft PowerPoint APUE(Intro).ppt

untitled

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

9

adfasdfasfdasfasfadf

13주-14주proc.PDF

PowerPoint Template

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - Chapter 6.ppt

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

자바에서 Swig를이용하기위해서는필요한파일은사용하고자하는 C/C++ 소스파일과 interface파일이필요합니다. 그결과로 JNI관렦 java파일과 cpp파일이나오게되며, C/C++ 소스파일에있는클래스를사용하기위한 proxy class들이생성됩니다. 다음부터 Swig를사

C# Programming Guide - Types

Design Issues

Solaris Express Developer Edition

<31372DB9DABAB4C8A32E687770>

thesis

MS-SQL SERVER 대비 기능

Microsoft PowerPoint - chap01-C언어개요.pptx

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

Transcription:

스마트카드운영체제에대한 EAL6 수준의시험서평가제출물개발 2010. 01. 08 고려대학교 심재환

목차 연구개요 연구내용 해외동향조사 시험도구및방법론 연구결과 2

연구개요

과제명 연구개요 스마트카드운영체제에대한 EAL6 수준의시험서평가제출물개발 목표 KCOS 를대상으로시험문서 (ATE 클래스 ) 에대한 EAL6 수준의평가제출물개발 공통평가기준에적합한정형도구를사용한테스트및취약성분석방법개발 KCOS 에대한소스코드수준의테스트및취약성분석에개발된방법론적용 해외 ( 유럽, 미국, 일본 ) 최근고등급사례조사 4

Common Criteria, EALs EAL 7 EAL 6 EAL 5 EAL 4 EAL 3 EAL 2 EAL 1 Formally verified design and tested Semiformally verified design and tested Semiformally designed and tested Methodically designed, tested and checked Methodically tested and checked Structurally tested Functionally tested 5

EAL6 보증컴포넌트 EAL 6 의평가제출물 ATE_COV.3 ATE_DPT.3 ATE_FUN.2 ATE_IND.2 6

시험서평가제출물특징 기능명세내의모든 TSFI 가완전히시험되었음을입증해야함. 모든 TSF 서브시스템이시험되었음을입증해야함. 모든 TSF 모듈이시험되었음을입증해야함. 7

연구내용 해외동향조사 시험도구및방법

해외동향조사

해외평가사례통계분석 2009 년 4 월

제품군별고등급평가통계 IC, 스마트카드등높은점유율을보임.

운영체제분야의인증사례 INTEGRITY-178B Seperation Kernel(EAL6+) 의경우항공분야표준인 DO-178B 획득. MULTOS (ITSEC E6) 는 CC EAL7 에해당하는인증획득. VxWorks RTOS, EAL6+ 평가진행중, VxWork 는이미 IEC61508 과 DO-178B 인증획득. 운영체제제품군은주로고등급평가와다수의인증목표로함. 고등급의운영체제를사용한시스템은인증에유리함. 현재 IEC61508 및 DO-178B 경우고등급인증을위해정적분석기법과정형기법을권고하고있음.

시험방법론 1 단계 : 정적분석 (Frama-C, PolySpace, Rats) - 모듈별로소스코드자체에대한분석 2 단계 : 소스코드기반모델체킹 - TSFI 에해당하는결과를 Assert 를이용해서검증하거나반례를찾아냄. - 반례는테스트케이스로사용될수있음. 3 단계 : 소스코드동적테스팅 - 2 단계의결과를이용해반례가나왔을경우테스트케이스로사용하고, - 검증이성공했을경우, TSFI 에명시된입출력을테스트한다.

시험도구및방법 정적분석 : PolySpace, Frama-C 코드기반모델검증 : CBMC 동적테스팅 취약성분석 : Rats

Frama-C Frama-C C 로작성된소프트웨어의소스코드를분석하기위한도구 C 언어를위한모듈정적분석프레임워크 Frama-C 플러그인을통해분석된 C 코드가실제로무엇을하는지알수있음 Run-Time 시발생할수있는오류들을알려줌 Divide by 0 Array out of bound Invalid pointer access

Frama-C Frama-C 를통해할수있는행위 매실행지점에서프로그램의변수들에대한가능한값들의집합을관측 큰프로그램을간단한모듈로나눌수있음 Frama-C 의특징 Graphical user interface 분석을유용하게하기위한다양한옵션을제공 Annotation을위한 ACSL언어를제공 Annotation을통해원하는속성을검증할수있음

Frama-C : KCOS 사례 기본적으로 syntax 오류가있는코드는 Frama-C 에삽입을할수없음 syntax 오류가있는경우, Frama-C 가어느부분에오류가있다는것을알려줌 검증한코드의결과에오류가있는경우, 메시지를통해오류를알려줌 검증할 KCOS 모듈 : isoupdaterecord.c 검증방법 1. main.c 에있는 isoupdaterecord 모듈에대한 isoupdaterecord.c 파일을만든다. 2. isoupdaterecord 모듈에서사용하고있는함수및전역변수를코드에추가한다. 3. main 함수를만들어 isoupdaterecord 모듈을호출하도록만든다. 4. 위의작업후에 Frama-C 를이용해검증작업을수행한다.

Frama-C 로검증할프로젝트 : KCOS 2/2 검증결과 Type 오류발생 코드에오류가있기때문에위와같은결과를얻음 오류메시지내용 : Symbol Fatal error

PolySpace 의미분석 (Semantics Analysis) 기법사용 컴파일시 Run-time error 검출 별도스크립트작성없음 검출결과를 4 가지색상 (Green, Red, Yellow, Gray) 으로표시 복잡해지고고기능화된임베디드소프트웨어분야에주로사용

PolySpace 특징 런타임에러를컴파일타임에발견 Out-of-Bounds Array Access Read Access ot Non-Initialized Data Illegal pointer access Invalid Arithmetic Operations: Division by Zero, Square Root of a Negative Number Illegal Type Conversion Overflow/Underflow on Integers and Floating Point Number Access Conflict on Shared Data (Multi-Task Application) Unreachable (dead) Code 코딩룰검사 MISRA-C

CBMC 소개 CBMC : ANSI-C Bounded Model Checker ANSI-C 프로그램을검증하기위한도구 Edmund Clarke, Daniel Kroening, and Flavio Lerda : 2004 검증가능속성 array bounds (buffer overflows) pointer safety exceptions user-specified assertions consistency with other languages, such as Verilog 검증결과가성공일경우, 테스트는 100% Coverage 를만족한다. 검증결과가실패일경우는반례를찾아준다.

Requirements Overview of CBMC Formal Requirement Properties in C (ex. assert( x< a[i]); ) C Program (Model) Satisfied Translation to SAT formula CBMC SAT Solver Not Satisfied Okay Counter Example

CBMC 의수행결과 실패의경우 ( 반례 ) 입력변수오버플로우 성공의경우 (100% 커버리지 )

동적테스팅 개발플랫폼을대신해 pc 플랫폼으로소프트웨어포팅 레지스터, EEPROM 등을 pc 의메인메모리영역으로옮기고동작시킴 터미널과스마트카드와의통신은 pc 의표준입출력 ( 키보드, 모니터로대치 ) Visual Studio 의디버거를사용할수있는시험시간은단축

동적테스팅 모니터를통한입출력과디버거를통해 TSFI 의입출력을테스트 출력 : atrstr, Sw1, Sw2

정적분석도구 - RATS RATS (Rough Auditing Tool for Security) Open Source Static Analysis Tool 시큐어소프트웨어社보안엔지니어들에의해개발 분석언어 C, C++, Perl, PHP, Python 언어별소스코드취약성목록내장 (XML Format) 찾아내는오류들의예 특징 Buffer Overflow Format String Attack TOCTOU (Time Of Check, Time Of Use) race condition 경량도구 (300KB 미만 ) 수동코드분석에대한소요시간단축

RATS on KCOS RATS results Severity: Low Issue: memcpy Double check that your buffer is as big as you specify. When using functions that accept a number n of bytes to copy, such as strncpy, be aware that if the dest buffer size = n it may not NULL-terminate the string. File: kcos/application/test.c Lines: 46 50 54 58 75 82 88 96 File: kcos/dedicated_sw/des_acc.c Lines: 16 17 21 22 23 24 25 26 30 31 32 33 34 35 44 45 83 84 File: kcos/dedicated_sw/eeprom.c Lines: 21 File: kcos/operating_system/carddata.c Lines: 31 36 41 46 51 56 61 66 71 76 File: kcos/operating_system/create_file.c Lines: 28 29 30 39 44 50 51 57 129 130 File: kcos/operating_system/create_session.c Lines: 46 59 78 File: kcos/operating_system/des.c Lines: 40 51 73 89 92 File: kcos/operating_system/ext_auth.c Lines: 30 71 84 File: kcos/operating_system/file.c Lines: 73 79 File: kcos/operating_system/getlifecycle.c Lines: 8 File: kcos/operating_system/main.c Lines: 267 File: kcos/operating_system/readrecord.c Lines: 49 File: kcos/operating_system/securemessaging.c Lines: 17 26 31 46 54 File: kcos/operating_system/trm.c Lines: 99 101 106 113 121 122 144 164 Inputs detected at the following points Total lines analyzed: 2428 Total time 0.000000 seconds -2147483648 lines per second

Validation of Findings 분석결과 함수 : memcpy 구조 : void *memcpy(void *dest, const void *src, size_t n); 잠재적위험 : dest 의버퍼사이즈에대한고려가필요 KCOS 내에서사용된 memcpy 들은 dest 의버퍼사이즈를고려하여사용되어모두안전하게사용됨 #define EEPROM_PAGE_SIZE 0x80... static u1 backupram[eeprom_page_size];...... memcpy(backupram,pdstpage,eeprom _PAGE_SIZE);... typedef unsigned char u1;... #define LEN_KEY 16... typedef struct KeyTag{ u1 key[16]; u4 chksum; }Key; Key key;... memcpy(key.key,data,len_key);...

연구결과 TOE 의발견된문제점 MISRA-C 분석결과 시험서결과

TOE 의발견된문제점들 (1) Type 오류 bool isallowed(accesscondition ac) 함수 32 비트구조체 PolySpace, Frama-C 등정적도구 에서에러출력 하지만, 잘컴파일되어동작 16bit 정수

잘못된구조체초기화 TOE 의발견된문제점들 (2) 구조체를정수초기화하듯초기화 정적도구에서는에러표시 하지만, 잘컴파일되어동작

TOE 의발견된문제점들 (3) 재귀함수 무한루프에빠짐 다행히호출되지않음 안쓰는함수는지워야함 명령어클래스 현재 0x00과 0x90만존재 If문에서참이되는명령어는존재하지않음 구현이완료되지않은것같음

MISRA-C 분석결과 모듈이름 Warning 수 isogetresponse 33 isoreadrecord 105 isoupdaterecord 223 isogetdata 38 isoputdata 144 isoselectfile 18 isogetchallenge 25 isoextauth 320 problockfile 177 prounblockfile 194 proputkey 231 isoverify 226 prosetlifecycle 192 progetlifecycle 32 procreatefile 364 procreatesession 394 총합 2716

시험서결과 모듈별로정적분석한결과 시험항목별로소스검증과동적시험결과