이번 학습 주제는 암호화 알고리즘입니다
먼저 대칭키 알고리즘들에 대해 알아보겠습니다
먼저 DES(Data Encryption Standard)는 IBM에서 개발한 대칭키 암호화 알고리즘으로
1977년 미국 표준국(NIST)에서 표준으로 채택하였으며
20년간 미국 표준 및 국제 표준으로 활용한 암호화 알고리즘입니다
64Bit 블록 단위 암호화를 수행하고 56Bit 키를 사용합니다
키가 56Bit라고 했지만 7Bit마다 Check Bit를 넣어 결론적으로 64Bit입니다
치환 암호(Substitution Cipher)와 전치 암호(Transposition Cipher)를
혼합한 혼합 암호(Product Cipher)를 이용하는데
내부에서 XOR, 자리바꿈, 순환이동, 치환 등을 사용하고 S-BOX를 제외한 나머지 연산은 순환입니다
과정을 살펴보면 입력 받은 64Bit를 전치할 순서가 들어있는 초기 순열을 이용해서 재배열하고
치환되어 나온 값은 키를 이용해 XOR 연산과 Festel 연산을 거쳐서 변환하고
역순열을 이용해 다시 재배열하는 라운드를 16번 반복합니다
다음으로 스위스에서 개발한 대칭키 알고리즘인 IDEA(International Data Encryption Algorithm)를 살펴보면
128Bit의 키를 사용해서 64Bit의 평문을 8라운드에 걸쳐서 64Bit 암호문으로 생성합니다
DES에 비해 2배 정도 빠르게 암호화를 수행한다고 하네요
16Bit단위로 연산이 이루어지며 안정성을 인정받아서 전자우편 보안을 위한 PGP 방식에 사용됩니다
다음으로 RC5(Ron's Code 5)는 1994년 미국 RSA 연구소의 리베스트(Rivest)가 개발한 알고리즘으로
알고리즘이 간단하여 빠르게 암호화하고 복호화할 수 있으며 DES보다 약 10배 정도 빠른 속도를 가집니다
다음으로 AES(Advanced Encryption Standard)는
DES를 대신하는 차세대 표준 암호화 알고리즘으로 NIST표준 알고리즘입니다
블록 길이는 128, 192, 256Bit의 3종류로 구성되지만 이론적으로 키의 크기에 제약은 없습니다
암/복호화가 빠르고 공격에 대해 안전하며 하드웨어 및 소프트웨어 구성이 편리한 특징이 있습니다
SEED는 KISA와 ETRI에서 개발하고 TTA와 ISO/IEC에서 국제 표준으로 제정된
128Bit 키 블록 단위, 16라운드로 메시지를 처리하는 알고리즘입니다
128Bit 평문을 64Bit씩 Lo, Ro 블록으로 나누고
F 함수는 64Bit Feistel 형태로 16라운드로 진행 후 재조합하여 128Bit 암호문을 출력합니다
이렇게 대칭키 알고리즘들을 간략하게 살펴보았는데요
이제 대칭키 외에 알고리즘을 살펴봐야겠죠?
그 전에 잠깐 암호 분석 방법의 종류를 학습하고 넘어가겠습니다
공격 | 설명 |
암호문 단독 공격 (COA:Ciphertext Only Attack) |
암호문으로부터 평문이나 암호키를 찾아내는 방법 통계적 성질과 문장의 특성 등을 추정하여 해독 공격자는 단지 암호문만을 가지고 공격 암호 해독자에게 가장 불리한 공격 |
기지 평문 공격 (KPA:Known Plaintext Attack) |
공격자가 약간의 평문에 대응하는 암호문을 가지고 있는 상태에서 나머지 암호문에 대한 공격을 하는 방법 이미 입수한 암호문의 관계를 이용하여 새로운 암호문을 해독하는 방법 암호문에 대응하는 일부 평문이 가용한 상황에서의 공격 선형 공격 |
선택 평문 공격 (CPA:Chosen Plaintext Attack) |
평문을 선택하면 대응되는 암호문을 얻을 수 있는 상황에서의 공격 공격자가 사용된 암호기에 접근할 수 있을 때 사용하는 공격 적당한 평문을 선택하여 그 평문에 대응하는 암호문을 얻을 수 있음 |
선택 암호문 공격 (CCA:Chosen Ciphertext Attack) |
암호문을 선택하면 대응되는 평문을 얻을 수 있는 상황에서의 공격 적당한 암호문을 선택하고 그에 대응하는 평문을 얻을 수 있음 |
이제 공개키 암호화 알고리즘에 대해 알아보겠습니다
먼저 최초의 공개키 암호화 알고리즘인 디피헬먼(Diffie-Hellman) 키 교환 알고리즘을 살펴보면
공개키는 1개의 정수와 1개의 소수로 통신 직전에 통신하고자 하는 상대방과 공유하도록 하고
다른 비밀키 전용의 숫자는 양쪽에서 각각 보유하도록 하여
이들의 공개키의 수치를 사용해서 공통 암호키용 수치를 산출하는 방식입니다
IPSEC에서 IKE(Inter Key Exchange)의 디폴트 키 교환 알고리즘으로 채택되었고
중간자 공격(MITM:Man-In-The-Middle)에 취약한 문제점을 가지고 있습니다
중간자 공격은 네트워크 상에서 송수신하는 내용을 도청하거나 변조하여 공격하는 방법을 말합니다
다음으로 RSA(Rivest, Shamir, Adelman)에 대해 알아보겠습니다
RSA는 1976년 공개키 암호 방식의 개념 등장 이후에
1978년 Rivest, Shamir, Adelman이 개발한 암호화방식입니다
대표적인 공개키 암호화 방식으로는 De-facto Standard(산업표준)이 있고
소인수분해의 어려움을 기반으로 안정성을 제공하며 암호화 및 디지털 서명 용도로 사용이 가능합니다
위의 그림은 RSA의 암복호화 과정을 간단히 그린 것인데
송신자는 수신자의 공개키로 암호화하고 수신자는 자신의 개인키로 복호화합니다
또 그림에서 송신자(A)의 개인키는 서명을 하는 것입니다
RSA의 안정성 확보를 위해서 소수 p, q가 거의 같은 크기의 소수여야하며
p-1, q-1은 큰 소수를 인수로 가지면서 최대 공약수는 작아야합니다
키의 길이는 2048Bit를 권장하고 있습니다
마지막으로 해시(Hash) 함수에 대해 학습하고 마치도록 하겠습니다
해시는 키가 없고 복호화가 불가능한 특징을 가지는 암호화 방식으로 일방향 암호 기술로
MD(Message Digest)는 무결성만 제공하는 메키니즘입니다
다양한 길이의 입력에 대해 고정된 길이의 출력으로 변환하는 함수인데
아래와 같은 조건이 필요합니다
조건 | 설명 |
압축 | 임의 길이의 평문을 고정된 길이의 출력 값으로 변환함 |
일방향 |
선이미지 회피성 메시지에서 해시값(Hash code)을 구하는 것은 쉽지만 반대는 불가능 |
효율성 | 메시지로부터 해시 값을 구하는데 많은 자원과 노력이 소요되지 않아야함 |
충돌 회피 | 다른 문장을 사용하였는데도 동일한 암호문이 나오는 현상 |
2차 선이미지 회피성 |
약한 충돌 회피성 |
참고로 리눅스에서 패스워드를 변경 시에 동일하게 변경해도
해시 값이 다르게 보이는 것은 Salt를 추가해서 생성하기 때문입니다
해시 함수로는 MD5, SHA, LSH 등이 있고
MD5(Message Digest Algorithm 5)은
메시지를 512Bit의 블록으로 나누고 128Bit를 출력하며
공개키 및 대칭키 알고리즘보다 계산시간이 적게 걸립니다
SHA(Secure Hash Algorithm)은
인터넷 뱅킹, 전자 서명, 메시지 인증 코드, 키 교환 알고리즘, 키 생성 알고리즘 등에 사용되며
MD4 해시 알고리즘 기반으로 만들어진 해시함수입니다
국내 TTA 표준으로 제정되었고 지적재산권에 대한 사용료 없이 사용이 가능한
해시 함수 알고리즘인 LSH는 SHA2와 SHA3에 비해서 2배 이상의 성능을 가지고 있습니다
그럼 여기서 마치도록 마겠습니다
그럼 이만-_-
'Security' 카테고리의 다른 글
[Security] 전자 우편(E-Mail) (0) | 2020.03.05 |
---|---|
[Security] FTP(File Transfer Protocol) (0) | 2020.03.05 |
[Security] 스트림(Stream)/블록(Block) 암호화 (0) | 2020.03.02 |
[Security] 암호화 개요 (0) | 2020.03.02 |
[Security] PMI(Privilege Management Infrastructure) (0) | 2020.02.26 |