본문 바로가기

대칭키/공개키 알고리즘의 정의및 소개.

정보보호 by 낼스 2019. 7. 19.

* 암호학이란?
    암호시스템
    대칭키 암호시스템
    공개키 암호시스템
    해쉬 알고리즘
    암호 프로토콜
    키관리 및 인증
    전자서명
                          암호기술

        암호화기술                      암호프로토콜기술

    대칭키 암호 알고리즘                기본암호알고리즘
       *불럭암호알고리즘                   *개인식별 및 인증
       *스트림암호알고리즘                 *전자서명
    공개키암호알고리즘                  발전된 암호 프로토콜
                                           * 전자화폐
                                           * 전자결재
                                           * 전자선거

    M   : 평문        평문    --->    암호/복호알고리즘   <--- 암호문
    C   : 암호문     Dk(C) =M <---                        ---> Ek(M)=C
    Dk  : 암호키
    Ek  : 복호키

    ============================================================
    |     대칭키                |           공개키              |
    ============================================================
    |   관용키(CONVENTIONAL)    |     공중키(PUBLIC KEY)        |
    |   비밀키(Secret-key)      |     비대칭키(Asymmetric-key)  |
    |   대칭키(Symmetric-key)   |                               |
    |   단일키(Single-key)      |                               |
    |                           |     암호화키 = 복호화키       |
    |   암호화키 = 복호화키     |                               |
    |    DES , SKIPJACK , IDEA  |     RSA , ElGamal             |
    |    SEED , AES             |                               |
    =============================================================

1) 블럭 암호 알고리즘
    고정된 크기의 입력 블럭 (수십, 수백, 수천 바이트 단위)을 대칭키를 사용하여서 암호화한 후
    출력 때도 고정된 크기의 블럭으로 내보냄. 복호화과정은 암호화 과의 역순으로 진행됨. 대칭키이므로 암호화과정 때
    사용된 똑같은 키가 복호화과정 때도 사용됨

    . 대표적인 블럭암호화 알고리즘:
        DES (Data Encryption Standard)
        Triple-DES
        Skipjack
        IDEA ( International Data Encryption     Algorithm )
        FEAL ( Fast          Data Encipherment   Algorithm )
        MISTY

2) 대칭키 암호 시스템
대칭키 암호 알고리즘은 비밀키 암호 알고리즘 혹은 단일키 암호 알고리즘이라고도 하며 송수신자가
    동일한 키에 의하여 암호화 및 복호화 과정을 수행 한다.
    대칭키 암호알고리즘은 변환하는 방법에 따라서 블럭 암호 알고리즘과 스트림 암호 알고리즘으로 구분된다.

* 대칭키의 특징
    . 대칭키는 역사가 깊어 이미 존재하는 많은 정보기술과 상호운용이 쉽고 데이터 처리량도 크다.

    . 암호화 키의 크기 (비트수)가 공개키 암호 시스템 보다 상대적으로 적어서
      시간단축 등 효율성 있는 암호시스템을 구축할 수 있다.

    . 알고리즘 내부는 간단한 치환(Transposition)과 순열의 조합이어서 시스템  환경에 맞는
      알고리즘을 쉽게 만들어서 사용할 수가 있다

    . 단점 : 모든 사람들이 동일한 키를 공유해야 하므로 많은 사람들끼리 정보 공유 시
             키 관리가 매우 큰 문제가 된다.

* DES 암호화 알고리즘
    . 총 16라운드(Round)가 반복된다. 각 라운드의 Input은 라로전 라운드의 Output을 사용한다.
    . 각 라운드내의 프로세스는 모두 동일하다.
      각 라운드내에선 전치(Transposition 또는 Permutation)과 대치(Substitution)의
      과정을 거친 평문과 48비트 키가 섞여서 암호문을 생성한다.
    . 초기 평문 입력은 64비트 불럭으로 들어온다 (즉 8문자 단위. 문자 한 개는 8비트로 나타냄).
      64비는 32비트의 크기로 반으로 나누어져 좌우(L1, L2)로 분리되어 입력된다.

    . DES키는 0과 127사이의 8개의 십진수를 난수발생기로 무작위 추출한 후 2진수로 변환된다.
      각 십진수는 8비트의 2진수로 구성된다.

