네트워커의 보안 티스토리

암호화[Cryptograph]


통신문의 내용을 제 3자가 판독할 수 없도록 다른 형태로 변화 시키는 것


암호화 알고리즘을 알아도 암호화된 값이 원래 무엇인지 알 수 없도록 하는 것이다.


인코딩은 누구든지 디코딩할 수 있고 데이터의 무결성을 위한 것이 아니기 때문에 그 점에 차이가 있다.



plaintext(cleartext; 평문)

ciphertext(암호문)

encryption(encipher: 암호화)

decryption(decipher: 복호화)



* 대칭형

암호화 할 때키 = 복호화 할 때 키

그러므로 절대 키가 노출되면 안된다.

속도는 빠르다.(장점)

송신자와 수신자 사이의 안전한 교환 문제가 발생(단점)


 * 비대칭형

암호화 할 때 키 != 복호화 할 때 키

두개의 쌍으로 이루어진 키 사용

공개키 암호화 방식

공개키는 모든 사람이 알 수 있도록 공개 ex) 공인인증기관 게시

개인키는 자신만이 알 수 있도록 개인이 보관

비밀키 전달 불필요에 따른 키 교환 문제 없고, 정보의 기밀 유지 이외에 다른 목적(무결성, 부인방지 등)으로도 사용 가능(장점)

옴호화 및 복호화가 느리고(대칭형에 비해 약 1000배), 많은 양의 자료를 암호화, 복호화 하기 불편.(단점)


비대칭형 방식은 대칭형 키를 나누어 가지기 위한 하나의 방법이다.






해시 알고리즘


-조건


임의의 값에 대한 해시값을 구하기가 쉬울 수록 좋다.

해쉬 함수의 결과값으로 원래의 값을 유추하기가 어려울 수록 좋다.

일방향성으로써 암호화는 쉽고 복호화는 어려울 수록 좋다.

같은 해시값을 가지는 임의의 다른 값이 존재할 수 있는 가능성이 있지만 실제로 찾기가 어려울 수록 좋다.




입력값의 길이가 달라도, 해시값의 길이는 같다.

입력값이 비슷해도 출력값은 전혀 다르다.

MD5는 몇년 전에 중국의 수학자에 의해 역함수가 구해졌기 때문에 더이상 보안에 사용해서는 안된다.




* 공개키 암호화 기법을 이용한 클라이언트 인증

클라이언트가 서버로부터 인증을 받고자 할 때 개인키와 공개키를 생성 후에 공개키를 서버에 전송
서버는 임의의 랜덤 값을 공개키로 암호화 해서 클라이언트에 전송
클라이언트는 개인키로 복호화를 한다음 해시값으로 변환해서 서버에 전송

서버는 최초에 전송했던 임의의 랜덤값을 해시값으로 변환해서 클라이언트로부터 받은 해시값과 비교후 승인여부 결정




* 일방향 함수를 이용한 사용자 인증

사용자가 서버에 로그온을 시도하면 서버는 해당 데이터베이스의 값과 비교 후에 인증을 해주게 되는데 만일 공격자가 서버의 데이터베이스 내용을 훔쳐봤다면 사용자의 암호는 노출되게 된다. 이 때 서버가 사용자의 암호를 해시값으로 보관하고 있고 사용자가 로그온을 요청시 사용자의 요청암호를 해시값으로 변환해서 데이터베이스의 해시값과 비교 후 인증을 결정한다. 이렇게 되면 공격자가 데이터베이스를 훔쳐봐도 해시값이기 때문에 식별이 불가능하다.






Diffie-Hellman Protocol


세션키


      •대칭키 분배의 문제점은 당사자의 대칭키가 동적일 경우 효과적

      •각 세션마다 키를 생성하고 세션이 끝날 경우 키를 폐기


양측의 대칭키는 단지 한 번만 사용될 때 효과적이다. 즉 세션마다 키를 생성하고 세션이 끝날 때 키를 폐기한다.



하지만 MITM 공격에 매우 취약하다.



중간자 공격(man-in-the-middle attack)
Diffe-Hellman은 매우 복잡한 프로토콜이지만, 3자가 x 또는 y 값을 알아내지 않아도 되기 때문에 중간에서 밥과 앨리스를 속이는 것이 가능하다.
중간자 공격 절차

1. 앨리스가 x를 선택한 후 R1=Gx를 계산하여 R1을 밥에게 전송

2. 3자가 R1을 가로챈 후, z를 선택한 다음 R2=Gz mod N을 계산하여 R2앨리스와 밥에게 전송

3. 밥이 y를 선택한 다음 R3=Gy mod N을 계산해서 R3을 앨리스에게 전송, R3을 제 3자가 가로챔

4. 앨리스와3자가 공유한 키 K1=Gxz mod N을 계산

5. 3자와 밥은 공유한 키 K2=Gzy mod N을 계산

»

이 경우 앨리스와 밥은 제 3자와 공유한 키를 서로간의 공유한 키로 생각






인증서



1) 발급자 - 인증서를 발급한 기관


2) 소유자 - 인증서의 주인


3) 인증서의 권한, 정책 - 인증서로 무엇을 얼마나 할 수 있는지에 대한 정보


4) 유효기간 - 인증서의 시작, 종료기간


5) 일련번호 - 인증서를 식별


6) 발급자의 서명 - 발급자의 전자서명값

    : 인증서의 무결성을 확인해주는 것


7) 공개키 정보 - 인증서의 공개키가 있으며 16진수로 표현됨





서명값을 발급자의 공개키로 복호화해서 해시값으로 만든값



인증서의 내용을 해시값으로 바꾼 것과 대조해서 인증서가 변조가 됐는지 확인이 가능하다.


그렇다면 발급자의 공개키를 어떻게 구할까


인증서 항목에 있는 공개키는 발급자가 아닌 인증서 주인의 공개키다.


간단하다. 


요청하면 된다.


하지만 요청하지도 않고 알 수 있다.











이렇게 발급대상과 발급자가 똑같다.





우리가 찾던 공개키는 여기있다.




'정보보안' 카테고리의 다른 글

39일차 SSL MiTM , SSL strip  (2) 2017.04.04
38일차(2) SSH  (0) 2017.04.03
37일차 DHCP Spoofing(2) , Sniffing Attack  (0) 2017.03.31
36일차 IP Spoofing 이어서 , DHCP Spoofing  (0) 2017.03.30
35일차 TCP/IP ARP Spoofing  (0) 2017.03.29