[정보보안기사] 정보보안 일반 - (2) 암호학
본문 바로가기

[정보보안기사] 정보보안 일반 - (2) 암호학

액트 2019. 7. 4.

암호학


- 목차 - 

2. 암호학
    (1) 암호 알고리즘
        ① 암호 공격방식

        ② 암호 메시지에 대한 공격 유형
        ③ 암호 시스템 분류
       

        ④ 블록 암호시스템
        ⑤ 인수분해 기반 공개키 암호방식
        ⑥ 이산로그 기반 공개키 암호방식
    (2) 해쉬함수와 응용
        ① 해쉬 함수 일반

        ② 전용 해쉬 함수 별 특징
        ③ 메시지 인증 코드(MAC)
        ④ 전자서명
         은닉서명
        ⑥ 이중 서명


2. 암호학

    (1) 암호 알고리즘

        ① 암호 공격방식 

            ⓐ 수동적 공격(패시브)

            ⓑ 전송되는 파일 도청

            ⓒ 트래픽 분석

            ⓓ 능동적 공격(액티브)

            ⓔ 메시지 변조: 메시지 일부를 다른 메시지로 대체 하는 공격

            ⓕ 삽입공격: 정당한 송신자로 위장하여 메시지를 보냄

            ⓖ 삭제공격: 수신자에게 전송하는 메시지 일부를 공격자가 삭제

            ⓗ 재생공격: 통화하였던 내용을 도청하여 보관햇다가 나중에 재생해 공격

 

        ② 암호 메시지에 대한 공격 유형

            ⓐ 암호문 단독 공격(Ciphertext Only Attack/COA)

                ▶ 암호문으로부터 평문이나 암호키를 찾아내는 방법, 암호 해독자에게는 가장 불리한 공격

            ⓑ 알려진 평문 공격(Known Plaintext Attack/KPA)

                ▶ 이미 입수한 평문과 암호문의 관계를 이용하여 새로운 암호문을 해석하는 방법

            ⓒ 선택 평문 공격(Chosen Plaintext Attack/CPA)

                ▶ 평문을 선택하면 대응되는 암호문을 얻을 수 있는 사오항에서 공격하는 것

            ⓓ 선택 암호문 공격(Chosen Ciphertext Attack/CCA)

                ▶ 암호문을 선택하면 대응되는 평문을 얻을 수 있는 상황

 

        ③ 암호 시스템 분류

            Ⅰ. 대칭키 암호시스템

                ▶ 대칭키는 송신자와 수신자가 같은 키를 가지고 있다. 이 키를 통해 송신자가 평문을 암호화하여 암호문을 보내면 수신자는 가지고 있던 같은 키로 복호화하여 평문으로 만드는 원리

 

                (장점) 키 크기가 상대적으로 작고 시스템 개발 환경에 용이하고 비대칭키에 비해 암/복호화 속도가 빠르다

                (단점) 키 관리에 어려움이 있고 자주 키 교환을 해야 하는 불편함이 있다. 또한 디지털 서명 등의 기법에 적용하기와 안정성을 분석하기 어렵고 중재가 필요하다.                

                (종류) DES, 3DES, Blowfish, IDEA, RC4, RC5, RC6, AES, SEED(국내), ARIA(국내)

 

            Ⅱ. 공개키(비대칭키) 암호시스템

                ▶ 암호화와 복호화에 서로 다른 키가 사용된다. 송신자가 수신자의 공개키를 이용해 암호화하면 수신자는 자신의 개인키를 이용해 복호화하는 원리

 

                (장점) 키 분개가 용이하고 더 좋은 확장 가능성을 제공한다. 전자서명 및 사용자 인증에 사용한다.

                (단점) 고도의 수학적 연상을 이용하여 구현되므로 암호화 처리 시간이 길고 공개키 배포에 대한 신뢰성 문제 및 복잡한 공개키 관리 구조를 필요로 한다.

 

                (종류) RSA(소인수분해), Rabin(소인수분해), ECC(타원곡선), Schnorr(이산대수), Diffie-Hellman(이산대수), EL Gamal(이산대수) DSA(이산대수) KCDSA(이산대수/국내), Knapsack(국내)

 

            Ⅲ. 대칭키와 공개키의 비교

