암호화 / 복호화
들어가는 내용
암호화와 복호화는 “이미테이션 게임” 영화를 보면 많이 들을 수 있는 단어이다.
<간단한 줄거리>
24시간 마다 바뀌는 해독 불가 암호를 풀고 1,400만 명의 목숨을 구한 천재 수학자!
매 순간 3명이 죽는 사상 최악의 위기에 처한 제 2차 세계대전! 절대 해독 불가한 암호 ‘애니그마’로 인해 연합군은 속수무책으로 당하게 된다.
천재 수학자 앨런 튜링(베네딕트 컴버배치)은 암호 해독을 위한 특별한 기계를 발명하지만 24시간 마다 바뀌는 완벽한 암호 체계 때문에 번번히 좌절하고 마는데...
암호란?
암호(Cryptography)란 0과 1로 이루어진 이진수 데이터를 수학적 계산을 통해 비트 변경을 수행하는 것을 말한다. 정상적인 데이터의 2진수 데이터를 암호화라는 과정으로 데이터를 변경하고, 복호화라는 과정을 통해 데이터를 원래대로 돌리는 기술을 의미한다.
<aside> 💡 즉, 평문을 암호문으로 변환하거나 암호문을 평문으로 변환하는 기술을 의미한다.
- 평문 : 해독 가능한 형태의 텍스트 → “123456”
- 암호문 : 해독 불가능한 형태의 텍스트 → “awkkfks!” </aside>
암호화 vs 복호화
암호화(Encrypt)는 평문을 암호문으로 변환하는 과정
- ex) 평문(”123456”) —> 암호화 —> 암호문(”aasdfreeD”)
복호화(Decrypt)는 암호화된 데이터를 정상적인 데이터로 변경하는 과정을 말한다.
- ex) 암호문(”aasdfreeD”) —> 복호화 —> 평문(”123456”)

