2 1 2 Javascript Cryptography Crypto JS Forge

  • Slides: 28
Download presentation

차례 2 1. 암호와 정보보호 2. Javascript Cryptography � � � Crypto. JS Forge

차례 2 1. 암호와 정보보호 2. Javascript Cryptography � � � Crypto. JS Forge Web Cryptography API

암호 관련 용어 설명 6 도청자(eavesdropper) 공격자(attacker) 암호설계(cryptography) 암호해독(cryptanalysis) 수동공격(passive attack) 능동공격(active attack)

암호 관련 용어 설명 6 도청자(eavesdropper) 공격자(attacker) 암호설계(cryptography) 암호해독(cryptanalysis) 수동공격(passive attack) 능동공격(active attack)

2. Javascript Cryptography 16 여러 가지 라이브러리들이 존재 � Crypto. JS � � 구글에서

2. Javascript Cryptography 16 여러 가지 라이브러리들이 존재 � Crypto. JS � � 구글에서 개발 https: //github. com/sytelus/Crypto. JS Forge � � http: //cryptojs. altervista. org/test/simulate-threadingspeed_test. html 인증서 기반 TLS 기능을 제공 http: //digitalbazaar. github. io/forge/ Web Cryptography API � � � 웹브라우저에 기본 내장된 웹 암호 표준 웹 기술 표준화 기구인 W 3 C에서 표준화 https: //www. w 3. org/TR/Web. Crypto. API/ 참조

해쉬함수 예제 19 <script src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20415%20289%22%3E%3C/svg%3E' data-src="Crypto. JS/rollups/md 5. js"></script> <script src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20415%20289%22%3E%3C/svg%3E' data-src="Crypto. JS/rollups/sha 1. js"></script> <script

해쉬함수 예제 19 <script src="Crypto. JS/rollups/md 5. js"></script> <script src="Crypto. JS/rollups/sha 1. js"></script> <script src="Crypto. JS/rollups/sha 256. js"></script> <script src="Crypto. JS/rollups/sha 512. js"></script> <script src="Crypto. JS/rollups/sha 3. js"></script> <script src="Crypto. JS/ripemd 160. js"></script> <script> function hash() { var msg = document. get. Element. By. Id("message"). value; var rst = document. get. Element. By. Id("result"); var select = document. get. Element. By. Id("item"); var option_value = select. options[selected. Index]. value; if (option_value==1) // MD 5 rst. value = Crypto. JS. MD 5(msg); else if (option_value==2) // SHA 1 rst. value = Crypto. JS. SHA 1(msg); else if (option_value==3) // SHA 256 rst. value = Crypto. JS. SHA 256(msg); else if (option_value==4) // SHA 512 rst. value = Crypto. JS. SHA 512(msg); else if (option_value==5) // SHA 3 rst. value = Crypto. JS. SHA 3(msg); else if (option_value==6) // RIPEMD 160 rst. value = Crypto. JS. RIPEMD 160(msg); } </script> Crypto. JS. SHA 1(msg); http: //cris. joongbu. ac. kr/course/2017 -1/wp/crypto/hash. html

메시지인증코드 예제 21 <script src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20415%20289%22%3E%3C/svg%3E' data-src="Crypto. JS/rollups/hmac-md 5. js"></script> <script src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20415%20289%22%3E%3C/svg%3E' data-src="Crypto. JS/rollups/hmac-sha 1. js"></script> <script

메시지인증코드 예제 21 <script src="Crypto. JS/rollups/hmac-md 5. js"></script> <script src="Crypto. JS/rollups/hmac-sha 1. js"></script> <script src="Crypto. JS/rollups/hmac-sha 256. js"></script> <script src="Crypto. JS/rollups/hmac-sha 512. js"></script> <script> function hmac() { var msg = document. get. Element. By. Id("message"). value; var key = document. get. Element. By. Id("key"). value; var rst = document. get. Element. By. Id("result"); var select = document. get. Element. By. Id("item"); var option_value = select. options[selected. Index]. value; if (option_value==1) // Hmac. MD 5 rst. value = Crypto. JS. Hmac. MD 5(msg, key); else if (option_value==2) // Hmac. SHA 1 rst. value = Crypto. JS. Hmac. SHA 1(msg, key); else if (option_value==3) // Hmac. SHA 256 rst. value = Crypto. JS. Hmac. SHA 256(msg, key); else if (option_value==4) // Hmac. SHA 512 rst. value = Crypto. JS. Hmac. SHA 512(msg, key); } </script> Crypto. JS. Hmac. SHA 1(msg, key); http: //cris. joongbu. ac. kr/course/2017 -1/wp/crypto/hmac. html

패스워드기반 키생성 예제 23 <script src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20415%20289%22%3E%3C/svg%3E' data-src="Crypto. JS/rollups/pbkdf 2. js"></script> <script> function random. Salt() {

패스워드기반 키생성 예제 23 <script src="Crypto. JS/rollups/pbkdf 2. js"></script> <script> function random. Salt() { var s = document. get. Element. By. Id("salt"); s. value = Crypto. JS. lib. Word. Array. random(128/8); } function PBKDF 2() { var s = document. get. Element. By. Id("salt"). value; var l = document. get. Element. By. Id("iteration"). value; var p = document. get. Element. By. Id("pass"). value; var r = document. get. Element. By. Id("result"); r. value = Crypto. JS. PBKDF 2(p, s, { key. Size: 512/32, iterations: l }); } </script> http: //cris. joongbu. ac. kr/course/2017 -1/wp/crypto/pbkdf 2. html

대칭키 암호 예제 25 암호화 Crypto. JS. AES. encrypt(msg, key); 복호화 Crypto. JS. AES.

대칭키 암호 예제 25 암호화 Crypto. JS. AES. encrypt(msg, key); 복호화 Crypto. JS. AES. decrypt(encrypted, key) http: //cris. joongbu. ac. kr/course/2017 -1/wp/crypto/symmetric. html

Forge 26 Forge � � 인증서 기반 TLS 기능을 제공 http: //digitalbazaar. github. io/forge/

Forge 26 Forge � � 인증서 기반 TLS 기능을 제공 http: //digitalbazaar. github. io/forge/ 예제 http: //cris. joongbu. ac. kr/course/2017 -1/wp/crypto/forge/index. html

Forge 27

Forge 27

Web Cryptography API 28 Web Cryptography API � � 웹브라우저에 기본 내장된 웹 암호

Web Cryptography API 28 Web Cryptography API � � 웹브라우저에 기본 내장된 웹 암호 표준 웹 기술 표준화 기구인 W 3 C에서 표준화 https: //www. w 3. org/TR/Web. Crypto. API/ 참조 https 환경에서만 사용 브라우저에 기본 내장된 window. crypto 객체 이용 // SHA-1 - digest window. crypto. subtle. digest( { name: "SHA-1", }, u 8 a // new Uint 8 Array([1, 2, 3, 4]) //The data you want to hash as an Array. Buffer ). then(function(hash){ //returns the hash as an Array. Buffer result_hash += "plaintext: "+str+" "; var dv = buf 2 hex(hash); console. log(new Uint 8 Array(hash)); result_hash += "SHA-1: "+dv+" "; }). catch(function(err){ console. error(err); });