속성 대칭키 공개키
사용 시간 무한 50년 정도
사용 용도 일반데이터 암호화 키 교환, 전자서명
현재 표준 DES, 3DES, AES RSA, Diffie-Hellan, DSA
암호화, 복호화 표준 빠름 느림
적어도 두 사람 사이에 교환 한 사람에 의해 배포 관리
키 교환 교환하는 것은 어렵고 위험하다 전달이 용이
키 길이 56비트, 128비트(권장) 1024비트 사용(RSA), ECC는 172비트
기밀성, 인증, 무결성 가능 가능
부인방지 불가(3자 필요) 가능(전자서명)
공격 있음 있음

 

            Ⅳ. 스트림 암호시스템

                ▶ 대칭키 암호 시스템 구조로 한 번에 한 byte씩 암호화 한다. ex) RC4

                ▶ 난수열을 생성하여 입력, 평문 비트열을 bit 또는 byte 단위로 XOR하여 암호화

                (특징) 원타임 패드를 실용적으로 구현할 목적으로 개발되었고 긴주기와 높은 선형 복잡도가 요구된다. 블록 단위로 암호화 하는 것에 비해 비트 단위로 암호화하기 때문에 빠르다. 주로 LFSR을 이용한다.

 

            Ⅴ. 블록 암호시스템            

                ▶ 블록 암호시스템에 대한 내용은 아래에서 크게 다뤄집니다.

     

        ④ 블록 암호시스템        

            ▶ 대칭키 암호 시스템 구조로 고정된 크기의 블록으로 나누어 암호화

                ※ 혼도과 확산

                    (혼돈) 평문의 작은 변화가 암호문에 어떤 변화를 일으킬 것인지 예측할 수 없는 성질을 말한다(비선형)

                    (확산) 평문을 구성하는 각각의 비트들의 정보가 여러 개의 암호문 비트들에 분산되는 성질을 한다(선형)

            Ⅰ. Feistel구조와 SPN구조로 나뉜다.                

                ⓐ Feistel 구조

                    ▶ 평문 두 개를 블록으로 나누어 배타적 논리합과 스왑을 이용한 라운드를 가진다.

                    ▶ 길이가 길어지면 암호화, 복호화 속도가 느려지고 '64bit' 블록 크기가 이 전치와 치환 두가지 조화시키는 합리적인 크기이다.

                    ▶ 전형적인 라운드 수는 16라운드를 거친다

                        ex) DES, LoKl, CAST, Blowfish, MISTY, RC5, RC6

                    (특징) 3라운드 이상이며 짝수 라운드로 구성되고 라운드 함수와 관계없이 역 변환이 가능하다. 두 번의 수행으로 블록간의 완전한 확산이 이루워지고 알고리즘 속도가 빠르다. 하드웨어 및 소프트웨어 구현이 용이하다.

 

                ⓑ SPN 구조

                    ▶ 라운드 함수가 역변환이 되어야 한다는 제약이 있찌만 더 많은 병렬성을 제공하기 때문에 고속화에 부응하는 방식이다.

                    ▶ SPN은 입력을 여러 개의 소 블록으로 나누어 소블록을 S-box로 입력하여 대치시키고 S-box의 출력을 P-box로 전치하는 과정을 반복한다. 

                        ex) SAFER, IDEA, SHARK, Square, Rijindael, Serpent                

 

            Ⅱ. 블록 암호 운영모드

                ▶ 평문의 길이가 블록의 크기보다 클 경우에 대한 문제점을 해결하기 위해 제시된 암호화 모드

                ⓐ ECB 모드 (Electronic Code Book)

                    ▶ 평문을 블록단위로 잘라서 바로 암호화하는 가장 단순한 방식

                    (장점) 암호화 블록에서 발생한 오류가 다음 블록으로 전파되지 않는다

                    (단점) 두 평문 블록의 내용이 동일할 경우 생성된 암호화 블록의 내용 또한 동일하기 때문에 반복 공격에 취약하고 블록크기보다 작은 데이터에는 적용할 수 없다

 

                ⓑ CBC 모드 (Cipher Block Chaining)

                    ▶ 처음에 임의의 값인 초기화 벡터와 평문 블록을 XOR연산하여 음호화 블록을 생성. 

                    (장점) 평문의 길이가 긴 경우에 효과적

                    (단점) 전송 중인 암호문 블록 한 개가 손상되면 이를 복화할 경우 해당 평문 블록과 다음 단계 평문 블록에 영향을 준다

 

                ⓒ  CFB 모드 (Cipher Feed Back)

                    ▶ 평문 블록을 직접 암호화하는 것이 아니라 초기화 벡터를 블록 암호화해서 생성한 키 스트림 값을 평문 블록과 XOR연산해서 암호문 블록을 만드는 방식

                    (장점) 블록의 크기를 일정하게 유지하기 위한 패딩 작업이 필요 없다. 블록 크기보다 작은 데이터에도 적용할 수 있다

                    (단점) 암호문 블록의 재전송 공격에 취약함

 

                ⓓ OFB(Output Feed Back)

                    ▶ 암호 알고리즘의 출력(키 스트림 값)이 다시 암호 알고리즘의 입력이 됨

                    (장점) 키 스트림 값을 미리 생성하는 것이 가능해서 암호화 및 OXR 연산속도가 빠르다. 오류가 생긴 경우에는 대응하는 평문 블록에만 영향을 미친다. 프로그램으로 구현하기도 쉽다.

                ⓔ  CTR(CounTeR)

                    ▶ 랜덤하게 생성된 Nonce 값과 블록 암호화를 할 때마다 1씩 증가하는 카운터 값을 합쳐서 만든 초기값을 블록 암호화하여 생성한 키 스트림 값을 평문 블록과 XOR 연산하여 암호문 블록을 만드는 방식

 

            Ⅲ. 블록 암호 시스템의 종류

                 ⓐ DES (Data Encryption Standard)

                    ▶ 대칭 블록암호로서 평문의 각 블록의 길이가 64비트이고 키가 64비트이며 암호문이 64비트인 암호

                    ▶ 64비트의 평문이 16라운드의 Feistel 연산을 거쳐 64비트의 암호문이 나옴

                    (특징) 64비트 암호문이고 키의 길이가 56비트이고 8비트는 Parity bit 이다.

                            16라운드 반복되고 복호화는 암호화 과정과 같고 키의 적용만 거꾸로 한다

                            Feistel 구조를 따른다

 

                 ⓑ IDEA (International Data Encryption Algorithm)

                    ▶ 64비트 평문에 대하여 동작하고 키의 길이가 128비트이다 

                    ▶ 8라운드 암호 방식을 적용하고 암호화와 복호화에 동일한 알고리즘을 사용한다

                    ▶ 상이한 대수로부터 3가지 연산을 온합하여 사용하고 H/W, S/W 로 쉽게 구현 가능하다

                    ▶ 16비트 단위 연산을 사용하여 16비트 프로세스에 구현이 용이하도록 설계되었고 8라운드 구현으로 이론상 DES보다 2배 빠르다

 

                 ⓒ SEED

                    ▶ 128비트 블록암호의 표준안, Feistel 구조로 이루워져 있고 전체 구조는 블록 길이만 다를 뿐 DES의 구조와 같다. 

 

                 ⓓ AES (Advance Encryption Standart)

                    ▶ 기존의 DES를 대신할 수 있는 새로운 암호 알고리즘으로 AES를 공모

 

            Ⅳ. 블록 암호공격 

                ⓐ 차분 공격(Differential Cryptanalysis)

                    ▶ 두 개의 평문 블록과 이에 대응되는 암호문 블록들의 비트들의 차이를 이용해 키를 찾음

                ⓑ 선형 공격(Linear Cryptanalysis)

                    ▶ 알고리즘 내부의 비선형 구조를 선형 화해서 키를 찾음

                ⓒ 전수 공격(Exhaustive Key Search)

                    ▶ 암호화할 때의 모든 경우에 대하여 조사하는 방법 / 일반적으론 불가능(경우의 수가적을 때만 가능)

                ⓓ 통계적 분석(Statistical Analysis)

                    ▶ 많이 사용되는 단어의 빈도의 통계적 수치를 가지고 해독

                ⓔ 수학적 분석(Mathematical Analysis)

                    ▶ 통계적 방법을 포함해, 수학적 이론을 이용해 해독



        ⑤ 인수분해 기반 공개키 암호방식

            ▶ 소인수분해의 어려움을 이용한 공개키 암호 알고리즘

            ex) RSA, Rabin

 

        ⑥ 이산로그 기반 공개키 암호방식 

            ▶ 이산대수 문제를 이용한 암호화 방식

            ex) El Gamal, Diffie-Hellman (중간관리를 거치지 않고 서로의 비밀키를 전달할 수 있는 대표적인 방법)

                 ECC(Elliptic Curve Cryptography ; 타원곡선 암호) - 타원곡선상의 이산대수 문제를 제안한 암호시스템

 

 


    (2) 해쉬함수와 응용 

       ① 해쉬 함수 일반 

            Ⅰ. 개념 - 임의의 길이를 입력으로 정해진 크기의 메시지 Digest를 만드는 일방향 함수

            Ⅱ. 특징

                 - MAC과 달리 키를 사용하지 않는다

                 - 해쉬함수 자체는 비밀이 아니기 때문에 해쉬 값을 포함한 암호가 필요하다

                 - 에러 탐색 능력을 제공하고 메시지의 한 비트 변화가 해쉬코드의 모든 비트들의 변화를 가져온다.

            Ⅲ. 요구사항

                 - 압축 : 일정한 크기의 이진 문자열로 변환

                 - 계산 용이성 : x가 주어지면 H(x)의 계산이 쉬워야 함

                 - 일 방향성(One-wayness) : 해시값 y만 주어 졌을 때, y = H(x)에서 x를 찾는 게 어려워야 함

                 - 약한 충돌 회피성 : x가 주어졌을 때, H(x) = H(x')를 만족하는 x'를 찾는게 어려워야 함

                 - 강한 충돌회피성 : H(x) = H(x')를 만족하는 x와 x'를 찾는 건 어려워야 함

 

        ② 전용 해쉬 함수 별 특징 

             MD5 / SHA              

http://en.wikipedia.org/wiki/Secure_Hash_Algorithm

        ③ 메시지 인증 코드(MAC ; Message Authentication Code)

            ▶ 암호학적 점검 값이라는 MAC을 메시지에 추가하게 된다.

            ▶ MAC의 목적은 원문메시지가 변하지 않았다는 것을 증명한다.

             MAC Algorithm으로 DES나 해쉬 함수를 씀

 

        ④ 전자서명 

            ▶ 메시지 인증 + 사용자 인증


         은닉서명 (Blind Signature)

            ▶ 사용자 A가, 서명자 B에게로부터 자신의 메시지를 보여주지 않고 서명을 얻는 방법

             메시지의 비밀성을 지키면서, 타인의 인증을 받고자 하는 경우에 주로 사용

 

        ⑥ 이중 서명 (Dual Signature) 

            ▶ 두번 서명함. 보통 고객이 주문할 때 쓰임(영수증 2개 겹쳐져 있는거 보면 됨)

 


[ 출처 ]

https://kit2013.tistory.com/213

의 글을 토대로 보완하고 수정한 글입니다.

댓글