* DES의 라운드Output
    LE1=R0
    RE1=L0 XOR (R0,K1)

* Skipjack
. 알고리즘 내용은 철저하게 비밀로 되어 있음
. 80비트 키 크기와 32라운드 암호방식 채택.

* IDEA
    . IDEA(International Data Encryption Algorithm)는 128비트 키 사이즈와 8라운드 암호방식을 채택
. 3가지 Operation을 사용: XOR, Addition Modula 216, Addition   Modula 216+1
. 16비트 단위의 연산을 사용하여 16비트 프로세스에 적용이 용이
. 안전성이 뛰어나 전자우편 보안도구로 널리 사용되어지는 PGP에서 사용되고 있으며 유럽에선 표준으로 채택됨

================================================================================================
2) 스트림 암호 알고리즘
    블럭 암호시스템에서는 입력되는 평문이나 암호문 등이 모두 블럭으로 처리된다.
    그러나 스트림 암호 알고리즘에서는
    이진수(Binary)평문과 이진수키의 수열을 XOR를 사용하여 비트단위(bit-by-bit)로 이진 연산하여 암호화 한다.

* 스트림 암호시스템의 특징
    . 어떤 키 이진 수열을 발생하여 평문과 결합시키느냐가 안전도에 직 접적인 영향을 줌

    . 키생성에 따른 분류

        - 주기적암호 시스템   : 키 스트림이 어떤 주기를 가지고 반복됨

        - 비주기적암호 시스템 : 키가 반복없이 표현되는 1회용패드(One- time pad).

    . 평문과 키스트림관계에 따른 분류

        - 동기식 스트림암호시스템   : 암호문을 복문화하여 평문을 찾을 때 키 스트림과 암호문 사이에 동기가 필요함.
                                      이 때 키 스트림이 평문과 관계없이 생성되는 것으로 암호문에 들어 있는 키 스트림과 암호문의
                                      독립성으로 인하여  인가 이외의 불법 사용자애게 정보유출 가능 성이 적다.

        - 비동기식 스트림암호시스템 : 키 스트림이 평문 또는 암호문으로 부터 함수관계를 갖는다.
                                      전송 중 암호문의 비트가 손실 또는 변경 되더라도 그 오류의 전파가 무한대로 이어지는 것이
                                      아니라 어느 선에서 끊어지며 오류 정적 기능 포함이 가능하다. 그러나 암호문과 키스트림의
                                      종속 때문에 해독 가능성이 존재하는 단점이 있다.
* 공개키 암호 시스템
    . 암호화키와 복호화키가 서로 다르다. 즉 하나를 알더라도 그에 대칭되는 키를 알기 어려운 암호 시스템이다

    . 키 생성 알고리즘을 통해 2 개의 키를 생성하여 그 중 하나를 전화번호부에에 전화번호를 공개하듯이
      공개(Public)하고, 나머지 하나를 비밀키(Private)키로 자신에게 오는 메시지를 해독하기 위해서 자신이 보관하고 쓴다.
      큰 네트웍상에서 대칭키 암호 시스템 보다는 훨씬 적은 수의 키로도 유지될 수 있다는 장점이 있다.

    . 전자서명에서도 효율적이고 간단한 시스템을 구축 가능하게 해준다

    . 수학적으로 정확한 조건이 주어지지 않으면 해독이 어렵다

    . 암호화를 위한 키의 크기가 크기 때문에 컴퓨팅 수행 능력이 떨어지는 단점이 있다.

* 대표적인 공개키 알고리즘:
    RSA (Ron Rivest, Adi Shamir, Len Adleman)
    ElGamal
    Merkle-Hellman
    McEliece
    ECC(Elliptic Curve Cryptography)

