ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 현대 암호
    DreamHack/암호학 2024. 2. 11. 21:47

    고전 암호 이후에 컴퓨터와 같은 복잡하거나, 많은 연산을 처리할 수 있게 되면서 현대 암호가 들어서기 시작했다.

     

    현대 암호와 비교하여 고전 암호의 가장 큰 특징은

    이전 고전 암호에서 이야기한 키 값 자체가 송신자와 수신자가 모두 같은 키를 사용했다는 점이다.

    이는 대칭키 암호 시스템에 해당한다.

    같은 키를 사용하는 대칭키 암호

    서로 다른 키를 사용하는 비대칭(공개)키 암호


    ● 혼돈

    혼돈은 암호문을 통해 평서문의 특성을 알아내기 힘든 성질이다.

    카이사르 암호 같은 경우는 암호문의 특성과 평서문의 특성이 문자의 빈도로 같게 나타난다.

    이는 혼돈의 성질을 제대로 갖추지 못한다고 할 수 있다.

     

    ● 확산

    확산은 평문의 변화가 암호문의 큰 변화로 이어지는 성질이다.

    해시 암호화 sha256 같은 경우 직접 알고리즘 코드를 이용하여 평서문을 조금만 바꾸고

    암호문의 변화를 확인해보면 굉장히 많이 바뀌는 것을 알 수 있다.

    이는 확산의 성질을 제대로 갖추었다고 할 수 있다.


    1. 대칭키 암호 시스템

     

    1-1. 블록 암호

    블록 암호는 평문을 정해진 크기의 블록 단위로 암호화하는 암호이다.

    데이터가 3bytes 인데 블록 암호로 만들기 위한 블록 단위는 4bytes라고 하면,

    3bytes + 1byte(padding)을 통해 블록 단위를 맞추어 암호화를 한다.

    ex) DES, AES

     

    1-2. 스트림 암호

    ⊕ = XOR

    스트림 암호는 (평문) XOR (스트림) = (암호문) 의 방식으로 암호화한다.

    평문 데이터가 P

    스트림이 X

    암호문이 C 라고 한다면,

     

    P ⊕ X = C 

    (P   X)  X = (C)  X

    P = C X 로 복호화가 가능하다.

     

    여기서 스트림은 키 값과 비슷한 역할을 한다.

    해커는 암호문 C만으로는 해독이 불가능하지만,

    송신자와 수신자는 반드시 스트림을 공유하게 되므로 해커에게 도청 당할 가능성이 있다.

    그리고 스트림을 암호문과 함께 보낸다면 해독이 가능하므로 위험함.

     

    그래서 나온 개념이 시드(Seed)이다.

    송신자와 수신자는 같은 시드 값을 갖게 된다.

    그리고 같은 시드 값을 토대로 사전에 합의된 함수의 입력인자로 이용하여

    스트림을 출력한다.

    f(시드) = 스트림 인셈이다.

    이에 해당하는 스트림을 통하여 암호화하여 보내고 복호화한다.

    시드 값을 공유하는 과정에서 해커에게 도청 당하더라도 사전에 합의한 함수 내용을 모른다면

    스트림 값을 모르는 것과 마찬가지이므로 복호화가 불가능해진다.

    근데 스트림 암호 자체는 연산이 XOR을 통해서 이루어지기 때문에 단순하고 경우의 수가 적어서

    암호화 자체는 빠르지만, 그만큼 안전하지가 않아서 블록암호보다 제한적인 상황에서만 사용됨.

     

    대칭키의 장점

    - 빠르다

    대칭키의 단점

    - 서로간의 대칭키가 있어야함

    - 대칭키를 사전에 교환해야함 (이 과정에서 대칭키를 도청 당하면 위험함)

     


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

    공개키 암호 시스템은 각자의 대칭키를 사전에 교환해야하는 것과는 별개로

    공개키로 암호화

    비밀키로 복호화 한다는 특징이 있다.

    중요한건 각자 개인의 공개키와 비밀키를 갖고 있다는 것이다.

    A는 자신의 공개키(A')와 비밀키(A")로 2개의 키를 가지고,

    B도 자신의 공개키(B')와 비밀키(B")로 2개의 키를 가진다.

    공개키의 장점

    - 전체 사람 N명과의 통신에서 필요한 키의 수가 적다.

    - 통신 갱신시 키를 다시 만들 필요가 없다.

    공개키의 단점

    - 연산이 복잡하므로 속도가 느리다.


    1. 기밀성 (허락된 사람만이 열람하는가?)

    2. 무결성 (데이터에 변한 것이 있는가?)

    3. 인증 (누구에게 받은 것인지 알 수 있는가?)

    4. 부인 방지 (교환한 사실[로그]가 남는가?)

     

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

    블록암호: 운영모드  (0) 2024.02.26
    블록암호: AES  (2) 2024.02.22
    블록암호: DES  (0) 2024.02.12
    고전 암호  (0) 2024.02.11
Designed by Tistory.