자바 암호 프로그래밍 Java Cryptography Programming

Slides:



Advertisements
Similar presentations
열왕기 상하는 중요하다 ! 왜 ? 시가 3 권 예언서 12 원 열왕기 상하는 중요하다 ! 대라느스 단겔학슥말.
Advertisements

SSL (Secure Socket Layer) 중부대학교 정보보호학과 이병천 교수. 웹 보안 구현방법  네트워크 계층에서의 구현방법  특징  IP 계층에 보안 기능을 둠  IP Sec  응용계층의 모든 응용서비스에 보안성 제공  VPN(Virtual Private.
8 사이버 윤리와 보안.
(2) 고대 국가의 성립  1) 고대 국가의 성격    ① 중앙 집권 체제      - 국왕의 지위 강화, 부족장 세력의 통합,
내용 교육행정정보시스템의 공인인증서 적용 전자서명과 공개키기반구조 공인전자서명 인증서 발급절차 FAQ와 Tips.
15 장. 알고리즘의 설계 알고리즘 설계 학습목표 기본 패턴 패턴의 한계점 일곱 가지 패턴의 알고리즘 설계 기법을 이해한다.
2015 담당 강사 : 정세진 중국 명문 감상 2015 담당 강사 : 정세진
웹 어플리케이션 보안 2016년 2학기 12. Cryptography.
Ch4.4~4.6 지장현
(c) Byoungcheon Lee, Joongbu Univ.
암호체계고도화(2048) 문서유통 테스트베드 사용 메뉴얼
10. 전자상거래 보안 e-commerce security
Cryptography and Network Security
자바 암호 프로그래밍 Java Cryptography Programming
현대암호편: RC5,ElGamal,Rabin
데이터 통신 서울대학교 통계학과 2009년 2학기 컴퓨터의 개념 및 실습 (
제목 CHAPTER 09. 정보 보안 선택이 아닌 필수_정보 보안 기술과 정보 윤리.
Programming for the java Virtual machine
이번 시간에는... 지난 시간에는 무선 Markup 언어와 XHTML Mobile Profile 특징, WAP 2.0 XHTML MP의 구성과 XHTML MP에 사용되는 다양한 태그 등, WAP 2.0 XHTML 개발을 위한 기본 사항을 설명하였습니다. 이번 시간에는 2회차에.
Security.
(c) Byoungcheon Lee, Joongbu Univ.
암호 이야기 - 보이지 않는 전쟁 -.
자바 암호 프로그래밍 Java Cryptography Programming
자바 암호 프로그래밍 Java Cryptography Programming
전자상거래 보안 (암호학과 네트워크보안) Chul Ho Rhee
제 10장 인증서 공개 키를 이용한 디지털 서명.
Chapter 3. Architecture AI & HCI Lab 김 주 영.
Chapter 8 목차 8.1 네트워크 보안이란 무엇인가? 8.2 암호학의 원리 8.3 메시지 무결성 8.4 종단점 인증
Internet 및 EC 관련 기술들.
Chapter 10 네트워크 보안.
암호프로토콜 중부대학교 정보보호학과 이병천 교수 전자상거래보안
키 관리 및 인증, 전자서명 4조: 최선욱 조성호 Kangwon National University Samcheok Campus Information & Communication Eng.
08장 암호의 이해: 숨기고자 하는 이들의 싸움.
암호학 응용 Applied cryptography
10장 SafeTalk 시스템 소프트웨어 연구실 성순화 이재일
Chapter 8 목차 8.1 네트워크 보안이란 무엇인가? 8.2 암호학의 원리 8.3 메시지 무결성 8.4 종단점 인증
Key and Certificate Management Using Keystores
공개키 암호화 프로그래밍 전자상거래보안.
인류의 분산 언어의 대 혼잡시기 창조,타락 홍수 바벨탑사건 아브라함 모세 BC 고조선 하/은/주 (창 11:7,9) 『[7] 자, 우리가.
암호에 대한 이해 정보 보안 개론 7장.
컴퓨터와 수학자 1 컴퓨터가 1935년 영국의 수학자 튜링과 1940년에 미국의 수학자 폰노이만에 의하여 처음으로 만들어진다.
도덕 1학년 1학기 2. 개성신장과 인격 도야:인물학습 석가모니 인물학습 -석가모니.
전자상거래 보안 (암호학과 네트워크보안) Chul Ho Rhee
2 : 대칭암호화 소제목 : 기본적인 대칭암호화.
목 차 PGP S/MIME. 전자우편 보안 Security 목 차 PGP S/MIME.
전자상거래 보안 (암호학과 네트워크보안) Chul Ho Rhee
발표자 : 노수현 조원 : 장종훈,유창열,김범용 전인철,김세원
정보보안.
전자상거래보안 전자우편보안 ( Security) 중부대학교 정보보호학과 이병천 교수
전자서명의 형태 수기서명 디지털서명. 전자서명의 형태 수기서명 디지털서명 전자서명의 필요성.
쿰란 쿰란 와디 항공촬영 .
2. CONCEPTS 컴퓨터 네트워크 실험실 석사 1학기 강 동 호.
제 5장 공개키 암호.
비대칭 암호화 알고리즘 공개키 암호화 알고리즘 소속 : 한세사이버보안고등학교 조장 : 안도현
자바 암호 프로그래밍 Java Cryptography Programming
Chapter 4 공개키 암호 Knapsack RSA Diffie-Hellman 키 교환 방식
Chapter 3. Public Key Infrastructure
인증 (Authentication) 중부대학교 정보보호학과 이병천 교수 전자상거래보안
성전기공식(안) 식 순 1. 기공미사 2. 기 공 식 3. 축 하 연 천주교 수원교구 퇴촌성당.
Chapter 08. 암호에 대한 이해 : 숨기고자 하는 이들의 싸움
성공적인 입사지원서 작성법 제이비커리어 교육수석 소 은 선.
(c) Byoungcheon Lee, Joongbu Univ.
자료구조 강의소개 정성훈 연락처 : 이메일 : 연구실 : 연219호 연락처 : 이메일 : 홈페이지: 정성훈.
정보보호 개론 Chapter 04 암호화 기술.
자바 암호 프로그래밍 Java Cryptography Programming
암호 시스템 (Crypto system) 신효철
2012년 9월 16일 바벨탑 사건과 셈의 후손들의 족보 ▣말씀:창세기 11:1-32 예 수 복 된 교 회.
Data Compression 데이터 압축:음성, 비디오, 팩시밀리 전송등과 같은 경우에 중요
(c) Byoungcheon Lee, Joongbu Univ.
자바 암호 프로그래밍 Java Cryptography Programming
Presentation transcript:

자바 암호 프로그래밍 Java Cryptography Programming 2017. 3. 중부대학교 정보보호학과 이병천 교수

차례 1. 강의 개요 2. 암호와 정보보호 3. 자바프로그래밍 기초 4. 자바 네트워크 프로그래밍 5. JCA/JCE 암호 프로그래밍 6. 해쉬함수, MAC, 패스워드 기반 키생성 7. 대칭키 암호, 파일 암호화/복호화 8. 공개키 암호 9. 전자서명 10. 인증서와 공개키기반구조(PKI) 11. 암호 알고리즘/프로토콜 구현

9. 전자서명

1. 전자서명이란? 서명의 변천 전자서명이란? 암호기술을 이용하여 전자문서에 대한 서명기능을 구현한 것

전자서명이란? 전자서명

전자서명법 전자서명의 효력을 법적으로 인정

전자서명의 요구조건 위조불가 개인키를 소유한 서명자만이 서명문 생성 가능 변경불가 서명된 문서의 내용 변경 불가 서명자인증 개인키를 소유한 자가 전자서명의 행위자임 재사용불가 A문서의 전자서명을 B문서의 전자서명으로 사용 불가 부인방지 서명자는 전자서명 후에 행위에 대한 부인 불가

전자서명의 활용 사용자 인증 메시지 인증 로그인 등에서 사용자 확인을 위해 사용 로그인 메시지를 사용자의 개인키로 서명하여 전송, 서버에서 사 용자의 공개키로 검증 인터넷뱅킹, 전자정부서비스 로그인 메시지 인증 메시지에 전자서명을 부가하여 사용자의 서명 사실을 증명 수신자는 사용자의 공개키로 서명을 검증 부인방지 기능 제공

전자서명 수기서명과 전자서명의 비교

전자서명 알고리즘 RSA ElGamal DSA Nyberg-Rueppel KCDSA ECDSA GQ Schnorr NIST에서 1991년 미국전자서명 표준으로 제안 Nyberg-Rueppel KCDSA 한국의 전자서명 표준 ECDSA 타원곡선기반 DSA 전자서명 GQ Schnorr

RSA 전자서명 RSA 전자서명은 RSA 공개키 암호화의 반대 연산 전자서명은 해쉬함수와 함께 사용 서명자의 신분 인증? 서명생성(sign) : 개인키 이용 서명검증(verify) : 공개키 이용 전자서명은 해쉬함수와 함께 사용 전자서명은 공개키암호 연산을 사용하므로 속도가 느림. 메시지 전체에 대해 서명연산을 하지 않고 메시지의 해쉬값에 대 해 서명연산을 1회만 수행 계산량과 통신량을 크게 줄일 수 있음 서명자의 신분 인증? 인증기관이 발행한 인증서를 이용하여 서명자의 신분 인증

RSA 전자서명 테스트 https://kjur.github.io/jsrsasign/sample-rsasign.html

DSA (Digital Signature Algorithm) 1991년 NIST에서는 DSS에서 사용할 DSA을 제안. DSS는 전자서명의 표준 이름이고 이 표준안에서 사용되 는 알고리즘이 DSA임. (미국 연방 표준 서명 알고리즘) ‰ 이산대수문제의 어려움을 안정성의 바탕으로 삼음 Y=g^x mod p 에서 Y, g, p을 공개하더라도 x를 계산하기 어렵다 는 가정 ‰

ECDSA 타원곡선 전자서명 알고리즘(Elliptic Curve Digital Signature Algorithm)

2. JCA/JCE에서의 전자서명 java.security.Signature 클래스를 사용 공개키/개인키 생성 방식은 공개키암호와 동일 getInstance( ) 메소드를 호출해서 서명 객체 생성 전자서명 알고리즘은 “<해시 함수>with<서명 알고리즘>” 형태 로 사용 Signature signature = Signature.getInstance(“SHA1withRSA”);

Signature 클래스 Signature 클래스를 이용한 전자서명

Signature 클래스

전자서명을 위한 키생성 DSA (Digital Signature Algorithm) RSA (Rivest Shamir Adleman) EC (Elliptic Curve, 타원곡선 암호)

전자서명 알고리즘 선택 키생성 알고리즘 전자서명 알고리즘 RSA DSA EC

예제: SignatureExample.java // 전자서명 생성 public static byte[] sign(PrivateKey privateKey, byte[] plainData) throws GeneralSecurityException { Signature signature = Signature.getInstance("SHA256withRSA"); signature.initSign(privateKey); signature.update(plainData); byte[] signatureData = signature.sign(); return signatureData; } // 전자서명 검증 public static boolean verify(PublicKey publicKey, byte[] signatureData, byte[] plainData) throws GeneralSecurityException { signature.initVerify(publicKey); return signature.verify(signatureData);

RSA 전자서명 예제: SignatureExample.java 키생성 서명 KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA"); generator.initialize(2048); KeyPair pair = generator.generateKeyPair(); Signature signature = Signature.getInstance("SHA256withRSA"); signature.initSign(privateKey); signature.update(plainData); byte[] signatureData = signature.sign();

DSA 전자서명 예제: SignatureExampleDSA.java 키생성 서명 KeyPairGenerator generator = KeyPairGenerator.getInstance(“DSA"); generator.initialize(2048); KeyPair pair = generator.generateKeyPair(); Signature signature = Signature.getInstance("SHA256withDSA"); signature.initSign(privateKey); signature.update(plainData); byte[] signatureData = signature.sign();

ECDSA 전자서명 (타원곡선기반 전자서명) 예제: SignatureExampleECDSA.java 키생성 서명 KeyPairGenerator generator = KeyPairGenerator.getInstance(“EC"); generator.initialize(256); KeyPair pair = generator.generateKeyPair(); Key size must be at most 571 bits 타원곡선암호는 키길이가 작아도 됨 Signature signature = Signature.getInstance(" SHA256withECDSA"); signature.initSign(privateKey); signature.update(plainData); byte[] signatureData = signature.sign();

난수화된 RSA 전자서명 RSA 전자서명은 같은 메시지에 대해 항상 동일한 서명 값을 출력. RSA/PSS 공격자가 동일한 메시지에 대한 서명임을 인지 가능 RSA/PSS Probabilistic Signature Scheme Salt를 이용한 메시지 패딩 이용

RSA/PSS Bouncy Castle에 RSA/PSS 제공 예제: SignatureExampleRSAPSS.java 서명, 검증 알고리즘에 “SHA256withRSA/PSS” 또는 “SHA256withRSAandMGF1” 지정 메인 클래스에서 BC 프로바이더 추가 같은 키를 사용하더라도 매번 다른 서명값을 출력 Security.addProvider(new BouncyCastleProvider());

전자봉투 (Digital Envelope) 3가지 기능을 한번에 전자서명 : 송신자의 개인키로 전자서명 메시지 암호화 : 난수 세션키로 메시지와 서명값을 암호화 세션키 전달 : 세션키를 수신자의 공개키로 암호화 송신자 수신자

전자봉투 생성 Bob’s Public Key/Private Key Alice’s Public Key Randomly Generated Session Key Encryption Hash Algorithm Hash Signature Signing Encrypted Message SEND Symmetric Key Cryptosystem

전자봉투 확인 Bob’s Public Key Alice’s Public Key/Private Key Signature Decryption Alice’s Public Key/Private Key Signature Hash Algorithm Hash1 Hash2 Verifying Encrypted Session Key Message RECEIVE

예제: Envelope.java 실행 결과