암호학 응용 Applied cryptography 2017. 9. 중부대학교 정보보호학과 이병천 교수
차례 1. 강의 개요 2. Javascript Cryptography 3. Node.js crypto 4. CryptoJS 5. Forge 6. Web Crypto API
1. 강의 개요 1.1 강의 목표 1.2 암호기술 개요 1.3 실습 환경 구축 1.4 웹서버 계정 생성 1.5 Bootstrap 소개
1.1 강의 목표 암호기술에 대한 이해 웹 환경에서의 암호기술 활용 능력 배양 자바스크립트 암호 실무능력 배양 웹 환경의 중요성, 활용성 증가 웹 보안을 위한 암호기술 활용 필요성 자바스크립트 암호 실무능력 배양 웹브라우저 환경에서의 암호기술 활용은 자바스크립트를 이용 서버 환경에서의 자바스크립트 활용 증가 기말 프로젝트 수행을 통한 실무능력 향상
깃허브에서의 인기 프로그래밍 언어 순위 http://smartincome.tistory.com/28
수익 잠재력 상위 10개 언어 페이스케일닷컴(PayScale.com)과 인디드닷컴(Indeed.com)의 연봉 정보를 바탕으로 뽑은 수익 잠재력 상위 10개 언어 http://www.itworld.co.kr/news/103581 1. 자바(Java) - 평균 연봉: 10만 2,000달러 2. 자바스크립트(JavaScript) - 평균 연봉: 9만 5,000달러 3. 파이썬(Python) - 평균 연봉: 10만 달러 4. C++ - 평균 연봉: 10만 달러 5. 루비(Ruby) - 평균 연봉: 10만 달러
1.2 사용할 암호기술 난수 생성 해수함수, 메시지인증코드, 패스워드기반 키생성 대칭키 암호화 (AES) 비대칭키 암호화 (RSA) 전자서명 인증서 …..
암호의 여러가지 방식 해쉬함수 임의의 길이의 정보(비트스트링)를 입력으로 하여 고정된 길이의 출력값인 해쉬코드를 생성해내는 함수 해쉬값은 입력정보에 대한 변조할 수 없는 특징값을 나타내며 통 신 중에 정보의 변조가 있었는지 여부를 확인하는 용도에 사용된 다. 이런 용도로 사용될 수 있기 위해서 해쉬함수는 같은 해쉬값을 가지는 두 개의 입력 메시지를 찾는 것이 계산적으로 불가능해야 한다. 해쉬함수에는 키를 사용하지 않는다. 주어진 정보에 대한 해쉬값 은 누구나 계산할 수 있다.
암호의 여러가지 방식 메시지인증코드 (MAC: Message Authentication Code) 데이터가 변조(수정, 삭제, 삽입 등)되었는지를 여부를 검증할 수 있도록 데이터에 덧붙이는 코드 원래의 데이터로만 생성할 수 있는 값을 데이터에 덧붙여서 확인 하도록 하는 것 송신자와 수신자는 비밀키를 공유하고 있으며 MAC 계산에 비밀 키를 사용한다. 그러므로 송신자와 수신자만이 MAC을 계산하고 검증할 수 있다.
암호의 여러가지 방식 패스워드 기반 키생성 사용자가 입력하는 패스워드를 기반으로 난수처럼 보이는 암호 키를 생성하는 방법 이렇게 생성된 키를 대칭키 암호화에 사용 사용자 등록시 서버는 사용자의 패스워드를 암호화된 키로 바꾸 어 DB에 저장
암호의 여러가지 방식 대칭키 암호 (비밀키 암호) 블록 암호 스트림 암호 암호화와 복호화 알고리즘에 동일한 키가 사용되는 방식의 암호 비밀키는 제3자에게 알려지면 안되므로 송신자와 수신자는 사용 되는 키를 비밀리에 공유하고 안전하게 보관해야 한다. 블록 암호 대칭키 암호의 일종으로 암호화와 복호화시 특정 크기의 블록 단 위로 암호화/복호화 연산을 하는 방식의 암호 각 블록의 암호화와 복호화에는 동일한 키가 사용됨 스트림 암호 블럭의 크기를 1로 하여 블록 마다 각각 다른 키를 사용하여 암 호문을 생성하는 방식 암호화와 복호화시 키스트림 생성기를 이용하여 키스트림을 생 성하며 이것을 평문과 연산하여 암호화하고(송신자) 거꾸로 이것 을 암호문과 연산하여 평문을 얻어낸다(수신자).
암호의 여러가지 방식 비대칭키 암호(공개키 암호) 하나의 쌍이 되는 두 개의 키를 생성하여 하나는 암호화에 사용 하고 다른 하나는 복호화에 사용한다. 암호화에 사용하는 키는 공개할 수 있어서 공개키라고 부르고 복 호화에 사용하는 키는 사용자만이 안전하게 보관해야 하는 키로 개인키(비밀키)라고 부른다. 두 개의 키가 서로 다르므로 비대칭키 암호라고 부르며 하나의 키를 공개하므로 공개키 암호라고도 부른다. 공개키를 공개하더라도 이것으로부터 개인키를 계산해내는 것은 수학적으로 매우 어려운 문제이다. 공개키와 쌍이 되는 개인키는 반드시 존재하므로 이것을 찾아내 는 것이 불가능한 것은 아니다. 찾아내기 어려울 뿐이다.
암호의 여러가지 방식 전자서명 전자문서에 대한 전자적인 방식에 의한 서명으로 서명자만이 생 성할 수 있고 누구나 서명의 유효성을 검증할 수 있다. 전자서명은 공개키 암호 방식의 일종이다. 개인키로 서명을 생성하고 공개키로 서명을 검증한다. 개인키는 해당 서명자만이 가지고 있으므로 다른 사람이 서명을 위조할 수 없으며, 전자서명은 서명자의 정당한 서명으로 인정된 다. 유효한 서명에 대해 서명자는 자신이 서명한 사실을 부인할 수 없다(부인방지 기능).
1.3 실습환경 구축 Atom 웹에디터 설치 Atom : http://atom.io 필수 확장프로그램 설치 Emmet – html 태그의 자동완성 기능 Atom live server – 별도의 서버를 설치하지 않고도 페이지 즉시 확 인
실습환경 구축 Node.js 설치 설치 후 테스트 서버측 자바스크립트 실행환경 https://nodejs.org/en/ C:\>node -v v8.2.1 C:\>npm -v 5.3.0
실습환경 구축 Filezilla 설치 Putty 설치 안전한 패스워드 설정 Secure FTP 프로그램 Secure Telnet 프로그램 안전한 패스워드 설정
1.4 웹서버 계정 생성 Isweb.joongbu.ac.kr 서버에 계정 생성 안전한 패스워드로 변경 및 패스워드 관리 철저 포트번호 할당
1.5 Bootstrap 기술 소개 Bootstrap이란? 트위터 사가 만든 편리하고 효율적인 웹 프레임워크 http://bootstrapk.com/ (한글) http://getbootstrap.com/ https://bootswatch.com/
Bootstrap 기술 소개 부트스트랩 다운로드 http://bootstrapk.com/getting-started/ 에서 zip파일 다운로드 현재 프로젝트 폴더에 압축 풀기
Bootstrap 기술 소개 기본 템플릿을 이용하여 페이지 작성 시작 http://bootstrapk.com/getting-started/ Bootstrap CSS 파일 링크 Bootstrap이 정상 작동하려면 jquery가 반드시 필요 Bootstrap.min.js 포함
Bootstrap 기술 소개 Bootstrap은 전문가가 디자인한 클래스(class)들의 모음 https://bootstrapcreative.com/resources/bootstrap-3-css- classes-index/ 기본 컨테이너 클래스 고정폭 콘테이너 .container 최대폭 콘테이너 .container-fluid
Bootstrap 기술 소개 그리드 시스템 부트스트랩은 기기나 뷰포트 크기가 증가함에 따라 12열이 적절 하게 확대되는 반응형, 모바일 우선 유동 그리드 시스템입니다. 그것은 쉬운 레이아웃을 위해 미리 정해진 클래스들 뿐만 아니라 강력한 더 시멘틱한 레이아웃을 생성하기 위한 믹스인을 포함하 고 있습니다.
Bootstrap 기술 소개
Bootstrap 기술 소개
Bootstrap 기술 소개 Typography
Bootstrap 기술 소개 테이블
Bootstrap 기술 소개 폼 클래스
Bootstrap 기술 소개 버튼
Bootstrap 기술 소개 배경
Bootstrap 기술 소개 내비게이션바(navbar)
Bootstrap 기술 소개
Bootstrap 기술 소개 컴포넌트 페이지를 참조하여 필요한 내용 입력 가능 http://bootstrapk.com/components/
Bootstrap 기술 소개 여러 개의 페이지를 갖는 홈페이지 작성하기 예제 메뉴 구성 과목 홈페이지 소스 참조 메뉴 부분까지는 내용이 같고 이후의 세부 내용이 다른 여러 페 이지들을 작성. 메뉴에서 상호 링크 연결 메뉴 선택시의 active 클래스 적용 예제 메뉴 구성 홈 (home) – 홈페이지에 대한 간단한 소개, 그림 등 소개 (intro) – 나에 대한 소개, 취미, 시간표 등 과제물 (homework) – 과제물 업로드, 관련 기술 스크랩 등 링크 (link) – 학교, 학과, 과목 홈페이지, 기타
과제 1 자신의 홈페이지를 작성하여 웹서버에 올리기 홈페이지 콘텐츠, 메뉴 구상 Bootstrap 기술을 적용하여 구현 서버에 업로드하고 서비스 테스트