순서
- 암호화의 이해 (현랑)
- 암호화 시스템 (나)
- 보안 프로토콜 (나온님인데 실수로 이거까지 해버림)
2. 암호화 시스템
목차
- 암호화 알고리즘은 DES, RSA의 구조 이해
- 전자 서명의 필요성과 방법 이해
1. 대칭키 암호화 방식 개요
- 암호화와 복호화에 하나의 키를 사용
- 공통키 또는 대칭키 암호화방식이라고 지칭
- 이떄의 키를 secret key(비밀키) 라고 지칭

- 암호화 복호화를 수행하는 두 사용자가 동일한 키를 가지고 있어야 한다. 어떻게 서로 같은 키를 갖을 수 있을까?
- 1: Pre-shared key(미리 공유한 키)
- 2: 온라인 상에서 구두 또는 메일, 전화로 교환하는 방법: 수동키라고 부른다
- 대표적 알고리즘:
- DES, 3DES
- SEED
- RC2, RC5
- AES(Rijndael)
- 대칭키는 '블록 암호'와 '스트림 암호'로 분류
- 블록 암호
- 특정 블록 크기로 암호화/복호화를 수행하기에 속도는 '블록 암호' > '스트림 암호'
- 블록 간의 연관성 때문에 오류 발생시 전체 데이터에 영향을 미침
- 스트림 암호
- 1970년대 초 유럽에서 연구
- 비밀키를 상호 공유하고, 사용한 비밀키는 재사용되지 않는다.
- 비트열에 오류가 발생해도 어류 확산이 없다는 것이 장점
- 1 비트씩 연산을 하므로 속도 느리다.
- 비밀키는 안전하게 전송해야 한다는 단점.
2. 대칭키 암호 알고리즘들
1) DES 알고리즘(Data Encryption Standard)
- 대칭키 알고리즘
- 동작 방식
- 암호키: 56비트
- 64 비트 단위로 암호화
- 16 단계의 암호화 과정을 수행
- 키는 56비트 -> 2의 56승개의 키가 존재
- 1977년 Diffe-Hellman이 1,000,000대의 병렬 컴퓨터로 1usec에 1번 encryption이 가능하다면 10시간 이내 찾을 수 있다고 제안
- Wiener에 의해 Known Plain-text Attack으로 정확히 분석
- 1977년 DES 키를 찾는 프로젝트에서 96일만에 키를 찾아냄
- 3DES로 키 길이와 라운드 수를 3배로 증가시킴
2) SEED 알고리즘
- 국내에서 개발한 대표적 암호화 알고리즘
- DES와 같은 Feistel 구조
- 128 비트 키
- 128비트 고정 길이 입출력
- Known Attack에 강한 라운드 기능
- 4개의 8x8 S-Box
- XOR과 Modular의 혼합된 연산
- 16라운드 수행
3) AES
- 1998년 만료된 DES를 대체할 알고리즘으로 공모
- 벨기에에서 개발한 'Rijndael'이 선정되어 2000년 10월 표준으로 선정
- 특징
- 가변 블록길이(128, 192, 256) 지원
- 키도 128, 192, 256비트 사용
- 키 길이에 의해 라운도 결정
- Feistel 구조가 아닌 레이어(layer)로 구성. 아래 같은 특징을 가진다.
- 선형 혼합(Linear mixing): 라운드
- 비선형(Non-linear): S-Box
- 키 추가(key addition): 라운드 키의 XOR
4) 대칭키 알고리즘 비교

