KCAC.TS.HSMU v2.20 보안토큰기반의공인인증서이용기술규격 Accredited Certificate Usage Specification for Hardware Security Module v 년 10 월
|
|
- 이한 장
- 5 years ago
- Views:
Transcription
1 보안토큰기반의공인인증서이용기술규격 Accredited Certificate Usage Specification for Hardware Security odule v 년 10 월
2 목차 1. 개요 1 2. 규격의구성및범위 1 3. 관련표준및규격 국외표준및규격 국내표준및규격 기타 2 4. 정의 전자서명법용어정의 용어의정의 용어의효력 3 5. 약어 4 6. 보안토큰 API(PKCS#11) 개요 가입자소프트웨어와보안토큰간인터페이스모델 보안토큰요구사항 구동프로그램요구사항 공인인증기관요구사항 6 7. 보안토큰 API(PKCS#11) 프로파일 저장객체 함수 메커니즘 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. 규격연혁 47
3 보안토큰기반공인인인증서이용기술규격 Accredited Certificate usage specification for Hardware Security odule 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 Syntax Standard, 1993
4 [PKCS11] SA Laboratories PKCS#11, Cryptographic Token Interface Standard v2.11, 2001 [P11POF] SA Laboratories PKCS#11 Profile, Conformance Profile Specification, 2001 [FC2511] IETF, FC 2511, Internet X.509 Certificate equest essage Format, arch 1999 [PKCS12] 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 용어의정의가 ) 보안토큰 (HS) : 전자서명생성키등비밀정보를안전하게저장 보관하기위하여키생성, 전자서명생성등이기기내부에서처리되도록구현된하드웨어기기나 ) 보안토큰 API : 보안토큰에대한응용프로그래밍인터페이스다 ) 메커니즘 : 암호기능을구현하는절차라 ) 슬롯 (Slot) : 보안토큰과의입출력을수행할수있는논리적리더기마 ) 템플릿 (Template) : 객체속성집합으로서객체의생성, 수정, 검색등을위하여사용됨바 ) 보안토큰구동프로그램 : 보안토큰 API를구현한프로그램을말하며, 보안토큰과가입자소프트웨어간의인터페이스를담당사 ) utexes(utual Exclusion) : 다중프로세스내에서동기화를위해사용되는상호배제객체아 ) 보안토큰제품정보 (ID) : 보안토큰구동프로그램을식별하기위해사용하는정보. USB형보안토큰의보안토큰제품정보는 Vendor ID와 Product ID를연접하여사용하고, 스마트카드형보안토큰은 AT 정보를사용함자 ) 바이오보안토큰 : 보안토큰의기능을만족하면서바이오정보를이용하여인증을수행할수있도록구현된기기차 ) 모바일토큰 : 스마트폰과같은모바일기기의 USI, ese 등보안모듈을모바일통신을통해 PC와같은타기기에연결하여전자서명생성키등비밀정보를안전하게저장 보관하고, 키생성및전자서명생성등을처리하는하드웨어와소프트웨어의총칭 4.3 용어의효력본규격에서사용된다음의용어들은전자서명인증체계의공인인증서가입자소프트웨어가보안토큰의기능을이용함에있어서보안토큰구동프로그램 ( 이하구동프로그램 ) 및가입자소프트웨어구현정도를의미하는것으로 [FC2119] 를준용하며다음과같은의미를지닌다. 가 ) 해야한다, 필수이다, 강제한다. ( 기호 : )
6 반드시준수해야한다. 나 ) 권고한다. ( 기호 : ) 보안성및상호연동을고려하여준수할것을권장한다. 다 ) 할수있다, 쓸수있다. ( 기호 : O) 주어진상황을고려하여필요한경우에한해선택적으로사용할수있다. 라 ) 권고하지않는다. ( 기호 : N) 보안성및상호연동을고려하여사용하지말것을권장한다. 마 ) 금지한다, 허용하지않는다. ( 기호 : X) 반드시사용하지않아야한다. 바 ) 언급하지않는다, 정의하지않는다. ( 기호 : -) 준수여부에대해기술하지않는다. 5. 약어본규격에서는다음의약어들에대해추가적으로정의한다. 가 ) API : Application Programming Interface 나 ) AT : Answer to eset, 보안토큰초기화정보다 ) ese : Embedded Secure Element 라 ) HS : Hardware Security odules 마 ) microsd : micro Secure Digital 바 ) OID : Object Identifier 사 ) PKCS : Public Key Cryptography Standard 아 ) PIN : Personal Identification Number, 개인식별번호자 ) USI : Universal Subscriber Identity odule, 범용사용자식별모듈 6. 보안토큰개요 6.1 가입자소프트웨어와보안토큰간인터페이스모델보안토큰은구현된하드웨어기기에따라 USB 토큰, 스마트카드, USI, ese, microsd 등다양한형태를가진다. 보안토큰하드웨어기기와보안토큰을이용하는플랫폼및가입자소프트웨어간의보안토큰 API(PKCS#11) 의일반적인적용모델은 [ 그림 1] 과같이도식화된다.
7 [ 그림 2] 공인인증서가입자소프트웨어와보안토큰인터페이스모델 일반적인보안토큰 API 적용모델에서보안토큰 API는보안토큰하드웨어기기와의인터페이스, PKCS#11 라이브러리로구성된다. 하나의보안토큰 API는 [ 그림 1] 과같이다중슬롯을통하여하나이상의보안토큰에대한인터페이스를제공해야한다. 가입자소프트웨어는보안토큰 API를통해보안토큰하드웨어기기를이용하게된다. 가입자소프트웨어와보안토큰 API 간의인터페이스구현은 [PKCS11] 및 [ 부록 7] 의 PKCS#11 자바인터페이스사용예를참조한다. 6.2 보안토큰요구사항보안토큰은전자서명키및전자서명이하드웨어내부에서생성되는기능을제공하여야하며, 이경우암호프로세서 (Crypto-processor) 를이용하여야한다. 보안토큰은인가되지않는사용자또는가입자소프트웨어의접근 이용에적절히대처하기위해 PIN 인증및 PIN 입력오류회수제한기능을갖춰야하며, 입력오류허용회수를초과하는경우해당보안토큰잠금기능을제공하여야한다. 또한, 보안토큰의전자서명생성키등비밀정보는기기외부로노출 유출되지않도록안전성을보장해야한다. 또한차분전력분석기법등공격에대한대비책을
8 마련해야한다. 다만, 보안토큰외부에서생성된전자서명생성키등을보안토큰에 저장하는것은허용한다. 6.3 구동프로그램요구사항구동프로그램은한개의읽기 / 쓰기세션과다중의읽기세션을반드시지원해야한다. 또한, 구동프로그램은공개키알고리즘으로 SA 1024비트및 2048비트를지원해야하며안전한쓰레드사용을위한 utexes를지원해야한다. 보안토큰 PIN은가입자소프트웨어, 구동프로그램및보안토큰에서입력가능하며, 입력된 PIN을보호하기위해보안토큰과암호채널을생성할수있다. 가입자소프트웨어는시스템에존재하는구동프로그램의위치정보를파악할수있도록 [ 부록 4] 에서명시한환경파일을이용한위치정보관리를지원해야한다. 가입자소프트웨어는 [ 부록 5] 의구동프로그램검증정보를확인하여구동프로그램의무결성및구현적합성을확인할수있다. 가입자소프트웨어에서구동프로그램검증정보확인처리기능의구현은선택사항으로한다. 6.4 공인인증기관요구사항공인인증기관은보안토큰기반으로발급되는공인인증서에는 확장키사용목적확장필드 에보안토큰식별자를추가하여공인인증서를발급하여야한다. 이경우, 공인인증서에추가되는식별자는 id-kisa-hs으로한다. id-kisa-hs OBJECT IDENTIFIE ::= { } iso(1) member-body(2) korea(410) kisa(200004) npki(10) attributes(1) kisa-hs(2) 공인인증기관은보안토큰기반으로공인인증서를발급하기위해서는 [ 부록 5] 의구동프로그램검증정보를확인하여공인인증서발급신청자의보안토큰구동프로그램의무결성및구현적합성을확인하여야한다. 이러한확인결과는 [FC2511] 에서정의하는메시지구조를가지는 ir 메시지의 reginfo 부분에부가정보로입력하여전자서명키가보안토큰기반으로생성되었음을표시하여야한다. reginfo 부분에전자서명키가보안토큰내에서생성되었음을표시하는부가정보로 Attribute 형태는 id-kisa-hs 명칭형식을이용하고, Value 값은공인인
9 증기관의필요에따라선택적으로사용할수있다. 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] 에서정의한난수 () 을위한식별자를나타내며, CKA_ID값은 16진수로표기하고이들의값은 = 로연결한다. 난수 () 는비밀객체속성을가져야한다. 바이오보안토큰구동프로그램이바이오보안토큰등록정보및사용자등록정보를지원하는경우데이터객체를사용하여야한다. 이경우, 구동프로그램은바이오보안토큰등록정보및사용자등록정보를식별하기위해 CKA_LABEL 을지원하여야한다. 바이오보안토큰등록정보의레이블속성 (CKA_LABEL) 은하나이상의보안토큰등록정보를구분할수있도록 DevAuth= 일련번호 로표기한다 ( 이경우 일련번호 는 1바이트 16진수로표기하고 DevAuth 와 = 로연결한다 ). 또한, 사용자등록정보의레이블속성 (CKA_LABEL) 은법인의경우 Corporation, 개인의경우 Person 으로표기한다.
10 CKA_VALUE 에표기되는바이오보안토큰등록정보및사용자등록정보는비밀 객체속성을가져야한다 인증서객체 (Certificate Object) 인증서는공개객체이며하나이상의인증서를구분하기위하여키및인증서객 체의식별자로이용되는 CKA_ID 속성을지원해야한다 키객체 (Key Object) 키객체는개인키, 공개키, 비밀키를저장하기위하여이용되며, 개인키및비밀키객체는비밀객체속성을가져야한다. 하나이상의개인키구분을위해키및인증서객체의식별자로이용되는 CKA_ID 속성을지원해야한다. CKA_ID 속성값은인증서확장필드의소유자키식별자값을사용할것을권고한다. 공개키는공개객체이며하나이상의공개키를구분하기위하여키및인증서객체의식별자로이용되는 CKA_ID 속성을지원해야한다. 개인키및공개키객체는인증서에명시된키사용목적에부합하는속성을가져야하며부록 1. PKCS#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_GetechanismList, C_GetechanismInfo를지원해야한다.
11 보안토큰의세션관리기능함수로, 구동프로그램은 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 메커니즘 (echanism) 본절에서는전자서명인증체계가입자소프트웨어가보안토큰기능을이용하기위해구동프로그램이지원해야하는메커니즘을정의하며, 구동프로그램은부록 3. 보안토큰 API(PKCS#11) 메커니즘프로파일을준용하여야한다. SA 알고리즘을이용한전자서명생성및암호키복호화등의기능을지원하기위해, 구동프로그램은 PKCS#11에기반을둔 CK_SA_PKCS 메커니즘을지원해야한다. 보안토큰의처리용량을고려하여전자문서에대한해쉬값은가입자소프트웨어에서생성또는보안토큰내부에서생성할수있다.
12 부록 1. 보안토큰 API(PKCS#11) 객체속성프로파일 1. 일반객체 (Common Object Attribute) 속성 데이터타입 내용 처리 CKA_CLASS CK_OBJECT_CLASS Object class o 본프로파일은 CKA_CLASS로다음아래와같은객체를지원해야한다. - CKO_DATA, CKO_CETIFICATE, CKO_PUBLIC_KEY, CKO_PIVATE_KEY o 본프로파일은 CKA_CLASS로다음아래와같은객체지원을권고한다. - CKO_SECET_KEY, CKO_DOAIN_PAAETES 2. 저장객체 (Storage Object) 2.1 저장공통객체 (Common Storage Object Attribute) 속성 데이터타입 내용 처리 CKA_TOKEN CK_BBOOL IF True : 토큰객체, IF False : 세션객체 CKA_PIVATE CK_BBOOL IF True : Private 객체 CKA_ODIFIABLE CK_BBOOL IF True : 객체수정 CKA_LABEL FC2279 string 객체설명 2.2 데이터객체 (Data Object) 속성 데이터타입 내용 처리 CKA_APPLICATION FC2279 String 어플리케이션설명 CKA_OBJECT_ID Byte Array DE 인코딩된 OID(Object identifier) O CKA_VALUE Byte Array 객체값 데이터객체속성템플릿 : 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)} };
13 바이오보안토큰등록정보데이터객체속성템플릿 ( 바이오보안토큰사용시 ) : 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) X.509 인증서공통객체 (Common X.509 Certificate Object Attribute)
14 속성데이터타입내용처리 CKA_CETIFICATE_TYPE CK_CETIFICATE_TYPE 인증서타입 CKA_TUSTED CK_BBOOL 어플리케이션은신뢰된인증서로간주 O CKA_TUSTED 속성은특정어플리케이션에의해설정되어져서는안되며, 토큰을초기화할 때설정되어야함 X.509 공개키인증서객체 (X.509 Public Key Certificate Object Attribute) 속성 데이터타입 내용 처리 CKA_SUBJECT Byte Array DE 인코딩된인증서가입자이름 CKA_ID Byte Array Key identifier(public/private) CKA_ISSUE Byte Array DE 인코딩된인증서발급자이름 O CKA_SEIAL_NUBE Byte Array DE 인코딩된인증서일련번호 O CKA_VALUE Byte Array BE 인코딩된인증서 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) 속성 데이터타입 내용 처리 CKA_OWNE Byte Array DE 인코딩된속성인증서소유자이름 CKA_AC_ISSUE Byte Array DE 인코딩된속성인증서발급자이름 O KA_SEIAL_NUBE Byte Array DE 인코딩된인증서일련번호 O CKA_ATT_TYPES Byte Array BE 인코딩된속성 OID O CKA_VALUE Byte Array BE 인코딩된속성인증서
15 속성인증서를사용할경우위속성인증서의객체속성을준용할것을권고함. 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 키타입 CKA_ID Byte Array KEY Identifier 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_ECHANIS CK_ECHANIS_TYPE 키생성메카니즘 Identifier O 보안토큰 API 키속성과 X.509V3 인증서와의 apping Table
16 공개키 / 개인키를위한 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 인코딩된소유자이름 CKA_ENCYPT CK_BBOOL 암호화 O CKA_VEIFY CK_BBOOL 부가형전자서명검증 CKA_VEIFY_ECOVE CK_BBOOL 복원형전자서명검증 O CKA_WAP CK_BBOOL 키암호화 CKA_TUSTED CK_BBOOL 신뢰되는키 O CKA_VEIFY 속성은전자서명검증공개키에설정되어야하며, CKA_WAP 속성은암호키 분배공개키에설정되어야함 SA 공개키객체 (SA Public Key Object Attribute) 속성 데이터타입 내용 처리 CKA_ODULUS Big integer odulus n CKA_ODULUS_BITS CK_ULONG n의길이 ( 비트 ) CKA_PUBLIC_EXPONENT Big integer Public exponent e 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)},
17 {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_ODULUS_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_ODULUS, 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_PAAS (CKA_ECDSA_PAAS) Byte Array DE인코딩된 ASNI X9.62 파라메터값 CKA_EC_POINT Byte Array DE인코딩된 ASNI X9.62 ECPoint 값 Q EC 공개키를사용할경우위객체속성을준용할것을권고함.
18 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_PAAS, ecparams, sizeof(ecparams)}, {CKA_EC_POINT, ecpoint, sizeof(ecpoint)} }; 개인키객체 (Private Key Object) 개인키공통객체속성 (Common Private Key Object Attribute) 속성 데이터타입 내용 처리 CKA_SUBJECT Byte Array DE인코딩된인증서소유자이름 CKA_SENSITIVE CK_BBOL TUE : Plain-Text 형태로 Export 불가 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 : 부가형전자서명 CKA_SIGN_ECOVE CK_BBOL IF TUE : 복원형전자서명 O CKA_UNWAP CK_BBOL TUE : 키복호화 CKA_EXTACTABLE CK_BBOL FALSE : 키의 Export 불가 CKA_ALWAYS_SENSITIVE CK_BBOL IF TUE : 항상 Plain-Text 형태로 Export 불가 O CKA_NEVE_EXTACTABLE CK_BBOL IF TUE : 키가 Plain-Text 형태로나오지않음 CKA_SIGN 속성은전자서명생성개인키에설정되어야하며, CKA_UNWAP 속성은암호 키분배개인키에설정되어야함 SA 개인키객체 (SA Private Key Object Attribute) 속성 데이터타입 내용 처리 CKA_ODULUS Big integer odulus n CKA_PUBLIC_EXPONENT Big integer Public exponent e CKA_PIVIATE_EXPONENT Big integer Private exponent d CKA_PIE_1 Big integer Prime p CKA_PIE_2 Big integer Prime q
19 속성데이터타입내용처리 CKA_EXPONENT_1 Big integer Private exponent d modulo p-1 CKA_EXPONENT_2 Big integer Private exponent d modulo p-2 CKA_COEFFICIENT Big integer CT coefficient q-1mod p 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)},
20 {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_ODULUS, modulus, sizeof(modulus)}, {CKA_PUBLIC_EXPONENT, publicexponent, sizeof(publicexponent)}, {CKA_PIVATE_EXPONENT, privateexponent, sizeof(privateexponent)}, {CKA_PIE_1, prime1, sizeof(prime1)}, {CKA_PIE_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_PAAS (CKA_ECDSA_PAAS) Byte Array DE인코딩된 ASNI X9.62 파라메터값 CKA_VALUE Big integer ASNI X9.62 개인키값 d 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)},
21 {CKA_PIVATE, & true, sizeof(true)}, {CKA_EC_PAAS, ecparams, sizeof(ecparams)}, {CKA_VALUE, value, sizeof(value)} }; 비밀키객체 (Secret Key Object) 속성 데이터타입 내용 처리 CKA_SENSITIVE CK_BBOL IF TUE : 민감한정보 CKA_ENCYPT CK_BBOL IF TUE : 암호화 CKA_DECYPT CK_BBOL IF TUE : 복호화 CKA_SIGN CK_BBOL IF TUE : 부가형서명 - CKA_VEIFY CK_FLAGS IF TUE : 부가형서명검증 - CKA_WAP CK_BBOL IF TUE : 키암호화 CKA_UNWAP CK_BBOL IF TUE : 키복호화 CKA_EXTACTABLE CK_BBOL IF TUE : 키의 Export 지원 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 키값 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)} };
22 SEED 비밀키객체 (SEED secret key objects) 속성데이터타입내용처리 CKA_VALUE Byte Array 키값 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)} };
23 부록 2. 보안토큰 API(PKCS#11) 함수프로파일 API 함수정의 내용 처리 기본목적 (General Purpose) C_Initialize 보안토큰 API를초기화 C_Finalize 보안토큰 API와연관된다양한자원을해제 C_GetInfo 보안토큰 API에대한일반적인정보를획득 C_GetFunctionList 지원하는보안토큰 API 함수집합을획득 슬롯 & 토큰관리 (Slot and Token anagement) C_GetSlotList 시스템에있는슬롯집합을획득 C_GetSlotInfo 특정슬롯에관한정보를획득 C_GetTokenInfo 특정토큰에관한정보를획득 C_WaitForSlotEvent 슬롯이벤트 ( 토큰추가, 제거 ) 발생에따른대기상태 O C_GetechanismList 토큰이지원하는메커니즘집합을획득 C_GetechanismInfo 특정메커니즘에관한정보를획득 C_InitToken 토큰초기화 O C_InitPIN 사용자 PIN 초기화 O C_SetPIN 사용자 PIN 수정 O 세션관리 (Session anagement) C_OpenSession 응용시스템과토큰간의연결을생성 C_CloseSession 세션을종료 C_CloseAllSessions 특정토큰과연관된모든세션을종료 C_GetSessionInfo 세션에대한정보획득 C_GetOperationState 세션의암호오퍼레이션상태획득 O C_SetOperationState 세션암호오퍼레이션상태수정 O C_Login 토큰에로그인 C_Logout 토큰으로부터로그아웃 객체관리 (Object management) C_CreateObject 객체생성 C_CopyObject 복사본객체생성 O C_DestroyObject 객체파기 C_GetObjectSize 객체사이즈획득 O C_GetAttributeValue 객체속성획득 C_SetAttributeValue 객체속성수정 C_FindObjectInit 객체검색초기화 C_FindObjects 객체검색 C_FindObjectsFinal 객체검색종료 암호화 (Encryption) C_EncryptInit 암호화기능을초기화 O C_Encrypt 단일부분에대한암호화수행 O C_EncryptUpdate 다중부분에대한암호화수행 O
24 API 함수정의 내용 처리 C_EncryptFinal 다중부분에대한암호화수행종료 O 복호화 (Encryption) C_DecryptInit 복호화기능초기화 C_Decrypt 단일암호화부분에대한복호화수행 C_DecryptUpdate 다중암호화부분에대한복호화수행 O C_DecryptFinal 다중암호화부분에대한복호화수행종료 O 메시지압축 (essage Digesting) C_DigestInit 메시지압축수행초기화 O C_Digest 단일부분데이터압축수행 O C_DigestUpdate 다중부분에대한압축수행 O C_DigestKey 키압축수행 O C_DigestFinal 다중부분에대한압축수행종료 O 전자서명및 AC (Signing & ACing) C_SignInit 서명기능을초기화 C_Sign 단일부분서명을수행 C_SignUpdate 다중부분에대한서명수행 O C_SignFinal 다중부분에대한서명수행종료 O C_SignecoverInit 복원형서명기능초기화 O C_Signecover 복원형서명수행 O 전자서명및 AC 검증 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 anagement) C_GenerateKey 비밀키혹은도메인파라미터생성 O C_GenerateKeyPair 비대칭키쌍생성 C_WrapKey 키암호화 O C_UnWrapKey 키복호화 C_DeriveKey 기본키로부터키호출 (Vendor-defined) - 렌덤넘버생성 (andom Number Generation) C_Seedandom seed 값추가 C_Generateandom 랜덤혹은의사랜덤을생성
25 API 함수정의 내용 처리 Parallel 함수관리 (Parallel function 관리 ) C_GetFunctionStatus Legacy 함수는항상 CK_FUNCTION_NOT_PAALLEL 리턴함 - C_CancelFunction Legacy 함수는항상 CK_FUNCTION_NOT_PAALLEL 리턴함 -
26 부록 3. 보안토큰 API(PKCS#11) 메커니즘프로파일 SA 메카니즘 CK_SA_PKCS 메카니즘정의내용처리 PKCS#1 Version1.5 에정의된 SA 암호시스템과블록형식에기반한메커니즘 CK_SA_PKCS_KEY_PAI_GEN PKCS#1 에정의된 SA 키를생성하는메커니즘 CK_SA_PKCS_OAEP PKCS#1 Version2.0 에정의된 SA 암호시스템과블록형식에기반한메커니즘 CK_SHA1_SA_PKCS SHA-1 해쉬알고리즘에기반한전자서명메커니즘 O CK_SHA256_SA_PKCS SHA256 해쉬알고리즘에기반한전자서명메커니즘 O ECDSA 메카니즘 CK_ECDSA_PKCS_KEY_PAI_GEN 키를생성하는메커니즘 O CK_SHA1_ECDSA_PKCS SHA-1 해쉬알고리즘에기반한전자서명메카니즘 O ECDH 메카니즘 CK_ECDH1_DEIVE ANSI X9.63 에기반한키유도메카니즘 O CK_ECDH1_COFACTO_DEIVE ANSI X9.63 에기반한 ECDH 키유도메카니즘 O CK_ECDH1_COFACTO_DEIVE ANSI X9.63 에기반한 Cofactor ECDH 키유도메카니즘 O Block cipher 메커니즘 CK_DES3_GEN 블록 Cipher 키생성메커니즘 O CK_DES3_ECB ECB(Electronic codebook) 메커니즘 ( 암 / 복호화 ) O CK_DES3_CBC CBC(Cipher-block chaining) 메커니즘 ( 암 / 복호화 ) O CK_DES3_CBC_PAD CBC_PAD (PKCS Padding 이추가된 Cipher-block chaining) 메커니즘 ( 암 / 복호화 ) CK_DES3_AC_GENEAL General-legnth ACing 메커니즘 ( 서명 / 검증 ) O CK_DES3_AC General ACing 메커니즘 ( 서명 / 검증 ) O CK_SEED_GEN 블록 Cipher 키생성메커니즘 O CK_SEED_ECB ECB(Electronic codebook) 메커니즘 ( 암 / 복호화 ) O CK_SEED_CBC CBC(Cipher-block chaining) 메커니즘 ( 암 / 복호화 ) O CK_SEED_CBC_PAD CBC_PAD (PKCS Padding 이추가된 Cipher-block chaining) 메커니즘 ( 암 / 복호화 ) CK_AIA_KEY_GEN 블록 Cipher 키생성메커니즘 O CK_AIA_ECB ECB(Electronic codebook) 메커니즘 ( 암 / 복호화 ) O CK_AIA_CBC CBC(Cipher-block chaining) 메커니즘 ( 암 / 복호화 ) O CK_AIA_CBC_PAD CBC_PAD (PKCS Padding 이추가된 Cipher-block chaining) 메커니즘 ( 암 / 복호화 ) CK_AIA_AC_GENEAL General-legnth ACing 메커니즘 ( 서명 / 검증 ) O CK_AIA_AC General ACing 메커니즘 ( 서명 / 검증 ) O CK_AES_KEY_GEN 블록 Cipher 키생성메커니즘 O CK_AES_ECB ECB(Electronic codebook) 메커니즘 ( 암 / 복호화 ) O CK_AES_CBC CBC(Cipher-block chaining) 메커니즘 ( 암 / 복호화 ) O CK_AES_CBC_PAD CBC_PAD (PKCS Padding 이추가된 Cipher-block chaining) 메 O O O O O
27 메카니즘정의내용처리 커니즘 ( 암 / 복호화 ) CK_AES_AC_GENEAL General-legnth ACing 메커니즘 ( 서명 / 검증 ) O CK_AES_AC CK_SHA_1 FIPS PUB 에정의된해쉬메커니즘 O CK_SHA_1_HAC_GENEAL General-length SHA-1-HAC 메커니즘 O CK_SHA_1_HAC SHA-1-HAC 메커니즘 O CK_SHA_1_KEY_DEIVATION SHA-1 Key 유도메커니즘 O SHA-256 메커니즘 CK_SHA256 FIPS PUB 에정의된해쉬메커니즘 O CK_SHA256_HAC_GENEAL General-length SHA-256-HAC 메커니즘 O CK_SHA256_HAC SHA-256-HAC 메커니즘 O CK_SHA256_KEY_DEIVATION SHA-256 Key 유도메커니즘 O PKCS#5 and PKCS#5-style password-based encryption 메커니즘 CK_PKCS5_PBKD2 PKCS#5 에정의된패스워드기반암호화키생성메커니즘 O PKCS#12 password-based encryption/authentication 메커니즘 CK_PBE_SHA1_DES3_EDE_CBC 3DES 를이용한패스워드기반암호화메커니즘 O CK_PBE_SHA1_SEED_EDE_CBC SEED 를이용한패스워드기반암호화메커니즘 O CK_PBA_SHA1_WITH_SHA1_HAC Salt 와패스워드로부터 160bit secret 키를생성하기위한메커니즘 O
28 부록 4. 환경파일을이용한보안토큰구동프로그램위치정보관리 1. 위치정보관리보안토큰 API와관련한구동프로그램이설치되어있는위치정보및구동프로그램에대한정보를관리하기위해환경파일을이용한다. 환경파일의파일명및위치는다음의 [ 표 1] 과같이정의한다. 스마트폰등모바일플랫폼과같이구동프로그램이별도로설치및제공되지않고모바일앱의구성모듈로존재하는경우구동프로그램위치정보관리가필요치않으며, 별도의환경파일을구성하지않는다. 데스크톱 플랫폼 구분 Windows 계열 Unix, Linux 계열 ac 환경파일 %SYSTE%\npki_pkcs11.cnf ( 사용자계정 )/.npki_pkcs11.cnf ( 사용자계정 )/.npki_pkcs11.cnf [ 표 1] 보안토큰구동프로그램환경파일 2. 환경파일구성환경파일은 [PKCS#11.Driver] 섹션으로시작하며, 하나의키 (Driver) 로구성된다. Driver에는하위섹션명이나열되며하나이상의하위섹션명은공백문자로구분한다. 하위섹션명은보안토큰제품정보 (ID) 를사용한다. 하위섹션명은네개의키 (Info, Name, Programs, SignatureToken) 로구성된다. Info에는구동프로그램정보와구동프로그램버전정보를나열하며두정보는 : 로구분한다. 단, 바이오보안토큰의경우구동프로그램정보앞에 BIO_ 를연접하여사용하고모바일토큰의경우 obile_ 을연접하여사용한다. Name은보안토큰 API 관련구동프로그램위치정보및구동프로그램명이며, Programs에기타보안토큰관련구동프로그램위치정보및구동프로그램명을나열하며하나이상의구동프로그램은, 로구분한다. SignatureToken은구동프로그램검증정보의위치정보및파일명을기입하며, 보안토큰구동프로그램검증정보는공인인증체계기술규격에적합한보안토큰에대해서만생성된다.
29 3. 환경파일 (npki_pkcs11.cnf) 예제 [PKCS#11.Driver] // 섹션 Driver=Vid_0000&Pid_0001 Vid_0001&Pid_0001 Vid_0002&Pid_0001 USI_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 [USI_0001] Info=obile_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\USI_0001.der
30 부록 5. 보안토큰구동프로그램검증정보처리 1. 보안토큰구동프로그램검증정보보안토큰구동프로그램검증정보 ( 이하검증정보 ) 는해당플랫폼에설치된구동프로그램의무결성및구현적합성을확인할수있는정보로써, SignatureValue의 DE 인코딩값으로구성된다. 2. 검증정보확인가입자소프트웨어는 [ 부록 4.] 환경파일위치정보를통해검증정보파일의위치를확인하고, 해당검증정보의해쉬값 (hashvalue) 및전자서명값 (signature) 검증을통해구동프로그램의무결성및구현적합성을확인할수있다. 특히, 전자서명값검증은해당플랫폼에설치된최상위인증기관인증서또는정보통신망을통해안전하게획득한최상위인증기관인증서를통해검증하여야한다. 모바일플랫폼의경우 [ 부록 4] 의구동프로그램위치정보환경파일을사용하지않으며, 구동프로그램이모바일앱의구성모듈로사용되는경우별도의검증정보를사용하지않는다. 3. 검증정보 ASN.1 ClientHS DEFINITIONS ::= BEGIN IPOTS -- Imports from FC 3280 [POFILE], Appendix A.1 AlgorithmIdentifier, Certificate, CertificateList, CertificateSerialNumber, Name FO 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, -- 해쉬알고리즘 hashvalue OCTET STING -- 보안토큰구동프로그램 DLL에대한해쉬값으로, 가입자소프트웨어는 -- 시스템에설치된 drivername의 DLL을입력값으로해쉬하여 hashvalue와
31 } -- 비교함으로서사용자 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
32 부록 6. 보안토큰 API(PKCS#11) 반환값프로파일 종류반환값및내용처리 일반 세션 보안토큰 순차수행 utex CK_OK 보안토큰이성공적으로기능을수행 CK_GENEAL_EO 보안토큰에어떠한복구불가능한에러가발생하였음을의미함. CK_HOST_EOY, CK_FUNCTION_FAILED 와함께발생하는경우, CK_GENEAL_EO 가우선반환됨 CK_HOST_EOY 보안토큰구동프로그램을구동하는컴퓨터에메모리가부족할경우발생 CK_FUNCTION_FAILED 보안토큰구동프로그램특정함수의기능이수행될수없을경우발생. 해당함수가세션을사용하였다면 CK_SESSION_INFO 구조체의 uldeviceerror 항목에서오류발생원인을찾을수있음 CK_SESSION_HANDLE_INVALID 함수가호출될당시해당세션핸들이유효하지않을경우발생하는오류임. CK_DEVICE_EOVED, CK_SESSION_CLOSED 와함께발생하는경우, CK_SESSION_HANDLE_INVALID 가우선반환됨 CK_DEVICE_EOVED 보안토큰이함수실행도중제거될경우발생 CK_SESSION_CLOSED 세션이함수도중종료된경우발생 CK_DEVICE_EOY 보안토큰에메모리가부족할경우발생. CK_DEVICE_EO, CK_DEVICE_EOVED 와함께발생하는경우, CK_DEVICE_EOY 가우선반환됨 CK_DEVICE_EO 보안토큰또는슬롯에어떠한문제가발생할경우발생 CK_DEVICE_EOVED 보안토큰이함수실행도중제거될경우발생 CK_TOKEN_NOT_PESENT 보안토큰이함수실행시점에존재하지않을경우발생 CK_CANCEL 보안토큰구동프로그램이가입자 S/W 와함께기능을상호순차적으로수행할때, 가입자 S/W 가 CK_CANCEL 를반환하면보안토큰구동프로그램은 CK_FUNCTION_CANCEL 을반환한다. CK_UTEX_BAD utex 를처리하는함수가잘못된 mutex 객체를전달받을경우발생
33 종류반환값및내용처리 입출력 CK_UTEX_NOT_LOCKED utex 잠김을해제하고자하는함수가해당 mutex 가잠겨있지않음을발견할경우발생 CK_AGUENTS_BAD 보안토큰구동프로그램으로전달되는함수인자가잘못돼있을경우발생 CK_ATTIBUTE_EAD_ONLY 가입자 S/W 가변경할수없는속성의값을변경하고자하는경우발생 CK_ATTIBUTE_TYPE_INVALID 가입자 S/W 가템플릿에유효하지않는속성타입을명시하여함수를호출하는발생 CK_BUFFE_TOO_SALL 가입자 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 보다낮은우선순위를가짐. 단, 본반환값은 CK_SA_X_509 메커니즘에만해당 CK_DATA_LEN_ANGE 보안토큰구동프로그램에입력되는입력값의길이가유효하지않을경우발생 CK_DOAIN_PAAS_INVLALID 유효하지않거나지원되지않는도메인파라미터가보안토큰구동프로그램에입력되는경우발생 CK_ENCYPTED_DATA_INVALID 복호화함수에입력되는암호문이유효하지않을경우발생. CK_ENCYPTED_DATA_LEN_ANGE 보다낮은우선순위를가짐 CK_ENCYPTED_DATA_LEN_ANGE 복호화함수에입력되는암호문의길이가유효하지않을경우발생. CK_FUNCTION_CANCELED
34 종류반환값및내용처리 보안토큰구동프로그램이가입자 S/W 와함께기능을상호순차적으로수행할때, 가입자 S/W 가 CK_CANCEL 를반환하면보안토큰구동프로그램은 CK_FUNCTION_CANCEL 을반환한다. 보호된경로를통한 PIN 입력수행도중발생할수있음 CK_FUNCTION_NOT_PAALLEL 지정된세션에 parallel 로시행되는함수가없음을알림, C_GetFunctionStatus 와 C_CancelFunction. 에의해반환됨 CK_FUNCTION_NOT_SUPPOTED 해당함수가구동프로그램에서지원되지않을경우발생 CK_INFOATION_SENSITIVE 정보가민감하여제공되어질수없음을나타냄 CK_KEY_CHANGED 기존에저장된키가변경되었음을알림 CK_KEY_FUNCTION_NOT_PEITTED 허가되지않은키의속성을사용하고자했을때나타나는메시지 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_ECHANIS_INVALID 지정되지않거나지원되지않는메커니즘사용시발생 CK_ECHANIS_PAA_INVALID
35 종류반환값및내용처리 유효하지않는메커니즘매개변수가사용될경우발생 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_ANDO_NO_NG 지정된토큰이랜덤변수생성기가없을때발생. CK_ANDO_SEED_NOT_SUPPOTED 보다높은우선순위를가짐 CK_ANDO_SEED_NOT_SUPPOTED 보안토큰의랜덤변수생성기가응용프로그램으로부터 seeding 을받지않고자할때발생. 본메시지는 C_Seedandom 함수에의해서만이용. CK_SAVED_STATE_INVALID 제공된저장된암호화처리상태가유효하지않아, 지정된세션에저장될수없을경우발생 CK_SESSION_COUNT
36 종류반환값및내용처리 세션을열려는시도가실패할경우발생. 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_TEPLATE_INCOPLETE object 를만들기위해지정된템플릿이미완성되고필요한요소들이부족한상황일경우발생 CK_TEPLATE_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 메커니즘이맞지않아키를풀수없을경우발생
37 종류반환값및내용처리 바이오보안토큰관리 CK_USE_ALEADY_LOGGED_IN 이미로그인한상태를알림 CK_USE_ANOTHE_ALEADY_LOGGED_IN 다른사용자가로그인하여로그인이안됨 CK_USE_NOT_LOGGED_IN 로그인을하지않아작업이수행되지않을경우발생 CK_USE_PIN_NOT_INITIALIZED 사용자의핀이초기화되지않을경우발생 CK_USE_TOO_ANY_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_TIEOUT 지문센서타임아웃 CK_BIO_FINGE_AUTH_FAILED 지문인증실패 CK_BIO_NO_FINGE_AUTH_ID 지문인증 ID 없음 CK_BIO_FINGE_ALGO_FAILED 지문알고리즘비정상종료 CK_BIO_INVALID_USE
38 종류반환값및내용처리 사용자등록정보불일치 바이오보안토큰 API 반환값헤더파일 : #define CK_BIO_FINGE_AUTH_NEEDED #define CK_BIO_SENSO_EO #define CK_BIO_NO_FINGE_INFO #define CK_BIO_SENSO_TIEOUT #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 바이오보안토큰관리와관련된반환값처리요구사항 '' 은바이오보안토큰구동프로그램의 경우 '' 으로처리한다.
39 부록 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;
40 // 토큰이꽂혀있는슬롯목록획득 if ((nv = C_GetSlotList(TUE, pslotlist, &ulslotcnt))!= CK_OK) goto FINISH; // 각슬롯의토큰정보를확인하여사용할토큰선택 for (i=0; i<ulslotcnt; i++) { if ((nv = C_GetTokenInfo(pSlotList[i], &tokeninfo))!= CK_OK) goto FINISH; } // 획득한토큰정보출력 // 사용하고자하는토큰선택 (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 획득을위한템플릿선언 */
41 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); CK_OK) } if ((nv = C_GetAttributeValue(hSession, hcertary[i], pvaluetemplate, 1))!= 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;
42 5. 선택한인증서를이용한서명 // 입력값 CK_SESSION_HANDLE hsession; /* 토큰과의세션핸들 (2. 단계에서획득 ) */ unsigned char keyid[20]; /* 인증서의 keyid 값 (3. 단계에서획득 ) */ CK_ECHANIS_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
43 // 구성후개인키암호화수행한다. CK_BYTE pdigestinfo[100]; CK_ULONG ldigestinfolen = 0; if ((nv = akedigestinfo(data, pdata, ndatalen, &pdigestinfo, &ldigestinfolen))!= CK_OK) goto FINISH; CK_ECHANIS mechanism = { CK_SA_PKCS, NULL, 0 }; if ((nv = C_SignInit(hSession, goto FINISH; &mechanism, hprikeyary[0]))!= CK_OK) CK_OK) } else { if ((nv = C_Sign(hSession, pdigestinfo, ldigestinfolen, out, &outlen))!= goto FINISH; CK_ECHANIS signech = { 0, 0, 0 }; if (hashalg == CK_SHA_1) signech.mechanism = CK_KCDSA_SHA1; else if (nhash == ALGID_HS_SHA256) signech.mechanism = CK_KCDSA_SHA256; else { // E_INVALID_HASH_ALG 값정의 nv = E_INVALID_HASH_ALG; goto FINISH; } } FINISH: if ((nv = C_SignInit(m_hSession, goto FINISH; if ((nv = C_Sign(hSession, pdata, goto FINISH; &signech, hprikeyary[0]))!= CK_OK) ndatalen, psign, &lsignlen))!= CK_OK) C_FindObjectsFinal(hSession); return nv; int akedigestinfo(ck_echanis_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;
44 CK_OK) CK_ECHANIS hashech = { hashalg, 0, 0 }; C_DigestInit(m_hSession, &hashech); if ((nv = C_Digest(m_hSession, pdata, ndatalen, pdigest, &ldigestlen))!= 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 == CK_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;
45 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)}}; CK_OK) if ((nv = C_GetAttributeValue(hSession, hary[i], &randomtemplate, 2))!= goto FINISH; } 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; } C_FindObjectsFinal(hSession); return nv;
46 부록 8. PKCS#11 자바인터페이스사용예 1. 개요 1.1. 인터페이스모델자바를이용하여가입자소프트웨어를구현하는경우, 보안토큰이용을위해자바에서지원하는 Sun PKCS#11 Provider와 IB, 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 사용예
47 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. 전자서명생성키불러오기 보안토큰에저장되어있는전자서명생성키를얻기위해서는키저장객체의 getkey() 메소드를이용한다. 키저장객체 (Key store) 에는실제전자서명생성키가
48 저장되는것이아니라해당키에대한참조값이저장된다. 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();
49 부록 8. 규격연혁 버전제 개정일제 개정내역 v 년 9 월 o 암호토큰을위한 PKCS#11 프로파일규격 으로제정 v 년 3월 v 년 8월 v 년 11월 v 년 10월 v 년 9월 v 년 7월 v 년 11월 v 년 10월 o TTA 정보통신용어사전의토큰표준용어를준용하기위해규격내 암호토큰 을 보안토큰 으로용어변경 o 보안토큰기반공인인증서이용기술규격 으로규격명변경 o 본규격이보안토큰관련표준 API 로이용될수있도록 및 에서개인키외부유출관련규정삭제등 o 공인인증서가입자 S/W 가보안토큰구동프로그램을이용하여객체를생성하거나처리할경우, 해당객체속성템플릿이이용되도록 [ 부록 1.] 준용규정신설 o 공인인증서가입자 S/W 가보안토큰에서발생하는비정상적인오류상황에대해적절히대처할수있도록, 구동프로그램이지원해야하는반환값프로파일준용규정신설 o [ 부록 4] 환경파일을이용한보안토큰구동프로그램위치정보관리의환경파일구성내용변경 o 보안토큰보안기능강화를위해암호프로세서탑재및차분전력분석기법등공격에대비할수있는기능추가 o 공인인증서암호체계고도화에따른알고리즘변경사항반영 o 바이오보안토큰정의 o 바이오보안토큰등록정보및사용자등록정보를위한데이터객체추가 o 바이오보안토큰 API 반환값프로파일추가 o 모바일플랫폼환경의위치정보환경파일및검증정보처리내용추가 o PKCS#11 구현예시추가 o 자바를이용한 PKCS#11 구현예시추가 o 모바일토큰정의및위치정보관리내용추가 o 금융 IC 카드표준개정사항반영
KCAC.TS.HSMU v2.40 보안토큰기반의공인인증서이용기술규격 Accredited Certificate Usage Specification for Hardware Security Module v 년 1 월
보안토큰기반의공인인증서이용기술규격 Accredited Certificate Usage Specification for Hardware Security Module v2.40 2016 년 1 월 목차 1. 개요 1 2. 규격의구성및범위 1 3. 관련표준및규격 1 3.1 국외표준및규격 1 3.2 국내표준및규격 2 3.3 기타 2 4. 정의 2 4.1 전자서명법용어정의
More informationKCAC.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. 전송채널
무선단말기와 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 년 월 목차 개요 규격의구성및범위 관련표준및규격 국외표준및규격 국내표준및규격 기타 정의 전자서명법용어정의 용어의효력 약어 인증서신뢰목록 인증서신뢰목록모델 인증서신뢰목록프로파일
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목 차 개요 규격의구성및범위 관련표준및규격 국외표준및규격 국내표준및규격 기타 정의 전자서명법용어정의 용어의정의 용어의효력 약어 인증경로구축 인증경로검증알고리즘 인증서경로기본검증 검증알고리즘 부록 규격연혁
공인인증서경로검증기술규격 Accredited Certificate Path Validation Specification 년 월 목 차 개요 규격의구성및범위 관련표준및규격 국외표준및규격 국내표준및규격 기타 정의 전자서명법용어정의 용어의정의 용어의효력 약어 인증경로구축 인증경로검증알고리즘 인증서경로기본검증 검증알고리즘 부록 규격연혁 표목차 표 명칭형태 그림목차
More informationPowerPoint 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보안토큰 자동배포 가이드라인(안)
보안토큰 구동프로그램 배포 가이드라인 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 information0. 들어가기 전
컴퓨터네트워크 13 장. 네트워크보안 (2) - 암호화시스템 1 이번시간의학습목표 암호화알고리즘인 DES, RSA 의구조이해 전자서명의필요성과방법이해 2 대칭키암호방식 (1) 암호화와복호화에하나의키를이용 공통키또는대칭키암호방식이라고지칭 이때의키를비밀키 (secret key) 라고지칭 3 대칭키암호방식 (2) 암호화복호화를수행하는두사용자가동일한키를가지고있어야함
More informationyessign 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 information05 암호개론 (2)
정보보호 05 암호개론 (2) 현대암호 (1) 근대암호 기계식암호 SP(Substitution & Permutation) 현대암호 1950 년대이후컴퓨터를이용한암호방법개발 수학적접근방식에의해보다복잡하고해독하기어렵게만들어짐 구분 대칭키알고리즘 블록 (Block) 암호화 스트림 (Stream) 암호화 비대칭키알고리즘으로구분 현대암호 ( 계속 ) 현대암호 (2)
More information- - 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본 강의에 들어가기 전
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
4. 공개키암호화방식 건국대학교 공개키암호방식 대칭키암호방식의문제점 키분배의문제 디지털서명이불가능 공개키암호로해결 (976 년 Diffe 와 Hellman 에의해제기 ) 건국대학교 2 공개키암호방식 공개키알고리즘 : 두개의다른키사용 공개키 : 모든사람이접근가능한키 ( 공개 ) 개인키 : 각사용자자신만이소유 ( 비밀 ) ( 관용암호에사용되는키는비밀키라고함 )
More informationMicrosoft 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>
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
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More informationJAVA PROGRAMMING 실습 08.다형성
2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스
More informationPowerPoint 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 informationKCAC.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 information1. 객체의생성과대입 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 informationPowerPoint 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 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 informationgnu-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공개키 암호 방식
공개키암호방식 Korea College of Information & Technology 수업내용 공개키암호방식의개요 RSA 암호방식 RSA 암호방식의안전성 RSA 암호방식의해독 RSA 암호방식의반복법에의한공격 ElGamal 암호방식 이산대수문제 ElGamal 암호방식 Merkle-Hellman 의 Knapsack 암호방식 Merkle-Hellman I 형
More informationadfasdfasfdasfasfadf
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 informationMicrosoft PowerPoint - chap06.ppt
2010-1 학기현대암호학 제 6 장. 하이브리드 암호시스템 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 목차 하이브리드암호시스템 강한하이브리드암호시스템 암호기술의조합 6.0 주요내용 하이브리드암호시스템 대칭암호의장점인빠른처리속도 비대칭암호의장점인키배송문제의편리함 평문을대칭암호로암호화 평문을암호화할때사용했던대칭암호키를공개키암호로암호화
More informationthesis
( 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 informationPowerPoint 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 informationPowerPoint 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 informationAll 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 informationPowerPoint 프레젠테이션
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 informationDesign 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 informationC++ 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자바암호패키지 (JCA, JCE) 및실무활용방법 20soft 박대표 이글에서는자바암호패키지인 JCA(Java Cryptography Architecture) 와 JCE(Java Cryptography Extension) 에대해서알아보고, 실무활용방법에대해서알아보겠습니다
자바암호패키지 (JCA, JCE) 및실무활용방법 20soft 박대표 이글에서는자바암호패키지인 JCA(Java Cryptography Architecture) 와 JCE(Java Cryptography Extension) 에대해서알아보고, 실무활용방법에대해서알아보겠습니다. 안녕하세요. 박대표 (^O^) 입니다. 최근에많은프로그램들이자바언어로만들어지고있습니다.
More informationMicrosoft 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 informationA 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 informationPowerPoint Template
JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것
More information<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.
More information<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임베디드시스템설계강의자료 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 informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More information<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 informationMicrosoft 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목 차 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 informationAPI 매뉴얼
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 information1. 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 informationJVM 메모리구조
조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.
More informationq 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2
객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가
More information키 관리와 인증서
키관리와인증서 컴퓨터시스템보안 금오공과대학교컴퓨터공학부 최태영 목차 비밀키관리 비밀키개인관리 키관리센터 (KDC) 공개키관리 공개키관리의필요성 공개키인증서및공개키기반구조 인증서철회목록 공개키암호화표준 (PKCS) OpenSSL 을이용한인증서관리 2 비밀키개인관리 비밀키도난방지를위해비밀키를암호화하여보관하는것이안전 KEK (Key Encryption Key) 키암호화에사용되는키
More informationPowerPoint 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 informationMicrosoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt
변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short
More information<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 informationMicrosoft 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금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More informationBMP 파일 처리
BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 4 강. 함수와라이브러리함수목차 함수오버로딩 디폴트매개변수 라이브러리함수 clock 함수 난수발생 비버퍼형문자입력 커서이동 프로그래밍문제 1 /21 4 강. 함수와라이브러리함수함수오버로딩 2 /21 함수오버로딩 동일한이름의함수를여러개만들수있음 함수프로파일이달라야함 함수프로파일
More information기초 암호화 기법
제 2 장기초암호화 기법 컴퓨터시스템보안금오공과대학교컴퓨터공학부최태영 평문과암호문 평문 (plaintext) : 암호화되기전의읽을수있는문장 암호문 (ciphertext) : 암호화에의해서읽을수없게된문장 암호화 (encryption) : 평문을암호문으로바꾸는과정 암호화알고리즘 : 암호화수행과정 복호화 (decryption) : 암호문을평문으로바꾸는과정 복호화알고리즘
More information학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2
학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등
More informationPowerPoint Presentation
객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean
More informationFrama-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>
객체지향프로그램밍 (Object-Oriented Programming) 1 C++ popular C 객체지향 (object oriented) C++ C : 상위계층언어특징 + 어셈블리언어특징 C++ : 소프트웨어개발플랫폼에객체지향개념제공 객체지향 : 자료와이들자료를어떻게다룰것인지따로생각하지않고단지하나의사물로생각 형 변수가사용하는메모리크기 변수가가질수있는정보
More information쉽게 풀어쓴 C 프로그래밍
Power Java 제 7 장클래스와객체 이번장에서학습할내용 객체지향이란? 객체 메시지 클래스 객체지향의장점 String 클래스 객체지향개념을완벽하게이해해야만객체지향설계의이점을활용할수있다. 실제세계는객체로이루어진다. 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 절차지향과객체지향 절차지향프로그래밍 (procedural programming): 문제를해결하는절차를중요하게생각하는방법
More informationMicrosoft 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 informationHLS(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 프로그래밍
제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace
More informationCryptography v3
Basic Cryptography 공개된암호화폐가안전한이유 Seokhwan Moon Modular Arithmetic! 값을 " 로나눌경우아래와같은식이성립함! = " % + ' 이를아래와같이표현할수있음! ()* % = ' 여기서 % 은 modulus( 법, 모듈로 ) 라고불리우며 ' 는 residue( 나머지 ) 라고불리움 프로그래밍에서 % 기호와같은역할 >>>
More information슬라이드 1
정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함
More informationJAVA 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 목포해양대해양컴퓨터공학과 Part 1. 보충자료 제 2 장. 대칭암호와메시지기밀성 제 3 장. 공개키암호와메시지인증 2 목포해양대해양컴퓨터공학과 SEED (1) 개요 1999 년한국정보보호진흥원 (KISA) 에의해개발된국내대칭키기반블록암호알고리즘 1999 년한국정보통신협회 (TTA) 에의해국내표준으로채택 현재전자상거래, 전자메일, 인터넷뱅킹, 데이터베이스암호화,
More informationPowerPoint 프레젠테이션
@ 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 informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More informationMicrosoft 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 informationMicrosoft PowerPoint - CSharp-10-예외처리
10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.
More information개정일 : 2006 년 12 월 27 일 전자서명인증서프로파일 Digital Signature Certificate Profile 본문서에대한저작권은 TTA 에있으며, TTA 와사전협의없이이문서의전체또는일부를 상업적목적으로복제또는배포해서는안됩니다. Copyrightc
개정일 : 2006 년 12 월 27 일 T T A S t a n d a r d 전자서명인증서프로파일 Digital Signature Certificate Profile 개정일 : 2006 년 12 월 27 일 전자서명인증서프로파일 Digital Signature Certificate Profile 본문서에대한저작권은 TTA 에있으며, TTA 와사전협의없이이문서의전체또는일부를
More information1장 암호의 세계
SeoulTech 2012-1 st 현대암호학 제 13 장 PGP 박종혁교수 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr 13.1 주요내용 전자메일은우리가생각하는것만큼안전하지않다 암호학적인측면에서보면매우취약하다. 전자메일에대한인증과기밀성서비스가매우중요해졌다 두가지중요한전자메일 PGP(Pretty Good Privacy)
More informationKCAC.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목 차 1. 개요 1 2. 규격의 구성 및 범위 1 3. 관련 표준 및 규격 1 3.1 국외 표준 및 규격 1 3.2 국내 표준 및 규격 2 3.3 기타 2 4. 정의 2 4.1 전자서명법 용어 정의 2 4.2 용어의 정의 2 4.3 용어의 효력 3 5. 약어 3 6.
공인인증서 요청형식 프로토콜 규격 Accredited Certificate Request Message Format Specification v1.21 2009년 9월 목 차 1. 개요 1 2. 규격의 구성 및 범위 1 3. 관련 표준 및 규격 1 3.1 국외 표준 및 규격 1 3.2 국내 표준 및 규격 2 3.3 기타 2 4. 정의 2 4.1 전자서명법 용어
More informationLecture22
인증과공개키기반구조 이병천 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 informationMicrosoft PowerPoint - 6.pptx
DB 암호화업데이트 2011. 3. 15 KIM SUNGJIN ( 주 ) 비에이솔루션즈 1 IBM iseries 암호화구현방안 목차 목 차 정부시책및방향 제정안특이사항 기술적보호조치기준고시 암호화구현방안 암호화적용구조 DB 암호화 Performance Test 결과 암호화적용구조제안 [ 하이브리드방식 ] 2 IBM iseries 암호화구현방안 정부시책및방향
More informationⅠ. 들어가는 말 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어댑터뷰
04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결
More information17장 클래스와 메소드
17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는
More informationPowerPoint Template
SeoulTech UCS Lab 제 13 장 난수 박종혁교수 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr 1 절난수가사용되는암호기술 2 절난수의성질 3 절의사난수생성기 4 절구체적의사난수생성기 5 절의사난수생성기에대한공격 2 제 1 절난수가사용되는암호기술 1.1 난수의용도 3 1.1 난수의용도 키생성 대칭암호나메시지인증코드
More informationPowerPoint 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<36325FB1E8C0E7BFEC2DB9D9C0CCBFC0C0CEC1F520B1E2B9DDC0C720C0FCC0DABCADB8EDC0BB2E687770>
Journal of the Korea Academia-Industrial cooperation Society Vol. 16, No. 9 pp. 6282-6289, 2015 http://dx.doi.org/10.5762/kais.2015.16.9.6282 ISSN 1975-4701 / eissn 2288-4688 김재우 1*, 박정효 1, 전문석 1 1 숭실대학교컴퓨터학과
More informationMicrosoft PowerPoint - chap01-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 학습목표 프로그래밍의 기본 개념을
More informationMicrosoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600
균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at
More information서현수
Introduction to TIZEN SDK UI Builder S-Core 서현수 2015.10.28 CONTENTS TIZEN APP 이란? TIZEN SDK UI Builder 소개 TIZEN APP 개발방법 UI Builder 기능 UI Builder 사용방법 실전, TIZEN APP 개발시작하기 마침 TIZEN APP? TIZEN APP 이란? Mobile,
More information<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>
게임엔진 제 4 강프레임리스너와 OIS 입력시스템 이대현교수 한국산업기술대학교게임공학과 학습내용 프레임리스너의개념 프레임리스너를이용한엔터티의이동 OIS 입력시스템을이용한키보드입력의처리 게임루프 Initialization Game Logic Drawing N Exit? Y Finish 실제게임루프 오우거엔진의메인렌더링루프 Root::startRendering()
More information제11장 프로세스와 쓰레드
제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드
More informationAPI 매뉴얼
PCI-TC03 API Programming (Rev 1.0) Windows, Windows2000, Windows NT, Windows XP and Windows 7 are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations
More informationC# 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설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 9 강. 클래스의활용목차 멤버함수의외부정의 this 포인터 friend 선언 static 멤버 임시객체 1 /17 9 강. 클래스의활용멤버함수의외부정의 멤버함수정의구현방법 내부정의 : 클래스선언내에함수정의구현 외부정의 클래스선언 : 함수프로토타입 멤버함수정의 : 클래스선언외부에구현
More information동양미래대학교규정집제 8 편정보보안 ~2 제4조 ( 책임사항 ) 1. 정보보안담당관 : 대학의전반적인보안계획을수립관리하는자로대학에서 1명을선정하여, 암호화기술및프로그램등암호와관련된모든사항들에대해서최종승인과총괄적인관리를담당한다. 그리고기술의발달에따라암호화기술및
동양미래대학교규정집제 8 편정보보안 8-0-18~1 암호키관리지침 규정번호 8-0-18 제정일자 2017.04.17 개정일자 개정번호 Ver.0 총페이지 7 제 1 장총칙 제1조 ( 목적 ) 본지침은 정보통신망이용촉진및정보보호등에관한법률 의 개인정보의보호, 정보통신망의안전성확보 등관계법령의규정을토대로, 동양미래대학교 ( 이하 대학 이라고함 ) 의중요정보자산에대해기밀성,
More informationPowerPoint 프레젠테이션
실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3
More informationhwp
공개키암호 박영호 암호학은정보보호서비스를안전하게제공하기위한기술로연구되고있다. 암호학에서연구되는암호학적도구는크게공개키암호와비밀키암호로나눌수있다. 비밀키암호는두사용자가동일한비밀키를공유하고있는상태에서전송하고자하는데이터를공유한키로암호화하여수신자에게전송하면수신자는동일한키로복호화하여데이터를복원한다. 네트워크를통해전송되는정보는암호화된정보이므로외부에서데이터를확인할수없게되어안전한통신이가능하게된다.
More information<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>
#include "stdafx.h" #include "Huffman.h" 1 /* 비트의부분을뽑아내는함수 */ unsigned HF::bits(unsigned x, int k, int j) return (x >> k) & ~(~0
More information제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호
제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법
More information슬라이드 1
PKI Kerberos SAML & Shibboleth OpenID Cardspace & ID 2 < > (= ) password, OTP, bio, smartcard, pki CardSpace, ID What you have.., 2 factor, strong authentication 4 (SSO) Kerberos, OpenID 5 Shared authentication
More information