* 공개키 vs. 대칭키
    --------------------------------------------------------------------------
    | 구분 |      대칭키 암호시스템     |      공개키 암호시스템              |
    |------|----------------------------|-------------------------------------|
    | 장점 |  -암호화/복호화 속도 빠름  |  - 키의 분배가 용이함               |
    |      |  -키의 길이가 짧음         |  - 사용자의 증가에 따라 관리해야할  |
    |      |                            |    키의 개수가 상대적으로 많음      |
    |      |                            |  - 키 변화의 빈도가 적음            |
    |      |                            |  - 응용성 뛰어남                    |
    |------|----------------------------|-------------------------------------|
    | 단점 |  - 키의 분배가 용이        |  -암호화/복호화 속도가 느림         |
    |      |  - 사용자의 증가에 따른    |  -키의 길이가 길다                  |
    |      |    키관리가 복잡해짐       |                                     |
    |      |  - 키 변화의 빈도가 많음   |                                     |
    |      |  - 응용성이 떨어짐         |                                     |
    --------------------------------------------------------------------------

1) RSA 암호 시스템
    . 두 소수(Prime Number)의 곱으로 나온 값을 인수분해 하기가 어렵다는
      아이디어에서 나온 암호 알고리즘이다.
            n = p x q (p,q: 소수)

        * n을 공개함. n을 알고서 p와 q를 인수분해서 구한다는 것은 매우 어려움.
        * n=2의1024승 자리수가 많이 사용되어짐. 해킹에 안전.

- RSA에선 모듈러 (modular)연산이 많이 사용되어짐:
        m mod n = 결과가 m을 n으로 나눈 나머지 값.
            ex) 13 mod 4 = 1


* RSA 암호 예제
    숫자 ’19’를 암호화(Encryption)하고 다시 복호화(Decryption)하여 보아라.
    Public Key=(119,5)   Private Key=(119,77) 이 이미 생성되어졌다고 가정한다.

* RSA 암호 알고리즘
    Private key(개인이 소유) = (n,d)
    Public  key(공개함     ) = (n,e)
    Encryption of a character Mi        ::> Ci = Mie (mod n)
    Decryption of a cipher character Ci ::> Mi = Cid (mod n)
================================================================================================
3) ElGamal 암호 시스템
- 이산대수 (Discrete Algorithm)을 이용한 암호알고리즘
- 주로 전자서명 (Digital Signature)용으로 사용됨
- 전자서명은 보낸사람의 고유성과 인정을 받기 위해서
      전자문서에 서명하는 것이다. 전자서명은 종래의 인감도장
      또는 서명(Sign)과 기능을 대신 하기 위해서 쓰인다.
- ElGamal 알고리즘에서는  개인키(Private Key)와 공개키
      (Public Key)로 전자서명을 만들고 전자서명을 받을 상대방에 넘겨줄 키도 만들어 낸다

* ElGamal 전자서명 알고리즘
    A가 송신자. B가 수신자일때.
    =========================================================================================================
                A (Sender)                                          B (Receiver)
    =========================================================================================================
    | 1. 0 ~ p-1 사이에서 정수 x와 g를 무작위로 선택
  |    * p= 적당한 소수값
    =========================================================================================================
    | 2. y=g의x승 mod p 를 계산한다
|       . A,B의 공개키 = (p,g,y)
|     . A의 개인키 = (x)
    =========================================================================================================
    | 3. 최대공약수 gcd(k,p-1)=1를 만족 하는 임의의 정수
    |  k를 무작위로 (0,p-1)구간에서 추출한다.
    =========================================================================================================
    | 4. 메세지압축을 위해서 Hash 알고리즘을 적용한다:
    |   h(m)
    =========================================================================================================
    | 5. r = g의k승 mod p
    |    s = k의-1승 (h(m)-xr)mod (p-1) ::> 전자 서명
    |    을 각각 계산한다.
    =========================================================================================================
    | 6. (r,s)를 전달  (r,s)  :::::::::::::::::::::::::::::::::::::> (r,s)=B의 개인키가 됨
    =========================================================================================================
    |                                                              7. 메시지 m에 대한 A의 사인확인을 위해서
    |                                                                A로부터 받은 (r,s) 및 A의 공중키 (p,g,y)를
    |                                                                가지고 다음 등식이 성립하면 인증이 성립됨.
    |                                                                v1 = y의r승r의s승mod p
    |                                                                v2 = g의h(m)승 mod p
    |                                                                If v1=v2 ::> the signature is accepted
    =========================================================================================================

