대칭키와 비대칭키란?
1. 대칭키
암호화에 사용되는 암호화 키와 복호화 키가 동일안 암호화 기법.
키를 전달, 관리하는데 어려움이 있음.
하지만 연산속도가 빠른 장점을 가지고 있음.
블록암호, 스트림 암호로 구분.
1.1. 블록 암호
평문을 고정된 크기의 블록단위로 암/복호화함.
암호키 크기에 따라 64~256비트 블록 크기로 연산수행함.
페이스탈 구조와 SPN 블록 으로 구분됨.
하나의 에러데이터가 '블록' 전체에 영향을 미침.
1.1.1. 페이스탈(Feistel)
입력되는 평문 블록을 좌,우 2개 블록으로 분할해서 진행.
페이스탈 구조 암호화로는 DES 가 있음.
1.1.2. SPN 블록 구조
평문 블록을 분할하지 않고 전체 블록을 적용하는 방식.
SPN 블록 구조 암호화로는 AES, ARIA 가 있음.
1.1.3. 암호 운용모드
암호화 하려는 정보가 블록의 길이보다 길 경우는 특정 운용보드가 사용됨.
CBC, ECB, OFB, CFB, CTR 암호 운용모드 사용 시 입력의 크기가 블록의 배수가 되어야 하지만
정확한 배수가 되지 못할때 암호화 전에 패딩 데이터를 추가하는 작업을 해야함.
1.2. 패딩이란
ECB, CBC모드와 같은 경우 입력의 크기가 블록의 배수가 되어야 하지만
정확한 배수가 되지 못할때 암호화 전에 패딩 데이터를 추가하는 작업을 해야함.
1.2.1. X923 패딩
FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 07
ANSIX923 패딩 문자열에서는 마지막 바이트를 총 패딩 바이트 수로 설정하고 나머지 바이트는 0으로 채우게 됨.
1.2.2. PKCS7 패딩
FF FF FF FF FF FF FF FF FF 07 07 07 07 07 07 07
PKCS #7 패딩 문자열은 바이트 시퀀스로 구성되어 있으며, 각각의 시퀀스는 추가된 패딩 바이트의 전체 수와 동일.
1.2.3. ISO10126 패딩
FF FF FF FF FF FF FF FF FF 7D 2A 75 EF F8 EF 07
ISO10126 패딩 문자열에서는 마지막 바이트를 총 패딩 바이트 수로 설정하고 나머지 바이트는 임의의 데이터로 채움.
1.3. 스트림 암호
데이터 흐름을 순차적으로 처리해가는 암호 알고리즘의 총칭.
암호화 방식은 평문과 키 스트림을 XOR 하여 생성함.
암호화 강도는 약함.
실시간 성이 중요하게 생각되는 음성, 영상 스트리밍 전송 및 무선 암호화 방식에 사용됨.
1비트가 왜곡되도 평문에서 '1비트'만 왜곡됨.
동기식 스트림 암호, 비동기식 스트림 암호화 구분.
1.3. 대칭키 키전달 문제점 극복
키교환방식은 Diffie-Hellman, SSL 프로토콜과 같이 공개키 암호에 기반한 방법,
Kerberos와 같이 중앙기관이 키교환을 도와주는 방식을 사용.
2. 공개키(비대칭키)
대칭키의 기 전달에 있어서 취약점을 해결하고자 만든 방식.
공개키 암호는 한쌍의 키가 존재.
하나는 특정 사람만이 가지는 개인키(비밀키).
다른 하나는 누구나 가질 수 있는 공개키.
개인키로 암호화 한 정보는 공개키로만 복호화 가능.
공개키로 암호화 한 정보는 그 쌍이 되는 개인키로만 복호화가 가능.
단점으로는 수학연산을 해서 대칭키에 비해 속도가 느림.
대표적으로 RSA 가 사용.
2.1. 대표적으로 많이 사용되는 비대칭 암호화 기술은?
2.1.1. PKI
공개키 암호화와 전자서명 기반이 되는 기술
암호화 : 평문을 공개키로 암호화, 개인키를 통해 복호화.
서명 : 평문을 개인키로 암호화, 공개키를 통해 복호화.
[전자 서명]
당사자가 보냈다는 것을 확인하는 절차로
1. 평문을 해쉬하고 해쉬 된 내용을 개인키로 암호화 함.
2. 이런 암호화 한 결과와 평문을 함께 받을 사람에게 전달.
3. 받은 사람은 공개키를 통해 암호문을 복호화 해서 해쉬값을 확인.
4. 같이 받은 평문을 해쉬해서 두개의 결과가 동일한지 확인.
5. 내용이 동일하면 보낸이가 정상이라고 서명을 확인하게 됨.
이러한 개인키, 공개키를 사용할 수 있는 환경을 구축하는것이 PKI 임.
그래서 등장하는것이 공인 인증서.
2.1.2. SSH (시큐어셸)
SSH Client 와 Server 간의 통신을 암호화 해주는 것입니다.
즉 Telnet 과는 다르게 데이터를 암호화 해서 주고받게 해주는 것입니다.
'보안' 카테고리의 다른 글
DEP(Data Execution Prevention) 이란? (0) | 2021.08.27 |
---|---|
ASLR 이란? (0) | 2021.08.27 |
OpenSSL를 이용한 암/복호화, 해쉬 (0) | 2021.02.23 |
해쉬 (HASH) (0) | 2021.02.23 |
보안 (0) | 2021.02.23 |