Chapter 3. Architecture AI & HCI Lab 김 주 영.

Slides:



Advertisements
Similar presentations
For Android 이재원.  페이스북 SDK 설치  2 가지 예제 & 소스  API 사용 예제 프로젝트 만들기  Graph API  참고사항 & 사이트.
Advertisements

기술분야에너지 관리 연구과제명 Advanced Energy Mgmt. Algorithm 개발 필요성신재생 발전기기, 에너지 저장장치, 에너지 소비장치가 공존하는 Smart Grid Home 환경에서 사용자의 불편을 최소화하면서 효율적으로 에너지를 절감할 수 있는 새로운.
SSL (Secure Socket Layer) 중부대학교 정보보호학과 이병천 교수. 웹 보안 구현방법  네트워크 계층에서의 구현방법  특징  IP 계층에 보안 기능을 둠  IP Sec  응용계층의 모든 응용서비스에 보안성 제공  VPN(Virtual Private.
3. C++와 객체지향 C++ 코딩 방법 객체 단위로 2 개의 파일 인터페이스 파일 구현파일
10. 전자상거래 보안 e-commerce security
Web Service XML Security
Cryptography and Network Security
자바 암호 프로그래밍 Java Cryptography Programming
암호화 기술(SSL, IPSec) 손재성 권기읍 안복선 최준혁
암호화 기술(IPsec,SSL) 배문주 송정미 황유진.
Puzzle 1 To 50 관심분야연구회 박찬수 장진호 최효진.
Programming for the java Virtual machine
(c) Byoungcheon Lee, Joongbu Univ.
Java로 배우는 디자인패턴 입문 Chapter 0. UML 과 Design Pattern
4부 클래스 라이브러리 “4부에서는 자바 언어의 API인 클래스 라이브러리에 관해 설명합니다
자바 암호 프로그래밍 Java Cryptography Programming
자바 암호 프로그래밍 Java Cryptography Programming
자바란 무엇인가? JDK의 다운로드 및 설치 방법 Hello, Java 프로그램의 작성 자바 프로그램의 작동 원리
자바 암호 프로그래밍 Java Cryptography Programming
전자상거래 보안 (암호학과 네트워크보안) Chul Ho Rhee
제 10장 인증서 공개 키를 이용한 디지털 서명.
Internet Computing KUT Youn-Hee Han
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
Chapter 8 목차 8.1 네트워크 보안이란 무엇인가? 8.2 암호학의 원리 8.3 메시지 무결성 8.4 종단점 인증
CDC Connected Device Configuration CLDC보다 많은 리소스를 가진 시스템을 대상으로 설정
Internet 및 EC 관련 기술들.
10장 객체-지향 프로그래밍 II ©창병모.
08장 암호의 이해: 숨기고자 하는 이들의 싸움.
E. Quick Reference AI Lab 석사 3학기 염성진.
Missing Encryption of Sensitive Data
10장 SafeTalk 시스템 소프트웨어 연구실 성순화 이재일
Chapter 8 목차 8.1 네트워크 보안이란 무엇인가? 8.2 암호학의 원리 8.3 메시지 무결성 8.4 종단점 인증
Key and Certificate Management Using Keystores
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
Java IT응용시스템공학과 김형진 교수 2장. 자바의 환경 public class SumTest {
윤 홍 란 4 장 클래스 작성 윤 홍 란
DataScience Lab. 박사과정 김희찬 (월)
김 정 석 Web Programming 김 정 석
2 : 대칭암호화 소제목 : 기본적인 대칭암호화.
Network Programming(1)
네트워크 보안 3 오 세 종.
SOAP 클라이언트 개발 Guide
제1장 서론.
객체 지향 프로그래밍.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
DataScience Lab. 박사과정 김희찬 (월)
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
메소드와 클래스 정의 및 문제 풀이 Method and Class Define and Problem Solve
김 정 석 Web Programming 김 정 석
소프트웨어 공학 Lecture #7: 상세 설계
Use of a Broken or Risky Cryptographic Algorithm
[INA470] Java Programming Youn-Hee Han
컴퓨터공학실습(I) 3주 인공지능연구실.
Java IT응용시스템공학과 김형진 교수 5장. 객체지향 개념 public class SumTest {
Chapter3 : 객체지향의 개념 3.1 객체지향(object-oriented)과
2. CONCEPTS 컴퓨터 네트워크 실험실 석사 1학기 강 동 호.
Spring DI 이해 및 활용.
컬럼 대칭키 암호화 작업(SQL 2008) ① 마스터 키 생성 ② 인증서 생성 초기 한번만 실행 ③ 대칭키 생성
자바 암호 프로그래밍 Java Cryptography Programming
소프트웨어 공학 (Software Engineering) 상세 설계 (Detailed Design)
Chapter 02. 소프트웨어와 자료구조.
자바 암호 프로그래밍 Java Cryptography Programming
Chapter 3. Public Key Infrastructure
Chapter 08. 암호에 대한 이해 : 숨기고자 하는 이들의 싸움
A Clean Slate 4D Approach to Network Control and Management
캡슐화 (Encapsulation) 두원공과대학 소프트웨어개발과 이 원 주.
자바 암호 프로그래밍 Java Cryptography Programming
Java의 정석 제 7 장 객체지향개념 II-3 Java 정석 남궁성 강의
Presentation transcript:

Chapter 3. Architecture AI & HCI Lab 김 주 영

Index Architecture Alphabet Soup Concept classes API and SPI Factory Methods Standard Names The Provider Architecture Key Management Summary

Architecture Java cryptography software 분류 다룰 내용 인증을 위한 암호화 클래스를 포함하는 JDK 강력한 암호화를 지원하는 JCE(Java Cryptography Extension) 다룰 내용 암호화의 개념과 구현(알고리즘)의 분류 Concept Class의 public method들의 분류 암호화 클래스에서 factory method의 사용 provider architecture

Alphabet Soup(1) Java Security API는 자바로 보안 프로그램을 작성하기 위한 패키지의 집합 JDK java.security java.security.cert java.security.interfaces java.security.spec JCE javax.crypto javax.crypto.interfaces javax.crypto.spec

Alphabet Soup(2) JCA Java Cryptography Architecture은 암호화 클래스의 전반적인 디자인 디자인 패턴과 암호화의 개념, 알고리즘을 정의하기위한 확장 구조를 지정 java.security와 javax.crypto 패키지안의 클래스에 의하여 캡슐화되어 있음 cryptographic provider들에 의해 구현 JDK 1.2에 몇가지 암호화 알고리즘을 구현하기위한 default provider인 SUN을 포함하고 있음

Alphabet Soup(3) JCE 암호학 소프트웨어를 무기와 같은 종류로 분류하여 수출을 제한 암호화 클래스를 두가지 그룹으로 분류 JDK 1.2에 포함되어 있는 java.security.* 패키지 JCA의 확장인 JCE(Java Cryptography Extension) 캐나다와 미국만 배포 SunJCE라 불리는 cryptographic provider를 포함 standard extension library JDK의 일부가 아니라 JDK와 함께 작동되는 패키지

Alphabet Soup(4) Access Control java.security의 많은 클래스들이 access control, security policy, permission등과 관련 암호화와는 직접적인 관련이 적음 위 사항에 대한 자세한 정보는 O’Reilly의 [Java Security]를 참조

Alphabet Soup(5) Other players 미국 밖에서 적어도 두 그룹이 JCE의 설계에 바탕을 두어 JCE를 구현하고 있고, 미국의 수출 법에 제한을 받지 않고 결과를 배포하고 있음 JCE와 같은 점 암호화의 concept class와 구현 알고리즘를 포함 JCE와 다른 점 수출 제한을 두지 않음

Java Security Download Locations Package Location JCA JCE Cryptix IAIK JCP http://java.sun.com/products/jdk/1.2/ http://java.sun.com/products/jdk/1.2/jce/ http://www.systemics.com/software/cryptix-java/ http://wwwjce.iaik.tu-graz.ac.at/ http://www.jcp.co.uk/products/

Java Security API software JCA java.security java.security.cert Key, MessageDigest, Signature, etc. JDK 1.2 Other core classes Java.security Access control, permissions JCE 1.2 javax.crypto cipher

Cryptographic Concept Classes(1) Class or Interface Description java.security.cert.Certificate javax.crypto.Cipher java.security.Key, java.security.PrivateKey, java.security.PublicKey, javax.crypto.SecretKey javax.crypto.KeyAgreement A cryptographic certificate A cipher A key, used for signing or encryption A secret key exchange protocol

Cryptographic Concept Classes(2) Class or Interface Description java.security.KeyFactory javax.crypto.KeyGenerator java.security.KeypairGenerator java.crypto.Mac java.security.MessageDigest javax.crypto.SecretKeyFactory java.security.SecureRandom javax.security.Signature Translates public and private keys from one format to another Creates keys for symmetric ciphers Creates pairs of public and private keys for signing or encryption A Message Authentication Code(MAC) A cryptographic hash function Translates secret keys from one format to another A cryptographically strong random number engine A digital signature

API and SPI 암호화의 concept class에서 method의 분류 API(Application Programming Interface) concept class의 인스턴스를 사용할 수 있는 모든 public method로 구성 SPI(Service Provider Interface) 구현되어진 서브클래스의 method 집합 engine 이름으로 시작됨

API and SPI JDK 1.1 JDK 1.2 SPI, API가 섞여 있음 예) java.security.Signature API method : initSign(), verify() SPI method : engineInitSign(), engineVerify() JDK 1.2 API와 SPI가 분리되어 있음 예) Signature는 지금은 API method만을 포함, java.security.SignatureSpi에 모든 SPI method가 포함

What Are Factory Methods? class method 항상 static methods를 호출함 static method는 실행하기 위해 instance를 필요치 않음 (예) : main() static keyword를 사용하여 정의 instance method 보통의 methods 호출 항상 실행하기 위해 클래스의 특수한 instance를 실행

What Are Factory Methods? factory method는 클래스의 instance를 돌려주는 static method의 특수한 종류 JDK 1.0.2 : factory method는 Socket class에서 간접적으로 사용 됨(setSocketImplFactory()) JDK 1.1, 이후 좀더 널리 사용 됨 getInstance()라고 명명 됨 design pattern의 예 design patterns: Elements of Reusable Object-Oriented Software by Erich Gamma외 3명(Addison-Wesley, 1995) 참조

Factory Methods MessageDigest md5; md5 = MessageDigest.getInstance(“MD5”); MD5 알고리즘을 사용하기 위한MessageDigest instance를 생성 JCA의 모든 factory method는 요청 알고리즘이 없으면NoSuchAlgorithmException를 투구 factory method로부터 사용자에게 반환된 인스턴스는 요청한 클래스에서 상속된 것임 sun.security.provider.MD5에서 상속

getInstance()를 갖는 Concept classes javax.crypto.Cipher javax.crypto.KeyAgreement java.security.keyFactory javax.crypto.KeyGenerator java.security.KeyPairGenerator javax.crypto.Mac java.security.MessageDigest javax.crypto.SecretKeyFactory java.security.Signature

Standard Algorithm Names Algorithms supported by Sun Algorithms supported by SunJCE Concept class Cipher KeyAgreement KeyFactory KeyGenerator KeyPairGenerator Mac MessageDigest SecretKeyFactory Signature DSA MD5, SHA-1 DES, DESede, PBEWithMD5AndDES DH DES,DESede HmacMD5, HmacSHAI

The Provider Architecture(1) provider는 암호화의 concept class를 위한 알고리즘을 제공 provider는 java.security.Provider객체에 의해 상속된 알고리즘 클래스의 집합 provider : concept class, Provider : specific class java.security.Security class가 보안 provider들을 관리 프로그램이 암호화 알고리즘이 포함된 factory method를 호출하면 factory method는 Security class에게 요청하고 Security class는 provider에게 매치되는 클래스를 찾음

The Provider Architecture(2) Program Providers 4. 예. sun.security.provider.MD5 class입니다. 3.누가 MD5 message digest class를 가지고 있습니까? 1.MD5알고리즘을 구현한 instance를 주세요 6. 자 여기 있습니다. MessageDigest Security 2. 어떤 provider가 제공하던지 MD5를 구현한 message digest 객체를 주세요. 5. 예. 클래스를 찾았습니다. 여기 instance가 있습니다.

The Provider Architecture(3) 예) MD5 message digest가 지원되는 하나 이상의 provider를 가진다면, 상위에 참조된 것이 사용됨 특별한 provider를 사용하기 원할 때 getInstance()의 overloaded 버전을 사용 예) Jonathan provider에 의해 구현된 ElGamal 알고리즘의 KeyPairGenerator를 요청시(9장) KeyPairGenerator kpg = KeyPairGenerator(“ElGamal”, “Jonathan”);