================================================================================================
3. ECC (Elliptic Curve Cryptography) 타원곡선 암호 시스템
    지금까지 공개키 암호알고리즘은 소수 p로 나눈 나머지를 구하는 모듈러 연산에 의지했다
    그러나 그것이 암호화의 이산대수문제에 대한 유일한 수학적 해결책은 아님을
    1985년에 Neil Koblitz와 Victor Miller가 ECC이론으로 증명
    타원 곡선상 놓여있는
    임의의 두 점 P, Q 사이에 Q=xP 방정식의 값 x를 풀기위해서 현재까지 어떤 해도 존재하지
    않는다는 아이디어에서 ECC가 나왔음

    다음과 같은 타원 방정식은 적당한 정수 a, b에 의해서 정의되어졌으며 방정식의 해는 (x, y)의 집합이다:
        Y의2=X의3+aX+b (mod p)

    만약 어떤 점 P=(xP,yP)가 위의 타원곡선상 어떤 점에 있다는 것은 위의 방정식을 만족시킨다는 뜻이고
    위의 타원 곡선상 또 다른 점 Q=(xQ, xP)와 점 P 사이 관계를 다음과 같은 방정식:
        Q=xP
    에서 x를 구하는 것이 타원곡선 문제를 푸는 것이다.
    그러나 현재 까지 이를 푸는 해법은 아직 없다.

* 해쉬알고리즘이란?
    . 해쉬알고리즘의 목적은 문서 위조 방지 또는 압축 효과를 노리는데에 있다.
    . 임의의 유한길이의 입력 값을 해쉬함수를 통해서 고정된 크기의 해석
      불가능한 유한의  길이의 값으로 출력하는 것이다.
      이때 출력 값을 해쉬값 또는 메시지 다이제스트 (Message Digest)라 부른다

    . 일방행 함수 (One-way) f(x)=0에서 역으로 x를 구하는 것이 매우  어렵다는 사실에서
      그 아이디어를 얻어서 해쉬 알고리즘에 적용

    . 불럭암호 알고리즘 또는 모듈러 연산을 이용한 알고리즘을 사용한 해쉬알고리즘은
      속도가 매우 느리기 때문에 대부분 전용 해쉬 알고리즘을 사용

    . 그 자체가 프로코콜은 아니지만 일방향 함수는 대부분 보안 프로토콜

    . 구축, 특히 전자서명 프로토콜 구축에 있어서 기초가 된다.

    . 해쉬 알고리즘은 대칭키, 공개키 알고리즘등과 함께 중요한 부분이다.

* 해쉬알고리즘의 3 대 조건

1. 해쉬값을 이용해 원래의 입력값 추정이 불가능해야 한다.

2. 입력값과 해당 해쉬값이 있을 때 이 해쉬값에 해당하는 또 다른 입력값을 구하는 것은 불가능해야 한다

3. 2 개의 서로 다른 입력값을 가지고 똑같은 결과를 가져오는 해쉬값이 나와서는 안된다

* 대표적인 해쉬알고리즘
    =====================================================
    | 해쉬알고리즘  |  해쉬값의 크기 | 입력값 | 라운드수 |
    |===============|================|========|==========|
    | MD4           |     128        |  512   |    3     |
    | MD5           |     128        |  512   |    4     |
    | RIPEMD-128    |     128        |  512   |    5     |
    | RIPEMD-160    |     160        |  512   |    5     |
    | HAVAL         |     128 ~ 258  |  1024  |    3~5   |
    | SHA-1         |     160        |  512   |    4     |
    =====================================================
================================================================================================

