이번 포스팅에는 링크드인 러닝 CompTIA Network+ 5번 강의를 듣고 Securing TCP/IP 에 대하여 공부한 내용들을 정리해 보려고 한다.
네트워크에서 전송되는 데이터는 언제나 노출의 위험이 있다. 인터넷을 이용하면 어떠한 방법으로든 도청 혹은 변조가 가능하기 때문에 이를 방지하기 위한 방법들 중 하나로 암호화가 있다.
암호화(encryption)
암호화란 일상적인 문자로 쓰이는 평문을 암호키를 소유하지 않은 사람이 알아볼 수 없도록 알고리즘을 통해 암호문으로 변환하는 것이다. 암호화의 반대말은 복호화(decryption)이다. 암호화에는 크게 두 가지 방법이 있다.
비밀키 암호화(symmetric encryption, secret-key algorithms)
비밀키 암호화는 암호화할 때 사용하는 암호키와 복호화 할 때 사용하는 복호키가 동일하며, 두 호스트는 하나의 키를 사용하여 암호화하고 복호화한다. 암호키와 복호키가 같기 때문에 대칭키라고 한다. 암호키와 복호키가 같기 때문에 암호화 및 복호화가 빠르다. 다만, 복수의 사용자가 사용할 경우 키를 상대방에게 안전하게 보내는데 어려움이 있다.
암호키는 보통 긴 숫자이거나 무작위의 문자열로 이루어져 있다. 이 암호키가 평문(plain text)을 만나면 특정 방식으로 내용을 바꾼다. 대중적으로 많이 사용되는 대칭 암호화 알고리즘은 AES-128, AES-192, AES-256 등이 있다.
공개키 암호화(asymmetric encryption, public-key algorithms)
공개키 암호화 방식은 암호키와 복호키가 다르다. 암호키를 안다고 하여 복호화를 할 수 없고, 복호키를 안다고 하여 암호화를 할 수 없다. 암호키는 공개되어 있기 때문에 누구나 암호화가 가능하다. 따라서 암호키를 공개키(Public Key)라고 한다. 복호키는 개인만 가지기 때문에 개인키(Private Key)라고 한다. 공개키 암호화 방식은 네트워크 전송 도중에 도청을 당하더라도 개인키(복호키)가 있어야만 볼 수 있으므로 안전하다. 공개키 암호화 방식은 보안상의 허점이 없고, 정보의 비밀 공유 이외의 다른 용도로 사용이 가능하다는 장점이 있다. 다만 암호키와 복호키가 다르므로 암호 및 복호화 속도가 비밀키보다 방식이 느리고, 많은 양의 자료에는 적용하기가 어렵다.
대표적인 알고리즘으로는 RSA 알고리즘이 있다. 그리고 전자 신원 인증에 이 공개키 암호화 방식이 사용된다.
암호화 해시 (cryptographic hashes)
해시(Hash)는 단방향 암호화 기법으로 해시 함수(해시 알고리즘)를 이용하여 고정된 길이의 암호화된 문자열로 바꾸는 것을 의미한다. 여기서 사용되는 해시 함수(hash function)는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다.
대표적인 해시 알고리즘은 SHA256 알고리즘이다. 아래 사이트에서는 임의의 문자열을 입력했을 때 hash 값을 만들어주는 기능을 테스트 해볼 수 있다.
https://passwordsgenerator.net/sha256-hash-generator/
해시 알고리즘은 종류가 다양하고 알고리즘마다 해시 길이가 다르다. 해시 알고리즘은 모두에게 공개되어 있어서 몇몇 알고리즘은 이미 해커들에게 보안이 뚫려서 사용하는 것을 지양한다. MD5, SHA-1, HAS-180 등은 사용해서는 안되고, SHA-256, SHA-512 등을 사용할 것을 권고한다.
해시 알고리즘은 특정 입력에 대해 항상 같은 해시값을 리턴하기 때문에 이를 이용하여 인증이 가능하다. 해시 함수를 단순하게 사용하여 변환하는 것은 완벽하지 않다. 해커가 무작위 값을 입력하면서 얼마든지 값을 알아낼 수 있기 때문이다. 이를 보완하기 위해 비밀번호에 salt라는 특정 값을 넣을 수가 있고, 해싱 함수를 여러 차례 돌릴 수도 있다.
아래에서는 우리가 자주 사용하여 헷갈리기 쉬운 용어들을 한 번 정리하려고 한다.
- 신원 확인(Identification) : 신원 확인은 사용자가 신원을 요구할 때 발생한다. 신원 확인은 해당 주체를 고유하게 확인할 수 있는 이름, 신분증 등을 통해 할 수 있다.
- 인증(Authentication) : 인증은 신원을 부여하는 절차이며 신원을 증명할 수 있는 충분한 신용 증명서(credential)를 제공할 때 발생한다. 예를 들면 정확한 이메일과 비밀번호를 입력하면 인증이 이루어지는 것이다.
- 권한부여(Authorization) : 사용자가 신원 확인이 되고 인증이 될 때, 주어진 신원에 따라 적절한 권한을 부여한다. 신원 확인과 인증 없이는 권한 부여가 이루어질 수 없다.
참고자료
https://freloha.tistory.com/39
http://wiki.hash.kr/index.php/%EC%95%94%ED%98%B8%ED%99%94
https://medium.com/@yeon22/crypto-%ED%95%B4%EC%8B%9C-hash-%EB%9E%80-6962be197523
https://blogs.getcertifiedgetahead.com/identification-authentication-authorization/
'Computer Sci. > Network' 카테고리의 다른 글
[네트워크] DNS(도메인 네임 시스템) (0) | 2021.07.12 |
---|---|
[네트워크] TCP/IP Application (0) | 2021.06.29 |
[네트워크] 라우팅(routing) (0) | 2021.06.04 |
[네트워크] TCP/IP (0) | 2021.05.12 |
[네트워크] 이더넷(Ethernet) (0) | 2020.12.14 |