20021582 이 종한
20041729 한 민희
• IPSEC (Internet Protocol Security )
– IPSec 은 Internet Protocol Security 의 약어 .
– Network 통신 중 Network layer 에서의 보안을 위한 표준 . – 네트워크상의 IP layer 에서의 보안에 중점 .
– PGP 와 같은 application 에 대해서는 고려하지 않는다 .
IPSEC
(
Internet Protocol Security)
SSL(Secure Socket Layer)
• SSL(Secure Socket Layer) – 인증서를 이용한 보안 방법 – 웹 표준암호화 통신 .
– 웹 서버와 웹 브라우저 사이에 정보를 암호화 해주는 방식 . – SSL 통신은 http 가 아닌 https 라는 통신채널을 사용 . – 모든 웹 서버와 웹 브라우저가 SSL 을 지원 .
IPSEC / SSL 계층표
SSL(Secure Socket Layer)
IPSEC (Internet Protocol Security )
IPSEC / SSL 공통점
• IPSEC 과 SSL 은 계층만 다를 뿐 같은 방식의 암호화 알고리즘을 사용 .
• 대표적으로 비대칭 알고리즘인 RSA 를 사용 .
• 비대칭 알고리즘의 구성도 .
암호화 복호화
원본 메시지
원본 메시지 암호화된
메시지
송신자 수신자
공개키
(public key) 비밀키
(private key)
SSL 로 정보를 보안했을 경우 .
Server Client
데이터가 누군가에게 노출 되었을 경우 데이터 값이 공개된다 .
기존 Server 와 Client 의 전송 .
SSL 로 보호받는 Server 와 Client 의 전송 .
SSL
Server
누군가에게 데이터가 노출 되어있어도 비밀키 (private key) 가 없으면 어떤 값인지 알 수 없다 .
SSL
Client
SSL 사용사이트
전국고속버스운송사업조합
http://www.kobus.co.kr
SSL 보안사이트 제공 회사 .
http://seal.versign.co m
사용자 컴퓨터로 저장된
보안된 인증서 (key)
공인인증서 발급 과정 .
< 공인인증서 발급 과정 >
< 공인인증서 종류 ( 일반 , 범용 )
>
공인인증서 발급 과정 .
< 보안카드 번호 및 개인정보 , 정보입력 >
RSA 알고리즘 – (1)
• 1977 년 리베스트 (R. Rivest), 샤미르 (A. Shamir), 아델먼 (L. Adelman) 이 개발 .
• 가장 많이 사용되는 비대칭 암호화 알고리즘 .
• 매우 큰 두 소수는 소인수분해가 매우 어렵다는 것에 기반 .
• 데이터를 암호화 하고 복호화 하는데 한 쌍의 키를 이용 .
• 소수인
p와
q를 정함 . (1 과 자신으로만 나눌 수 있는 수 )
• n 은 p
와
q의 곱 .
( 즉 : n = PQ)• Ф( 파이 )
는
p와
q에 각각 1 을 뺀수를 곱한 것 . ( 즉
: Ф = (p-1)(q-1) )• 이 조건에 만족하는
ε 를 찾는다. 1 < ε < Ф ::: gcd(ε, Ф) = 1
• 다음조건에 맞는 d 를 찾는다 .
1 < d < Ф ::: εd ≡ 1(mod Ф)
• 이 계산식으로 구해진 수들
n , ε , dRSA 알고리즘 – (2)
• Public key (n , ε ) 생성됨 .
• Private key (n, d ) 생성됨 .
• Public key 는 공개 , private key 는 비공개 .
• 앞서 나온 p
와q
와Ф
도 비공개 .RSA 알고리즘 – (3)
RSA 알고리즘 사용예 -(1)
• p = 11 , q = 3 이라고 가정 .
• n = 33 :: (n=pq)
• Φ=(11 - 1)(3 - 1 ) = 20
• 위의 구해진 수로
ε 를 구한다 .• gcd(ε, Φ) = 1 과 1 < ε < Φ 두 조건을 만족해야 함 .
• gcd(ε, (p-1)(q-1) ) = 1
• gcd(ε, (p-1))=1 과 gcd(ε, (q-1))=1 이면 ε 가 됨 .
• Φ=(p-1)(q-1) 이므로
gcd(ε, Φ) 는 gcd(ε, (p-1)(q-1)) 과 같다 .
• 즉
gcd(ε, (p-1))=1 과 gcd(ε, (q-1))=1 일때 gcd(ε, Φ) 는 1 일수 밖에 없다 .RSA 알고리즘 사용예 -(2)
ε 를 구하는 예제
• 1 < ε < 20 중 가장 작은 소수 순으로 대입
• gcd(2, 10)=2
• gcd(2, 2)=2 <- 1 이 아니므로 X.
• gcd(3, 10)=1
• gcd(3, 2)=1 <- ε 값이 1 을 만족함으로 O.
d 를 구하는 예제
• εd ≡ 1 (mod Φ)
->εd 를 Φ 로 나누면 나머지가 1 식으로 표현
(εd-1) mod Φ ≡ 0 (3d-1) mod 20 ≡ 0
RSA 알고리즘 사용예 -(3)
• 위의 식으로 1 < d < 20 인 d 값을 구한다 .
• ceil(20/3) = d = 7.
위 식으로 구해진 값들 .
• p 는 11 , q 는 3 , n 은 33
• Φ 는 20 , ε 는 3 , d 는 7
• public key 는 (33, 3)
• private key 는 (33, 7)
RSA 알고리즘 사용예 -(4)
• Public key 과 Private key 를 이용 .
• 암호화 / 복호화 를 구현 .
• 암호화할 m 을 5 라고 가정 .
• public key 키 (33, 3) 을 이용해서 암호화 .
• 암호화된 숫자는 26 :: (124%33=26)
RSA 알고리즘 사용예 -(5)
C = m^ε mod n
C = 5^3 mod 33 = 125 mod 33 = 26
• 이제 private key (33, 7) 를 이용해서 복호화 .
• m 이 5 로 복호화 됨 .
• 문자등도 가능 하도록 아스키 코드 등등을 이용
• 죄다 숫자로 변형해서 암 / 복호화 하면된다 .
• 중간에 C 값과 public key 값을 알게되더라도
d 값을 모르면 복호화가 불가능 함 .
m = C^d mod n
m = 26^7 mod 33 = 8031810176 % 33 = 5
RSA 알고리즘 사용예 -(6)
• 자바에서는 keytool 명령어를 이용하여 간단히 구현가능 .
keytool 은 키와 인증서를 관리하는 유틸리티 .JAVA 를 이용한 SSL 구현
Keytool
사용법 Keytool
-help
• 명령어 실행방법
keytool –genkey –keystore 파일명 – keyalg RSA
- genkey 키페어를 생성하는 옵션 . - keystore 파일을 지정하는 옵션 .
- keyalg 암호 알고리즘을 지정하는 옵션 .
JAVA 를 이용한 SSL 구현
JAVA 를 이용한 SSL 구현
Keytool 유틸리티를 이용한 인증서 생성방법 .
JAVA 를 이용한 SSL 구현
생성된 Key 를 이용하여 인증서 생성 .
완성된 인증서 .
JAVA 를 이용한 SSL 구현
EchoServer.java :
일반 적인 echo 서버로서 암호화는 되어있지 않다 . echo 클라이언트 에게 넘겨받은 데이터를 되돌려 준다 .
JAVA 를 이용한 SSL 구현
EchoClient.java :
echo 서버와 통신하는데 echo 서버에 데이터를 날려주고 그 데이터를
서버로부터 다시 받는다 .
JAVA 를 이용한 SSL 구현
ECHOSERVER 실행 .
EHCOCLIENT 실행 . 데이터전송 .
JAVA 를 이용한 SSL 구현
SSL 를 적용한 ECHOSERVER 와 ECHOCLIENT 를 만들어
보자 . 기존 EchoServer
SSLEchoServer
JAVA 를 이용한 SSL 구현
SSL 를 적용한 ECHOSERVER 와 ECHOCLIENT 를 만들어 보자 .
기존 echoclient
SSLechoclient
JAVA 를 이용한 SSL 구현
SSLECHOSERVER 실행 .
SSLEHCOCLIENT 실행 . 데이터전송 .
Ethereal 을 이용한 데이터 캐치
EchoServer 와 EchoClient 의 데이터 전송중 캐치 했을 때 정보 공개
숫자를 전송 시 .
EchoServer 와 EchoClient 의 데이터 전송중 캐치 했을 때 정보 공개
문자를 전송 시 .
Ethereal 을 이용한 데이터 캐치
SSLEchoServer 와 SSLEchoClient 의 데이터 전송중 캐치 했을 때 정보 공개
숫자를 전송 시 .
암호화 되어있다
Ethereal 을 이용한 데이터 캐치
SSLEchoServer 와 SSLEchoClient 의 데이터 전송중 캐치 했을 때 정보 공개
문자를 전송 시 .
암호화 되어있다