* 암호학이란?
    암호시스템
    대칭키 암호시스템
    공개키 암호시스템
    해쉬 알고리즘
    암호 프로토콜
    키관리 및 인증
    전자서명
                          암호기술

        암호화기술                      암호프로토콜기술

    대칭키 암호 알고리즘                기본암호알고리즘
       *불럭암호알고리즘                   *개인식별 및 인증
       *스트림암호알고리즘                 *전자서명
    공개키암호알고리즘                  발전된 암호 프로토콜
                                           * 전자화폐
                                           * 전자결재
                                           * 전자선거

    M   : 평문        평문    --->    암호/복호알고리즘   <--- 암호문
    C   : 암호문     Dk(C) =M <---                        ---> Ek(M)=C
    Dk  : 암호키
    Ek  : 복호키

    ============================================================
    |     대칭키                |           공개키              |
    ============================================================
    |   관용키(CONVENTIONAL)    |     공중키(PUBLIC KEY)        |
    |   비밀키(Secret-key)      |     비대칭키(Asymmetric-key)  |
    |   대칭키(Symmetric-key)   |                               |
    |   단일키(Single-key)      |                               |
    |                           |     암호화키 = 복호화키       |
    |   암호화키 = 복호화키     |                               |
    |    DES , SKIPJACK , IDEA  |     RSA , ElGamal             |
    |    SEED , AES             |                               |
    =============================================================

1) 블럭 암호 알고리즘
    고정된 크기의 입력 블럭 (수십, 수백, 수천 바이트 단위)을 대칭키를 사용하여서 암호화한 후
    출력 때도 고정된 크기의 블럭으로 내보냄. 복호화과정은 암호화 과의 역순으로 진행됨. 대칭키이므로 암호화과정 때
    사용된 똑같은 키가 복호화과정 때도 사용됨

    . 대표적인 블럭암호화 알고리즘:
        DES (Data Encryption Standard)
        Triple-DES
        Skipjack
        IDEA ( International Data Encryption     Algorithm )
        FEAL ( Fast          Data Encipherment   Algorithm )
        MISTY

2) 대칭키 암호 시스템
대칭키 암호 알고리즘은 비밀키 암호 알고리즘 혹은 단일키 암호 알고리즘이라고도 하며 송수신자가
    동일한 키에 의하여 암호화 및 복호화 과정을 수행 한다.
    대칭키 암호알고리즘은 변환하는 방법에 따라서 블럭 암호 알고리즘과 스트림 암호 알고리즘으로 구분된다.

* 대칭키의 특징
    . 대칭키는 역사가 깊어 이미 존재하는 많은 정보기술과 상호운용이 쉽고 데이터 처리량도 크다.

    . 암호화 키의 크기 (비트수)가 공개키 암호 시스템 보다 상대적으로 적어서
      시간단축 등 효율성 있는 암호시스템을 구축할 수 있다.

    . 알고리즘 내부는 간단한 치환(Transposition)과 순열의 조합이어서 시스템  환경에 맞는
      알고리즘을 쉽게 만들어서 사용할 수가 있다

    . 단점 : 모든 사람들이 동일한 키를 공유해야 하므로 많은 사람들끼리 정보 공유 시
             키 관리가 매우 큰 문제가 된다.

* DES 암호화 알고리즘
    . 총 16라운드(Round)가 반복된다. 각 라운드의 Input은 라로전 라운드의 Output을 사용한다.
    . 각 라운드내의 프로세스는 모두 동일하다.
      각 라운드내에선 전치(Transposition 또는 Permutation)과 대치(Substitution)의
      과정을 거친 평문과 48비트 키가 섞여서 암호문을 생성한다.
    . 초기 평문 입력은 64비트 불럭으로 들어온다 (즉 8문자 단위. 문자 한 개는 8비트로 나타냄).
      64비는 32비트의 크기로 반으로 나누어져 좌우(L1, L2)로 분리되어 입력된다.

    . DES키는 0과 127사이의 8개의 십진수를 난수발생기로 무작위 추출한 후 2진수로 변환된다.
      각 십진수는 8비트의 2진수로 구성된다.

