[ TERMS 13 ] 암호화 / 복호화
1. 암호화/복호화의 정의
- 암호화 : 의미가 있는 정보를 의미를 알 수 없는 형태의 정보로 변환하는 과정
- 복호화 : 의미를 알 수 없는 정보를 해석하여 의미를 알수 있는 정보로 변환하는 과정
2. 암호화/복호화는 어디서 접하게 될까?
의미가 있는 정보를 타인이 알 수 없게 해야하는 상황이 존재한다. 대표적으로 전쟁중 부대 간 소통을 할때 적군에게 정보를 노출시키지 않기위해 평문을 암호화 하여 전달하고 전달받은 부대는 복호화하여 평문을 취득한다. 이처럼 암호화의 가장 큰 목적은 어떤 정보를 특정 사람들만 알게 하는 것이다.
3. 암호화/복호화 알아보기
> 개념
암호화는 누군가에게 전달하는 정보를 보호하기 위해서, 혹은 저장된 데이터를 보호하기 위해서 사용한다. 근래에는 단순히 암호화 알고리즘을 안다고 해서 암호문을 평문으로 복호화할 수 없는 상황이다. 현재의 암호화 기술은 암호화 알고리즘뿐만 아니라 '암호화 키'라는 추가적인 요소가 필요하다. 암호화는 복호화가 불가능한 단방향 암호화, 복호화가 가능한 양방향 암호화로 나누고 양방향 암호화는 다시 대칭키와 비대칭키로 나눈다.
단방향 암호화는 복호화를 고려하지 않는다. 대표적인 예로 비밀번호를 저장할 때 대게 단방향 암호화를 이용하여 데이터베이스에 저장한다. 때문에 데이터 관리자도 실제로 사용자가 어떤 암호를 쓰는지 복호화하여 알 수 없다.
양방향 암호화는 암호화와 복호화에 사용되는 키가 동일한 대칭형 암호화와 키가 다른 비대칭형 암호화로 나누어진다.
> 단방향 암호화
단방향 암호화의 대표적인 예로는 해싱이 있다. 해싱은 입력한 평문을 해시 알고리즘을 통해서 동일한 값에 대해서는 동일한 해시 값을 돌려준다. 대표적인 예로는 로그인이 있다. 사용자는 회원 가입 시 비밀번호를 입력한다. 이때, 입력받은 비밀번호를 해싱 함수를 통해 해시 값으로 변환하고 데이터 베이스에 저장한다. 이후에 사용자가 로그인할 때 입력한 비밀번호를 다시 해싱 함수를 통해 해시 값으로 변환하고 이를 데이터베이스에 저장된 사용자의 해시 값과 비교하여 사용자가 올바르게 비밀번호를 입력했는지 판별한다.
MD5, SHA, HAVAL등이 대표적인 단방향 해시 알고리즘이며, SHA 알고리즘은 현재 비트코인의 해시 값 생성에 사용되기도 한다.
암호화 해시는 다음과 같은 특징을 가져야한다.
- 역상 저항성 : 해시된 값을 역으로 계산했을 때 본래의 입력값을 알 수 없어야 한다.
- 제2 역상 저항성 : 'A'라는 데이터와 A의 해시 값이 주어졌을 떄 'B'라는 값의 해시 값을 찾을 수 없어야 한다.
- 충돌 저항성 : 알고리즘을 통해 나온 해시 값이 서로 충돌해서는 안된다.
> 양방향 암호화
암호화와 복호화가 모두 가능한 암호화이다. 동일한 키를 이용하여 암호화/복호화 하는 대칭키 암호화와 서로 다른 키를 이용하여 암호화/복호화를 하는 비대칭키 암호화가 있다.
대칭형 암호화키의 경우 키가 공개되면 암호화와 복호화 모두 가능하기 때문에 키가 비밀로 유지돼야 한다. 이런 상황에서 수신자와 송신자는 서로 키를 공유하고 있어야 한다. 그렇기 때문에 키의 분배가 매우 어렵다. 그렇지만 비대칭형 암호화보다 약 1,000배 가량 빠른 속도로 암호화/복호화를 할 수 있다. 반면, 비대칭형 암호화는 속도는 상대적으로 느리지만 유지 보수 및 관리가 편하다는 장점이 있다.
암호화를 할 때는 공개키를 이용해 암호화하여 서버로 전달하고, 서버는 개인키를 이용하여 암호화된 정보를 복호화한다. 비대칭형 암호화에서는 암호화 알고리즘과 암호화키를 알고 있더라도 복호화할 수 없다는 장점이 있다.
비대칭키 암호화의 가장 대표적인 예로는 RSA 암호화가 있다. RSA 암호화 체계는 누구나 확인할 수 있는 공개키와 서비스 제공자만 아는 개인키로 암호화/복호화를 수행한다. 즉, 서비스 제공자의 공개키를 이용하여 메시지를 암호화하고 서비스 제공자가 개인키를 이용하여 복호화하는 것이다. RSA 암호화 체계를 이용하기 위해서는 공증인증기관(CA, Certificate Authority)에서 공개키와 개인키를 발급받아야 한다. 발급되는 공개키 인증서는 Root 인증서와 중간 인증서, 그리고 서버 인증서로 연결하여 사용하게 된다. 이때 RSA 암호화 체계를 이용하여 공개키 인증서가 합법적인지 적합성을 확인한다.
공개키 인증서가 적합한지 확인하려면 중간 인증서와 서버 인증서 간의 적합성을 확인한 후 Root 인증서와 중간 인증서 간의 적합성 을 확인하여 해당 공개키 인증서를 신뢰할 수 있는지 결정한다. 이렇게 양방향 암호화의 RSA 암호화 체계를 이용한 인증서 체인 시스템을 통해서 웹 사이트를 안전하게 사용할 수 있다.
4. 암호화/복호화를 알아야 하는 이유
암호화/복호화를 이해하면 웹 페이지에서 아이디, 비밀번호로 로그인하는 것을 넘어서 왜 신뢰할 수 있는 웹 페이지인지 이해할 수 있다. 더 나아가 레디스 클러스터(Redis Cluster)에서 키가 고르게 분포하도록 하는 해싱 알고리즘을 공부할 때에도 도움이 된다.
5. 암호화/복호화 더 알아보기
> 함께 알아 두면 좋은 용어
- 랜섬웨어
- 중간자 공격(man in the middle attack)
- 브루트 포스 공격(brute force attack)
> 혼동하기 쉬운 용어
- 해싱
- 인코딩/디코딩
'IT 도서 리뷰 > 개발자가 되기 위해 꼭 알아야 하는 IT 용어' 카테고리의 다른 글
[PART5] 운영체제/시스템/보안 - TERMS 15 (0) | 2025.09.10 |
---|---|
[PART5] 운영체제/시스템/보안 - TERMS 14 (0) | 2025.09.04 |
[PART5] 운영체제/시스템/보안 - TERMS 12 (0) | 2025.08.23 |
[PART5] 운영체제/시스템/보안 - TERMS 11 (1) | 2025.08.11 |
[PART5] 운영체제/시스템/보안 - TERMS 10 (4) | 2025.07.31 |