3. 비대칭키 암호 개요
- 1976년 Diffie와 Hellman에 의해 키 분배 방식 알고리즘 발표된 후 많은 알고리즘이 제안됨
- 두 키가 서로 다르므로 '비대칭' 이라고 부르며, public key, private key로 불림.
- private key보관에 따라 안전도가 좌우됨
- 통신 상대의 확인에 디지털 서명사용이 가능.
- 키 관리에 뛰어남
- 상대적으로 암호화 속도가 느려 직접 데이터를 암호화하는데는 사용되지 않음
4. 비대칭키 암호 알고리즘
1) RSA 알고리즘(Rivest, Shamir, Adelman)
- 1978년 MIT의 Rivest, Shamir, Adelman에 의해 제안됨
- 공개키: 원문서를 암호화하는 용도로 사용됨(모든 사람이 암호화 과정 수행)
- 비공개키: 암호문을 해독하는 용도로 사용(특정인만 해독 과정 수행)
- 암호화 과정을 좀 더 살펴보자면,
- 소인수 분해의 복잡성을 이용하여 구현됐다.
- 가입자는 두 개의 소수 p, q를 선택하여 n = pq를 계산한다.
- p, q를 알고 있는 사용자는 n을 계산하기 쉽지만, n만 가지고는 p, q를 유추하기 어렵다.

- RSA 암호의 안전성(그렇구나 하고 넘어가면 될 것 같다...)
- 소수 p와 n에 달려있다.
- 공개키 e, n으로 비밀키 d를 찾을 수 있으면 쉽게 해독이 가능한다.
- n으로부터 p,q를 찾을 수 있으면, n의 소인수 분해가 가능하고, 오일러 함수를 찾게 되어 e로부터 d를 찾아낼 수 있다.
- 부가 조건
- p와 q는 거의 같은 크기의 소수
- p -1 과 q - 1은 큰 소수를 인수로 가져야 한다.
- p - 1 과 q - 1 의 최대공약수는 작아야 한다.
- 현재까지 p, q의 크기가 100자리이고, n이 200자리인 합성수의 경우 n의 소인수분해가 거의 불가능한 것으로 알려졌다.
- e, d의 크기가 너무 작아도 안되지만, 지나치게 크면 연산 양이 많아져서 속도가 저하된다.
- 상용장비의 경우 512비트의 n, 약 155자리 수
- 연산 부하 증가로 상용화에 어려움이 있다.
- 그 외에 ELGamal, ECC 알고리즘이 있다고 합니다.

5. 대칭키 vs 비대칭
6. 전자 서명
1) 전자 서명의 조건
- 위조 불가
- 서명자 인증
- 재사용 불가
- 변경 불가
- 부인 불가
2) 전자서명 알고리즘
- 공개키 암호방식을 이용한 서명 방식
- 서명자가 비밀키로 서명을 생성하고, 검증자가 공개키로 확인하는 시스템
- 직접 서명 방식과 중계 서명 방식이 있다.
- 직접 서명: 송신자와 수신자 간에 직접 서명 및 검증
- 중계 서명:
- 중재자를 통해 확인
- 통신 전에 정보 공유가 필요 없다.
- 외부 공격에 강하다
- 시간 확인이 가능하다.
3) 전자서명의 원리
- '해쉬함수'와 '비대칭키 알고리즘' 결합하여 사용

위 사진 설명
-서명하려는 문서 m이 있고, 이것의 해쉬값 구한다음에 private key a를 통해 암호화하고 이결과를 같이 보낸다.
- 메세지 m과 m에 대한 해쉬값을 private key a로 암호화한 값도 같이 보냄.
- 받은 측에선 검증을 위해 public key a로 복호화한다. (보통은 public key로 암호화하 private key로고 복호화 하는 그 반대도 가능하다.)
- 받은 측에선 직접 m의 hash값을 구해서 지금 받은 값과 비교해본다(일치해야 정상)
- 위 과정을 통해 알수있는 점
- 받은 측이 public키로 복호화가 가능했다는 것은 보낸 측이 private키로 암호화 했다는 것의 증명이다.
- 실려온 hash값과 직접 해본 hash값이 서로 같다는 것은 문서가 변하지 않았다는 뜻이다.
7. 해쉬함수