* DES의 라운드Output
    LE1=R0
    RE1=L0 XOR (R0,K1)

* Skipjack
. 알고리즘 내용은 철저하게 비밀로 되어 있음
. 80비트 키 크기와 32라운드 암호방식 채택.

* IDEA
    . IDEA(International Data Encryption Algorithm)는 128비트 키 사이즈와 8라운드 암호방식을 채택
. 3가지 Operation을 사용: XOR, Addition Modula 216, Addition   Modula 216+1
. 16비트 단위의 연산을 사용하여 16비트 프로세스에 적용이 용이
. 안전성이 뛰어나 전자우편 보안도구로 널리 사용되어지는 PGP에서 사용되고 있으며 유럽에선 표준으로 채택됨

================================================================================================
2) 스트림 암호 알고리즘
    블럭 암호시스템에서는 입력되는 평문이나 암호문 등이 모두 블럭으로 처리된다.
    그러나 스트림 암호 알고리즘에서는
    이진수(Binary)평문과 이진수키의 수열을 XOR를 사용하여 비트단위(bit-by-bit)로 이진 연산하여 암호화 한다.

* 스트림 암호시스템의 특징
    . 어떤 키 이진 수열을 발생하여 평문과 결합시키느냐가 안전도에 직 접적인 영향을 줌

    . 키생성에 따른 분류

        - 주기적암호 시스템   : 키 스트림이 어떤 주기를 가지고 반복됨

        - 비주기적암호 시스템 : 키가 반복없이 표현되는 1회용패드(One- time pad).

    . 평문과 키스트림관계에 따른 분류

        - 동기식 스트림암호시스템   : 암호문을 복문화하여 평문을 찾을 때 키 스트림과 암호문 사이에 동기가 필요함.
                                      이 때 키 스트림이 평문과 관계없이 생성되는 것으로 암호문에 들어 있는 키 스트림과 암호문의
                                      독립성으로 인하여  인가 이외의 불법 사용자애게 정보유출 가능 성이 적다.

        - 비동기식 스트림암호시스템 : 키 스트림이 평문 또는 암호문으로 부터 함수관계를 갖는다.
                                      전송 중 암호문의 비트가 손실 또는 변경 되더라도 그 오류의 전파가 무한대로 이어지는 것이
                                      아니라 어느 선에서 끊어지며 오류 정적 기능 포함이 가능하다. 그러나 암호문과 키스트림의
                                      종속 때문에 해독 가능성이 존재하는 단점이 있다.
* 공개키 암호 시스템
    . 암호화키와 복호화키가 서로 다르다. 즉 하나를 알더라도 그에 대칭되는 키를 알기 어려운 암호 시스템이다

    . 키 생성 알고리즘을 통해 2 개의 키를 생성하여 그 중 하나를 전화번호부에에 전화번호를 공개하듯이
      공개(Public)하고, 나머지 하나를 비밀키(Private)키로 자신에게 오는 메시지를 해독하기 위해서 자신이 보관하고 쓴다.
      큰 네트웍상에서 대칭키 암호 시스템 보다는 훨씬 적은 수의 키로도 유지될 수 있다는 장점이 있다.

    . 전자서명에서도 효율적이고 간단한 시스템을 구축 가능하게 해준다

    . 수학적으로 정확한 조건이 주어지지 않으면 해독이 어렵다

    . 암호화를 위한 키의 크기가 크기 때문에 컴퓨팅 수행 능력이 떨어지는 단점이 있다.

* 대표적인 공개키 알고리즘:
    RSA (Ron Rivest, Adi Shamir, Len Adleman)
    ElGamal
    Merkle-Hellman
    McEliece
    ECC(Elliptic Curve Cryptography)

