대칭키 암호화 방식은 암복호화에 사용하는 키가 동일한 암호화 방식이다. 공개키 암호화 방식은 암복호화에 사용하는 키가 서로 다르다. 따라서 공개키 암호화에서는 송수신자가 모두 한쌍의 키(개인키, 공개키)를 갖고 있다.
1. 대칭키
- 암호화와 복호화에 하나의 같은 키를 사용하는 암호 방식이다.
- 암호의 안정성은 키의 비밀 유지에 의존된다.
- 송신자와 수신자는 미리 안전한 채널을 통해서 암호 키가 먼저 교환되어있어야 한다.
- 계산 속도가 빠르지만 안전한 인증이 힘들고 전자 서명이 불가능하다.
1.1 블록 암호
평문을 고정된 크기의 블록으로 나누어 각 블록마다 암호화 과정을 수행하여 블록 단위로 암호문을 얻는 대칭키 암호 방식이다.
1.2 블록 암호 - AES (Advanced Encryption Standard)
- 128bit 블록 암호이다.
- 암호화 Key로 128, 192, 256bit 를 가질 수 있다. 암호화 Key 의 길이에 따라 실행하는 Round의 수가 다르다.
- 대입(Substitution)-치환(Permutation)을 이용하여 암호화하는 방법이고 전체 비트를 암호화한다.
1.3 AES 암호화 과정
유튜브의 'AES Rijndael Cipher explained as a Flash animation' 설명을 보고 이해했습니다.
출처 : https://youtu.be/gP4PqVGudtg
State
- State라는 Byte의 2차원 배열(4X4 byte)을 사용한다. (1State = 4word = 16byte = 128bit)
- 16진수의 값으로 변환하여 사용한다.
- 라운드 수는 key의 길이에 따라 다르다.
- 각 라운드마다 4개의 절차를 가지고 있다. (마지막 라운드에서는 MixColumn 연산이 빠진다)
1 - SubBytes
- SubBytes transformantion table 을 이용하여 byte 단위로 블록을 대체한다.
2 - ShiftRows
- 첫번째 행은 shift 하지 않는다.
- 두번째 행은 한자리 왼쪽으로 shift
- 세번째 행은 두자리 왼쪽으로 shift
- 마지막 행은 세자리 왼쪽으로 shift
3 - MixColumns
- 각각의 열을 상수 행렬과 곱해서 새로운 값을 가지는 열을 반환한다.
4 - Add Round Key
- 각 State 열 행렬에 Round key word를 XOR 연산을 한다
1.4 AES Key 확장 과정
- 1word 는 4byte로 AES-128 에서 4개의 word로 나누어 키 확장이 이뤄진다.
- 4개의 워드 중 마지막 워드는 1byte 왼쪽 rotate 이동된 후 S-box 를 이용하여 치환한다.
- 현재 만들려고 하는 Key의 위치가 Wi이라고 하면, Wi-4번째 열과 위에서 계산한 값과 XOR 연산을 한다. 이 결과와 다시 Rcon의 열과 XOR 연산을 수행한다.
- 현재 만들려고 하는 Key의 word 위치가 첫번째 word가 아니라면, Chiper Key의 Wi-4번째 열과 현재 Wi번째 열을 XOR 연산을 수행한다. → (위의 그림에선 Round Key1의 두번째열이 만들어진다)
1.5 스트림 암호
평문과 같은 길이의 키 스트림을 생성하고 평문과 키를 비트 단위로 XOR연산하여 암호문을 얻는 대칭키 암호 방식이다.
2. 공개키(비대칭키)
암호화와 복호화에 두개의 서로 다른 키를 사용하는 암호 방식으로 양방향 암호화방식이다.
- 공개키 (Public Key) : 누구나 공개키를 사용해 암호화가 가능하다
- 개인키 (Private Key) : 오직 자신만이 개인키를 이용해 복호화가 가능하다
- 공개키로 암호화 한 정보는 그 쌍이 되는 개인키로만 복호화가 가능하고, 개인키로 암호화 한 정보는 그 쌍이 되는 공개키로만 복호화가 가능하다.
- 대표 알고리즘 : RSA, ElGamal
실제로는 대칭키와 공개키를 섞어서 활용한다
2.1 기밀 내용 전달
A가 자신만 알고 있는 기밀을 B에게 전달할때 사용한다. B를 제외한 타인은 이 내용을 알 수 없어야 한다.
- B가 자신의 공개키를 공개한다
- A는 이 공개키로 문서를 암호화하고 B에게 전달한다
- B는 자신만이 가진 개인키로 이 문서를 해독한다
- 타인이 전달과정에서 암호화된 문서를 가로채더라도 B의 개인키가 없으면 해독이 불가능하다.
- SSL / TLS 에서 두 당사자가 사용할 대칭키를 전달하는 용도로 사용된다
'CS Study' 카테고리의 다른 글
NoSQL 이란? - NoSQL 특징, NoSQL 데이터 모델, RDBM 비교 (0) | 2021.04.28 |
---|