암호학 응용 Applied cryptography

Slides:



Advertisements
Similar presentations
7 장. 원격지에서 리눅스서버를 관리하자. 텔넷서버를 설치 / 운영한다. SSH 서버를 운영한다. VNC 서버를 설치 / 운영한다.
Advertisements

HTTPS Packet Capture Tutorial
1 개요.
2016 유성환 Hybrid MOBILE.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
웹 어플리케이션 보안 2016년 2학기 12. Cryptography.
IoT(사물인터넷) 보안 2016년 2학기 4. 라즈베리파이 카메라.
jQuery Mobile을 이해하기 전에 jQuery가 무엇인지 알아야 한다.
Ajax 인공지능 연구실.
Ⅰ. 클라이언트 스크립트 Ⅱ. 서버 스크립트 그렇다면 프로그래밍 언어를 수행하는 컴퓨터의 개념적인 구조를 살펴 본다면, 프로그래밍 언어가 무엇인지 이해하는데 도움이 될 것입니다. 현재 컴퓨터 구조의 모태가 되고 있는 폰 노이만 구조는 그림에서 보는 것과 같이, 명령어와.
암호학 응용 Applied cryptography
C 프로그래밍 I.
IoT(사물인터넷) 보안 2016년 2학기 3. 라즈베리파이와 node.js.
ERP 전용 브라우저 설치 매뉴얼 (Windows 7)
PHP입문 Izayoi 김조흔.
웹 서버 동작 HTTP 클라이언트가 서버와 대화하는 방법과 데이터를 서버에서 클라이언트로 전송 하는 방법을 정의한 프로토콜
나민영 서경대학교 컴퓨터공학과 CGVR Lab 같이만들어보자 5주차 OpenCV 설정 및 기초.
08장 암호의 이해: 숨기고자 하는 이들의 싸움.
Chapter05 오디오와 비디오 HTML5 Programming.
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
암호학 응용 Applied cryptography
JSON-RPC 서버 만들기 11장 Do it! Node.js 프로그래밍 이지스퍼블리싱 제공 강의 교안 2017/03
Java 기초 (Java JDK 설치 및 환경설정)
Youn-Hee Han HTML5 - GeoLocation Youn-Hee Han
25강. Security-I 보안 관련 프로젝트 생성 보안 관련 라이브러리 추가 보안 관련 설정 파일 만들기
강좌 소개 웹프로그래밍기초 숙명여자대학교 임순범.
Javascript Basic Sample Programs
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
22강. 파일 업로드 - 파일 업로드 라이브러리 설치 - 파일 업로드 프로그래밍 Lecturer Kim Myoung-Ho
뷰 템플릿 적용하기 8장 Do it! Node.js 프로그래밍 이지스퍼블리싱 제공 강의 교안 2017/03
제 01 장 인터넷 프로그래밍 개요 학기 인터넷비즈니스과 강 환수 교수.
01. 터미널 서비스의 개요 터미널 서비스는 네트워크의 워크스테이션을 서버 컴퓨터의 터미널로 사용할 수 있도록 해 주는 서비스
웹 어플리케이션 보안 2016년 2학기 3. Mongo db.
프로그래밍 원리 Chapter 05 자바스크립트 기초 신한대학교 IT융합공학부 박 호 균.
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
웹 어플리케이션 보안 2016년 2학기 10. Workflow tools.
인터넷응용프로그래밍 JavaScript(Intro).
1 개요.
Chapter03 캔버스(1) HTML5 Programming.
반응형 웹 프로젝트
웹어플리케이션보안 암호프로그래밍, crypto-js
자바스크립트 암호 프로그래밍 Javascript Cryptography Programming
2018년 11월 05일 박성진 Web & Internet [08] 레이아웃 P1 2018년 11월 05일 박성진
MEAN Stack Front to Back (MEANAuthApp)
PHP 개요 및 설치 Yang-Sae Moon Department of Computer Science
Chapter13 파일 접근 & 오프라인 접근 HTML5 Programming.
ERP 전용 브라우저 설치 매뉴얼 (Windows 7)
MEAN Stack Front to Back (MEANAuthApp)
뇌를 자극하는 Windows Server 장. 원격 접속 서버.
IoT(사물인터넷) 보안 2016년 2학기 3. 라즈베리파이와 node.js.
Nessus 4 설치 정보보호응용 조용준.
프로그래밍 원리 Chapter 05 자바스크립트 기초 신한대학교 IT융합공학부 박 호 균.
노드 간단하게 살펴보기 2장 Do it! Node.js 프로그래밍 이지스퍼블리싱 제공 강의 교안 2017/03
ASP.NET AJAX / AJAX Control Toolkit 응용 2008 컴퓨터공학실험( I )
웹디자인
자바로 만든 채팅 프로그램 임경진 조주경 지도교수님 : 이광세 교수님.
인천대학교 웹과 인터넷 수업 개요 및 내용 소개.
오토베이스9 사용자 라이브러리 오토베이스 교육센터 그래픽 모듈 설정과 화면전환에 대하여 자세히 알아본다. <목차>
PHP 웹 프로그래밍 (PHP Web Programming) 미리 정의된 함수 문양세 강원대학교 IT대학 컴퓨터과학전공.
암호학 응용 Applied cryptography
~27 윤형기 Python 프로그래밍 (보충) ~27 윤형기
2018년 11월 12일 박성진 Web & Internet [09] 레이아웃 P2 2018년 11월 12일 박성진
웹과 모바일 홈페이지의 이해와 제작 HTML태그와 CSS로 꾸미기
9 브라우저 객체 모델.
웹어플리케이션보안 난수화 토큰인증 중부대학교 정보보호학과 이병천 교수.
Node Red 컴퓨터공학과 오동근 1.
트위치 트게더 Twitogether 김준희.
아두이노 프로그래밍 2일차 – Part4 아날로그 키패드 활용하기 강사: 김영준 목원대학교 겸임교수
JAVA 프로그래밍 16장 JNLP.
AJAX? Cho Hyun Min.
Presentation transcript:

암호학 응용 Applied cryptography 2017. 9. 중부대학교 정보보호학과 이병천 교수

차례 1. 강의 개요 2. Javascript Cryptography 3. Node.js crypto 4. Crypto-js 5. Forge 6. Web Crypto API

4. Crypto-js 서버측 프로그래밍 클라이언트측 프로그래밍

자바스크립트 암호 라이브러리 Crypto-js 구글에서 만든 자바스크립트 암호 라이브러리 https://www.npmjs.com/package/crypto-js 설치: > npm install crypto-js

프로젝트 준비 프로젝트 폴더 생성 패키지 설치 (서버측) 패키지 설치 (클라이언트측) > md crypto-js > npm install crypto-js node_modules/crypto-js 에 설치됨 패키지 설치 (클라이언트측) > npm install –g bower > bower install crypto-js bower_components/crypto-js 에 설치됨 npm (Node.js package manager) bower (package manager for frontend)

서버측 프로그래밍

Hash var CryptoJS = require("crypto-js"); var plaintext = 'message to hash'; console.log('Plaintext: '+plaintext); console.log('MD5: '+CryptoJS.MD5(plaintext)); console.log('SHA1: '+CryptoJS.SHA1(plaintext)); console.log('SHA256: '+CryptoJS.SHA256(plaintext)); console.log('SHA384: '+CryptoJS.SHA384(plaintext)); console.log('SHA512: '+CryptoJS.SHA512(plaintext)); console.log('SHA3(224): '+CryptoJS.SHA3(plaintext, { outputLength: 224 })); console.log('SHA3(256): '+CryptoJS.SHA3(plaintext, { outputLength: 256 })); console.log('SHA3(384): '+CryptoJS.SHA3(plaintext, { outputLength: 384 })); console.log('SHA3(512): '+CryptoJS.SHA3(plaintext, { outputLength: 512 })); console.log(); var hash = CryptoJS.SHA256(plaintext); console.log('SHA256-Hex: '+hash); console.log('SHA256-Base64: '+hash.toString(CryptoJS.enc.Base64)); var sha256 = CryptoJS.algo.SHA256.create(); sha256.update("Message Part 1"); sha256.update("Message Part 2"); sha256.update("Message Part 3"); var hash = sha256.finalize(); console.log('SHA256-ProgressiveHash: '+hash);

Hmac var CryptoJS = require("crypto-js"); var plaintext = 'message to hash'; var key = 'super secret key'; console.log('Plaintext: '+plaintext); console.log('Key: '+key); console.log('HmacMD5: '+CryptoJS.HmacMD5(plaintext, key)); console.log('HmacSHA1: '+CryptoJS.HmacSHA1(plaintext, key)); console.log('HmacSHA256: '+CryptoJS.HmacSHA256(plaintext, key)); console.log('HmacSHA384: '+CryptoJS.HmacSHA384(plaintext, key)); console.log('HmacSHA512: '+CryptoJS.HmacSHA512(plaintext, key)); console.log(); var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, "Secret Passphrase"); hmac.update("Message Part 1"); hmac.update("Message Part 2"); hmac.update("Message Part 3"); var hash = hmac.finalize(); console.log('HmacSHA256-progressive: '+hash);