* 공개키 vs. 대칭키
    --------------------------------------------------------------------------
    | 구분 |      대칭키 암호시스템     |      공개키 암호시스템              |
    |------|----------------------------|-------------------------------------|
    | 장점 |  -암호화/복호화 속도 빠름  |  - 키의 분배가 용이함               |
    |      |  -키의 길이가 짧음         |  - 사용자의 증가에 따라 관리해야할  |
    |      |                            |    키의 개수가 상대적으로 많음      |
    |      |                            |  - 키 변화의 빈도가 적음            |
    |      |                            |  - 응용성 뛰어남                    |
    |------|----------------------------|-------------------------------------|
    | 단점 |  - 키의 분배가 용이        |  -암호화/복호화 속도가 느림         |
    |      |  - 사용자의 증가에 따른    |  -키의 길이가 길다                  |
    |      |    키관리가 복잡해짐       |                                     |
    |      |  - 키 변화의 빈도가 많음   |                                     |
    |      |  - 응용성이 떨어짐         |                                     |
    --------------------------------------------------------------------------

1) RSA 암호 시스템
    . 두 소수(Prime Number)의 곱으로 나온 값을 인수분해 하기가 어렵다는
      아이디어에서 나온 암호 알고리즘이다.
            n = p x q (p,q: 소수)

        * n을 공개함. n을 알고서 p와 q를 인수분해서 구한다는 것은 매우 어려움.
        * n=2의1024승 자리수가 많이 사용되어짐. 해킹에 안전.

- RSA에선 모듈러 (modular)연산이 많이 사용되어짐:
        m mod n = 결과가 m을 n으로 나눈 나머지 값.
            ex) 13 mod 4 = 1


* RSA 암호 예제
    숫자 ’19’를 암호화(Encryption)하고 다시 복호화(Decryption)하여 보아라.
    Public Key=(119,5)   Private Key=(119,77) 이 이미 생성되어졌다고 가정한다.

* RSA 암호 알고리즘
    Private key(개인이 소유) = (n,d)
    Public  key(공개함     ) = (n,e)
    Encryption of a character Mi        ::> Ci = Mie (mod n)
    Decryption of a cipher character Ci ::> Mi = Cid (mod n)
================================================================================================
3) ElGamal 암호 시스템
- 이산대수 (Discrete Algorithm)을 이용한 암호알고리즘
- 주로 전자서명 (Digital Signature)용으로 사용됨
- 전자서명은 보낸사람의 고유성과 인정을 받기 위해서
      전자문서에 서명하는 것이다. 전자서명은 종래의 인감도장
      또는 서명(Sign)과 기능을 대신 하기 위해서 쓰인다.
- ElGamal 알고리즘에서는  개인키(Private Key)와 공개키
      (Public Key)로 전자서명을 만들고 전자서명을 받을 상대방에 넘겨줄 키도 만들어 낸다

* ElGamal 전자서명 알고리즘
    A가 송신자. B가 수신자일때.
    =========================================================================================================
                A (Sender)                                          B (Receiver)
    =========================================================================================================
    | 1. 0 ~ p-1 사이에서 정수 x와 g를 무작위로 선택
  |    * p= 적당한 소수값
    =========================================================================================================
    | 2. y=g의x승 mod p 를 계산한다
|       . A,B의 공개키 = (p,g,y)
|     . A의 개인키 = (x)
    =========================================================================================================
    | 3. 최대공약수 gcd(k,p-1)=1를 만족 하는 임의의 정수
    |  k를 무작위로 (0,p-1)구간에서 추출한다.
    =========================================================================================================
    | 4. 메세지압축을 위해서 Hash 알고리즘을 적용한다:
    |   h(m)
    =========================================================================================================
    | 5. r = g의k승 mod p
    |    s = k의-1승 (h(m)-xr)mod (p-1) ::> 전자 서명
    |    을 각각 계산한다.
    =========================================================================================================
    | 6. (r,s)를 전달  (r,s)  :::::::::::::::::::::::::::::::::::::> (r,s)=B의 개인키가 됨
    =========================================================================================================
    |                                                              7. 메시지 m에 대한 A의 사인확인을 위해서
    |                                                                A로부터 받은 (r,s) 및 A의 공중키 (p,g,y)를
    |                                                                가지고 다음 등식이 성립하면 인증이 성립됨.
    |                                                                v1 = y의r승r의s승mod p
    |                                                                v2 = g의h(m)승 mod p
    |                                                                If v1=v2 ::> the signature is accepted
    =========================================================================================================