Provider configuration(1) static provider configuration java.security file(lib/security)을 수정 다음과 같은 format으로 각각의 provider 설정 n은 provider들의 참조 순서 결정 첫번째의 default provider가 n = 1 security.provider.n = providerclassname security.provider.1 = sun.security.provider.Sun

Provider configuration(2) dynamic provider configuration provider를 실행 시에 제공 Provider class의 인스턴스를 가지고 Security.addProvider()나 Security.insertProviderAt()를 호출 Security class가 초기화 되었을 때, 우선 java.security file을 읽어 설치 후에도 적당한 provider들을 설치나 삭제 가능

Methods for managing Providers at runtime public static int addProvider(Provider provider) provider preference끝에 추가하고 provider의 위치 반환 public static Provider getProvider(String name) provider의 이름, null(발견 못했을 시) 반환 public static Provider[] getProviders() 현재 설치된 모든 provider들의 배열을 반환 public static int insertProviderAt(Provider provider, int position) 주어진 위치에 provider를 추가 미리 추가된 provider를 재 추가 시에 -1 반환 public static void removeProvider(String name) 지정된 provider를 제거

Installing JCE JCE는 Java Archive(JAR) file로 압축되어 있음 JCE를 download하면 CLASSPATH에 JAR를 추가 JCE algorithm을 사용하기 위해, SunJCE를 설치 예)SunJCE를 static provider로 configure시 java.security file에 다음과 같이 추가 security.provider.1=sun.security.provider.Sun security.provider.2=com.sun.crypto.provider.SunJCE

Key Management data를 암호화하기 위해 private key가 필요 data를 복호화하기 위해 암호화 시킨 사람의 public key가 필요 암호화를 필요하는 많은 사람들을 갖으면 키 관리 필요 JCA는 Identity, KeyStore class에 기반을 두어 이를 지원(5장에서 자세히 다룸)

Summary Java.security, javax.crypto 패키지로 구현 provider들에 의해서 복잡한 알고리즘을 쉽게 구현 암호화 프로그램이 자바로 구현이 쉬움 내부 구조를 알면 무척 복잡한 그림들이 있지만 스스로가 자신의 provider를 만들지 않는 이상 걱정할 것이 없음