KCAC.TS.HSMU v2.40 보안토큰기반의공인인증서이용기술규격 Accredited Certificate Usage Specification for Hardware Security Module v 년 1 월

Size: px
Start display at page:

Download "KCAC.TS.HSMU v2.40 보안토큰기반의공인인증서이용기술규격 Accredited Certificate Usage Specification for Hardware Security Module v 년 1 월"

Transcription

1 보안토큰기반의공인인증서이용기술규격 Accredited Certificate Usage Specification for Hardware Security Module v 년 1 월

2 목차 1. 개요 1 2. 규격의구성및범위 1 3. 관련표준및규격 국외표준및규격 국내표준및규격 기타 2 4. 정의 전자서명법용어정의 용어의정의 용어의효력 3 5. 약어 4 6. 보안토큰 API(PKCS#11) 개요 가입자소프트웨어와보안토큰간인터페이스모델 보안토큰요구사항 구동프로그램요구사항 공인인증기관요구사항 6 7. 보안토큰 API(PKCS#11) 프로파일 저장객체 함수 메커니즘 9 8. 무선통신지원보안토큰표준 API 9 부록 1. 보안토큰 API(PKCS#11) 객체속성프로파일 10 부록 2. 보안토큰 API(PKCS#11) 함수프로파일 21 부록 3. 보안토큰 API(PKCS#11) 메카니즘프로파일 24 부록 4. 환경파일을이용한보안토큰구동프로그램위치정보관리 26 부록 5. 보안토큰구동프로그램검증정보처리 28 부록 6. 보안토큰 API(PKCS#11) 반환값프로파일 30 부록 7. PKCS#11 사용예 37 부록 8. PKCS#11 자바인터페이스사용예 44 부록 9. 무선통신지원보안토큰표준 API 47 부록 10. 규격연혁 75

3 보안토큰기반공인인인증서이용기술규격 Accredited Certificate usage specification for Hardware Security Module 1. 개요가입자의개인키를안전하게관리및휴대할수있는저장매체로써 USB, 스마트카드등보안토큰에대한요구가증대됨에따라, 응용프로그램에서이러한보안토큰의호환성을제공할수있도록규격이필요하다. 이에, 본규격은 SA사의 PKCS#11 인터페이스에기반을두고보안토큰의기능중반드시필요하거나구현이권고되는부분을기술하여개별적인구현간의상호연동이보장될수있도록한다. 2. 규격의구성및범위본규격은공인인증서가입자소프트웨어에서전자서명생성키등비밀정보를안전하게저장 보관할수있도록키생성 전자서명생성등이기기내부에서처리되는보안토큰의기본요구사항과보안토큰을이용함에있어필요한보안토큰 API의기능적요구사항을명시한다. 첫번째로, 보안토큰기반공인인인증서이용을위한보안토큰과보안토큰 API 및공인인증서가입자소프트웨어의인터페이스모델및보안토큰, 보안토큰구동프로그램, 공인인증기관에대한요구사항을정의한다. 두번째로, 보안토큰의객체, 함수, 메커니즘등보안토큰API(PKCS#11) 프로파일을정의한다. 3. 관련표준및규격 3.1 국외표준및규격 [PKCS1] SA Laboratories PKCS#1, SA Cryptography Standard v2.1, 2001 [PKCS5] SA Laboratories PKCS#5, Password-Based Cryptography Standard v2.0, 1999 [PKCS8] SA Laboratories PKCS#8, Private-Key Information

4 [PKCS11] [P11POF] [FC2511] [PKCS12] Syntax Standard, 1993 SA Laboratories PKCS#11, Cryptographic Token Interface Standard v2.11, 2001 SA Laboratories PKCS#11 Profile, Conformance Profile Specification, 2001 IETF, FC 2511, Internet X.509 Certificate equest Message Format, March 1999 SA Laboratories PKCS#12, Personal Information Exchange Syntax Standard v1.0, 국내표준및규격 [TTA ] TTA, TTAS.KO , 전자서명인증서프로파일표준, 2000 [TTA ] TTA, TTAS.KO , 128비트블록암호알고리즘표준, 2000 [KCAC.TS.SIVID] KISA, KCAC.TS.SIVID, v1.30, 식별번호를이용한본인확인기술규격, 2009 [Bio보안토큰] 조달청, Bio보안토큰이용기술규격, v1.0, 나라장터 Bio 보안토큰이용기술규격, 기타 해당사항없음 4. 정의 4.1 전자서명법용어정의본규격에서사용된다음의용어들은전자서명법및동법시행령, 공인인증기관의시설및장비등에관한규정 ( 미래창조과학부고시 ) 에정의되어있다. 가 ) 인증서나 ) 공인인증서다 ) 공인인증기관

5 라 ) 전자서명인증체계 마 ) 가입자 바 ) 가입자설비 4.2 용어의정의가 ) 보안토큰 (HSM) : 전자서명생성키등비밀정보를안전하게저장 보관하기위하여키생성, 전자서명생성등이기기내부에서처리되도록구현된하드웨어기기나 ) 보안토큰 API : 보안토큰에대한응용프로그래밍인터페이스다 ) 메커니즘 : 암호기능을구현하는절차라 ) 슬롯 (Slot) : 보안토큰과의입출력을수행할수있는논리적리더기마 ) 템플릿 (Template) : 객체속성집합으로서객체의생성, 수정, 검색등을위하여사용됨바 ) 보안토큰구동프로그램 : 보안토큰 API를구현한프로그램을말하며, 보안토큰과가입자소프트웨어간의인터페이스를담당사 ) Mutexes(Mutual Exclusion) : 다중프로세스내에서동기화를위해사용되는상호배제객체아 ) 보안토큰제품정보 (ID) : 보안토큰구동프로그램을식별하기위해사용하는정보. USB형보안토큰의보안토큰제품정보는 Vendor ID와 Product ID를연접하여사용하고, 스마트카드형보안토큰은 AT 정보를사용함자 ) 바이오보안토큰 : 보안토큰의기능을만족하면서바이오정보를이용하여인증을수행할수있도록구현된기기차 ) 스마트인증 : 스마트폰과같은모바일기기의 USIM, ese 등보안모듈을모바일통신을통해 PC와같은타기기에연결하여전자서명생성키등비밀정보를안전하게저장 보관하고, 키생성및전자서명생성등을처리하는하드웨어와소프트웨어의총칭 4.3 용어의효력본규격에서사용된다음의용어들은전자서명인증체계의공인인증서가입자소프트웨어가보안토큰의기능을이용함에있어서보안토큰구동프로그램 ( 이하구동프로그램 ) 및가입자소프트웨어구현정도를의미하는것으로 [FC2119] 를

6 준용하며다음과같은의미를지닌다. 가 ) 해야한다, 필수이다, 강제한다. ( 기호 : M) 반드시준수해야한다. 나 ) 권고한다. ( 기호 : ) 보안성및상호연동을고려하여준수할것을권장한다. 다 ) 할수있다, 쓸수있다. ( 기호 : O) 주어진상황을고려하여필요한경우에한해선택적으로사용할수있다. 라 ) 권고하지않는다. ( 기호 : N) 보안성및상호연동을고려하여사용하지말것을권장한다. 마 ) 금지한다, 허용하지않는다. ( 기호 : X) 반드시사용하지않아야한다. 바 ) 언급하지않는다, 정의하지않는다. ( 기호 : -) 준수여부에대해기술하지않는다. 5. 약어본규격에서는다음의약어들에대해추가적으로정의한다. 가 ) API : Application Programming Interface 나 ) AT : Answer to eset, 보안토큰초기화정보다 ) ese : Embedded Secure Element 라 ) HSM : Hardware Security Modules 마 ) microsd : micro Secure Digital 바 ) OID : Object Identifier 사 ) PKCS : Public Key Cryptography Standard 아 ) PIN : Personal Identification Number, 개인식별번호자 ) USIM : Universal Subscriber Identity Module, 범용사용자식별모듈 6. 보안토큰개요 6.1 가입자소프트웨어와보안토큰간인터페이스모델 보안토큰은구현된하드웨어기기에따라 USB 토큰, 스마트카드, USIM,