위에서 보면 MD5가 많이 사용된다고 했는데, 이건 옛날 책이라 그렇고 실제론 sha가 많이 사용됨.
3. 보안 프로토콜
목차
- 네트워크 보안의 개념과 관련 이슈 이해
- 라우터와 프록시로 구현한 방화벽의 원리 이해
1. 전형적인 공격유형
1. 방해: client의 요청이 server로 도달하지 못함.

2, 3, 4. 가로채기, 변조, 위조.

가로채기: 메세지가 잘 도착하긴 하지만, 제 3자가 메세지를 엿봄.
변조: 송신자가 보낸 메세지의 내용을 바꿔버림.
위조: 보낸 적도 없는데 위조 데이터를 만들어서 보냄.
2. 암호화
data link 계층에서 하는 암호화와 application 계층에서 하는 암화화에 대해서 알아봅시다.
1) data link layer 암호화
- 전송 선로상의 감청으로부터 보호
- 단점: 라우터 등 호스트 내부에서는 보호가 안됨
2) application layer 암호화
아래 사진 왼쪽은 데이터 링크 계층 암호화, 오른쪽은 응용 계층 암호화

3. VPN(Virtual Private Network)
설명
- 공중망을 사설망처럼 이용할 수 있도록 사이트 양단 간 암호화통신을 지원하는 장치
- 원격사용자가 공중망 및 인터넷을 통해 내부망의 시스템 사용 시, 공중망 구간에서의 도청으로 인한 정보유출을 방지하기 위해 사용자와 내부망간 암호화 통신을 지원
가상 사설망의 장점
- 저비용으로 광범위한 사설 네트워크의 구성이 가능
- 기업 네트워크 관리 및 운영비용이 절감 됨
- 재택근무자 등 개별 사용자 지원 및 무선 이동 환경의 사용자 지원
- 기업 네트워크의 유동성 지원이 가능.
가망 사설망의 단점
- 인터넷 상황에 따라 네트워크 성능이 종속적
- 전용선보다는 신뢰성 및 보안성 수준이 낮음
- 서비스에 문제가 발생하면 책임소재가 불분명 함.
가상 사설망의 기능
관련 프로토콜
- L2TP(Layer 2 Tunneling Protocol)
- IPSec(IP Security Protocol)

4. 트래픽 제어
- 특정 호스트의 트래픽량 자체가 중요한 정보가 될 수 있다
- 예를 들어 특정 군부대의 통화량이 많으면 모종의 군사 작전의 가능성
- 무의마한 가공 테이터를 추가적으로 발생시켜 통계 자료에 혼란을 줄 필요가 있음
- 자료의 통신량, 송신자, 수신자 랜덤하게 생성
5. 방화벽(Firewall)
- 개방적인 공중 인터넷망과 제한된 그룹의 사설망 사이에서 보안 기능 제공
- 패킷 필터링
- 패킷의 헤더 또는 내용을 검색하여 차단 여부 결정
- 일반적으로 라우터에서 제공
- 트래픽 관찰을 통한 의심스러운 사용자 감시
6. 라우터를 이용한 방화벽 구현
- 외부망과의 중개 기능을 수행하므로 간단하면서도 매우 효과적
- IP 주소 기반
- 위장 IP 주소의 차단
- 인터넷으로부터 211.223.201.x를 발신자로 하는 패킷은 입력될 수 없음
- 스팸 메일을 발송하는 외부 호스트 차단
- 내부 사용자가 유해 사이트로 접속하는 것 차단
- 포트 번호 기반: 특정 서비스 이용을 차단
- Web, FTP 등 서비스별로 허용/차단 설정

7. 프록시를 이용한 방화벽 구현
- 라우터 기반
- 네트워크 계층과 전송 계층의 헤더에 기초하여 방화벽 기능 수행
- 프록시 기반
- 응용 환경에서 적절하게 처리할 수 있는 정보만 수신하도록 가상의 응용 프로그램을 시뮬레이션하는 방화벽
- 내부에서는 외부 연결로 보이고, 외부 네트워크에서는 내부의 응용 연결로 보임