암호화의 종류
암호화 종류에는 단방향 암호화와 양방향 암호화가 있습니다.
단방향 암호
암호화 후 복호화를 할 수 없는 것이 특징이다.
- ex) 사용자 비밀번호 —> 사용자가 입력한 비밀번호를 암호화하여 DB에 저장이 될 때, 모든 접근자(개발자 포함)는 암호화 된 코드를 다시 평문으로 볼 수 없다. 그렇기 때문에 해킹이 되어도 복호화가 매우 힘든것이 특징이다.
- 해시 방식이 대표적이다.
- 해시 함수 : 임의의 길이의 데이터를 입력받아 일정한 길이의 비트열로 반환 시켜주는 함수로 입력값의 길이가 달라도 출력값은 언제나 고정된 길이로 반환되며 동일한 값이 입력되면 언제나 동일한 출력값을 보장하는 함수를 의미한다.
양방향 암호
암호화와 복호화 모두 가능한 것이 특징이다.
- ex) 이메일, 번호 또는 전자서명과 같이 재사용성이 있는 정보는 암호화, 복호화 모두 이루어져야 한다.
- 대칭키, 비대칭키 방식이 대표적이다.
양방향 알고리즘
대칭형(비밀키 암호) : 암호화, 복호화 시 모두 동일한 키를 사용
비대칭형(공개치 암호) : 암호화, 복호화에 서로 다른 키를 사용
대칭형(비밀키 암호) 알고리즘
- 암호화, 복호화에 서로 동일한 키가 사용되는 암호화 방식으로 키를 비공개하는 것이 특징이다.
- 속도가 빠르다는 장점이 존재하지만 키 배송의 위험성이 존재하여 보내는쪽에서 받는쪽으로 암호키를 전달하는 과정에서 키가 노출될 우려가 있다는 단점이 있다.
- 현재 가장 보편적으로 쓰이는 암호화 방식은 현 미국 표준 방식(NIST)인 AES로 128~256비트 키를 적용할 수 있어 보안성이 뛰어나다.
- 공개된 알고리즘이라 누구나 사용이 가능하다.
- AES 전에는 DES(Data Encrytion Standard)라는 알고리즘이 1975년부터 사용했으나, 너무 오래되어 취약점이 발견됨에 따라 이를 대체하기 위해 AES가 탄생되었다.
- 대칭형 암호는 훌륭한 암호화 방식이지만, 키 배송 관련으로 결정적인 문제가 존재한다.
- 이러한 문제점을 해결하기 위해 비대칭형 암호 방식이 나타났다.
첫번째 입력칸은 원하는 정보를 입력하는 칸을 의미하고, 두번째 입력칸은 우리가 사용할 키, 절대로 노출되면 안돼는 키를 입력하는 칸이 존재한다. 마지막은 어떤 수준으로 암호화 할 것인지를 선택해주는 것입니다. 비트수가 높을 수록 그 암호화는 더욱 안전해지지만 그만큼 컴퓨터 파워를 더 많이 사용하게 된다는 특징이 있다.
오른쪽 사진을 보면 암호화된 암호문이 나타났다. 이 암호문을 보면 원래의 정보가 무엇인지 알아볼 수 없다. 암호문을 풀기 위해서는 많은 컴퓨팅 파워와 시간이 들게 되고 그만큼 안전한 것이 특징이다.
암호문을 입력하고 같은 키를 사용하여 복호화를 하게 되면 원래의 정보였던 “안녕!”이 나오게 된다.
비대칭형(공개키 암호) 알고리즘
- 암호화, 복호화에 서로 다른 키가 사용되는 방식으로 하나의 키는 공개키로 사용하는 것이 특징이다.
- 키 배송의 문제를 근본적으로 차단하여 안정성이 높지만 대칭키 방식에 비해 속도가 느리다는 단점이 존재한다.
- RSA : 대표적인 방식으로, 공개키 암호 시스템의 하나로 암호화뿐만 아니라 전자서명이 가능한 최초의 알고리즘으로 주로 적은양의 데이터나 전자서명에 사용한다. 대칭키인 DES, AES 보다 속도가 느리기 때문에 메시지 암호화에는 쓰이지 않고 주로 키를 암호화하는데 사용한다.
- 비 대칭형 암호는 이름 그대로 암호화 키와 복호화 키가 다른것이다. 암호화를 하면 하나의 키 쌍이 생기고, 이 두개의 키는 수학적으로 밀접한 관계를 가지게 된다. 두개의 키를 각각 A키, B키라고 했을 때 A키로 암호화 한 암호문은 B키로만 복호화 할 수 있고, B키로 암호화 한 암호문은 A키로만 복호화 할 수 있습니다. 따라서 이 중 하나의 키만 비밀로 하고(비밀키) 다른 하나의 키는 누구에게 공개해도 가능한 키(공개키)가 된다.
- ex) 인터넷 뱅킹
- 사용자가 인터넷 은행 사이트에 접속하게 되면 사용자 컴퓨터에 공개키와 비밀키가 생성된다.
- 사용자 컴퓨터에서 공개키가 은행으로 전송되면 은행에서는 중요한 정보를 공개키로 암호화하며 암호문을 사용자에게 전달한다.
- 사용자는 비밀키로 암호문을 해독하여 중요한 정보를 은행과 공유하며 통신을 하게 된다.
- 이러한 공개키 방식은 공인인증서, 전자서명 등에서 사용하고 있다.
- 하지만 암호화, 복호화가 대칭형 암호에 비해 현저하게 느리다는 문제점이 존재한다. 현실적으로는 비대칭형 암호를 이용해 대칭형 암호의 키를 배송하고 실제 암호문은 대칭형 암호를 사용하는 식으로 상호 보완적으로 이용하는 것이 일반적이다.
- 비대칭형 암호도 약점이 있다. 대표적인 예시로 중간자 공격이 있다.
- 중간자 공격 : 해커가 중간에서 통신을 가로채어 수신자에게는 송신자인 척하고 송신자에게는 수신자인 척 해서 양쪽의 공개키와 실제 암호화에 사용되는 대칭키를 모두 얻어내는 기법을 의미한다.
RSA 방식
공개키 암호 알고리즘 중의 하나이며, 사실상 세계적인 표준이다.
- 인수분해 문제 해결의 높은 난이도를 이용한 가장 대표적인 공개키 암호 알고리즘으로 암호화뿐만 아니라 전자서명의 용도로도 사용된다.
- SSL 프로토콜을 가진 많은 웹 브라우저, PGP 그리고 공개키 암호 시스템을 사용하는 정부 시스템 등이 RSA를 사용한다.
- RSA는 두 개의 키를 사용하는데, 모두에게 공개하는 공개키와 공개해선 안돼는 개인키로 구성된다.
- 공개키는 메시지를 암호화할 때 사용하고, 개인키는 암호화된 메시지를 복호화할 때 사용한다.
- 방식
- A가 B에게 정보를 안전하게 보내고 싶어한다. 이때 RSA 알고리즘을 이용하고자 한다.
- B가 공개키와 개인키를 만들어 A에게 공개키를 보낸다. (개인키는 B만 가지고 있다.)
- A가 B로부터 받은 공개키를 이용하여 보낼 정보를 암호화한다.
- A가 암호화된 정보를 B에게 보낸다.
- B가 암호화된 정보를 받고 개인키를 이용하여 암호를 해독한다.
- RSA-1024 부터는 키 길이를 늘려 현재는 RSA-2048을 많이 사용하고 있다. 이보다 더 긴 키도 있지만 키 길이가 길어질 수록 암호화 계산이 느려지기 때문에 2048까지를 많이 사용한다고 한다. (현재 4096까지) 뒤의 숫자는 키의 길이를 뜻한다. (비트? 바이트?)
AES 방식
- 고급 암호화 표준(Advanced Encryption Standard)이라고 불리는 블록 암호 알고리즘이다.
- DES를 대체한 암호 알고리즘으로 대칭키 알고리즘이다.
- 블록 크기는 128비트이고, 키 길이에 따라 128, 192, 256 비트로 분류된다.
- 키 크기에 따라 10, 12, 14회 Round를 수행한다.
notion : https://noyclah.notion.site/654bda99eafc4db3af1b0486fdff0f66
'공부 > 네트워크 관련' 카테고리의 다른 글
Git 다양한 상황에 따른 해결방법 (0) | 2022.06.02 |
---|---|
터미널과 서버 (0) | 2022.06.01 |
Git(깃) (0) | 2022.06.01 |
Process 와 Thread (0) | 2022.06.01 |
OSI 7계층과 TCP/IP (0) | 2022.06.01 |
댓글
이 글 공유하기
다른 글
-
Git 다양한 상황에 따른 해결방법
Git 다양한 상황에 따른 해결방법
2022.06.02 -
터미널과 서버
터미널과 서버
2022.06.01 -
Git(깃)
Git(깃)
2022.06.01 -
Process 와 Thread
Process 와 Thread
2022.06.01