7 ese, microsd 등다양한형태를가진다. 보안토큰하드웨어기기와보안토큰을 이용하는플랫폼및가입자소프트웨어간의보안토큰 API(PKCS#11) 의일 반적인적용모델은 [ 그림 1] 과같이도식화된다. [ 그림 2] 공인인증서가입자소프트웨어와보안토큰인터페이스모델 일반적인보안토큰 API 적용모델에서보안토큰 API는보안토큰하드웨어기기와의인터페이스, 보안토큰구동프로그램 (PKCS#11 라이브러리등 ) 으로구성된다. 하나의보안토큰 API는 [ 그림 1] 과같이다중슬롯을통하여하나이상의보안토큰에대한인터페이스를제공해야한다. 가입자소프트웨어는보안토큰 API를통해보안토큰하드웨어기기를이용하게된다. 가입자소프트웨어와보안토큰 API 간의인터페이스구현은 [PKCS11] 및 [ 부록 7] 의 PKCS#11 자바인터페이스사용예를참조하고, 무선통신단말지원보안토큰과의인터페이스구현은 [ 부록 9] 의무선통신단말지원보안토큰표준 API를사용예를참조할것을권고한다 ( 무선단말기에서의구현포함 ). 6.2 보안토큰요구사항 보안토큰은전자서명키및전자서명이하드웨어내부에서생성되는기능을 제공하여야하며, 이경우암호프로세서 (Crypto-processor) 를이용하여야한

8 다. 보안토큰은인가되지않는사용자또는가입자소프트웨어의접근 이용에적절히대처하기위해 PIN 인증및 PIN 입력오류회수제한기능을갖춰야하며, 입력오류허용회수를초과하는경우해당보안토큰잠금기능을제공하여야한다. 또한, 보안토큰의전자서명생성키등비밀정보는기기외부로노출 유출되지않도록안전성을보장해야한다. 또한차분전력분석기법등공격에대한대비책을마련해야한다. 다만, 보안토큰외부에서생성된전자서명생성키등을보안토큰에저장하는것은허용한다. 6.3 구동프로그램요구사항구동프로그램은한개의읽기 / 쓰기세션과다중의읽기세션을반드시지원해야한다. 또한, 구동프로그램은공개키알고리즘으로 SA 1024비트및 2048비트를지원해야하며안전한쓰레드사용을위한 Mutexes를지원해야한다. 보안토큰 PIN은가입자소프트웨어, 구동프로그램및보안토큰에서입력가능하며, 입력된 PIN을보호하기위해보안토큰과암호채널을생성할수있다. 가입자소프트웨어는시스템에존재하는구동프로그램의위치정보를파악할수있도록 [ 부록 4] 에서명시한환경파일을이용한위치정보관리를지원해야한다. 가입자소프트웨어는 [ 부록 5] 의구동프로그램검증정보를확인하여구동프로그램의무결성및구현적합성을확인할수있다. 가입자소프트웨어에서구동프로그램검증정보확인처리기능의구현은선택사항으로한다. 6.4 공인인증기관요구사항공인인증기관은보안토큰기반으로발급되는공인인증서에는 확장키사용목적확장필드 에보안토큰식별자를추가하여공인인증서를발급하여야한다. 이경우, 공인인증서에추가되는식별자는 id-kisa-hsm으로한다. id-kisa-hsm OBJECT IDENTIFIE ::= { } iso(1) member-body(2) korea(410) kisa(200004) npki(10) attributes(1) kisa-hsm(2)

9 공인인증기관은보안토큰기반으로공인인증서를발급하기위해서는 [ 부록 5] 의구동프로그램검증정보를확인하여공인인증서발급신청자의보안토큰구동프로그램의무결성및구현적합성을확인하여야한다. 이러한확인결과는 [FC2511] 에서정의하는메시지구조를가지는 ir 메시지의 reginfo 부분에부가정보로입력하여전자서명키가보안토큰기반으로생성되었음을표시하여야한다. reginfo 부분에전자서명키가보안토큰내에서생성되었음을표시하는부가정보로 Attribute 형태는 id-kisa-hsm 명칭형식을이용하고, Value 값은공인인증기관의필요에따라선택적으로사용할수있다. Value 값을사용하지않고자하는경우, 그값은 NULL 인코딩한다. 7. 보안토큰 API(PKCS#11) 프로파일본장에서는전자서명인증체계가입자소프트웨어에게구동프로그램기능의호환성을제공하기위해필요한 PKCS#11 저장객체, 함수, 메커니즘등을정의한다. 7.1 저장객체 (Storage Object) 본규격을준용하는구동프로그램및가입자소프트웨어는저장객체로써, 데이터객체, 인증서객체및키객체를생성하거나처리시부록 1. PKCS#11 객체속성프로파일에서명시한객체속성템플릿을준용하여야한다 데이터객체 (Data Object) 구동프로그램이 CKA_OBJECT_ID 속성을지원하는경우다수데이터객체를구별하기위해해당객체의 OID를속성값으로사용해야한다. [KCAC.TS.SIVID] 에서정의한난수 () 를저장하는데이터객체가하나이상존재할경우이를구분하기위하여, 구동프로그램은레이블속성 (CKA_LABEL) 을지원해야하며, 이레이블속성에키및인증서객체의식별자로이용되는 CKA_ID 값을 4VID=CKA_ID(16진수표기 ) 와같이표현하여하나이상의데이터객체난수 () 를구분할수있어야한다. 여기서 '4VID' 은 [KCAC.TS.SIVID] 에서정의한난수 () 을위한식별자를나타내며,

10 CKA_ID값은 16진수로표기하고이들의값은 = 로연결한다. 난수 () 는비밀객체속성을가져야한다. 바이오보안토큰구동프로그램이바이오보안토큰등록정보및사용자등록정보를지원하는경우데이터객체를사용하여야한다. 이경우, 구동프로그램은바이오보안토큰등록정보및사용자등록정보를식별하기위해 CKA_LABEL 을지원하여야한다. 바이오보안토큰등록정보의레이블속성 (CKA_LABEL) 은하나이상의보안토큰등록정보를구분할수있도록 DevAuth= 일련번호 로표기한다 ( 이경우 일련번호 는 1바이트 16진수로표기하고 DevAuth 와 = 로연결한다 ). 또한, 사용자등록정보의레이블속성 (CKA_LABEL) 은법인의경우 Corporation, 개인의경우 Person 으로표기한다. CKA_VALUE에표기되는바이오보안토큰등록정보및사용자등록정보는비밀객체속성을가져야한다 인증서객체 (Certificate Object) 인증서는공개객체이며하나이상의인증서를구분하기위하여키및인증서 객체의식별자로이용되는 CKA_ID 속성을지원해야한다 키객체 (Key Object) 키객체는개인키, 공개키, 비밀키를저장하기위하여이용되며, 개인키및비밀키객체는비밀객체속성을가져야한다. 하나이상의개인키구분을위해키및인증서객체의식별자로이용되는 CKA_ID 속성을지원해야한다. CKA_ID 속성값은인증서확장필드의소유자키식별자값을사용할것을권고한다. 공개키는공개객체이며하나이상의공개키를구분하기위하여키및인증서객체의식별자로이용되는 CKA_ID 속성을지원해야한다. 개인키및공개키객체는인증서에명시된키사용목적에부합하는속성을가져야하며부록 1. PKCS#11 객체속성프로파일을준용해야한다.

11 7.2 함수본절에서는전자서명인증체계가입자소프트웨어가보안토큰의기능을이용하기위해구동프로그램이지원해야하는함수및반환값을정의하며, 구동프로그램은부록 2. 보안토큰API(PKCS#11) 함수프로파일및부록 6. 보안토큰 API(PKCS#11) 반환값프로파일을각각준용하여야한다. 보안토큰의초기화, 자원해제, 일반적인정보획득의기능함수로, 구동프로그램은 C_initialize, C_Finalize, C_GetInfo, C_GetFunctionList를지원해야한다. 보안토큰의슬롯및토큰에대한정보획득, 토큰이지원할수있는메커니즘집합획득등토큰과슬롯간의연결관리기능함수로, 구동프로그램은 C_GetSlotList, C_GetSlotInfo, C_GetTokenInfo, C_GetMechanismList, C_GetMechanismInfo를지원해야한다. 보안토큰의세션관리기능함수로, 구동프로그램은 C_OpenSession, C_CloseSession, C_CloseAllSessions, C_GetSessionInfo, C_Login, C_Logout 을지원해야한다. 보안토큰의객체생성, 객체검색등객체관리기능함수로, 구동프로그램은 C_CreateObject, C_DestroyObject, C_FindObjectsInit, C_FindObjects, C_FindObjectsFinal, C_GetAttributeValue, C_SetAttributeValue 를지원해야한다. 보안토큰의전자서명생성기능함수로, 구동프로그램은 C_SignInit, C_Sign, C_SignUpdate, C_SignFinal 를지원해야한다. 보안토큰의암호키복호화기능함수로, 구동프로그램은 C_DecryptInit, C_Decrypt, C_Unwrap을지원해야한다. 보안토큰의전자서명키쌍생성기능함수로, 구동프로그램은 C_GenerateKeyPair, C_Seedandom, C_Generateandom을지원해야한다. 7.3 메커니즘 (Mechanism) 본절에서는전자서명인증체계가입자소프트웨어가보안토큰기능을이용하기위해구동프로그램이지원해야하는메커니즘을정의하며, 구동프로그램은부록 3. 보안토큰 API(PKCS#11) 메커니즘프로파일을준용하여야한다. SA 알고리즘을이용한전자서명생성및암호키복호화등의기능을지원

12 하기위해, 구동프로그램은 PKCS#11 에기반을둔 CKM_SA_PKCS 메커니즘 을지원해야한다. 보안토큰의처리용량을고려하여전자문서에대한해쉬값 은가입자소프트웨어에서생성또는보안토큰내부에서생성할수있다. 8. 무선통신지원보안토큰표준 API 본장에서는전자서명인증체계가입자소프트웨어가무선통신단말지원보안토큰기능을이용하기위해부록 9. 무선통신지원보안토큰표준 API를준용하여야한다.

13 부록 1. 보안토큰 API(PKCS#11) 객체속성프로파일 1. 일반객체 (Common Object Attribute) 속성 데이터타입 내용 처리 CKA_CLASS CK_OBJECT_CLASS Object class M o 본프로파일은 CKA_CLASS로다음아래와같은객체를지원해야한다. - CKO_DATA, CKO_CETIFICATE, CKO_PUBLIC_KEY, CKO_PIVATE_KEY o 본프로파일은 CKA_CLASS로다음아래와같은객체지원을권고한다. - CKO_SECET_KEY, CKO_DOMAIN_PAAMETES 2. 저장객체 (Storage Object) 2.1 저장공통객체 (Common Storage Object Attribute) 속성 데이터타입 내용 처리 CKA_TOKEN CK_BBOOL IF True : 토큰객체, IF False : 세션객체 M CKA_PIVATE CK_BBOOL IF True : Private 객체 M CKA_MODIFIABLE CK_BBOOL IF True : 객체수정 M CKA_LABEL FC2279 string 객체설명 M 2.2 데이터객체 (Data Object) 속성 데이터타입 내용 처리 CKA_APPLICATION FC2279 String 어플리케이션설명 M CKA_OBJECT_ID Byte Array DE 인코딩된 OID(Object identifier) O CKA_VALUE Byte Array 객체값 M 데이터객체속성템플릿 : CK_OBJECT_CLASS class = CKO_DATA; CK_UTF8CHA label[] = "4VID=FF3082A0..."; CK_UTF8CHA application[] = Accredited PKI Application ; CK_BYTE data[] = Sample data ; CK_BBOOL true = TUE; CK_ATTIBUTE template[] = { {CKA_CLASS, &class, sizeof(class)}, {CKA_TOKEN, &true, sizeof(true)}, {CKA_PIVATE, &true, sizeof(true)}, {CKA_LABEL, label, sizeof(label)-1}, {CKA_APPLICATION, application, sizeof(application)-1}, {CKA_VALUE, data, sizeof(data)}

14 }; 바이오보안토큰등록정보데이터객체속성템플릿 ( 바이오보안토큰사용시 ) : CK_OBJECT_CLASS class = CKO_DATA; CK_UTF8CHA label[] = "DevAuth=FF"; CK_UTF8CHA application[] = Accredited PKI Application ; CK_BYTE data[] = "FEDCBA98... ; CK_BBOOL true = TUE; CK_ATTIBUTE template[] = { {CKA_CLASS, &class, sizeof(class)}, {CKA_TOKEN, &true, sizeof(true)}, {CKA_PIVATE, &true, sizeof(true)}, {CKA_LABEL, label, sizeof(label)-1}, {CKA_APPLICATION, application, sizeof(application)-1}, {CKA_VALUE, data, sizeof(data)} }; 법인사용자등록정보데이터객체속성템플릿 ( 바이오보안토큰사용시 ) : CK_OBJECT_CLASS class = CKO_DATA; CK_UTF8CHA label[] = "Corporation"; CK_UTF8CHA application[] = Accredited PKI Application ; CK_BYTE data[] = "7C25... ; CK_BBOOL true = TUE; CK_ATTIBUTE template[] = { {CKA_CLASS, &class, sizeof(class)}, {CKA_TOKEN, &true, sizeof(true)}, {CKA_PIVATE, &true, sizeof(true)}, {CKA_LABEL, label, sizeof(label)-1}, {CKA_APPLICATION, application, sizeof(application)-1}, {CKA_VALUE, data, sizeof(data)} }; 개인사용자등록정보데이터객체속성템플릿 ( 바이오보안토큰사용시 ) : CK_OBJECT_CLASS class = CKO_DATA; CK_UTF8CHA label[] = "Person"; CK_UTF8CHA application[] = Accredited PKI Application ; CK_BYTE data[] = "AFFBC... ; CK_BBOOL true = TUE; CK_ATTIBUTE template[] = { {CKA_CLASS, &class, sizeof(class)}, {CKA_TOKEN, &true, sizeof(true)}, {CKA_PIVATE, &true, sizeof(true)}, {CKA_LABEL, label, sizeof(label)-1}, {CKA_APPLICATION, application, sizeof(application)-1}, {CKA_VALUE, data, sizeof(data)} }; 2.3 인증서객체 (Certificate Object)

15 2.3.1 X.509 인증서공통객체 (Common X.509 Certificate Object Attribute) 속성데이터타입내용처리 CKA_CETIFICATE_TYPE CK_CETIFICATE_TYPE 인증서타입 M CKA_TUSTED CK_BBOOL 어플리케이션은신뢰된인증서로간주 O CKA_TUSTED 속성은특정어플리케이션에의해설정되어져서는안되며, 토큰을초기화 할때설정되어야함 X.509 공개키인증서객체 (X.509 Public Key Certificate Object Attribute) 속성 데이터타입 내용 처리 CKA_SUBJECT Byte Array DE 인코딩된인증서가입자이름 M CKA_ID Byte Array Key identifier(public/private) M CKA_ISSUE Byte Array DE 인코딩된인증서발급자이름 O CKA_SEIAL_NUMBE Byte Array DE 인코딩된인증서일련번호 O CKA_VALUE Byte Array BE 인코딩된인증서 M X.509 공개키인증서객체속성템플릿 : CK_OBJECT_CLASS class = CKO_CETIFICATE; CK_CETIFICATE_TYPE certtype = CKC_X_509; CK_UTF8CHA label[] = LABEL 명 ; CK_BYTE subject[] = {...}; CK_BYTE id[] = {123}; CK_BYTE certificate[] = {...}; CK_BBOOL true = TUE; CK_BBOOL false = FALSE; CK_ATTIBUTE template[] = { {CKA_CLASS, &class, sizeof(class)}, {CKA_CETIFICATE_TYPE, &certtype, sizeof(certtype)}; {CKA_TOKEN, &true, sizeof(true)}, {CKA_LABEL, label, sizeof(label)-1}, {CKA_SUBJECT, subject, sizeof(subject)}, {CKA_ID, id, sizeof(id)}, {CKA_PIVATE, false, sizeof(false)}, {CKA_VALUE, certificate, sizeof(certificate)} }; X.509 속성인증서객체 (X.509 Attribute Certificate Object Attribute)

16 속성 데이터타입 내용 처리 CKA_OWNE Byte Array DE 인코딩된속성인증서소유자이름 M CKA_AC_ISSUE Byte Array DE 인코딩된속성인증서발급자이름 O KA_SEIAL_NUMBE Byte Array DE 인코딩된인증서일련번호 O CKA_ATT_TYPES Byte Array BE 인코딩된속성 OID O CKA_VALUE Byte Array BE 인코딩된속성인증서 M 속성인증서를사용할경우위속성인증서의객체속성을준용할것을권고함. X.509 속성인증서객체템플릿 : CK_OBJECT_CLASS class = CKO_CETIFICATE; CK_CETIFICATE_TYPE certtype = CKC_X_509_ATT_CET; CK_UTF8CHA label[] = "An attribute certificate object"; CK_BYTE owner[] = {...}; CK_BYTE certificate[] = {...}; CK_BYTE subject[] = {...}; CK_BYTE id[] = {123}; CK_BBOOL true = TUE; CK_BBOOL false = FALSE; CK_ATTIBUTE template[] = { {CKA_CLASS, &class, sizeof(class)}, {CKA_CETIFICATE_TYPE, &certtype, sizeof(certtype)}; {CKA_TOKEN, &true, sizeof(true)}, {CKA_LABEL, label, sizeof(label)-1}, {CKA_OWNE, owner, sizeof(owner)}, {CKA_SUBJECT, subject, sizeof(subject)}, {CKA_ID, id, sizeof(id)}, {CKA_PIVATE, false, sizeof(false)}, {CKA_VALUE, certificate, sizeof(certificate)} }; 2.4 키객체 (Key Object) 키공통객체 (Common Key Attribute) 속성 데이터타입 내용 처리 CKA_KEY_TYPE CKA_KEY_TYPE 키타입 M CKA_ID Byte Array KEY Identifier M CKA_STAT_DATE CK_DATE 키의유효시작날짜 - CKA_END_DATE CK_DATE 키의유효만료날짜 - CKA_DEIVE CK_BBOOL IF TUE : 키유도지원 O CKA_LOCAL CK_BBOOL IF TUE : 토큰내에서키생성 O CKA_KEY_GEN_MECHANISM CK_MECHANISM_TYPE 키생성메카니즘 Identifier O 보안토큰 API 키속성과 X.509V3 인증서와의 Mapping Table

17 공개키 / 개인키를위한 X.509 v3 인증서 Key Usage dataencipherment digitalsignature, keycertsign, clsign digitalsignature, keycertsign, clsign keyagreement keyencipherment nonepudiation nonepudiation 공개키 / 개인키를위한보안토큰 API 속성 CKA_ENCYPT CKA_VEIFY CKA_VEIFY_ECOVE CKA_DEIVE CKA_WAP CKA_VEIFY CKA_VEIFY_ECOVE 공개키객체 (Public Key Object) 공개키공통객체 (Common Public Key Object Attribute) 속성 데이터타입 내용 처리 CKA_SUBJECT Byte array DE 인코딩된소유자이름 M CKA_ENCYPT CK_BBOOL 암호화 O CKA_VEIFY CK_BBOOL 부가형전자서명검증 M CKA_VEIFY_ECOVE CK_BBOOL 복원형전자서명검증 O CKA_WAP CK_BBOOL 키암호화 M CKA_TUSTED CK_BBOOL 신뢰되는키 O CKA_VEIFY 속성은전자서명검증공개키에설정되어야하며, CKA_WAP 속성은암호 키분배공개키에설정되어야함 SA 공개키객체 (SA Public Key Object Attribute) 속성 데이터타입 내용 처리 CKA_MODULUS Big integer Modulus n M CKA_MODULUS_BITS CK_ULONG n의길이 ( 비트 ) M CKA_PUBLIC_EXPONENT Big integer Public exponent e M SA 공개키객체템플릿 (C_GenerateKeyPair 함수이용시 ) : CK_OBJECT_CLASS class = CKO_PUBLIC_KEY; CK_KEY_TYPE keytype = CKK_SA; CK_UTF8CHA label[] = An SA public key object ; CK_BYTE exponent[] = {...}; CK_ULONG bits = 1024; CK_BYTE id[] = {123}; CK_BBOOL true = TUE; CK_BBOOL false = FALSE; CK_ATTIBUTE template[] = { {CKA_CLASS, &class, sizeof(class)}, {CKA_KEY_TYPE, &keytype, sizeof(keytype)},

18 {CKA_TOKEN, &true, sizeof(true)}, {CKA_LABEL, label, sizeof(label)-1}, {CKA_ID, id, sizeof(id)}, {CKA_WAP, &false, sizeof(false)}, {CKA_ENCYPT, &false, sizeof(false)}, {CKA_MODULUS_BITS, &bits, sizeof(bits)}, {CKA_PIVATE, false, sizeof(false)}, {CKA_VEIFY, true, sizeof(true)}, {CKA_PUBLIC_EXPONENT, exponent, sizeof(exponent)} }; SA공개키객체템플릿 (C_CreateObject 함수이용시 ) : CK_OBJECT_CLASS class = CKO_PUBLIC_KEY; CK_KEY_TYPE keytype = CKK_SA; CK_UTF8CHA label[] = An SA public key object ; CK_BYTE exponent[] = {...}; CK_BYTE modulus[] = {...}; CK_BYTE subject[] = {...}; CK_BYTE id[] = {123}; CK_BBOOL true = TUE; CK_BBOOL false = FALSE; CK_ATTIBUTE template[] = { {CKA_CLASS, &class, sizeof(class)}, {CKA_KEY_TYPE, &keytype, sizeof(keytype)}, {CKA_TOKEN, &true, sizeof(true)}, {CKA_LABEL, label, sizeof(label)-1}, {CKA_ID, id, sizeof(id)}, {CKA_WAP, &false, sizeof(false)}, {CKA_ENCYPT, &false, sizeof(false)}, {CKA_MODULUS, modulus, sizeof(modulus)}, {CKA_SUBJECT, subject, sizeof(subject)}, {CKA_PIVATE, false, sizeof(false)}, {CKA_VEIFY, true, sizeof(true)}, {CKA_PUBLIC_EXPONENT, exponent, sizeof(exponent)} }; 전자서명검증공개키에는 CKA_VEIFY 를 TUE 로설정하고, CKA_WAP 및 CKA_ENCYPT 을 FALSE 로설정하여야함 암호키분배공개키에는 CKA_VEIFY 를 FALSE 로설정하고, CKA_WAP 및 CKA_ENCYPT 을 TUE 로설정하여야함 EC 공개키객체 (Elliptic Curve Public Key Object Attribute) 속성 데이터타입 내용 처리 CKA_EC_PAAMS (CKA_ECDSA_PAAMS) Byte Array DE인코딩된 ASNI X9.62 파라메터값 M CKA_EC_POINT Byte Array DE인코딩된 ASNI X9.62 ECPoint 값 Q M EC 공개키를사용할경우위객체속성을준용할것을권고함.

19 EC 공개키객체템플릿 (C_CreateObject 함수이용시 ) : CK_OBJECT_CLASS class = CKO_PUBLIC_KEY; CK_KEY_TYPE keytype = CKK_EC; CK_UTF8CHA label[] = An EC public key object ; CK_BYTE ecparams[] = {...}; CK_BYTE ecpoint[] = {...}; CK_BBOOL true = TUE; CK_ATTIBUTE template[] = { {CKA_CLASS, &class, sizeof(class)}, {CKA_KEY_TYPE, &keytype, sizeof(keytype)}, {CKA_TOKEN, &true, sizeof(true)}, {CKA_LABEL, label, sizeof(label)-1}, {CKA_EC_PAAMS, ecparams, sizeof(ecparams)}, {CKA_EC_POINT, ecpoint, sizeof(ecpoint)} }; 개인키객체 (Private Key Object) 개인키공통객체속성 (Common Private Key Object Attribute) 속성 데이터타입 내용 처리 CKA_SUBJECT Byte Array DE인코딩된인증서소유자이름 M CKA_SENSITIVE CK_BBOL TUE : Plain-Text 형태로 Export 불가 M CKA_SECONDAY_AUTH CK_BBOL IF TUE : 두번의인증요구 O CKA_AUTH_PIN_FLAGS CK_FLAGS IF TUE : 두번의 PIN 인증, IF FALSE : 속성값 0 O CKA_DECYPT CK_BBOL TUE : 복호화 O CKA_SIGN CK_BBOL TUE : 부가형전자서명 M CKA_SIGN_ECOVE CK_BBOL IF TUE : 복원형전자서명 O CKA_UNWAP CK_BBOL TUE : 키복호화 M CKA_EXTACTABLE CK_BBOL FALSE : 키의 Export 불가 M CKA_ALWAYS_SENSITIVE CK_BBOL IF TUE : 항상 Plain-Text 형태로 Export 불가 O CKA_NEVE_EXTACTABLE CK_BBOL IF TUE : 키가 Plain-Text 형태로나오지않음 M CKA_SIGN 속성은전자서명생성개인키에설정되어야하며, CKA_UNWAP 속성은암호 키분배개인키에설정되어야함 SA 개인키객체 (SA Private Key Object Attribute) 속성 데이터타입 내용 처리 CKA_MODULUS Big integer Modulus n M CKA_PUBLIC_EXPONENT Big integer Public exponent e M CKA_PIVIATE_EXPONENT Big integer Private exponent d M CKA_PIME_1 Big integer Prime p M CKA_PIME_2 Big integer Prime q M

20 속성데이터타입내용처리 CKA_EXPONENT_1 Big integer Private exponent d modulo p-1 M CKA_EXPONENT_2 Big integer Private exponent d modulo p-2 M CKA_COEFFICIENT Big integer CT coefficient q-1mod p M SA 개인키객체템플릿 (C_GenerateKeyPair 함수이용시 ) : CK_OBJECT_CLASS class = CKO_PIVATE_KEY; CK_KEY_TYPE keytype = CKK_SA; CK_UTF8CHA label[] = "LABEL 명 " ; CK_BYTE id[] = {123}; CK_BBOOL true = TUE; CK_BBOOL false = FALSE; CK_ATTIBUTE template[] = { {CKA_CLASS, &class, sizeof(class)}, {CKA_KEY_TYPE, &keytype, sizeof(keytype)}, {CKA_TOKEN, &true, sizeof(true)}, {CKA_LABEL, label, sizeof(label)-1}, {CKA_ID, id, sizeof(id)}, {CKA_SENSITIVE, &true, sizeof(true)}, {CKA_DECYPT, &false, sizeof(false)}, {CKA_SIGN, &true, sizeof(true)}, {CKA_UNWAP, &false, sizeof(false)}, {CKA_PIVATE, &true, sizeof(true)}, }; SA 개인키객체템플릿 (C_CreateObject 함수이용시 ) : CK_OBJECT_CLASS class = CKO_PIVATE_KEY; CK_KEY_TYPE keytype = CKK_SA; CK_UTF8CHA label[] = "LABEL 명 " ; CK_BYTE subject[] = {...}; CK_BYTE id[] = {123}; CK_BYTE modulus[] = {...}; CK_BYTE publicexponent[] = {...}; CK_BYTE privateexponent[] = {...}; CK_BYTE prime1[] = {...}; CK_BYTE prime2[] = {...}; CK_BBOOL true = TUE; CK_BBOOL false = FALSE; CK_BYTE exponent1[] = {...}; CK_BYTE exponent2[] = {...}; CK_BYTE coefficient[] = {...}; CK_ATTIBUTE template[] = { {CKA_CLASS, &class, sizeof(class)}, {CKA_KEY_TYPE, &keytype, sizeof(keytype)}, {CKA_TOKEN, &true, sizeof(true)}, {CKA_LABEL, label, sizeof(label)-1}, {CKA_SUBJECT, subject, sizeof(subject)}, {CKA_ID, id, sizeof(id)},

21 {CKA_SENSITIVE, &true, sizeof(true)}, {CKA_SIGN, &true, sizeof(true)}, {CKA_UNWAP, &false, sizeof(false)}, {CKA_DECYPT, &false, sizeof(false)}, {CKA_PIVATE, &true, sizeof(true)}, {CKA_MODULUS, modulus, sizeof(modulus)}, {CKA_PUBLIC_EXPONENT, publicexponent, sizeof(publicexponent)}, {CKA_PIVATE_EXPONENT, privateexponent, sizeof(privateexponent)}, {CKA_PIME_1, prime1, sizeof(prime1)}, {CKA_PIME_2, prime2, sizeof(prime2)}, {CKA_EXPONENT_1, exponent1, sizeof(exponent1)}, {CKA_EXPONENT_2, exponent2, sizeof(exponent2)}, {CKA_COEFFICIENT, coefficient, sizeof(coefficient)} }; 전자서명생성개인키에는 CKA_SIGN을 TUE로설정하고, CKA_UNWAP 및 CKA_DECYPT 을 FALSE 로설정하여야함 암호키분배개인키에는 CKA_SIGN 을 FALSE 로설정하고, CKA_UNWAP 및 CKA_DECYPT 을 TUE 로설정하여야함 EC 개인키객체속성 (Elliptic Curve Private Key Object Attribute) 속성 데이터타입 내용 처리 CKA_EC_PAAMS (CKA_ECDSA_PAAMS) Byte Array DE인코딩된 ASNI X9.62 파라메터값 M CKA_VALUE Big integer ASNI X9.62 개인키값 d M EC 개인키를사용할경우위객체속성을준용할것을권고함. EC 개인키객체템플릿 (C_CreateObject 함수이용시 ) : CK_OBJECT_CLASS class = CKO_PIVATE_KEY; CK_KEY_TYPE keytype = CKK_EC; CK_UTF8CHA label[] = An EC private key object ; CK_BYTE subject[] = {...}; CK_BYTE id[] = {123}; CK_BYTE ecparams[] = {...}; CK_BYTE value[] = {...}; CK_BBOOL true = TUE; CK_BBOOL false = FALSE; CK_ATTIBUTE template[] = { {CKA_CLASS, &class, sizeof(class)}, {CKA_KEY_TYPE, &keytype, sizeof(keytype)}, {CKA_TOKEN, &true, sizeof(true)}, {CKA_LABEL, label, sizeof(label)-1}, {CKA_SUBJECT, subject, sizeof(subject)}, {CKA_ID, id, sizeof(id)}, {CKA_SENSITIVE, &true, sizeof(true)}, {CKA_DEIVE, &true, sizeof(true)},

22 {CKA_PIVATE, & true, sizeof(true)}, {CKA_EC_PAAMS, ecparams, sizeof(ecparams)}, {CKA_VALUE, value, sizeof(value)} }; 비밀키객체 (Secret Key Object) 속성 데이터타입 내용 처리 CKA_SENSITIVE CK_BBOL IF TUE : 민감한정보 M CKA_ENCYPT CK_BBOL IF TUE : 암호화 M CKA_DECYPT CK_BBOL IF TUE : 복호화 M CKA_SIGN CK_BBOL IF TUE : 부가형서명 - CKA_VEIFY CK_FLAGS IF TUE : 부가형서명검증 - CKA_WAP CK_BBOL IF TUE : 키암호화 M CKA_UNWAP CK_BBOL IF TUE : 키복호화 M CKA_EXTACTABLE CK_BBOL IF TUE : 키의 Export 지원 M CKA_ALWAYS_SENSITIVE CK_BBOL IF TUE : 항상 Plain-Text 형태로 Export 불가 O CKA_NEVE_EXTACTABLE CK_BBOL IF TUE : 키의 Export 지원절대금지 O 비밀키공통객체 (Common Secret Key Object) 비밀키객체를사용할경우위객체속성을준용할것을권고함 DES 비밀키객체 (3DES secret key objects) 속성데이터타입내용처리 CKA_VALUE Byte Array 키값 M 3DES 비밀키객체템플릿 : CK_OBJECT_CLASS class = CKO_SECET_KEY; CK_KEY_TYPE keytype = CKK_DES3; CK_UTF8CHA label[] = A DES3 secret key object ; CK_BYTE value[24] = {...}; CK_BBOOL true = TUE; CK_ATTIBUTE template[] = { {CKA_CLASS, &class, sizeof(class)}, {CKA_KEY_TYPE, &keytype, sizeof(keytype)}, {CKA_TOKEN, &true, sizeof(true)}, {CKA_LABEL, label, sizeof(label)-1}, {CKA_PIVATE, & true, sizeof(true)}, {CKA_ENCYPT, &true, sizeof(true)}, {CKA_DECYPT, &true, sizeof(true)}, {CKA_VALUE, value, sizeof(value)} };

23 SEED 비밀키객체 (SEED secret key objects) 속성데이터타입내용처리 CKA_VALUE Byte Array 키값 M SEED 비밀키객체템플릿 : CK_OBJECT_CLASS class = CKO_SECET_KEY; CK_KEY_TYPE keytype = CKK_SEED; CK_UTF8CHA label[] = A SEED secret key object ; CK_BYTE value[24] = {...}; CK_BBOOL true = TUE; CK_ATTIBUTE template[] = { {CKA_CLASS, &class, sizeof(class)}, {CKA_KEY_TYPE, &keytype, sizeof(keytype)}, {CKA_TOKEN, &true, sizeof(true)}, {CKA_LABEL, label, sizeof(label)-1}, {CKA_PIVATE, & true, sizeof(true)}, {CKA_ENCYPT, &true, sizeof(true)}, {CKA_DECYPT, &true, sizeof(true)}, {CKA_VALUE, value, sizeof(value)} };

24 부록 2. 보안토큰 API(PKCS#11) 함수프로파일 API 함수정의 내용 처리 기본목적 (General Purpose) C_Initialize 보안토큰 API를초기화 M C_Finalize 보안토큰 API와연관된다양한자원을해제 M C_GetInfo 보안토큰 API에대한일반적인정보를획득 M C_GetFunctionList 지원하는보안토큰 API 함수집합을획득 M 슬롯 & 토큰관리 (Slot and Token Management) C_GetSlotList 시스템에있는슬롯집합을획득 M C_GetSlotInfo 특정슬롯에관한정보를획득 M C_GetTokenInfo 특정토큰에관한정보를획득 M C_WaitForSlotEvent 슬롯이벤트 ( 토큰추가, 제거 ) 발생에따른대기상태 O C_GetMechanismList 토큰이지원하는메커니즘집합을획득 M C_GetMechanismInfo 특정메커니즘에관한정보를획득 M C_InitToken 토큰초기화 O C_InitPIN 사용자 PIN 초기화 O C_SetPIN 사용자 PIN 수정 O 세션관리 (Session Management) C_OpenSession 응용시스템과토큰간의연결을생성 M C_CloseSession 세션을종료 M C_CloseAllSessions 특정토큰과연관된모든세션을종료 M C_GetSessionInfo 세션에대한정보획득 M C_GetOperationState 세션의암호오퍼레이션상태획득 O C_SetOperationState 세션암호오퍼레이션상태수정 O C_Login 토큰에로그인 M C_Logout 토큰으로부터로그아웃 M 객체관리 (Object management) C_CreateObject 객체생성 M C_CopyObject 복사본객체생성 O C_DestroyObject 객체파기 M C_GetObjectSize 객체사이즈획득 O C_GetAttributeValue 객체속성획득 M C_SetAttributeValue 객체속성수정 M C_FindObjectInit 객체검색초기화 M C_FindObjects 객체검색 M C_FindObjectsFinal 객체검색종료 M 암호화 (Encryption) C_EncryptInit 암호화기능을초기화 O C_Encrypt 단일부분에대한암호화수행 O C_EncryptUpdate 다중부분에대한암호화수행 O

25 API 함수정의 내용 처리 C_EncryptFinal 다중부분에대한암호화수행종료 O 복호화 (Encryption) C_DecryptInit 복호화기능초기화 M C_Decrypt 단일암호화부분에대한복호화수행 M C_DecryptUpdate 다중암호화부분에대한복호화수행 O C_DecryptFinal 다중암호화부분에대한복호화수행종료 O 메시지압축 (Message Digesting) C_DigestInit 메시지압축수행초기화 O C_Digest 단일부분데이터압축수행 O C_DigestUpdate 다중부분에대한압축수행 O C_DigestKey 키압축수행 O C_DigestFinal 다중부분에대한압축수행종료 O 전자서명및 MAC (Signing & MACing) C_SignInit 서명기능을초기화 M C_Sign 단일부분서명을수행 M C_SignUpdate 다중부분에대한서명수행 O C_SignFinal 다중부분에대한서명수행종료 O C_SignecoverInit 복원형서명기능초기화 O C_Signecover 복원형서명수행 O 전자서명및 MAC 검증 C_VerifyInit 검증기능을초기화 O C_Verify 단일부분서명에대한검증을수행 O C_VerifyUpdate 다중부분에대한검증수행 O C_VerifyFinal 다중부분에대한검증종료 O C_VerifyecoverInit 복원형검증기능초기화 - C_Verifyecover 복원형검증기능수행 - Dual-purpose cryptographic C_DigestEncryptUpdate 압축및암호화수행 O C_DecryptDigestUpdate 복호화및압축수행 O C_SignEncryptUpdate 서명및암호화수행 O C_DecryptVerifyUpdate 복호화및검증수행 O 키관리 (Key Management) C_GenerateKey 비밀키혹은도메인파라미터생성 O C_GenerateKeyPair 비대칭키쌍생성 M C_WrapKey 키암호화 O C_UnWrapKey 키복호화 M C_DeriveKey 기본키로부터키호출 (Vendor-defined) - 렌덤넘버생성 (andom Number Generation) C_Seedandom seed 값추가 M C_Generateandom 랜덤혹은의사랜덤을생성 M

26 API 함수정의 내용 처리 Parallel 함수관리 (Parallel function 관리 ) C_GetFunctionStatus Legacy 함수는항상 CK_FUNCTION_NOT_PAALLEL 리턴함 - C_CancelFunction Legacy 함수는항상 CK_FUNCTION_NOT_PAALLEL 리턴함 -

27 부록 3. 보안토큰 API(PKCS#11) 메커니즘프로파일 SA 메카니즘 메카니즘정의내용처리 CKM_SA_PKCS PKCS#1 Version1.5 에정의된 SA 암호시스템과블록형식에기반한메커니즘 CKM_SA_PKCS_KEY_PAI_GEN PKCS#1 에정의된 SA 키를생성하는메커니즘 CKM_SA_PKCS_OAEP PKCS#1 Version2.0 에정의된 SA 암호시스템과블록형식에기반한메커니즘 CKM_SHA1_SA_PKCS SHA-1 해쉬알고리즘에기반한전자서명메커니즘 O CKM_SHA256_SA_PKCS SHA256 해쉬알고리즘에기반한전자서명메커니즘 O ECDSA 메카니즘 CKM_ECDSA_PKCS_KEY_PAI_GEN 키를생성하는메커니즘 CKM_SHA1_ECDSA_PKCS SHA-1 해쉬알고리즘에기반한전자서명메카니즘 O ECDH 메카니즘 CKM_ECDH1_DEIVE ANSI X9.63 에기반한키유도메카니즘 O CKM_ECDH1_COFACTO_DEIVE ANSI X9.63 에기반한 ECDH 키유도메카니즘 CKM_ECDH1_COFACTO_DEIVE ANSI X9.63 에기반한 Cofactor ECDH 키유도메카니즘 Block cipher 메커니즘 CKM_DES3_GEN 블록 Cipher 키생성메커니즘 O CKM_DES3_ECB ECB(Electronic codebook) 메커니즘 ( 암 / 복호화 ) O CKM_DES3_CBC CBC(Cipher-block chaining) 메커니즘 ( 암 / 복호화 ) O CKM_DES3_CBC_PAD CBC_PAD (PKCS Padding 이추가된 Cipher-block chaining) 메커니즘 ( 암 / 복호화 ) CKM_DES3_MAC_GENEAL General-legnth MACing 메커니즘 ( 서명 / 검증 ) O CKM_DES3_MAC General MACing 메커니즘 ( 서명 / 검증 ) O CKM_SEED_GEN 블록 Cipher 키생성메커니즘 O CKM_SEED_ECB ECB(Electronic codebook) 메커니즘 ( 암 / 복호화 ) O CKM_SEED_CBC CBC(Cipher-block chaining) 메커니즘 ( 암 / 복호화 ) O CKM_SEED_CBC_PAD CBC_PAD (PKCS Padding 이추가된 Cipher-block chaining) 메커니즘 ( 암 / 복호화 ) CKM_AIA_KEY_GEN 블록 Cipher 키생성메커니즘 O CKM_AIA_ECB ECB(Electronic codebook) 메커니즘 ( 암 / 복호화 ) O CKM_AIA_CBC CBC(Cipher-block chaining) 메커니즘 ( 암 / 복호화 ) O CKM_AIA_CBC_PAD CBC_PAD (PKCS Padding 이추가된 Cipher-block chaining) 메커니즘 ( 암 / 복호화 ) CKM_AIA_MAC_GENEAL General-legnth MACing 메커니즘 ( 서명 / 검증 ) O CKM_AIA_MAC General MACing 메커니즘 ( 서명 / 검증 ) O CKM_AES_KEY_GEN 블록 Cipher 키생성메커니즘 O CKM_AES_ECB ECB(Electronic codebook) 메커니즘 ( 암 / 복호화 ) O CKM_AES_CBC CBC(Cipher-block chaining) 메커니즘 ( 암 / 복호화 ) O CKM_AES_CBC_PAD CBC_PAD (PKCS Padding 이추가된 Cipher-block chaining) 메 O M M O O O O O O O

28 메카니즘정의내용처리 커니즘 ( 암 / 복호화 ) CKM_AES_MAC_GENEAL General-legnth MACing 메커니즘 ( 서명 / 검증 ) O CKM_AES_MAC CKM_SHA_1 FIPS PUB 에정의된해쉬메커니즘 O CKM_SHA_1_HMAC_GENEAL General-length SHA-1-HMAC 메커니즘 O CKM_SHA_1_HMAC SHA-1-HMAC 메커니즘 O CKM_SHA_1_KEY_DEIVATION SHA-1 Key 유도메커니즘 O SHA-256 메커니즘 CKM_SHA256 FIPS PUB 에정의된해쉬메커니즘 O CKM_SHA256_HMAC_GENEAL General-length SHA-256-HMAC 메커니즘 O CKM_SHA256_HMAC SHA-256-HMAC 메커니즘 O CKM_SHA256_KEY_DEIVATION SHA-256 Key 유도메커니즘 PKCS#5 and PKCS#5-style password-based encryption 메커니즘 CKM_PKCS5_PBKD2 PKCS#5 에정의된패스워드기반암호화키생성메커니즘 O PKCS#12 password-based encryption/authentication 메커니즘 CKM_PBE_SHA1_DES3_EDE_CBC 3DES 를이용한패스워드기반암호화메커니즘 CKM_PBE_SHA1_SEED_EDE_CBC SEED 를이용한패스워드기반암호화메커니즘 CKM_PBA_SHA1_WITH_SHA1_HMAC Salt 와패스워드로부터 160bit secret 키를생성하기위한메커니즘 O O O O

29 부록 4. 환경파일을이용한보안토큰구동프로그램위치정보관리 1. 위치정보관리보안토큰 API와관련한구동프로그램이설치되어있는위치정보및구동프로그램에대한정보를관리하기위해환경파일을이용한다. 환경파일의파일명및위치는다음의 [ 표 1] 과같이정의한다. 스마트폰등모바일플랫폼과같이구동프로그램이별도로설치및제공되지않고모바일앱의구성모듈로존재하는경우구동프로그램위치정보관리가필요치않으며, 별도의환경파일을구성하지않는다. 데스크톱 플랫폼 구분 Windows 계열 Unix, Linux 계열 Mac 환경파일 %SYSTEM%\npki_pkcs11.cnf ( 사용자계정 )/.npki_pkcs11.cnf ( 사용자계정 )/.npki_pkcs11.cnf [ 표 1] 보안토큰구동프로그램환경파일 2. 환경파일구성환경파일은 [PKCS#11.Driver] 섹션으로시작하며, 하나의키 (Driver) 로구성된다. Driver에는하위섹션명이나열되며하나이상의하위섹션명은공백문자로구분한다. 하위섹션명은보안토큰제품정보 (ID) 를사용한다. 하위섹션명은네개의키 (Info, Name, Programs, SignatureToken) 로구성된다. Info에는구동프로그램정보와구동프로그램버전정보를나열하며두정보는 : 로구분한다. 단, 바이오보안토큰의경우구동프로그램정보앞에 BIO_ 를연접하여사용하고스마트인증의경우 Mobile_ 을연접하여사용한다. Name은보안토큰 API 관련구동프로그램위치정보및구동프로그램명이며, Programs에기타보안토큰관련구동프로그램위치정보및구동프로그램명을나열하며하나이상의구동프로그램은, 로구분한다. SignatureToken은구동프로그램검증정보의위치정보및파일명을기입하며, 보안토큰구동프로그램검증정보는공인인증체계기술규격에적합한보안토큰에대해서만생성된다.

30 3. 환경파일 (npki_pkcs11.cnf) 예제 [PKCS#11.Driver] // 섹션 Driver=Vid_0000&Pid_0001 Vid_0001&Pid_0001 Vid_0002&Pid_0001 USIM_001// 하위섹션명 [Vid_0000&Pid_0001] // 하위섹션명 Info=KISA Token: //Info 키 Name=C:\Program Files\pkcs11.dll //Name 키 Programs=C:\Program Files\cert.dll,C:\Program Files\device.sys [Vid_0001&Pid_0001] Info=KISA Token2: Name=C:\Windows\npki_pkcs11.dll Programs=C:\Program Files\cert1.dll,C:\Program Files\device1.sys SignatureToken=C:\Program Files\Vid_0001&Pid_0001.der [Vid_0002&Pid_0001] Info=BIO_KISA Token3: Name=C:\Program Files\npki2_pkcs11.dll Programs=C:\Program Files\cert2.dll,C:\Program Files\device2.sys SignatureToken=C:\Program Files\Vid_0002&Pid_0001.der [USIM_0001] Info=Mobile_KISA Token4: Name=C:\Program Files\usim\npki3_pkcs11.dll Programs=C:\Program Files\usim\cert3.dll,C:\Program Files\usim\device3.sys SignatureToken=C:\Program Files\usim\USIM_0001.der

31 부록 5. 보안토큰구동프로그램검증정보처리 1. 보안토큰구동프로그램검증정보보안토큰구동프로그램검증정보 ( 이하검증정보 ) 는해당플랫폼에설치된구동프로그램의무결성및구현적합성을확인할수있는정보로써, SignatureValue의 DE 인코딩값으로구성된다. 2. 검증정보확인가입자소프트웨어는 [ 부록 4.] 환경파일위치정보를통해검증정보파일의위치를확인하고, 해당검증정보의해쉬값 (hashvalue) 및전자서명값 (signature) 검증을통해구동프로그램의무결성및구현적합성을확인할수있다. 특히, 전자서명값검증은해당플랫폼에설치된최상위인증기관인증서또는정보통신망을통해안전하게획득한최상위인증기관인증서를통해검증하여야한다. 모바일플랫폼의경우 [ 부록 4] 의구동프로그램위치정보환경파일을사용하지않으며, 구동프로그램이모바일앱의구성모듈로사용되는경우별도의검증정보를사용하지않는다. 3. 검증정보 ASN.1 ClientHSM DEFINITIONS ::= BEGIN IMPOTS -- Imports from FC 3280 [POFILE], Appendix A.1 AlgorithmIdentifier, Certificate, CertificateList, CertificateSerialNumber, Name FOM PKIX1Explicit88 { iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) mod(0) pkix1-explicit(18) }; SignatureToken ::= SEQUENCE { drivername PrintableString, -- 보안토큰구동프로그램 DLL 이름 hashid AlgorithmIdentifier, -- 해쉬알고리즘

32 } hashvalue OCTET STING -- 보안토큰구동프로그램 DLL에대한해쉬값으로, 가입자소프트웨어는 -- 시스템에설치된 drivername의 DLL을입력값으로해쉬하여 hashvalue와 -- 비교함으로서사용자PC에설치된무결성을검증 SignerAndSerialNumber ::= SEQUENCE { issuer Name, serialnumber CertificateSerialNumber } SignatureValue ::= SEQUENCE { tobesigned SEQUENCE OF SignautreToken, -- 보안토큰구동프로그램 DLL이여러 DLL로구성되어있을경우 -- 각 DLL에대한무결성을보증하기위해 SEQUENCE OF로구성 signaturealgorithm AlgorithmIdentifier, -- 전자서명알고리즘의 OID signerandserialnumber SignerAndSerialNumber, -- 전자서명생성자의 (KISA 3280 루트인증서 ) signature OCTET STING -- tobesigned에대한전자서명값 } END

33 부록 6. 보안토큰 API(PKCS#11) 반환값프로파일 종류반환값및내용처리 일반 세션 보안토큰 순차수행 Mutex CK_OK 보안토큰이성공적으로기능을수행 CK_GENEAL_EO 보안토큰에어떠한복구불가능한에러가발생하였음을의미함. CK_HOST_MEMOY, CK_FUNCTION_FAILED 와함께발생하는경우, CK_GENEAL_EO 가우선반환됨 CK_HOST_MEMOY 보안토큰구동프로그램을구동하는컴퓨터에메모리가부족할경우발생 CK_FUNCTION_FAILED 보안토큰구동프로그램특정함수의기능이수행될수없을경우발생. 해당함수가세션을사용하였다면 CK_SESSION_INFO 구조체의 uldeviceerror 항목에서오류발생원인을찾을수있음 CK_SESSION_HANDLE_INVALID 함수가호출될당시해당세션핸들이유효하지않을경우발생하는오류임. CK_DEVICE_EMOVED, CK_SESSION_CLOSED 와함께발생하는경우, CK_SESSION_HANDLE_INVALID 가우선반환됨 CK_DEVICE_EMOVED 보안토큰이함수실행도중제거될경우발생 CK_SESSION_CLOSED 세션이함수도중종료된경우발생 CK_DEVICE_MEMOY 보안토큰에메모리가부족할경우발생. CK_DEVICE_EO, CK_DEVICE_EMOVED 와함께발생하는경우, CK_DEVICE_MEMOY 가우선반환됨 CK_DEVICE_EO 보안토큰또는슬롯에어떠한문제가발생할경우발생 CK_DEVICE_EMOVED 보안토큰이함수실행도중제거될경우발생 CK_TOKEN_NOT_PESENT 보안토큰이함수실행시점에존재하지않을경우발생 CK_CANCEL 보안토큰구동프로그램이가입자 S/W 와함께기능을상호순차적으로수행할때, 가입자 S/W 가 CK_CANCEL 를반환하면보안토큰구동프로그램은 CK_FUNCTION_CANCEL 을반환한다. CK_MUTEX_BAD Mutex 를처리하는함수가잘못된 mutex 객체를전달받을경우발생 M M M M M M M M M M M

34 종류반환값및내용처리 입출력 CK_MUTEX_NOT_LOCKED Mutex 잠김을해제하고자하는함수가해당 mutex 가잠겨있지않음을발견할경우발생 CK_AGUMENTS_BAD 보안토큰구동프로그램으로전달되는함수인자가잘못돼있을경우발생 CK_ATTIBUTE_EAD_ONLY 가입자 S/W 가변경할수없는속성의값을변경하고자하는경우발생 CK_ATTIBUTE_TYPE_INVALID 가입자 S/W 가템플릿에유효하지않는속성타입을명시하여함수를호출하는발생 CK_BUFFE_TOO_SMALL 가입자 S/W 의버퍼메모리가작아서보안토큰구동프로그램결과를전달할수없는경우발생 CK_CANT_LOCK C_Initialize 함수에만해당하는오류로써, 가입자 S/W 가안전한기능수행을위해 thread-safety Locking 을요청하였는데, 보안토큰구동프로그램이해당기능을제공하지않을경우발생 CK_CYPTOKI_ALEADY_INITIALIZED C_Initialize 함수에만해당하는오류로써, 보안토큰구동프로그램이이미초기화되어있음을의미 CK_CYPTOKI_NOT_INITIALIZED C_Initialize 및 C_GetFunctionList 이외의함수에해당하는오류로써, 보안토큰구동프로그램이초기화되지않는상황임을의미 CK_DATA_INVALID 보안토큰구동프로그램에입력되는입력값이유효하지않을경우발생. CK_DATA_LEN_ANGE 보다낮은우선순위를가짐. 단, 본반환값은 CKM_SA_X_509 메커니즘에만해당 CK_DATA_LEN_ANGE 보안토큰구동프로그램에입력되는입력값의길이가유효하지않을경우발생 CK_DOMAIN_PAAMS_INVLALID 유효하지않거나지원되지않는도메인파라미터가보안토큰구동프로그램에입력되는경우발생 CK_ENCYPTED_DATA_INVALID 복호화함수에입력되는암호문이유효하지않을경우발생. CK_ENCYPTED_DATA_LEN_ANGE 보다낮은우선순위를가짐 CK_ENCYPTED_DATA_LEN_ANGE 복호화함수에입력되는암호문의길이가유효하지않을경우발생. M CK_FUNCTION_CANCELED

35 종류반환값및내용처리 보안토큰구동프로그램이가입자 S/W 와함께기능을상호순차적으로수행할때, 가입자 S/W 가 CK_CANCEL 를반환하면보안토큰구동프로그램은 CK_FUNCTION_CANCEL 을반환한다. 보호된경로를통한 PIN 입력수행도중발생할수있음 CK_FUNCTION_NOT_PAALLEL 지정된세션에 parallel 로시행되는함수가없음을알림, C_GetFunctionStatus 와 C_CancelFunction. 에의해반환됨 CK_FUNCTION_NOT_SUPPOTED 해당함수가구동프로그램에서지원되지않을경우발생 CK_INFOMATION_SENSITIVE 정보가민감하여제공되어질수없음을나타냄 CK_KEY_CHANGED 기존에저장된키가변경되었음을알림 CK_KEY_FUNCTION_NOT_PEMITTED 허가되지않은키의속성을사용하고자했을때나타나는메시지 CK_KEY_HANDLE_INVALID 키를위한핸들이유효하지않을때발생 CK_KEY_INDIGESTIBLE C_DigestKey 함수에만해당하는메시지로써, 지정된키의값이특정이유로인해받아질수없을때발생 CK_KEY_NEEDED C_SetOperationState 함수에만해당하는메시지로써, 하나이상의키가있어야하는데없기때문에발생 CK_KEY_NOT_NEEDED 해당사항이없는키가추가적으로제공되었을경우발생 CK_KEY_NOT_WAPPABLE CKA_UNEXTACTABLE 속성이 TUE 로설정되어있지않더라도, 보안토큰구동프로그램은해당키를 Wrap 할수없음 CK_KEY_SIZE_ANGE 요청된 cryptographic 처리과정이원칙상문제가없어도키사이즈가범위밖일경우발생 CK_KEY_TYPE_INCONSISTENT 지정된키가해당메커니즘의키가아닐경우발생 CK_KEY_UNEXTACTABLE CKA_UNEXTACTABLE 속성이 TUE 로설정되어있기때문에, 해당개인키또는비밀키는 Wrap 될수없음 CK_MECHANISM_INVALID 지정되지않거나지원되지않는메커니즘사용시발생 CK_MECHANISM_PAAM_INVALID M

36 종류반환값및내용처리 유효하지않는메커니즘매개변수가사용될경우발생 CK_NEED_TO_CEATE_THEADS C_Initialize 가새로운 thread 를만들수없는상황, library 가제역할을하지못해새로운 thread 를만들수없을때발생 (C_Initialize 에만해당하는메시지 ) CK_NO_EVENT C_GetSlotEvent 함수에만해당하는메시지로써, non-blocking 모드에서 C_GetSlotEvent 호출되고새로운슬롯이벤트가없을때발생 CK_OBJECT_HANDLE_INVALID 지정된 object 핸들이유효하지않을때발생 CK_OPEATION_ACTIVE 이미처리과정이진행되고있어지정된처리과정을진행시키지못하게될때발생 CK_OPEATION_NOT_INITIALIZED 해당세션에해당하는적절한타입의액티브한실행이일어나지않을경우발생 CK_PIN_EXPIED 지정된 PIN 이만료되고요청된처리가 PIN 값이바뀔때까지실행되지않음 CK_PIN_INCOECT 저장된 PIN 과일치하지않을경우발생 CK_PIN_INVALID 지정된 PIN 에유효하지않는문자가존재할경우발생 CK_PIN_LEN_ANGE 지정된 PIN 이너무길거나너무짧을경우발생 CK_PIN_LOCKED 지정된 PIN 이 lock 되어있다. 보안토큰이인증과정중더이상의과정을허용치않을때발생 CK_ANDOM_NO_NG 지정된토큰이랜덤변수생성기가없을때발생. CK_ANDOM_SEED_NOT_SUPPOTED 보다높은우선순위를가짐 CK_ANDOM_SEED_NOT_SUPPOTED 보안토큰의랜덤변수생성기가응용프로그램으로부터 seeding 을받지않고자할때발생. 본메시지는 C_Seedandom 함수에의해서만이용. CK_SAVED_STATE_INVALID 제공된저장된암호화처리상태가유효하지않아, 지정된세션에저장될수없을경우발생 M M M M CK_SESSION_COUNT M

37 종류반환값및내용처리 세션을열려는시도가실패할경우발생. C_OpenSession 함수에서만이용. CK_SESSION_EXISTS 토큰이있는세션이이미열려있음 CK_SESSION_PAALLEL_NOT_SUPPOTED parallel 세션을지원하지않음. C_OpenSession 함수에서만이용. CK_SESSION_EAD_ONLY 읽기만허용되는세션임을설명. CK_TOKEN_WITE_POTECTED 보다낲은우선순위를가짐 CK_SESSION_EAD_ONLY_EXISTS 읽기세션이이미존재하여 SO 가 logged in 되지않음 CK_SESSION_EAD_WITE_SO_EXISTS 읽기 / 쓰기세션이이미존재, 읽기세션은열리지않음 CK_SIGNATUE_LEN_ANGE 전자서명길이가유효하지않을경우발생. CK_SIGNATUE_INVALID 보다우선순위를가짐 CK_SIGNATUE_INVALID 전자서명값이유효하지않을경우발생 CK_SLOT_ID_INVALID 지정된슬롯아이디가유효하지않을경우발생 CK_STATE_UNSAVEABLE 단순히토큰이현상태를저장하지못할경우발생. CK_OPEATION_NOT_INITIALIZED 보다낮은우선순위를가짐 CK_TEMPLATE_INCOMPLETE object 를만들기위해지정된템플릿이미완성되고필요한요소들이부족한상황일경우발생 CK_TEMPLATE_INCONSISTENT object 를만들기위해지정된템플릿에충돌요소가존재할경우발생 CK_TOKEN_NOT_ECOGNIZED 슬롯에있는토큰을인식하지못할경우발생 CK_TOKEN_WITE_POTECTED 보안토큰에쓰기보호가되어있어업무를수행하지못할경우발생. CK_SESSION_EAD_ONLY 보다높은우선순위를가짐 CK_UNWAPPING_KEY_HANDLE_INVALID 다른키를풀 (Unwrap) 려고사용되는키핸들이유효하지않을경우발생 CK_UNWAPPING_KEY_SIZE_ANGE 제공된키의키사이즈가허용범위를넘어선경우발생 CK_UNWAPPING_KEY_TYPE_INCONSISTENT 메커니즘이맞지않아키를풀수없을경우발생 M M M M M M

38 종류반환값및내용처리 바이오보안토큰관리 CK_USE_ALEADY_LOGGED_IN 이미로그인한상태를알림 CK_USE_ANOTHE_ALEADY_LOGGED_IN 다른사용자가로그인하여로그인이안됨 CK_USE_NOT_LOGGED_IN 로그인을하지않아작업이수행되지않을경우발생 CK_USE_PIN_NOT_INITIALIZED 사용자의핀이초기화되지않을경우발생 CK_USE_TOO_MANY_TYPES 보안토큰이수용할수있는이상의동시접속이이루어질때발생 CK_USE_TYPE_INVALID CK_USE_TYPE 에유효하지않는값이입력되었을경우발생 CK_WAPPED_KEY_INVALID 제공된 wrapped key 가유효하지않을경우발생 CK_WAPPED_KEY_LEN_ANGE wrapped key 의길이가유효하지않을경우발생. CK_WAPPED_KEY_INVALID 보다낮은우선순위를가짐 CK_WAPPING_KEY_HANDLE_INVALID 다른키를 wrap 하기위한키핸들이유효하지않을경우발생 CK_WAPPING_KEY_SIZE_ANGE 키길이로인해 wrapping 에러난경우발생 CK_WAPPING_KEY_TYPE_INCONSISTENT 지정되지않은메카니즘으로 wrap 한경우발생 CK_BIO_FINGE_AUTH_NEEDED 지문인증없이카드사용 CK_BIO_SENSO_EO 지문센서 H/W 에러 CK_BIO_NO_FINGE_INFO 지문템플릿없음. 지문정보가등록되어있지않아오류발생 CK_BIO_SENSO_TIMEOUT 지문센서타임아웃 CK_BIO_FINGE_AUTH_FAILED 지문인증실패 CK_BIO_NO_FINGE_AUTH_ID 지문인증 ID 없음 CK_BIO_FINGE_ALGO_FAILED 지문알고리즘비정상종료 CK_BIO_INVALID_USE M M M

39 종류반환값및내용처리 사용자등록정보불일치 바이오보안토큰 API 반환값헤더파일 : #define CK_BIO_FINGE_AUTH_NEEDED #define CK_BIO_SENSO_EO #define CK_BIO_NO_FINGE_INFO #define CK_BIO_SENSO_TIMEOUT #define CK_BIO_FINGE_AUTH_FAILED #define CK_BIO_NO_FINGE_AUTH_ID #define CK_BIO_FINGE_ALGO_FAILED #define CK_BIO_INVALID_USE 0x x x x x x x x 바이오보안토큰관리와관련된반환값처리요구사항 '' 은바이오보안토큰구동프로그 램의경우 'M' 으로처리한다.

40 부록 7. PKCS#11 사용예 1. 개요공인인증서사용자가공인인증서저장매체로보안토큰을이용할수있도록가입자소프트웨어에서 PKCS#11 관련기능을구현할때참고할수있도록구현예를제공한다. 2. PKCS#11 헤더 include 표준규격 API를이용하여구현하기위해서는 cryptoki 헤더파일을 include 시켜야한다. - PKCS#11 v2.20 이후버전 #include cryptoki.h - PKCS#11 v2.20 이전버전 #include pkcs11.h 3. 토큰세션열기 // 출력값 CK_SESSION_HANDLE hsession; /* 토큰과의세션핸들 */ / // 변수선언 CK_V nv = CK_OK; /* 에러코드확인 */ unsigned long i = 0; unsigned long ulslotcnt = 0; /* 토큰이꽂혀있는슬롯의개수 */ unsigned long pslotlist[5]; /* 토큰이꽂혀있는슬롯목록 */ CK_TOKEN_INFO tokeninfo; /* 토큰정보 */ // PKCS11 모듈초기화 if ((nv = C_Initialize(NULL_PT))!= CK_OK) goto FINISH; // 토큰이꽂혀있는슬롯의개수확인 if ((nv = C_GetSlotList(TUE, NULL_PT, &ulslotcnt))!= CK_OK) goto FINISH; if (ulslotcnt <= 0) goto FINISH;

41 // 토큰이꽂혀있는슬롯목록획득 if ((nv = C_GetSlotList(TUE, pslotlist, &ulslotcnt))!= CK_OK) goto FINISH; // 각슬롯의토큰정보를확인하여사용할토큰선택 for (i=0; i<ulslotcnt; i++) { if ((nv = C_GetTokenInfo(pSlotList[i], goto FINISH; &tokeninfo))!= CK_OK) } // 획득한토큰정보출력 // 사용하고자하는토큰선택 (index) // 세션열기 nv = C_OpenSession(pSlotList[index], CKF_W_SESSION CKF_SEIAL_SESSION, &papplication, NULL_PT, &hsession); goto FINISH; FINISH: C_Finalize(NULL_PT); return nv; 4. 토큰에있는인증서목록중사용하고자하는인증서선택 // 입력값 CK_SESSION_HANDLE hsession; /* 토큰과의세션핸들 (2. 단계에서획득 ) */ // 출력값 ( 인증서, keyid) CK_BYTE poutcert[3072], poutkeyid[32]; CK_ULONG loutcertlen = 0, loutkeyidlen = 0; / // 변수선언 CK_V nv = CK_OK; /* 에러코드확인 */ Unsigned long i = 0; CK_OBJECT_HANDLE hcertary[15]; /* 인증서객체핸들목록 */ Unsigned long ulcertcnt = 0; /* 인증서개수 */ /* 인증서검색을위한템플릿선언 */ CK_OBJECT_CLASS certobject = CKO_CETIFICATE; CK_CETIFICATE_TYPE x509cert = CKC_X_509; CK_ATTIBUTE px509certtemplate[] = { {CKA_CLASS, &certobject, sizeof(certobject)}, {CKA_CETIFICATE_TYPE, &x509cert, sizeof(x509cert)}}; /* 인증서, keyid 획득을위한템플릿선언 */

42 BYTE pcertval[2200] = {0x00, }; BYTE pkeyid[20] = {0x00, }; CK_ATTIBUTE pvaluetemplate[] = { {CKA_VALUE, pcertval, 0}, {CKA_ID, pkeyid, 0}}; // 인증서객체를찾기위한초기화 if ((nv = C_FindObjectsInit(hSession, px509certtemplate, 2))!= CK_OK) goto FINISH; if ((nv = C_FindObjects(hSession, hcertary, 15, &ulcertcnt))!= CK_OK) goto FINISH; for (i=0; i<ulcount; i++) { // 템플릿초기화 pvaluetemplate[0].ulvaluelen = sizeof(pcertval); if ((nv = C_GetAttributeValue(hSession, hcertary[i], pvaluetemplate, 1))!= CK_OK) goto FINISH; } // 획득한인증서사용자선택을위해보여줌 // 인증서 : pvaluetemplate[0].pvalue, pvaluetemplate[0].ulvaluelen // 사용하고자하는인증서선택 (index) // 선택된인증서와 keyid 리턴 // keyid 는인증서와쌍인개인키, 공개키, 랜덤값을찾는데사용됨. pvaluetemplate[0].ulvaluelen pvaluetemplate[1].ulvaluelen = sizeof(pcertval); = sizeof(pkeyid); if ((nv = C_GetAttributeValue(hSession, hcertary[index], pvaluetemplate, 2))!= CK_OK) goto FINISH; memcpy(poutcert, pvaluetemplate[0].pvalue, pvaluetemplate[0].ulvaluelen); loutcertlen = pvaluetemplate[0].ulvaluelen; memcpy(poutkeyid, pvaluetemplate[1].pvalue, pvaluetemplate[1].ulvaluelen); loutkeyidlen = pvaluetemplate[1].ulvaluelen; FINISH: C_FindObjectsFinal(hSession); return nv;

43 5. 선택한인증서를이용한서명 // 입력값 CK_SESSION_HANDLE hsession; /* 토큰과의세션핸들 (2. 단계에서획득 ) */ unsigned char keyid[20]; /* 인증서의 keyid 값 (3. 단계에서획득 ) */ CK_MECHANISM_TYPE hashalg; /* 서명시사용할해쉬알고리즘 */ unsigned char *pdata; /* 서명하고자하는원본 */ int ndatalen; /* 서명하고자하는원본길이 */ // 출력값 ( 서명값 ) CK_BYTE out[1024]; CK_ULONG outlen = 0; / // 변수선언 CK_V nv = CK_OK; /* 에러코드확인 */ CK_OBJECT_HANDLE hprikeyary[5]; /* 개인키객체핸들목록 */ Unsigned long ulprikeycnt = 0; /* 개인키개수 */ CK_KEY_TYPE key_type = 0; /* 개인키종류 ( 알고리즘 ) */ CK_ATTIBUTE pkeytypetmpl[] = {{ CKA_KEY_TYPE, &key_type, sizeof(ck_key_type) }}; /* keyid에해당하는개인키핸들획득 */ CK_OBJECT_CLASS objprikey = CKO_PIVATE_KEY; CK_ATTIBUTE pprikeytemplate[] = { {CKA_CLASS, &objprikey, sizeof(objprikey)}, { CKA_ID, &keyid, sizeof(keyid)}}; // 개인키객체를찾기위한초기화 if ((nv = C_FindObjectsInit(hSession, pprikeytemplate, 2))!= CK_OK) goto FINISH; if ((nv = C_FindObjects(hSession, hprikeyary, 5, &ulprikeycnt))!= CK_OK) goto FINISH; // 해당 keyid 와일치하는개인키개수확인 // E_NOT_EXIST, E_KEY_ID_COINCIDE 에러값정의 if (ulprikeycnt == 0) { nv = E_NOT_EXIST; goto FINISH; } else if (ulpriikeycnt!= 1) { nv = E_KEY_ID_COINCIDE, goto FINISH; } // 개인키알고리즘확인 if ((nv = C_GetAttributeValue(hSession, hprikeyary[0], pkeytypetmpl, 1))!= CK_OK) goto FINISH; if (key_type == CKK_SA) { // SA 서명인경우많은보안토큰들이해쉬알고리즘을이용한서명이아닌 // SA_PKCS 즉, SA 개인키암호화를지원하므로원본메시지에대한 DigestInfo

44 // 구성후개인키암호화수행한다. CK_BYTE pdigestinfo[100]; CK_ULONG ldigestinfolen = 0; if ((nv = MakeDigestInfo(data, pdata, ndatalen, &pdigestinfo, &ldigestinfolen))!= CK_OK) goto FINISH; CK_MECHANISM mechanism = { CKM_SA_PKCS, NULL, 0 }; if ((nv = C_SignInit(hSession, goto FINISH; &mechanism, hprikeyary[0]))!= CK_OK) if ((nv = C_Sign(hSession, pdigestinfo, ldigestinfolen, out, &outlen))!= CK_OK) goto FINISH; } else { CK_MECHANISM signmech = { 0, 0, 0 }; if (hashalg == CKM_SHA_1) signmech.mechanism = CKM_KCDSA_SHA1; else if (nhash == ALGID_HS_SHA256) signmech.mechanism = CKM_KCDSA_SHA256; else { // E_INVALID_HASH_ALG 값정의 nv = E_INVALID_HASH_ALG; goto FINISH; } if ((nv = C_SignInit(m_hSession, goto FINISH; if ((nv = C_Sign(hSession, pdata, goto FINISH; } FINISH: &signmech, hprikeyary[0]))!= CK_OK) ndatalen, psign, &lsignlen))!= CK_OK) C_FindObjectsFinal(hSession); return nv; int MakeDigestInfo(CK_MECHANISM_TYPE hashalg, unsigned char *pdata, int ndatalen, unsigned char **pdigestinfo, int *pdigestinfolen) { CK_V nv = CK_OK; /* 에러코드확인 */ CK_BYTE pdigest[32]; CK_ULONG ldigestlen = 32;

45 CK_MECHANISM hashmech = { hashalg, 0, 0 }; C_DigestInit(m_hSession, &hashmech); if ((nv = C_Digest(m_hSession, pdata, ndatalen, pdigest, &ldigestlen))!= CK_OK) return nv; 0x60, } // 지원되는각해쉬알고리즘의 DigestInfo 구성을위한헤더정보 static const BYTE SHA1_PADDING[] = {0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, 0x04, 0x14 }; static const BYTE SHA256_PADDING[] = {0x30, 0x31, 0x30, 0x0d, 0x06, 0x09, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x04, 0x20 }; if (hashalg == CKM_SHA_1) { memcpy(pdigestinfo, 0, SHA1_PADDING, sizeof(sha1_padding)); memcpy(pdigestinfo, sizeof(sha1_padding), pdigest, ldigestlen); *pdigestinfolen = sizeof(sha1_padding) + ldigestlen; } else if (nhash == ALGID_HS_SHA256) { memcpy(pdigestinfo, SHA256_PADDING, sizeof(sha256_padding)); memcpy(pdigestinfo, sizeof(sha256_padding), pdigest, ldigestlen); *pdigestinfolen = sizeof(sha256_padding) + ldigestlen; } else { // E_INVALID_HASH_ALG 값정의 return E_INVALID_HASH_ALG; } return 0; 6. 본인확인을위한랜덤값획득 // 입력값 CK_SESSION_HANDLE hsession; /* 토큰과의세션핸들 (2. 단계에서획득 ) */ unsigned char keyid[20]; /* 인증서의 keyid 값 (3. 단계에서획득 ) */ // 출력값 ( 랜덤값 ) unsigned char out[32]; int outlen = 0; / // 변수선언 CK_OBJECT_CLASS objdata = CKO_DATA; CK_ATTIBUTE datatemplate = { CKA_CLASS, & objdata, sizeof(ck_object_class)}; CK_OBJECT_HANDLE hary[10]; CK_ULONG ulcount = 0;

46 CK_ULONG i = 0; CK_BYTE plabel[512] = {0x00, }; CK_BYTE pandom[64]; // 찾고자하는 random 값의라벨을만든다. sprintf(plabel, "4VID=%s", tohexstring(keyid)); // data 객체의개수확인 if ((nv = C_FindObjectsInit(hSession, &datatemplate, 1))!= CK_OK) goto FINISH; if ((nv = C_FindObjects(hSession, hary, 10, &ulcount))!= CK_OK) goto FINISH; if (ulcount == 0) { nv = DATA_OBJ_NOT_EXIST; goto FINISH; } // data 객체중라벨이동일한객체를찾는다. for (i = 0; i<ulcount; i++) { CK_BYTE ckalabel[32]; CK_ATTIBUTE randomtemplate = {{CKA_LABEL, (CK_VOID_PT) ckalabel, sizeof(ckalabel)}, {CKA_VALUE, pandom, sizeof(pandom)}}; if ((nv = C_GetAttributeValue(hSession, hary[i], &randomtemplate, 2))!= CK_OK) goto FINISH; // 라벨값비교 ( 대소문자구분하지않음 ) if ((randomtemplate[0].ulvaluelen == strlen(plabel)) && (_memicmp(randomtemplate[0].pvalue, (char*)plabel, randomtemplate[0].ulvaluelen) == 0)) { // 동일한라벨에해당하는객체의값즉, 랜덤값을리턴한다. memcpy(out, randomtemplate[1].pvalue, randomtemplate[1].ulvaluelen); outlen = randomtemplate[1].ulvaluelen; return 0; } } FINISH: C_FindObjectsFinal(hSession); return nv;

47 부록 8. PKCS#11 자바인터페이스사용예 1. 개요 1.1. 인터페이스모델자바를이용하여가입자소프트웨어를구현하는경우, 보안토큰이용을위해자바에서지원하는 Sun PKCS#11 Provider와 IBM, IAIK 등써드파티의솔루션을이용할수있다. 본규격에서는성능및플랫폼상의제한을받지않는한 Sun PKCS#11 Provider의이용을권장한다. C/C++ 등으로구현된 PKCS#11 네이티브라이브러리를이용하기위해아래와같이자바 Wrapper 클래스와 Wrapper 네이티브모듈로구성된 PKCS#11 Wrapper와 PKCS#11 SPI를갖춘 JCA/JCE 프로바이더를이용할수있다. 또한, 직접자바를이용하여 PKCS#11 라이브러리를구현하여이용되는경우에도 PKCS#11 Wapper 등을구성하여 JCA/JCE 프로바이더와동일한인터페이스를유지할수있다 Sun PKCS#11 Provider 자바기반의가입자소프트웨어구현시보안토큰과관련한부분은 Sun PKCS#11 Provider 를참고한다. 자바 5.0부터자바플랫폼에서네이티브 PKCS#11 토큰이용을보장하기위해 Sun PKCS#11 Provider가추가되었으며, 이프로바이더는자바기반으로구현된가입자소프트웨어가네이티브 PKCS#11 토큰에접근할수있도록한다. 2. Sun PKCS#11 Provider 사용예

48 2.1. 프로바이더설정자바 PKCS#11 프로바이더 (SunPKCS11) 를사용하기위해서는설정파일을이용하여등록하여사용하거나프로그램에서동적으로등록하여사용가능하다. String pkcs11config = "name = SmartCard" + "library = C:\Windows\system32\pkcs11.dll"; byte[] pkcs11configbyte = pkcs11config.getbyte(); ByteArrayInputStream configstream = new ByteArrayInputStream(pkcs11Config.getByte); Provider pkcs11provider = new sun.security.pkcs11.sunpkcs11(configstream); Security.addProvider(pkcs11Provider); 2.2. 보안토큰로그인보안토큰을사용하기위해서는자바의키저장객체 (KeyStore) 를프로바이더와보안토큰비밀번호 (PIN) 를이용하여로딩함으로서보안토큰에로그인가능하다. char[] pin =...; KeyStore ks = KeyStore.getInstance("PKCS11"); ks.load(null, pin); 2.3. 키쌍생성키쌍을생성하기위해서는 KeyPairGenerator 클래스를프로바이더와알고리즘을이용하여객체를생성한후 genkeypair 메소드를호출하여키쌍을생성한다. KeyPairGenerator kpg = KeyPairGenerator.getInstance("SA", pkcs11provider); KeyPair kp = kpg.genkeypair(); 2.4. 전자서명생성키불러오기

49 보안토큰에저장되어있는전자서명생성키를얻기위해서는키저장객체의 getkey() 메소드를이용한다. 키저장객체 (Key store) 에는실제전자서명생 성키가저장되는것이아니라해당키에대한참조값이저장된다. PrivateKey mykey = (PrivateKey)keystore.getKey( 키저장객체명칭, 비밀번호 ); 2.5. 인증서저장및가져오기 getcertificate 및 setcertificate 메소드를호출하여인증서또는인증서체 인을저장하거나가져오기가능하다. 인증서불러오기 Certificate mycert = keystore.getcertificate( 키저장객체명칭 ); 인증서저장 keystore.setcertificateentry( 키저장객체명칭, 인증서객체 ); 2.6. 전자서명생성 Signature 클래스에프로바이더와알고리즘을지정하여인스턴스객체를생 성한후 sign() 메소드를이용하여문자열에대한전자서명을생성한다. Signature sig = Signature.getInstance("SHA256withSA",pkcs11Provider); sig.initsign( 전자서명생성키객체 ); sig.update( 전자서명하고자하는문자열 ); byte[] sigbytes = sig.sign();

50 부록 9. 무선통신지원보안토큰표준 API 1. 무선통신지원보안토큰표준 API 이용공통규격 n NFC 보안토큰사용을위한 NFC Adapter 제어는서비스앱에서처리한다. n 표준 API 라이브러리의클래스명은 TokenControl 로정의하고, 이를이용하기위해다음함수를필수로지원한다. 함수기능비고 TokenControl( IsoDep isodep ) NFC 타입보안토큰객체생성자 Ÿ isodep : NFC 보안토큰접근객체 Ÿ appcontext TokenControl( Context appcontext, String devicetype ) 보안토큰객체생성자 Ÿ : 서비스앱 Context 객체 devicetype : 보안토큰종류에따라입력 ex) microsd : MSD 블루투스 : BLE boolean Connect() 보안토큰에연결 Ÿ Ÿ True : 연결성공 False : 연결실패 void Transmit( Bundle Ÿ requestbundle requestbundle, Bundle 보안토큰명령수행 Ÿ : 명령요청 Bundle responsebundle responsebundle : 처리결과 Bundle ) boolean Disconnect() 보안토큰연결해제 Ÿ Ÿ True : 연결해제성공 False : 연결해제실패

51 n 보안토큰종류별 TokenControl 객체생성의예 보안토큰종류 Tag mtag = TokenControl 객체생성의예 NFC microsd BLE intent.getparcelableextra(nfcadapter.exta_tag); if (mtag!= null) { IsoDep isodep = IsoDep.get(mTag); TokenControl mtoken= new TokenControl(isoDep); } TokenControl mtoken = new TokenControl ( getapplicationcontext(), MSD ); TokenControl mtoken = new TokenControl ( getapplicationcontext(), BLE );

52 2. 무선통신지원보안토큰표준 API 서비스제공기능목록 함수보안토큰정보조회애플릿제어정보조회발행기관키및 PIN 상태조회 PIN 인증 PIN 변경난수생성발행기관과보안토큰상호인증요청인증서목록조회인증서조회인증서 값조회키길이조회전자서명생성복호화공개키 / 개인키키쌍생성개인키주입공개키주입인증서저장인증서 값저장인증서삭제 요청명령 (EQUEST_ACTION) GET_TOKEN_INFO GET_APPLET_CONTOL_INFO GET_KEY_PIN_STATUS VEIFY_PIN PUT_PIN GET_CHALLENGE MUTUAL_AUTHENTICATE GET_CETIFICATE_LIST GET_CETIFICATE GET_CETIFICATE_ GET_KEY_LENGTH GENEATE_SIGNATUE DECYPT GENEATE_KEY_PAI STOE_PIVATE_KEY STOE_PUBLIC_KEY PUSH_CETIFICATE PUT_CETIFICATE_ DELETE_CETIFICATE

53 3. 무선통신지원보안토큰표준 API 기능별세부이용규격 3.1 보안토큰정보조회 보안토큰발급시설정된보안토큰의기본정보를조회한다. n 요청 Bundle 구성 키 파라메타 값 데이터형식 필수여부 EQUEST_ACTION GET_TOKEN_INFO String 필수 n 응답 Bundle 구성 키 파라메타 값 데이터형식 필수여부 EQUEST_ACTION GET_TOKEN_INFO String 필수 ESULT_CODE 응답코드표참고 String 필수 LABEL 보안토큰라벨 ByteArray MANUFACTUE_ID 제조사 ID ByteArray MODEL 보안토큰모델명 ByteArray CSN 보안토큰고유일련번호 ByteArray MAX_PIN_LENGTH PIN 최대길이 Integer MIN_PIN_LENGTH PIN 최소길이 Integer HW_VE 보안토큰하드웨어버전 ByteArray FW_VE 보안토큰펌웨어버전 ByteArray EO_MESSAGE 에러메시지 String

54 3.2 애플릿제어정보조회 표준화규격버전, 인증서최대저장개수등의보안토큰애플릿의정보를 조회한다. n 요청 Bundle 구성 키 파라메타 값 데이터형식 필수여부 EQUEST_ACTION GET_APPLET_CONTOL_INFO String 필수 n 응답 Bundle 구성 키 파라메타 값 데이터형식 필수여부 EQUEST_ACTION GET_APPLET_CONTOL_INFO String 필수 ESULT_CODE 응답코드표참고 String 필수 ISSUE_CODE 발행기관식별자 ByteArray VESION 표준화규격버전 Byte CET_MAX_COUNT 인증서최대저장개수 Integer SUPPOT_FUNCTION 지원기능코드참고 Byte USE_AUTH_MODE CYPTO_ALG 사용자인증방법코드참고기본암호화알고리즘코드참고 Byte Byte EO_MESSAGE 에러메시지 String

55 지원기능코드 코드 의미 0x41 SA Private Key 1024bit 지원 0x42 SA Private Key 2048bit 지원 0x81 SA CT Private Key 1024bit 지원 0x82 SA CT Private Key 2048bit 지원 0xC1 SA Private Key, SA CT Private Key 1024bit 지원 0xC2 SA Private Key, SA CT Private Key 2048bit 지원 사용자인증방법코드 코드 0x00 0x01 의미 보안토큰단말기로부터사용자인증 프로그램에서입력받은 PIN 값을이용한사용자인증 기본암호화알고리즘코드 코드 0x10 0x20 0x40 의미 3DES 사용 SEED 사용 AES-128 사용

56 3.3 발행기관키및 PIN 상태조회 n 요청 Bundle 구성 키 파라메타 값 데이터형식 필수여부 EQUEST_ACTION GET_KEY_PIN_STATUS String 필수 n 응답 Bundle 구성 키 파라메타 값 데이터형식 필수 여부 EQUEST_ACTION GET_KEY_PIN_STATUS String 필수 ESULT_CODE 응답코드표참고 String 필수 ISSUE_KEY_STATUS PIN_INIT_STATUS PIN_VEIFY_STATUS 발행기관키설정상태 0 = 미설정 1 = 설정 PIN 설정상태 0 = 초기 PIN 상태 1 = 사용자에의한 PIN 변경상태 PIN 인증상태 0 = 미인증상태 1 = 인증완료상태 Integer Integer Integer EO_MESSAGE 에러메시지 String

57 3.4 PIN 인증 n 요청 Bundle 구성 키 파라메타 값 데이터형식 필수여부 EQUEST_ACTION VEIFY_PIN String 필수 PIN 사용자가입력한 PIN 값 ByteArray 필수 n 응답 Bundle 구성 키 파라메타 값 데이터형식 필수여부 EQUEST_ACTION VEIFY_PIN String 필수 ESULT_CODE 응답코드표참고 String 필수 ETY_COUNT 인증실패시남은재시도 횟수 Integer EO_MESSAGE 에러메시지 String

KCAC.TS.HSMU v2.20 보안토큰기반의공인인증서이용기술규격 Accredited Certificate Usage Specification for Hardware Security Module v 년 10 월

KCAC.TS.HSMU v2.20 보안토큰기반의공인인증서이용기술규격 Accredited Certificate Usage Specification for Hardware Security Module v 년 10 월 보안토큰기반의공인인증서이용기술규격 Accredited Certificate Usage Specification for Hardware Security odule v2.20 2013 년 10 월 목차 1. 개요 1 2. 규격의구성및범위 1 3. 관련표준및규격 1 3.1 국외표준및규격 1 3.2 국내표준및규격 2 3.3 기타 2 4. 정의 2 4.1 전자서명법용어정의

More information

KCAC.TS.HSMU v2.00 보안토큰기반의공인인증서이용기술규격 Accredited Certificate Usage Specification for Hardware Security Module v 년 7월

KCAC.TS.HSMU v2.00 보안토큰기반의공인인증서이용기술규격 Accredited Certificate Usage Specification for Hardware Security Module v 년 7월 보안토큰기반의공인인증서이용기술규격 Accredited Certificate Usage Specification for Hardware Security odule v2.00 2010년 7월 목 차 1. 개요 1 2. 규격의구성및범위 1 3. 관련표준및규격 1 3.1 국외표준및규격 1 3.2 국내표준및규격 2 3.3 기타 2 4. 정의 2 4.1 전자서명법용어정의

More information

목 차 1. 개요 1 2. 규격의구성및범위 1 3. 관련표준및규격 국외표준및규격 국내표준및규격 기타 2 4. 정의 전자서명법용어정의 용어의정의 용어의효력 2 5. 약어 3 6. 사용자인증 3 7. 전송채널

목 차 1. 개요 1 2. 규격의구성및범위 1 3. 관련표준및규격 국외표준및규격 국내표준및규격 기타 2 4. 정의 전자서명법용어정의 용어의정의 용어의효력 2 5. 약어 3 6. 사용자인증 3 7. 전송채널 무선단말기와 PC간공인인증서전송을위한기술규격 Certificate Transmission between PC to Mobile Device v2.10 2012 년 11 월 목 차 1. 개요 1 2. 규격의구성및범위 1 3. 관련표준및규격 1 3.1 국외표준및규격 1 3.2 국내표준및규격 1 3.3 기타 2 4. 정의 2 4.1 전자서명법용어정의 2 4.2 용어의정의

More information

인증기관간상호연동을위한 CTL 기술규격 CTL Technical Specification for the Interoperability of Certification Authorities 년 월

인증기관간상호연동을위한 CTL 기술규격 CTL Technical Specification for the Interoperability of Certification Authorities 년 월 인증기관간상호연동을위한 CTL 기술규격 CTL Technical Specification for the Interoperability of Certification Authorities 년 월 목차 개요 규격의구성및범위 관련표준및규격 국외표준및규격 국내표준및규격 기타 정의 전자서명법용어정의 용어의효력 약어 인증서신뢰목록 인증서신뢰목록모델 인증서신뢰목록프로파일

More information

행정전자서명기술요건

행정전자서명기술요건 행정전자서명기술요건 알고리즘표준규격 암호화 전자서명 SEED : TTAS.KO-12.0004/R1 : 128 비트블록암호알고리즘 ARIA : KS X 1213-1, 128 비트블록암호알고리즘 KCAC.TS.ENC, 암호알고리즘규격 [v1.21] KCDSA : TTAS.KO-12.0001/R2, 부가형전자서명방식표준 RSA : PKCS #1 v2.2 RSA

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

yessign Version 3.1 (yessign). ccopyright 2009 yessign ALL RIGHTS RESERVED

yessign Version 3.1 (yessign). ccopyright 2009 yessign ALL RIGHTS RESERVED yessign Version 3.1 (yessign). ccopyright 2009 yessign ALL RIGHTS RESERVED - - 2000. 8.29. 2000. 8.29. 2001. 7. 5. 2001. 7. 5. 2001.12.17. 2001.12.17. 2002. 3.12. 2002. 3.12. 2002. 8.21. 2002. 9. 5. 2002.12.27.

More information

- - yessign Version 3.5 (yessign)

- - yessign Version 3.5 (yessign) - - yessign Version 3.5 (yessign). 2000. 8.29. 2000. 8.29. 2001. 7. 5. 2001. 7. 5. 2001.12.17. 2001.12.17. 2002. 3.12. 2002. 3.12. 2002. 8.21. 2002. 9. 5. 2002.12.27. 2003. 1.13. 2004. 3.31. 2004. 6.12.

More information

보안토큰 자동배포 가이드라인(안)

보안토큰 자동배포 가이드라인(안) 보안토큰 구동프로그램 배포 가이드라인 Distribution Guideline for HSM Driver S/W v1.00 2007년 10월 목 차 1. 개요 1 2. 가이드라인의 구성 및 범위 1 3. 관련 표준 1 3.1 국외 표준 및 규격 1 3.2 국내 표준 및 규격 1 3.3 기타 2 4. 정의 2 4.1 전자서명법 용어 정의 2 4.2 용어의 정의

More information

0. 들어가기 전

0. 들어가기 전 컴퓨터네트워크 13 장. 네트워크보안 (2) - 암호화시스템 1 이번시간의학습목표 암호화알고리즘인 DES, RSA 의구조이해 전자서명의필요성과방법이해 2 대칭키암호방식 (1) 암호화와복호화에하나의키를이용 공통키또는대칭키암호방식이라고지칭 이때의키를비밀키 (secret key) 라고지칭 3 대칭키암호방식 (2) 암호화복호화를수행하는두사용자가동일한키를가지고있어야함

More information

목 차 개요 규격의구성및범위 관련표준및규격 국외표준및규격 국내표준및규격 기타 정의 전자서명법용어정의 용어의정의 용어의효력 약어 인증경로구축 인증경로검증알고리즘 인증서경로기본검증 검증알고리즘 부록 규격연혁

목 차 개요 규격의구성및범위 관련표준및규격 국외표준및규격 국내표준및규격 기타 정의 전자서명법용어정의 용어의정의 용어의효력 약어 인증경로구축 인증경로검증알고리즘 인증서경로기본검증 검증알고리즘 부록 규격연혁 공인인증서경로검증기술규격 Accredited Certificate Path Validation Specification 년 월 목 차 개요 규격의구성및범위 관련표준및규격 국외표준및규격 국내표준및규격 기타 정의 전자서명법용어정의 용어의정의 용어의효력 약어 인증경로구축 인증경로검증알고리즘 인증서경로기본검증 검증알고리즘 부록 규격연혁 표목차 표 명칭형태 그림목차

More information

05 암호개론 (2)

05 암호개론 (2) 정보보호 05 암호개론 (2) 현대암호 (1) 근대암호 기계식암호 SP(Substitution & Permutation) 현대암호 1950 년대이후컴퓨터를이용한암호방법개발 수학적접근방식에의해보다복잡하고해독하기어렵게만들어짐 구분 대칭키알고리즘 블록 (Block) 암호화 스트림 (Stream) 암호화 비대칭키알고리즘으로구분 현대암호 ( 계속 ) 현대암호 (2)

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

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

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

<4D F736F F F696E74202D B0F8B0B3C5B0B1E2B9DDB1B8C1B6205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D B0F8B0B3C5B0B1E2B9DDB1B8C1B6205BC8A3C8AF20B8F0B5E55D> X.509 인증서와 PKI 1 공개키배포의문제점 2 인증서의구성 Arami s ID Arami s Public Key 유효기간 발급기관 Certificate Authority의디지털서명 (CA의비밀키로서명됨 ) 3 표준 ITU-T X.509 v3 IETF PKIX 표준및용도 용도 전자메일 SSL 전자지불 소프트웨어코드서명 IPSec 4 인증서의종류 사용자인증서

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 1 2.1 대칭암호원리 제 2 장. 대칭암호와메시지기밀성 2 3 기본용어 평문 (Plaintext) - original message 암호문 (Ciphertext) - coded message 암호화 (Cipher) - algorithm for transforming plaintext to ciphertext 키 (Key) - info used in cipher

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

슬라이드 1

슬라이드 1 4. 공개키암호화방식 건국대학교 공개키암호방식 대칭키암호방식의문제점 키분배의문제 디지털서명이불가능 공개키암호로해결 (976 년 Diffe 와 Hellman 에의해제기 ) 건국대학교 2 공개키암호방식 공개키알고리즘 : 두개의다른키사용 공개키 : 모든사람이접근가능한키 ( 공개 ) 개인키 : 각사용자자신만이소유 ( 비밀 ) ( 관용암호에사용되는키는비밀키라고함 )

More information

PowerPoint Template

PowerPoint Template 16-1. 보조자료템플릿 (Template) 함수템플릿 클래스템플릿 Jong Hyuk Park 함수템플릿 Jong Hyuk Park 함수템플릿소개 함수템플릿 한번의함수정의로서로다른자료형에대해적용하는함수 예 int abs(int n) return n < 0? -n : n; double abs(double n) 함수 return n < 0? -n : n; //

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F > 10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절

More information

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a 6 장복사생성자 객체의생성과대입객체의값에의한전달복사생성자디폴트복사생성자복사생성자의재정의객체의값에의한반환임시객체 C++ 프로그래밍입문 1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y;

More information

thesis

thesis ( Design and Implementation of a Generalized Management Information Repository Service for Network and System Management ) ssp@nile nile.postech.ac..ac.kr DPE Lab. 1997 12 16 GMIRS GMIRS GMIRS prototype

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

자바암호패키지 (JCA, JCE) 및실무활용방법 20soft 박대표 이글에서는자바암호패키지인 JCA(Java Cryptography Architecture) 와 JCE(Java Cryptography Extension) 에대해서알아보고, 실무활용방법에대해서알아보겠습니다

자바암호패키지 (JCA, JCE) 및실무활용방법 20soft 박대표 이글에서는자바암호패키지인 JCA(Java Cryptography Architecture) 와 JCE(Java Cryptography Extension) 에대해서알아보고, 실무활용방법에대해서알아보겠습니다 자바암호패키지 (JCA, JCE) 및실무활용방법 20soft 박대표 이글에서는자바암호패키지인 JCA(Java Cryptography Architecture) 와 JCE(Java Cryptography Extension) 에대해서알아보고, 실무활용방법에대해서알아보겠습니다. 안녕하세요. 박대표 (^O^) 입니다. 최근에많은프로그램들이자바언어로만들어지고있습니다.

More information

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

All your private keys are belong to us_번역중.doc

All your private keys are belong to us_번역중.doc All your private keys are belong to us 프로세스메모리에서 RSA 개인키와인증서추출하기 Tobias Klein tk@trapkit.de Version 1.0, 2006/02/05. 번역 : P3tEr(www.wowhacker.org) Abstract 본문서는신뢰성있는방법으로프로세스메모리로부터 RSA 개인키와인증서를찾아추출하는방법을논의한다.

More information

공개키 암호 방식

공개키 암호 방식 공개키암호방식 Korea College of Information & Technology 수업내용 공개키암호방식의개요 RSA 암호방식 RSA 암호방식의안전성 RSA 암호방식의해독 RSA 암호방식의반복법에의한공격 ElGamal 암호방식 이산대수문제 ElGamal 암호방식 Merkle-Hellman 의 Knapsack 암호방식 Merkle-Hellman I 형

More information

<5B D D434D53B8A620C0A7C7D120C3DFB0A1BECFC8A320BECBB0EDB8AEC1F E687770>

<5B D D434D53B8A620C0A7C7D120C3DFB0A1BECFC8A320BECBB0EDB8AEC1F E687770> 제정일 : 2006 년 12 월 xx 일 T T A S t a n d a r d CMS를위한추가암호알고리즘 : Part1 SEED (Additional Encryption Algorithm for CMS : Part1 SEED) 제정일 : 2006 년 12 월 xx 일 CMS를위한추가암호알고리즘 : Part1 SEED Additional Encryption

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

Design Issues

Design Issues 11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance

More information

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074> SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

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

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

KCAC.TS.CRLPROF v1.50 전자서명인증서효력정지및폐지목록프로파일규격 Accredited Digital Signature Certificate Revocation List Profile v 년 9월

KCAC.TS.CRLPROF v1.50 전자서명인증서효력정지및폐지목록프로파일규격 Accredited Digital Signature Certificate Revocation List Profile v 년 9월 전자서명인증서효력정지및폐지목록프로파일규격 Accredited Digital Signature Certificate Revocation List Profile v1.50 2009년 9월 목 차 1. 개요 1 2. 규격의구성및범위 1 3. 관련표준및규격 1 3.1 국외표준및규격 1 3.2 국내표준및규격 2 3.3 기타 2 4. 정의 2 4.1 전자서명법용어정의

More information

Microsoft PowerPoint - chap06.ppt

Microsoft PowerPoint - chap06.ppt 2010-1 학기현대암호학 제 6 장. 하이브리드 암호시스템 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 목차 하이브리드암호시스템 강한하이브리드암호시스템 암호기술의조합 6.0 주요내용 하이브리드암호시스템 대칭암호의장점인빠른처리속도 비대칭암호의장점인키배송문제의편리함 평문을대칭암호로암호화 평문을암호화할때사용했던대칭암호키를공개키암호로암호화

More information

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout <<  양수입력 : ; cin >> *p; if (*p <= 0) cout <<  양수를입력해야합니다  << endl; return; 동적할 15 장기타주제들 auto_ptr 변환함수 cast 연산자에의한명시적형변환실행시간타입정보알아내기 (RTTI) C++ 프로그래밍입문 1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout > *p; if (*p

More information

PowerPoint Template

PowerPoint Template SeoulTech UCS Lab 2013-2 st 암호이론및정보보호실무 제 9 장공개키암호 2013. 10. 14 강원민 Email: wkaqhsk0@seoultech.ac.kr 목차 1. 공개키암호시스템의원리 2. RSA 알고리즘 3. Diffie-Hellman 알고리즘 2 공개키암호시스템의원리 공개키암호시스템의원리 1. 암호화 / 복호화에사용되는키가서로다르다

More information

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

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

API 매뉴얼

API 매뉴얼 PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

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

Microsoft PowerPoint - chap03-변수와데이터형.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 1 보안토큰이란? 물리적보안및암호연산기능을가진칩을내장하고있어해킹등으로부터 공인인증서유출을방지하는기능을가진안전성이강화된휴대용공인인증서 저장매체입니다. 한국인터넷진흥원 (KISA) 홈페이지중에서 2 보안토큰의구조 스마트카드 IC 는 CPU, RAM, ROM, 암호연산가속기등이내장된 One Chip Computer 로, 각종물리적공격및부채널공격을방지하는기술이적용되어

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

<4D F736F F D205B D D20C0CFC8B8BFEBC6D0BDBABFF6B5E55F4F54505F20C5E4C5AB20BAB8BEC820BFE4B1B8BBE7C7D72E646F63>

<4D F736F F D205B D D20C0CFC8B8BFEBC6D0BDBABFF6B5E55F4F54505F20C5E4C5AB20BAB8BEC820BFE4B1B8BBE7C7D72E646F63> 정보통신단체표준 TTAx.xx-xx.xxxx/R1 제정일 : 200x 년 xx 월 xx 일개정일 : 200x년 xx월 xx일 T T A S t a n d a r d 일회용패스워드 (OTP) 토큰보안 요구사항 (Security Requirements for the OTP Token) 정보통신단체표준 (Tab ) TTAx.xx-xx.xxxx/R1(Tab ) 제정일

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

A Study on the efficient mutual authentication mechanism using the agent server

A Study on the efficient mutual authentication mechanism using the agent server 15 장 : 키관리 Jeon Youngho dean83g@gmail.com 2009.05.29 Contents 대칭키분배 커버로스 대칭키합의 공개키배분 대칭키분배 크기가큰메시지를암호화할때효율적이지만, 사전에당사자끼리비밀키를공유해야함. N 명이통신시 N(N-1) 개의키필요 => N 2 문제라고함. 키의개수뿐만아니라, 키의배분도문제임. 따라서, 비밀키를배분하고관리하는방법이있어야함.

More information

Microsoft Word - TTAK.KO doc

Microsoft Word - TTAK.KO doc 제정일 : 2010 년 12 월 23 일 T T A S t a n d a r d 일회용패스워드 (OTP) 토큰보안 요구사항 (Security Requirements for the OTP Token) 제정일 : 2010 년 12 월 23 일 일회용패스워드 (OTP) 토큰보안요구사항 (Security Requirements for the OTP Token) 본문서에대한저작권은

More information

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드] Google Map View 구현 학습목표 교육목표 Google Map View 구현 Google Map 지원 Emulator 생성 Google Map API Key 위도 / 경도구하기 위도 / 경도에따른 Google Map View 구현 Zoom Controller 구현 Google Map View (1) () Google g Map View 기능 Google

More information

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 : HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 : ios 3.0 이상 - 콘텐츠형식 : MP4 (H264,AAC ), MP3 * 디바이스별해상도,

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등

More information

어댑터뷰

어댑터뷰 04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

Ⅰ. 들어가는 말 2005년 6월에 발생한 인터넷뱅킹 해킹 사건이 2005년 가장 기억에 남는 정보보호 뉴 스로 선정되었다고 한다. 해킹 등으로 인해 개인의 PC가 악의적인 해커에 의해 장악이 된 경우에는 어떤 보안시스템도 제 기능을 다하지 못함에도 불구하고, 해킹 사

Ⅰ. 들어가는 말 2005년 6월에 발생한 인터넷뱅킹 해킹 사건이 2005년 가장 기억에 남는 정보보호 뉴 스로 선정되었다고 한다. 해킹 등으로 인해 개인의 PC가 악의적인 해커에 의해 장악이 된 경우에는 어떤 보안시스템도 제 기능을 다하지 못함에도 불구하고, 해킹 사 공인인증체계에서 이용되는 보안 알고리즘의 안전성 전자인증센터 과장 이한욱(tubby@kftc.or.kr) I. 들어가는 말 84 II. 보안 알고리즘 종류 85 1. 대칭키 알고리즘 85 2. 알고리즘 87 3. 해쉬 알고리즘 91 III. 공인인증체계에서 보안 알고리즘 활용 93 IV. 보안 알고리즘 공격방법 95 1. 대칭키 알고리즘 공격방법 95 2.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

목 차 1. 개요 1 2. 규격의구성및범위 1 3. 관련표준 국외표준및규격 국내표준및규격 기타 2 4. 정의 전자서명법용어정의 용어의정의 용어의효력 3 5. 약어 4 6. 전자서명공인인증서프로파일 4 6.

목 차 1. 개요 1 2. 규격의구성및범위 1 3. 관련표준 국외표준및규격 국내표준및규격 기타 2 4. 정의 전자서명법용어정의 용어의정의 용어의효력 3 5. 약어 4 6. 전자서명공인인증서프로파일 4 6. 전자서명인증서프로파일규격 Digital Signature Certificate Profile v1.70 2009년 9월 목 차 1. 개요 1 2. 규격의구성및범위 1 3. 관련표준 1 3.1 국외표준및규격 1 3.2 국내표준및규격 2 3.3 기타 2 4. 정의 2 4.1 전자서명법용어정의 2 4.2 용어의정의 3 4.3 용어의효력 3 5. 약어 4 6. 전자서명공인인증서프로파일

More information

KCAC.TS.CM v1.60 무선단말기에서의공인인증서저장및이용 기술규격 Certificate Management in Mobile Device v 년 11 월

KCAC.TS.CM v1.60 무선단말기에서의공인인증서저장및이용 기술규격 Certificate Management in Mobile Device v 년 11 월 무선단말기에서의공인인증서저장및이용 기술규격 Certificate Management in Mobile Device v1.60 2017 년 11 월 목 차 1. 개요 1 2. 규격의구성및범위 1 3. 관련표준및규격 1 3.1 국외표준및규격 1 3.2 국내표준및규격 2 3.3 기타 2 4. 정의 2 4.1 전자서명법용어정의 2 4.2 용어의정의 3 4.3 용어의효력

More information

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

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

Microsoft PowerPoint - es-arduino-lecture-03

Microsoft PowerPoint - es-arduino-lecture-03 임베디드시스템개론 : Arduino 활용 Lecture #3: Button Input & FND Control 2012. 3. 25 by 김영주 강의목차 디지털입력 Button switch 입력 Button Debounce 7-Segment FND : 직접제어 7-Segment FND : IC 제어 2 디지털입력 : Switch 입력 (1) 실습목표 아두이노디지털입력처리실습

More information

JAVA PROGRAMMING 실습 05. 객체의 활용

JAVA PROGRAMMING 실습 05. 객체의 활용 public class Person{ public String name; public int age; } public Person(){ } public Person(String s, int a){ name = s; age = a; } public String getname(){ return name; } @ 객체의선언 public static void main(string

More information

슬라이드 1

슬라이드 1 정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 4 강. 함수와라이브러리함수목차 함수오버로딩 디폴트매개변수 라이브러리함수 clock 함수 난수발생 비버퍼형문자입력 커서이동 프로그래밍문제 1 /21 4 강. 함수와라이브러리함수함수오버로딩 2 /21 함수오버로딩 동일한이름의함수를여러개만들수있음 함수프로파일이달라야함 함수프로파일

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

Frama-C/JESSIS 사용법 소개

Frama-C/JESSIS 사용법 소개 Frama-C 프로그램검증시스템소개 박종현 @ POSTECH PL Frama-C? C 프로그램대상정적분석도구 플러그인구조 JESSIE Wp Aorai Frama-C 커널 2 ROSAEC 2011 동계워크샵 @ 통영 JESSIE? Frama-C 연역검증플러그인 프로그램분석 검증조건추출 증명 Hoare 논리에기초한프로그램검증도구 사용법 $ frama-c jessie

More information

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074> 객체지향프로그램밍 (Object-Oriented Programming) 1 C++ popular C 객체지향 (object oriented) C++ C : 상위계층언어특징 + 어셈블리언어특징 C++ : 소프트웨어개발플랫폼에객체지향개념제공 객체지향 : 자료와이들자료를어떻게다룰것인지따로생각하지않고단지하나의사물로생각 형 변수가사용하는메모리크기 변수가가질수있는정보

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

슬라이드 1

슬라이드 1 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace

More information

키 관리와 인증서

키 관리와 인증서 키관리와인증서 컴퓨터시스템보안 금오공과대학교컴퓨터공학부 최태영 목차 비밀키관리 비밀키개인관리 키관리센터 (KDC) 공개키관리 공개키관리의필요성 공개키인증서및공개키기반구조 인증서철회목록 공개키암호화표준 (PKCS) OpenSSL 을이용한인증서관리 2 비밀키개인관리 비밀키도난방지를위해비밀키를암호화하여보관하는것이안전 KEK (Key Encryption Key) 키암호화에사용되는키

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

BMP 파일 처리

BMP 파일 처리 BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)

More information

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 ALTIBASE HDB 6.5.1.5.10 Patch Notes 목차 BUG-46183 DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG-46249 [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 BUG-46266 [sm]

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 1 목포해양대해양컴퓨터공학과 Part 1. 보충자료 제 2 장. 대칭암호와메시지기밀성 제 3 장. 공개키암호와메시지인증 2 목포해양대해양컴퓨터공학과 SEED (1) 개요 1999 년한국정보보호진흥원 (KISA) 에의해개발된국내대칭키기반블록암호알고리즘 1999 년한국정보통신협회 (TTA) 에의해국내표준으로채택 현재전자상거래, 전자메일, 인터넷뱅킹, 데이터베이스암호화,

More information

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public Chapter 9 Lab 문제정답 1. public class Circle private double radius; static final double PI=3.141592; // PI 이름으로 3.141592 로초기화된정적상수 (1) public Circle(double r) radius = r; (2) public double getradius() return

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

기초 암호화 기법

기초 암호화 기법 제 2 장기초암호화 기법 컴퓨터시스템보안금오공과대학교컴퓨터공학부최태영 평문과암호문 평문 (plaintext) : 암호화되기전의읽을수있는문장 암호문 (ciphertext) : 암호화에의해서읽을수없게된문장 암호화 (encryption) : 평문을암호문으로바꾸는과정 암호화알고리즘 : 암호화수행과정 복호화 (decryption) : 암호문을평문으로바꾸는과정 복호화알고리즘

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 7 장클래스와객체 이번장에서학습할내용 객체지향이란? 객체 메시지 클래스 객체지향의장점 String 클래스 객체지향개념을완벽하게이해해야만객체지향설계의이점을활용할수있다. 실제세계는객체로이루어진다. 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 절차지향과객체지향 절차지향프로그래밍 (procedural programming): 문제를해결하는절차를중요하게생각하는방법

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 9 강. 클래스의활용목차 멤버함수의외부정의 this 포인터 friend 선언 static 멤버 임시객체 1 /17 9 강. 클래스의활용멤버함수의외부정의 멤버함수정의구현방법 내부정의 : 클래스선언내에함수정의구현 외부정의 클래스선언 : 함수프로토타입 멤버함수정의 : 클래스선언외부에구현

More information

PowerPoint Template

PowerPoint Template SOFTWARE ENGINEERING Team Practice #3 (UTP) 201114188 김종연 201114191 정재욱 201114192 정재철 201114195 홍호탁 www.themegallery.com 1 / 19 Contents - Test items - Features to be tested - Features not to be tested

More information

Microsoft PowerPoint - 6.pptx

Microsoft PowerPoint - 6.pptx DB 암호화업데이트 2011. 3. 15 KIM SUNGJIN ( 주 ) 비에이솔루션즈 1 IBM iseries 암호화구현방안 목차 목 차 정부시책및방향 제정안특이사항 기술적보호조치기준고시 암호화구현방안 암호화적용구조 DB 암호화 Performance Test 결과 암호화적용구조제안 [ 하이브리드방식 ] 2 IBM iseries 암호화구현방안 정부시책및방향

More information

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2> 게임엔진 제 4 강프레임리스너와 OIS 입력시스템 이대현교수 한국산업기술대학교게임공학과 학습내용 프레임리스너의개념 프레임리스너를이용한엔터티의이동 OIS 입력시스템을이용한키보드입력의처리 게임루프 Initialization Game Logic Drawing N Exit? Y Finish 실제게임루프 오우거엔진의메인렌더링루프 Root::startRendering()

More information

Lecture22

Lecture22 인증과공개키기반구조 이병천 2011. 11. 22 중부대학교정보보호학과 목차 1. 인증 1.1 인증의종류 1.2 암호학적인증기법 1.3 인증시스템 2. 공인인증서 2.1 공개키인증서 2.2 인증서의구조 2.3 인증서의종류 3. 공개키기반구조 3.1 신뢰의확장 3.2 PKI 구성방식 3.3 PKI 구성요소 3.4 인증서의취소 3.5 PKI 관리 3.6 공개키기반구조현황

More information

Microsoft PowerPoint - lec2.ppt

Microsoft PowerPoint - lec2.ppt 2008 학년도 1 학기 상지대학교컴퓨터정보공학부 고광만 강의내용 어휘구조 토큰 주석 자료형기본자료형 참조형배열, 열거형 2 어휘 (lexicon) 어휘구조와자료형 프로그램을구성하는최소기본단위토큰 (token) 이라부름문법적으로의미있는최소의단위컴파일과정의어휘분석단계에서처리 자료형 자료객체가갖는형 구조, 개념, 값, 연산자를정의 3 토큰 (token) 정의문법적으로의미있는최소의단위예,

More information

Cryptography v3

Cryptography v3 Basic Cryptography 공개된암호화폐가안전한이유 Seokhwan Moon Modular Arithmetic! 값을 " 로나눌경우아래와같은식이성립함! = " % + ' 이를아래와같이표현할수있음! ()* % = ' 여기서 % 은 modulus( 법, 모듈로 ) 라고불리우며 ' 는 residue( 나머지 ) 라고불리움 프로그래밍에서 % 기호와같은역할 >>>

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

제8장 자바 GUI 프로그래밍 II

제8장 자바 GUI 프로그래밍 II 제8장 MVC Model 8.1 MVC 모델 (1/7) MVC (Model, View, Controller) 모델 스윙은 MVC 모델에기초를두고있다. MVC란 Xerox의연구소에서 Smalltalk 언어를바탕으로사용자인터페이스를개발하기위한방법 MVC는 3개의구성요소로구성 Model : 응용프로그램의자료를표현하기위한모델 View : 자료를시각적으로 (GUI 방식으로

More information

PowerPoint Presentation

PowerPoint Presentation FORENSICINSIGHT SEMINAR SQLite Recovery zurum herosdfrc@google.co.kr Contents 1. SQLite! 2. SQLite 구조 3. 레코드의삭제 4. 삭제된영역추적 5. 레코드복원기법 forensicinsight.org Page 2 / 22 SQLite! - What is.. - and why? forensicinsight.org

More information

hwp

hwp 공개키암호 박영호 암호학은정보보호서비스를안전하게제공하기위한기술로연구되고있다. 암호학에서연구되는암호학적도구는크게공개키암호와비밀키암호로나눌수있다. 비밀키암호는두사용자가동일한비밀키를공유하고있는상태에서전송하고자하는데이터를공유한키로암호화하여수신자에게전송하면수신자는동일한키로복호화하여데이터를복원한다. 네트워크를통해전송되는정보는암호화된정보이므로외부에서데이터를확인할수없게되어안전한통신이가능하게된다.

More information