================================================================================================
3. ECC (Elliptic Curve Cryptography) 타원곡선 암호 시스템
    지금까지 공개키 암호알고리즘은 소수 p로 나눈 나머지를 구하는 모듈러 연산에 의지했다
    그러나 그것이 암호화의 이산대수문제에 대한 유일한 수학적 해결책은 아님을
    1985년에 Neil Koblitz와 Victor Miller가 ECC이론으로 증명
    타원 곡선상 놓여있는
    임의의 두 점 P, Q 사이에 Q=xP 방정식의 값 x를 풀기위해서 현재까지 어떤 해도 존재하지
    않는다는 아이디어에서 ECC가 나왔음

    다음과 같은 타원 방정식은 적당한 정수 a, b에 의해서 정의되어졌으며 방정식의 해는 (x, y)의 집합이다:
        Y의2=X의3+aX+b (mod p)

    만약 어떤 점 P=(xP,yP)가 위의 타원곡선상 어떤 점에 있다는 것은 위의 방정식을 만족시킨다는 뜻이고
    위의 타원 곡선상 또 다른 점 Q=(xQ, xP)와 점 P 사이 관계를 다음과 같은 방정식:
        Q=xP
    에서 x를 구하는 것이 타원곡선 문제를 푸는 것이다.
    그러나 현재 까지 이를 푸는 해법은 아직 없다.

* 해쉬알고리즘이란?
    . 해쉬알고리즘의 목적은 문서 위조 방지 또는 압축 효과를 노리는데에 있다.
    . 임의의 유한길이의 입력 값을 해쉬함수를 통해서 고정된 크기의 해석
      불가능한 유한의  길이의 값으로 출력하는 것이다.
      이때 출력 값을 해쉬값 또는 메시지 다이제스트 (Message Digest)라 부른다

    . 일방행 함수 (One-way) f(x)=0에서 역으로 x를 구하는 것이 매우  어렵다는 사실에서
      그 아이디어를 얻어서 해쉬 알고리즘에 적용

    . 불럭암호 알고리즘 또는 모듈러 연산을 이용한 알고리즘을 사용한 해쉬알고리즘은
      속도가 매우 느리기 때문에 대부분 전용 해쉬 알고리즘을 사용

    . 그 자체가 프로코콜은 아니지만 일방향 함수는 대부분 보안 프로토콜

    . 구축, 특히 전자서명 프로토콜 구축에 있어서 기초가 된다.

    . 해쉬 알고리즘은 대칭키, 공개키 알고리즘등과 함께 중요한 부분이다.

* 해쉬알고리즘의 3 대 조건

1. 해쉬값을 이용해 원래의 입력값 추정이 불가능해야 한다.

2. 입력값과 해당 해쉬값이 있을 때 이 해쉬값에 해당하는 또 다른 입력값을 구하는 것은 불가능해야 한다

3. 2 개의 서로 다른 입력값을 가지고 똑같은 결과를 가져오는 해쉬값이 나와서는 안된다

* 대표적인 해쉬알고리즘
    =====================================================
    | 해쉬알고리즘  |  해쉬값의 크기 | 입력값 | 라운드수 |
    |===============|================|========|==========|
    | MD4           |     128        |  512   |    3     |
    | MD5           |     128        |  512   |    4     |
    | RIPEMD-128    |     128        |  512   |    5     |
    | RIPEMD-160    |     160        |  512   |    5     |
    | HAVAL         |     128 ~ 258  |  1024  |    3~5   |
    | SHA-1         |     160        |  512   |    4     |
    =====================================================
================================================================================================

'정보보호' 카테고리의 다른 글

임기훈_당신과만난이날  (0) 2019.09.02
정보호의 정의_목표_대책_체계  (0) 2019.07.19

댓글