본문 바로가기

Hacking/암호학

암호학

 

 

1. 암호화


       - 의미를 알 수 없는 형식으로 정보를 변환하는 것

       - Data를 보호하기 위해 내용을 은닉시킴 (기밀성을 위해)

       - 해석 불가 - 코드화와의 차이점


 

2. 코드화


       - 내용을 압축 또는 안전하게 전달하기 위해서

       - 해석이 가능한 사람에게는 은닉X


 

3. 정보보호의 3요소


      - 기밀성

      - 무결성

      - 가용성


 

4. 위치치환 - 시저암호


      a) 최초의 암호 - 알고리즘을 가지고 있는

      b) 단점

            - 평문과 암호문이 노출

            - key space가 짧다 (26번 만에 평문을 알 수 있음) - 암호의 강도를 결정짓는 요소

 


5. Key ( O ) - 현대


       a) Key Space가 크고 Key Life Time이 짧을수록 암호로서의 강도가 높다

       b) 대칭키와 비대칭키


       * 대칭키 - 암호화와 복호화 하는데 사용되는 Key가 같다.

                            1) DES, 3DES, 시드(우리나라)

                            2) 비대칭에 비해 처리속도(암호화, 복호화)가 빠르다

                                  - 통신분야 사용 - 속도중요!! (상대적으로 10~1000배정도 빠르다.)

                            3) Data의 Size 증가가 X

 

                            4) KEY 동기화 과정이 필요

                                  - KEY 동기화 과정에서 공격자의 개입이 있을 시 보안상 문제 발생

       

                            5) 엔티티 한 명이 포함될 때마다 관리해야 할 KEY의 수가 증가 [ n(n-1)/2 씩 증가 ]

                            6) KEY Space를 늘려서 경우의 수를 증가하여 Brute Force공격에 대비

                                (범위가 한정되어 있기 때문에 Brute Force에 취약)

                            7) KEY Life time이 짧을수록 암호화의 강도가 높다

                            8) DES, AES(미국 산업 표준), SEED

 

                     * 비대칭키     암호화와 복호화 하는데 사용되는 Key가 다르다 (공개키, 개인키)

                            1) RSA

                            2) Public Key, Private Key

                                   - 통신상에서 서로의 Public Key를 주고 받음 (Private Key는 각각의 개인들이 소유)

                                       ---> 노출 (x) 되면 안된다.

                                   - Private Key로 암호화 된 것은 그 사람의 Public Key로만 복호화 할 수 있다.

                                       ---> 누구나 사용할수 있다. 공개 O

                           

                            3) 장점 : 중간에서 잡아서 분석할수 없다.

                            4) Data의 Size의 증가 O

                            5) 대칭키 방식에 비하여 속도가 느리다

                           

                            6) MITM 공격에 취약하다

                                     - 각각 상대방의 Public Key라고 생각하는 공격자의 Public Key를 전송

                                     - 공격자가 상대방의 Public Key를 획득하면 이 후에 오가는 Data를 볼 수도 있고
                                        변조도 가능해진다.

                                        (사이에서 공격자의 Private Key로 암호화하여 전송)

                     

                            7) 인증이나 부인방지에 사용

                            8) 대칭키의 Key동기화 메커니즘을 보완

                                  * Key 동기화

                                       - Manual : 직접적으로 찾아가 알려주는 방식. 관리자가 허용한 엔티티들에게만
                                                      Key를 알려준다.

                                                     (AP의 WEP KEY 교환이 대표적)

                                       - Key-Wrapping(Hybrid방식) : Key를 감싸서 보내주는 방식. 비대칭키 방식을
                                                                               사용하여 동기화

                                              1_ Key를 Private Key로 암호화 하여 상대방에게 전송

                                              2_ 주고 받은 Public Key를 이용하여 복호화

                                              3_ 이 후에는 Key를 이용한 대칭키 방식 사용

                                              4_ 동기화 과정에서 공격자의 개입이 있을 시 문제 발생 (MITM 공격에 취약)

                                                   ---> Public Key를 인증할 수 없으므로 이걸 해결하기 위해 공인인증서
                                                        사용 (X.509)

                                              5_ SSH v1에서 사용

                                              6_ 문제점

 

               

                
          - MITM 공격

    1. A는 위와 마찬가지로 B에게 Public Key 를 요청한다.
    2. 가운데 있던 M 은 B가 전송하는 Public Key 를 가운데서 스니핑한다.
    3. 스니핑 뒤에 A 에게는 M's Public Key 를 전송해준다.
    4. A는 B'Public Key 인줄 알고 받은 M's Public Key 로 Session Key 를 암호화한다.
    5. 암호화 된 Session Key 를 B에게 전송하지만 M에 의해서 스니핑 된다.
    6. 이를 받은 M 은 자신이 가진 M's Private Key 로 복호화를 해서 Session 키를 획득한다.
    7. 이 상태에서 B는 자신이 보낸 B's Public Key 로 암호화 된 Session Key 를 기대하고 있으므로 M은처음에 스니핑 했던 B's Public Key로 Session Key 를 다시 암호화 한뒤 B에게 전송한다
    8. B는 자신이 기대했던 자신의 Public Key 로 암호화된 Session Key 가 왔으므로 자신의 Private Key 로 복호화를 하여 Session Key 를 획득한다.
    9. 이 후 부터는 A와 B 는 Session Key 를 가지고 있으므로 이를 가지고 암호화하여 통신을 하게되며, 가운데 있는 M은 Session Key 를 가지고 있으므로 데이터를 스니핑 한 뒤에 복호화해서 볼 수 있다.

 

 

 

                                  - Diffie-Hellman


 
                                         1_ 직접적인 Key교환이 이루어지지 않아도 Key를 공유할 수 있다 
                                         2_
SSH v2에서 사용 
                                         3_
1<g<n 를 만족하고 소수인 g와 n 생성 (공개) - MITM 공격을 받더라도
                                                      경우의 수가 크면 Key를 알아내기가 어렵다 
                                              
- Brute Force로 Session Key가 유출될 시점에는 다시 Key를 바꾸어서 사용
                                                       
- 소수 : mod연산 시 0이 나오지 않게 하기 위하여

 

       A와 B는 각각 x, y라는 난수 생성 (비공개)               

         A                                   B
  g∙x mod n = X                 g∙y mod n = Y

                      Y <==> X

  x∙Y mod n = Key            y∙X mod n = Key


   

                              * Session Key

 

                                    1) Client와 Server가 연결 시 연결된 Session에서만 생성된 Key를 사용하고
                                        session이 종료되면 폐기 (일회성)

                                     2) 만약 다시 연결 시 새로운 Session Key 생성

                                     3) 보통 대칭키 사용

 

 



6. Key ( X ) - 과거


       a) 암호화 알고리즘의 비밀성에 의존 (공개되면 암호로서의 가치 X => 코드화가 됨)

       b) 시져 암호 : 위치치환 암호

                - 평문과 암호문이 모두 노출. 암호문을 보고 평문 추측하거나 얻을 수 있음

                - 26번 만에 평문이 나오게 됨 (Key Space : 26 => Key Space가 짧다)
                   (Key Space의 길이는 암호의 강도를 뜻한다)

               c) 수레바퀴 암호

               d) 이니그마 (Enigma) : 독일군이 사용한 암호화 기계

'Hacking > 암호학' 카테고리의 다른 글

MD5 is Dead  (0) 2009.11.08
공인인증서  (0) 2009.10.25