중요한 정보를 읽기 어려운 값으로 변환하여 제 3자가 볼 수 없도록 하는 기술
용어 | 설명 |
---|---|
평문 (plaintext) | 암호기술을 통해 보호하고자 하는 원본 데이터 |
암호문 (ciphertext) | 평문에 암호기술을 적용한 것 |
암호화 | 평문에 암호기술을 적용하여 암호문으로 변환하는 과정 |
복호화 | 암호문을 평문으로 복원하는 과정 |
암호키 | ◾ 평문을 암호화하기 위해 필요한 키 ◾ 키가 있어야만 암호문을 복호화 할 수 있음 ∴ 암호 키는 비밀(secret)로 유지되어야 하며 제 3자가 알 수 없어야 함 |
기능 | 설명 |
---|---|
기밀성 (Confidentially) | 허락되지 않은 사용자 또는 객체가 정보의 내용을 알 수 없도록 하는 성질 |
무결성 (Integrity) | 허락되지 않은 사용자 또는 객체가 정보를 함부로 수정할 수 없도록 하는 성질 |
인증 (Authentication) | 사용자 또는 객체의 디지털 정체성을 식별 |
부인방지 (Non-repudiation) | 정보를 보낸 사람이 나중에 정보를 보냈다는 것을 부인하지 못하도록 함 |
암·복호화에 같은 암호 키를 쓰는 알고리즘
키 크기가 상대적으로 작으며, 암호 알고리즘 내부 구조(치환+전치)가 단순함
- 치환 암호 : 평문 문자를 다른 문자로 어떠한 규칙에 따라 대응시켜 암호화 하는 방식
- 전치 암호 : 평문 문자의 자리를 바꾸는 방식
교환 당사자(송·수신자) 간에 동일한 키 공유 필요
암호문을 만들기 위해 암호 키와 알고리즘이 데이터 블록 단위로 적용되는 암호화 방법
개요
평문을 고정된 크기의 블록단위로 암·복호화 수행
→ 패딩(padding) 기법 이용
💡 패딩(padding)
블록암호 알고리즘에서 블록의 크기를 일정하게 맞추기 위해 빈 부분을 채워주는 것
각 블록마다 동일한 키 사용
하나의 키로 여러 블록을 안전하게 처리하기 위해 운용 방식(mode of operation) 절차 이용
💡 운용 방식(mode of operation)
블록 암호는 특정한 길이의 블록 단위로 동작하므로, 암호화를 위해 가변 길이 데이터를 단위 블록들로 나누고 그 블록들의 암호화 방식을 결정하는 것을 의미한다.
이전 암호 블록의 암호문을 다음 블록에 순서대로 적용
라운드 함수를 사용해 반복적인 암호화 과정 수행
→ 암호화 강도 향상
*라운드 함수 : 암호화 방식은 특정 계산 함수의 반복으로 이루어지며, 이 때 각 과정에 사용되는 함수를 의미
구조
- 혼돈
- 평문과 암호문의 상관 관계를 없애는 성질
- 평문 문자를 다른 문자로 '치환'하는 행위
- 확산
- 평문에서 나타나는 문자의 빈도수를 없애는 성질
- 평문의 문자 위치를 '이동'하는 행위
종류
종류 | 키 길이 | 블록 크기 | 라운드 수 | 구조 | 개발 국가 | 비고 |
---|---|---|---|---|---|---|
DES | 56bit | 64bit | 16번 | Feistel | 미국 | AES 이전 미국 표준 |
3DES | 112/168bit | 64bit | 16*3번 | Feistel | 미국 | DES의 취약점 보완 및 호환성 유지 임시방편 |
SEED | 128, 256bit | 128bit | 16, 24번 | Feistel | 한국, KISA | ARIA 이전 국내 표준 |
AES | 128/192/256bit | 128bit | 10/12/14번 | SPN | 미국 | 현 미국 표준 |
ARIA | 128/192/256bit | 128bit | 12/14/16번 | SPN | 한국, NSRI | 현 국내 표준 |
IDEA | 128bit | 64bit | 8번 | Lai-Massey schema | 유럽 | 현 국제 표준 (PGP에서 사용) |
Rijndael (AES 선정) | 128/192/256bit | 128bit | 10/12/14번 | 벨기에 | ||
CRYPTON | 128/192/256bit | 128bit | 한국 | |||
HIGHT | 64bit | 한국 | ||||
LEA | 128bit | 128bit | 한국 | |||
FEAL | 64bit | 64/128bit | 4/8/32 | 일본 | ||
MISTY | 128bit | 64bit | 8 | 일본 | ||
SKIPJACK | 80bit | 64bit | 32 | 미국 | ||
RC5 | 0-2040bit | 32/64/128bit | 미국 |
특징
장점 | 단점 |
---|---|
소프트웨어적으로 구현 가능 | 느린 암호화 속도 |
전치와 치환 반복 → 평문과 암호문으로부터 key에 대한 정보를 찾아내기 어렵게 함 | 에러 전파 |
데이터 전송 및 대용량 데이터 저장 시 사용 가능 | 데이터의 크기가 작을 경우 비효율적 |
💡 소프트웨어 암호화 vs 하드웨어 암호화
- 소프트웨어 암호화 : 소프트웨어 도구를 사용하여 데이터를 암호화 하는 것
- 하드웨어 암호화 : 물리적 하드웨어를 사용하여 데이터를 암호화 하는 것으로, 호스트 시스템과 암호화 프로세스가 분리되어 있음
데이터 흐름인 스트림(stream)을 비트(bit) 단위로 순차적으로 처리하는 암호 알고리즘
개요
*원타임패드 : 일회용 패드로서 키(key=pad)를 딱 한 번 쓰도록 설계된 암호체계
여기서의 수열은 완전히 랜덤한 수열은 아니지만, 의사적으로 랜덤하게 만들어진 패턴 수열인 의사난수열을 의미함
방식
동기식 스트림 암호(Synchronous Stream Cipher)
키스트림 수열 생성 시 평문과 독립적으로 생성
💡 동기화
- 프로세스들이 서로 동작을 맞추는 것
- 프로세스들이 서로 정보를 공유하는 것
비동기(자기동기)식 스트림 암호(Asynchronous Stream Cipher)
키스트림 수열 생성 시 평문이 키스트림 수열에 영향을 미침
*비동기(자기동기, 종속적)식 : 내부상태에 의존하지 않아 동기화가 필요하지 않은 경우
종류
A5/1, A5/2, A5/3
GSM에서 데이터를 암·복호화할 때 사용되는 스트림 암호
💡GSM(Global System for Mobile communication)
- 유럽 국가를 기준으로 중국, 러시아, 인도 등 전 세계적으로 널리 채택되어 2004년 세계 이동통신 가입자 중 70% 이상이 사용하는 이동통신 방식
- 일반적인 채널과 한 방향에서 4.615 ms마다 1개의 버스트 전송
각 버스트에 대해 114bit 시퀀스 생성
22bit 프레임 번호 + 64bit 키로 초기화
유효 키 길이 : 54bit → Comp128v3 도입으로 64bit로 수정
A5/1과 A5/2의 안전성 취약으로 인해 A5/3 개발
비동기식 알고리즘
RC4
RSASecurity를 위해 론 리베스트(Ron Rivest)에 의해 1987년 고안된 스트림암호 방식
특징
장점 | 단점 |
---|---|
오류 확산 x | 비트 단위 암호화 → 많은 시간 소요 |
하드웨어적 구현 가능 | 데이터 흐름에 따른 비트 단위 순차 처리 → 내부 상태 저장 필요 |
이동통신 환경에서 구현 용이 → 무선 데이터 보호에 이용 | 평문 길이 증가 시 키 길이 증가 → 비효율적 |
실시간성 서비스에 사용 ex) 음성, 영상, 스트리밍 전송 등 | 선형성으로 인해 공격에 취약 |
암호화와 복호화에 서로 다른 키를 사용하는 알고리즘
개요
비밀키 암호화 기법에서의 보안성 및 키 개수의 기하급수적인 증가를 개선하기 위해 고안된 방법
두 개의 키를 각각 A, B라고 할 때, 키 A로 암호화한 암호문은 키 B로만 복호화 가능
개인키(=비밀키) | 공개키 | |
---|---|---|
설명 | 사용자 본인만 알고있는 키 | 공중에게 공개해도 상관없는 키 |
사용 | 복호화 | 암호화 |
→ 통상적인 사용을 위해 둘 중 하나의 키는 반드시 공개해야 함
특징
💡 키 배송 문제
송신 측에서는 수신 측에 암호키를 전달하기 위한 안전한 방법이 존재하지 않는 문제
💡 중간자 공격(MITM, Man In the Middle Attack)
해커가 중간에서 통신을 가로채어 수신자에게 송신자인 척, 송신자에게 수신자인 척 하여 양쪽의 공개키와 실제 암호화에 사용되는 대칭키를 모두 얻어내는 기법
종류
구분 | 특징 | 방식 | 장점 | 단점 |
---|---|---|---|---|
Diffie- Hellman | ◾ 최초의 공개키 알고리즘 ◾ 키 분배 전용 알고리즘 | 이산대수 | ◾ 키 분배에 최적화 ◾ 키는 필요시에만 생성 ◾ 키 저장 불필요 | ◾ 암호 모드로 사용 불가 (인증 불가) ◾ 위조에 취약 |
Elgamal | ◾ 디피-헬먼 알고리즘 확장 ◾ 이산대수의 어려움 이용 | 이산대수 | 매 암호화 시 다른 암호문 획득 → RSA에 비해 더 안전 | 가장 느림 |
DSA | 전자서명 알고리즘 표준 | 이산대수 | 간단한 구조 | ◾ 전자서명 전용 ◾ 암호화 키 교환 불가 |
RSA | 대표적 공개키 알고리즘 | 인수분해 | 여러 라이브러리 존재 | 컴퓨터 속도의 발전 → 키 길이 증가 |
Rabin | 매우 간단한 암호화 (한 번의 곱셈) | 인수분해 | 빠른 암호화 → 성능이 낮은 플랫폼에서 활용 | ◾ 선택 암호문 공격에 취약 ◾ quadratic residue modulo 관련 공격에 취약 |
ECC | ◾ 짧은 키로 높은 암호 강도 ◾ 무선환경에 적합 ex) PDA, 스마트 폰, 핸드폰 | 타원곡선 | ◾ 오버헤드 적음 ◾ 160 키 = RSA 1024 | 키 테이블(20KB) 필요 |
항목 | 대칭키 암호화 | 공개키 암호화 |
---|---|---|
키 관계 | 암호화 키 = 복호화 키 | 암호화 키 ≠ 복호화 키 |
안전한 키 길이 | 128Bit 이상 | 2048Bit 이상 |
구성 | 비밀키 | 공개키, 개인키 |
키 개수 | N(N-1)/2 | 2N(키 쌍으로는 N) |
대표적인 예 | DES, 3DES, AES | RSA, ECC |
제공 서비스 | 기밀성 | 기밀성, 부인방지, 인증 |
목적 | 데이터 암호화 | 대칭키 암호화 전달(키 분배용) |
단점 | ◾ 키 분배 어려움 ◾ 확장성 떨어짐 | 중간자 공격(PKI로 대응) |
암호화 속도 | 공개키(비대칭키)보다 빠름 | 대칭키보다 느림 |
키(key) 값을 해시 함수(Hash Function)에 대입시켜 계산한 후 나온 결과를 주소로 사용하여 값(value)에 접근할 수 있게 하는 방법
💡 해시(Hash)
임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수
암호화와는 다른 개념
암호화 O, 복호화 X
→ 복호화하지 않아도 되는 정보가 존재함 ex) 패스워드
분류 | 대표 알고리즘 | MD 길이 | 블록 길이 | 최대 메시지 길이 | 개발사 |
---|---|---|---|---|---|
MD5 | MD5 | 128bit | 512bit | 무한 | 로널드 라이베스트 |
RIPEMD | RIPEMD-160 | 160bit | 512bit | 2^64-1bit | |
SHA-1 | SHA-1 | 160bit | 512bit | 2^64-1bit | NSA |
SHA-2 | SHA-224 | 224bit | 512bit | 2^64-1bit | |
SHA-256 | 256bit | 512bit | 2^64-1bit | ||
SHA-384 | 384bit | 1024bit | 2^128-1bit | ||
SHA-512 | 512bit | 1024bit | 2^128-1bit |
SHA-3
항목 | 출력 크기 | 비율 = 블록 크기 | 용량 |
---|---|---|---|
SHA3-224(M) | 224 | 1152 | 448 |
SHA3-256(M) | 256 | 1088 | 512 |
SHA3-384(M) | 384 | 832 | 768 |
SHAKE128(M, d) | d | 1344 | 256 |
SHAKE256(M, d) | d | 832 | 12 |
📖 참고
- 암호기술의 정의
- [해시넷] 패딩
- [Wikipedia] 블록 암호 운용 방식
- [Wikipedia] 대칭 키 암호
- 암호학 - Public Key Cipher :: ElGamal
- [Wikipedia] 엘가말 암호
- [wikipedia] 라빈 암호체계
- 암호화 알고리즘 종류
- [IT위키] 암호화 알고리즘
- [나무위키] 암호학
- [해시넷] 비대칭키
- [해시넷] SHA3
- https://raonctf.com/essential/study/web/cryptography
- 남궁일주, 김재환, 성중안, 남궁영 공저(2020). 정보처리기사 필기 기본서(1판). 서울: 영진닷컴.