Pbkdf2 var CryptoJS = require("crypto-js"); var password = 'Secret Passphrase'; console.log('Password: '+password); var salt = CryptoJS.lib.WordArray.random(128/8); var key128Bits = CryptoJS.PBKDF2(password, salt, { keySize: 128/32 }); var key256Bits = CryptoJS.PBKDF2(password, salt, { keySize: 256/32 }); var key512Bits = CryptoJS.PBKDF2(password, salt, { keySize: 512/32 }); var key128Bits1000Iterations = CryptoJS.PBKDF2(password, salt, { keySize: 128/32, iterations: 1000 }); var key256Bits1000Iterations = CryptoJS.PBKDF2(password, salt, { keySize: 256/32, iterations: 1000 }); var key512Bits1000Iterations = CryptoJS.PBKDF2(password, salt, { keySize: 512/32, iterations: 1000 }); console.log('key(128bits): '+key128Bits); console.log('key(256bits): '+key256Bits); console.log('key(512bits): '+key512Bits); console.log('key(128bits,1000it): '+key128Bits1000Iterations); console.log('key(256bits,1000it): '+key256Bits1000Iterations); console.log('key(512bits,1000it): '+key512Bits1000Iterations); console.log();

대칭키 암호 var CryptoJS = require("crypto-js"); var plaintext = 'message to encrypt'; var key = 'supersecretkey'; console.log('Plaintext: '+plaintext); console.log('Key: '+key); // AES var ciphertext = CryptoJS.AES.encrypt(plaintext, key); console.log('Ciphertext: '+ciphertext); var bytes = CryptoJS.AES.decrypt(ciphertext.toString(), key); var decrypted = bytes.toString(CryptoJS.enc.Utf8); console.log('Decrypted: '+decrypted); // DES var ciphertext = CryptoJS.DES.encrypt(plaintext, key); var bytes = CryptoJS.DES.decrypt(ciphertext.toString(), key); // TripleDES var ciphertext = CryptoJS.TripleDES.encrypt(plaintext, key); var bytes = CryptoJS.TripleDES.decrypt(ciphertext.toString(), key);

클라이언트측 프로그래밍

방법론 Html 문서 작성 자바스크립트 Crypto-js 를 링크하여 포함 <script src="bower_components/crypto-js/crypto- js.js"></script> <script></script> 태그 내부에 js 프로그램 작성 또는 별도의 js 파일을 만들고 script 태그로 링크 출력 명령 변경 브라우저 화면에 출력하려면 console.log() 함수를 대신하여 document.write() 함수 이용 console.log 함수의 출력결과는 브라우저 콘솔에서 볼 수 있음 (F12/console) 브라우저로 접속하여 동작 확인

Hash 똑같은 crypto-js 함수를 사용 가능 서버측 프로그래밍 클라이언트측 프로그래밍 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Hash Test with crypto-js</title> <script src="bower_components/crypto-js/crypto-js.js"></script> <script type="text/javascript"> var plaintext = 'message to hash'; document.write('Plaintext: '+plaintext+'<br>'); document.write('MD5: '+CryptoJS.MD5(plaintext)+'<br>'); document.write('SHA1: '+CryptoJS.SHA1(plaintext)+'<br>'); document.write('SHA256: '+CryptoJS.SHA256(plaintext)+'<br>'); document.write('SHA384: '+CryptoJS.SHA384(plaintext)+'<br>'); document.write('SHA512: '+CryptoJS.SHA512(plaintext)+'<br>'); document.write('SHA3(224): '+CryptoJS.SHA3(plaintext, { outputLength: 224 })+'<br>'); document.write('SHA3(256): '+CryptoJS.SHA3(plaintext, { outputLength: 256 })+'<br>'); document.write('SHA3(384): '+CryptoJS.SHA3(plaintext, { outputLength: 384 })+'<br>'); document.write('SHA3(512): '+CryptoJS.SHA3(plaintext, { outputLength: 512 })+'<br>'); document.write('<br>'); var hash = CryptoJS.SHA256(plaintext); document.write('SHA256-Hex: '+hash+'<br>'); document.write('SHA256-Base64: '+hash.toString(CryptoJS.enc.Base64)+'<br>'); var sha256 = CryptoJS.algo.SHA256.create(); sha256.update("Message Part 1"); sha256.update("Message Part 2"); sha256.update("Message Part 3"); var hash = sha256.finalize(); document.write('SHA256-ProgressiveHash: '+hash+'<br>'); </script> </head> <body> </body> </html> 똑같은 crypto-js 함수를 사용 가능 서버측 프로그래밍 클라이언트측 프로그래밍

과제물 2 Crypto-js의 서버측 프로그램들을 클라이언트에서 동작 하도록 웹페이지를 만들고 자신의 홈페이지에 링크하시 오.