목차
- 암호화란?
- 암호화의 목적
- 용어 정리
- 암호화의 종류
#1. 암호화(Encryption)란?
- 특별한 지식을 가진 사람만이 읽어볼 수 있도록, 알고리즘을 이용하여 정보를 전달하는 과정
- 암호화 과정을 평문(정보)을 암호문(암호화된 정보)으로 변환시킴
- 이에 역행하는 과정을 해독(복호화,Decryption)이라고 하며, 해독과정을 통해 암호화된 정보를 다시 평문으로 변화시킴
#2. 암호화의 목적
- 부적절한 노출방지. 허가 받은 사용자만이 내용에 접근할 수 있어야 함(Confidentiality; 기밀성)
- 부적절한 변경바지. 허가 받은 사용자만이 내용을 변경할 수 있어야 함(Integrity; 무결성)
- 부적절한 서비스 거부 방지. 허가받은 사용자는 필요할 때 내용에 접근할 수 있어야 함(Availability; 가용성)
- 메세지를 전달하거나 전달받은 사람은 전달하거나 전달받았다는 사실을 부인할 수 없어야 함(Non-repudiation; 부인봉쇄)
#3. 용어 정리
- 정보 보안(information security) : 정보의 수집, 가공, 저장, 검색, 송신, 수신 도중에 정보의 훼손, 변조, 유출 등을 방지하기 위한 관리적 방법
- 평문(plaintext) : 암호학을 이용하여 보호해야 할 메세지
- 암호문(ciphertext) : 평문을 암호학적 방법으로 변환한 것
- 버퍼(buffer) : 컴퓨터가 데이터 저장 시, 바이트 형태(16진수)로 저장하는 공간
- 인코딩(=문자 인코딩, 텍스트 인코딩) : 사용자가 입력한 문자나 기호들을 기계가 사용할 수 있는 신호로 만드는 것 - 진수 변환
- 디코딩(=문자 해독) : 인코딩한 진수를 원해 상태로 변환
- 글자셋(문자열 셋) : 인코딩(신호 입력)과 디코딩(문자 해독)을 하기 위하여 미리 정해진 기준
#4. 암호화 알고리즘의 종류
- 암호화 방식은 간단한 형식부터 복잡한 형식까지 다양하게 존재한다.
- 따라서 암호화 방식의 우열을 나누기 보다는 보안환경, 경제성 등 필요한 상황에 따라 적합한 방식을 결정하는 것이 좋다!
# 4-1. 양방향 암호화
(1) 대칭키 암호(symmetric-key algorithm)
- 암호화(암호문 생성 시)와 복호화(암호문으로부터 평문 복원 시)에 동일한 암호 키를 사용
- 암호 시스템의 안전성이 키의 길이, 키의 안전한 관리에 상대적으로 의존성이 높음
- 암호화를 하는 측과 복호화를 하는 측이 동일한 암호 키를 관리해야 하므로 폐쇄적인 특성을 갖는 사용자 그룹에 적합
ex) 냉전시절 워싱턴과 모스크바 사이의 핫라인에 적용되었던 OTP
-비대칭 키 암호와의 비교
- 공개 키(비대칭 키) 암호에서 공개 키와 비밀 키를 별도로 가지는 것과는 구별됨
- 대신, 대부분의 대칭 키 암호는 공개 키 암호와 비교하여 계산 속도가 빠르다는 장점이 있음
- 많은 암호화 통신에서는 비밀 키 암호를 사용하여 대칭 키 암호의 공통 키를 공유하고,
- 그 키를 기반으로 실제 통신을 암호화하는 구조를 사용한다(즉, 전송계층 보안;TLS)
-대칭키 암호의 분류(암호화 하는 단위에 따라)
스트림 암호 | 블록 암호 |
연속적인 비트/바이트를 계속해서 입력받아, 그에 대응하는 암호화 비트/바이트를 생성하는 방식 | 정해진 한 단위(블록)를 입력 받아 그에 대응하는 암호와 블록을 생성 적절한 운용모드를 조합하면 블록 단위보다 더 큰 입력을 처리할 수 있으며, 또한 스트림 암호와 유사하게 지속적인 입력에 대해 동작 가능. 단 이경우 입출력 단위는 스트림 암호보다 큰 블록 단위가 됨) |
-대칭키 암호 시스템의 문제점
- 알고리즘이 상대적으로 단순한 장점이 있는 반면 키 관리에 어려움이 존재
- 시스템에 가입한 사용자들 사이에 매 두 사용자 마다 하나의 서로 다른 키를 공유해야 함
- 각 사용자는 n-1개의 키를 관리해야 하는 부담 있음(한명의 사용자가 관리해야 할 키의 수가 너무 많아지게 됨)
- 이러한 단점으로 인해 키 관리가 상대적으로 용이한 공개키 암호 시스템이 출현하게 됨
(2) 비대칭키(공개키 암호 시스템)
- 공개 키 암호 시스템에서 각 사용자는 공개키와 비밀키라는 두개의 키를 부여받음
- 공개키 암호 시스템에서 각 사용자는 자신의 비밀키만 관리하면 되므로 키 관리의 어려움을 줄일 수있음
- 각 사용자의 공개키를 관리하는 공개키 관리 시스템(공개키 디렉토리)가 필요하며, 각 사용자는 이 시스템에 자유롭게 접근하여 다른 사용자의 공개키를 열람할 수 있어야 함
-비대칭키(공개키)암호 시스템의 단점
- 공개키 암호 시스템은 두 키의 수학적 특성에 기반
- 메세지 암호화 및 복호화 과정에 여러 단계의 산술 연산이 들어감
- 따라서 대칭키 암호 시스템에 비하여 속도가 느림
-공개키 암호 시스템에서 암호화-복호화 시스템은 두 키가 짝으로 동작
> 암호화 할 때 사용되는 키와 복호화 할 때 사용되는 키가 다르기 때문에 비대칭 암호 시스템이라 부르기도 함
1. 공개키로 암호화하여 비밀키로 복호화 -메세지 교환에서 사용하는 방식
2. 비밀키로 암호화하고 공개키로 복호화-전자 서명에서 주로 사용(해당 공개키에 맞는 비밀키 보유자 확인 가능)
-공개키와 비밀키의 관계
각 사용자에게 부여되는 공개키와 비밀키에는 수학적 연관이 있기 때문에 암호화와 복호화가 가능
# 4-2. 단방향 암호화
- 해쉬를 이용하여 암호화 하는 과정
- 평문을 암호화 할 순 있지만 복호화 불가능
- 데이터의 진위여부는 확인하고 싶으나, 본 데이터의 Privacy를 지키고 싶은 경우 사용
- hash값 부여할 때, hash 값은 크기(진수)와 알고리즘에 따라 암호문의 결과가 완전 상이함
- 신원증명과 인증에서 주로 사용
Reference :
https://velog.io/@inyong_pang/Programming-%EC%95%94%ED%98%B8%ED%99%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%A2%85%EB%A5%98%EC%99%80-%EB%B6%84%EB%A5%98
https://ko.wikipedia.org/wiki/
'로그인 기능 및 인증 > 1. JWT' 카테고리의 다른 글
JWT3. 하드코딩으로 JWT 생성 및 사용(2) (0) | 2022.03.03 |
---|---|
JWT3. 하드코딩으로 JWT 생성 및 사용(1) (0) | 2022.03.03 |
JWT2. 기본 개념 (0) | 2022.03.03 |
댓글