ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 대칭 키/공개 키/단방향 암호화 알고리즘(정의와 예시)
    Algorithm 2021. 11. 12. 02:49

    암호화 알고리즘은 암호화/복호화에 사용되는 키, 그리고 양방향 가능 유무를 기준으로 분류할 수 있다.

     

    Symmetric-Key Algorithm 대칭 키 알고리즘

    대칭 키 암호는 암호화 알고리즘의 한 종류로, 암호화와 복호화에 같은 암호 키를 사용하는 알고리즘을 의미한다.

    암호화를 하는 송신자가 평문을 암호화 하고, 해당 암호 키를 공유해서 복호화를 하는 수신자는 암호문을 복원한다. 공유되는 암호 키를 대칭 키라고 한다.

    공개 키 암호화 방식과 비교해서 계산 속도가 빠르다는 장점이 있지만, 같은 키를 공유해야 하기 때문에 언젠가 한 번은 키를 전달해야 한다. 이 때, 키를 전송하는 과정에서 정보를 탈취당할 수 있다는 위험성이 있다.

     

    Public-Key Algorithm 공개 키(비대칭 키) 알고리즘

    암호화와 복호화에 이용하는 키가 다른 방식을 말한다. 이 알고리즘은 공개 키 암호 또는 비대칭 암호라고 부른다.

    두 개의 키를 사용하는데 전체에서 공유하는 암호 키를 공개 키, 특정 사용자만이 가지고 있는 암호 키를 개인 키라고 한다. 어느 하나의 키로 암호화한 암호문은 다른 쪽의 키로 복호화할 수 있다. 대칭 키 암호보다 복잡한 계산을 사용하기 때문에, 실제에서는 대칭 키 방식과 혼합해서 사용한다.

    대칭 키 알고리즘에 비해 복잡한 계산을 사용하기 때문에, 암호화와 복호화를 하는 데 시간이 오래 걸린다.

    이 때 사용되는 방식은 두 가지가 있다.

     

    공개 키 암호

    1. A는 공개 키를 공개한다.

    2. C는 공개 키로 전달하려는 평문을 암호화 한다.

    3. C가 A에게 암호문을 전달한다.

    4. A는 개인 키를 이용해서 암호문을 복호화한다.

    공개 키를 이용해서 암호화하고, 특정 개인 키를 가진 사용자만이 해당 암호문을 복호화할 수 있다. 대칭 키를 이용했을 때의 단점인 키의 공유가 발생하지 않기 때문에 두 단말 간에 정보를 안전하게 공유할 수 있다.

    그림을 봤을 때, B는 A의 개인 키를 가지고 있지 않기 때문에 C가 암호화한 정보를 읽을 수 없다.

     

    공개 키 서명

    공개 키 서명 방식은 SSL같은 보안 방식을 사용할 때 이용되는 암호화 방식이다. 신뢰할 수 있는 기관에서 인증서를 발급하고 누구나 인증서를 복호화했을 때 인증서가 해당 기관에서 발급된 것인지 확인하는 용도로 사용된다.

    1. 사용자는 공개 키를 공개하고, 문서를 개인 키로 암호화 한다.

    2. 다른 사용자는 해당 인증서를 기관의 공개 키를 이용해서 복호화한다.

    개인 키를 이용해서 암호화하고, 공개 키를 이용해서 해당 암호문을 복호화할 수 있다. 누구나 해당 암호문을 복호화할 수 있으므로, 개인 키를 가진 사용자로부터의 신뢰할 수 있는 정보인지 검증하는 용도로 쓰인다.

    그림과 같이 중간에서 인증서를 탈취해서 내용을 변경했다면 공개 키로 복호화를 시도했을 때 평문을 복원해낼 수 없다. 또한, A라는 기관이 아닌 B라는 기관이 발행한 인증서일 경우에는 A 기관의 공개 키로 복호화를 시도할 수 없다.

    따라서 해당 문서가 변조되었다면 원래의 평문을 복원할 수 없기 때문에 문서의 발행 출처와 변조 여부를 확인할 수 있다.

     

    실제 사용 👉 대칭 키 + 비대칭 키

    암호화 알고리즘 자체는 대부분 공개된 알고리즘을 사용하기 때문에, 어떤 키를 사용하느냐가 보안 성능을 결정한다.

    이 때, 사용하는 키의 bit수가 클 수록 brute force를 이용해서 알아낼 수 있는 경우의 수가 exponential하게 증가하기 때문에 성능의 중요 척도가 된다.

    대칭 키 알고리즘은 일반적으로 128/256 bit의 키를 사용하고, 비대칭 키 알고리즘은 1024/2048 bit의 키를 사용한다.

    키가 길어지면 그만큼 인코딩/디코딩이 복잡해지기 때문에 장단점이 명확하다.

    이 때문에 실제 사용시에는 대칭 키 방식과 공개 키 암호 방식의 장단점을 혼합해서 사용한다.

     

     

    1️⃣ 송신자 측에서는 대칭 키로 사용할 암호 키를 수신자의 공개 키로 암호화 한다

    2️⃣ 송신자는 암호화된 대칭 키를 수신자에게 전송한다. 이 때, 암호화된 키는 수신자의 개인 키가 있어야만 복호화할 수 있기 때문에 전송 과정에서 탈취돼도 대칭 키의 정보는 유출되지 않는다.

    3️⃣ 수신자는 암호화된 대칭 키를 자신의 개인 키로 복호화한다.

    4️⃣ 송신자와 수신자는 대칭 키를 안전하게 공유했다. 이후에는 대칭 키를 이용한 보안 방식을 적용해서 통신한다.

    이 방식은 비대칭 키 암호화 방식을 한 번만 사용해서 안전하게 키를 공유하고, 이후에는 대칭 키를 이용해서 빠르게 보안을 적용해서 통신할 수 있다는 장점이 있다.

     

    One-Way Encryption

    위의 두 암호화 알고리즘은 암호 키를 사용해서 평문을 암호문으로 암호화, 암호문을 평문으로 복호화할 수 있었다. 하지만 Cryptographic hash function(암호화 해시 함수)를 사용한 단방향 암호화 방식은 평문을 암호화한 뒤로는 복호화할 수 없는 암호화 방식이다.

    이 암호화 방식은 패스워드 저장과 같이, 반드시 원본 데이터를 복원해내지 않아도 되는 경우에 사용한다(ex. 서버의 데이터베이스에 저장하는 패스워드는 복호화 될 필요가 없고, 사용자가 패스워드를 입력할 때 마다 암호화 한 값을 비교하면 된다).

Designed by Tistory.