습관처럼

보안 - 비공개 키 & 공개 키 암호화 본문

CS/보안

보안 - 비공개 키 & 공개 키 암호화

dev.wookii 2020. 2. 29. 16:03

비공개 키 암호방식 (대칭 암호)

동일한 키로 암호화, 복호화를 동시에 할 수 있는 방식암호화를 하는 측복호화를 하는 측이 같은 암호 키를 공유해야 한다!

‘123!@#’라는 키로 암호화를 하면 복호화시에 ‘123!@#’를 입력해야함! 이 과정에서 누가 대칭키를 획득하면 암호화된 데이터를 알아낼 수 있다는 단점(***) 

 

계산 속도가 빠르다는 장점(***)을 가진다! 상대방과 키를 공유해야하는데 안전하게 키 공유가 어려움상대방이 많아질수록 키 관리가 어려움 n(n-1)/2개의 키 필요!

 

  • 하나의 비밀키를 양쪽(client & server)가 모두 같이 사용
  • 암호화와 복호화에 사용하는 키가 같은 암호화 알고리즘
  • 공개키와 비밀키를 별도로 가지는 것과 구별되는데, 이와 비교하면 계산속도가 빠르다는 장점 
  • 비밀키 하나만 알아내면 암호화된 내용을 해독 가능 → 해커로부터 안전 X
  • 대킹키 암호는 암호화하는 단위에 따라 스트림암호와 블록암호로 나눌 수 있음
    • 스트림암호는 연속적인 비트/바이트를 계속해서 입력받아, 그에 대응하는 암호화 비트/마이트를 생성하는 방식
    • 블록암호는 정해진 한 단위(블록)을 입력받아 그에 대응하는 암호화 블록을 생성하는 방식 
    • 블록암호의 경우 적절한 운용모드를 조합하면 블록 단위보다 큰 입력을 처리할 수 있음. 또한 스트림암호와 유사하게 지속적인 입력에 대해 동작할 수 있음. (대신 입출력 단위는 스트림암호보다 큰 블록 단위가 됨)
  • 대킹키 기법을 사용하는 암호 알고리즘 방식으로 DES, 3-DES, AES, SEED, ARIA, MASK 등이 있다. 

 

-블록 암호 알고리즘: 대칭키 알고리즘 중 암/복호화시 데이터를 블록 단위로 처리하는 알고리즘 SSL/TLS에서 많이 사용됨 

공개 키 암호방식 (비대칭 암호)

사전에 비밀키를 나눠가지지 않은 사용자들이 안전하게 통신할 수 있도록 한다.(키를 분배하고 미리 가지고 있지 않아도 공개 채널 상에서 안전하게 통신할 수 있도록 해줌) 공개키와 비밀키존재함공개키는 누구나 알 수 있지만 그에 대응하는 비밀 키는 키의 소유자만이 알 수 있어야함

 

공개키 또는 비밀키로 암호화를 할 수 있기 때문에 2가지의 경우를 생각할 수 있다. 수신자의 공개키로 암호화를 해서 수신자가 받아서 자신의 개인키로 복호화! 또는 송신자의 개인키로 암호화를 한 후 수신측에서 송신자의 공개키로 복호화!

 

>> 이 방식에서 핵심은 공개키를 통해 암호화한 것은 개인키를 통해 복호화할 수 있고 개인키를 통해서 암호화한 것은 공개키를 통해서 복호화할 수 있다는 것이다.

 

  • 비밀키 하나 만 가지는 대칭키 암호 방법과 달리, 공개키와 비밀키 두 개가 존재
  • 공개키 암호를 구성하는 알고리즘을 대칭키 암호 방식과 비교하여 비대칭 암호라고 불림
  • 암호화와 복호화에 사용하는 키가 서로 다름
  • 암호화할 때의 키는 공개키(public key), 복호화할 때의 키는 개인키(private key)
  • 공개키는 누구나 알 수 있지만, 그에 대응하는 비밀키는 키의 소유자만이 알 수 있어서 
  • 특정한 비밀키를 가지는 사용자만이 내용을 열어볼 수 있도록 하는 방식. 

 

- 공개 키 암호: 특정한 비밀 키를 가지고 있는 사용자만 내용을 열어볼 수 있음

ex) 열쇠로 잠겨있고 좁은 투입구가 있는 편지함에 비유할 수 있음! 편지함은 위치(공개키)만 알면 투입구를 통해 누구나 편지를 넣을 수 있지만 열쇠(개인키)를 가진 사람만이 편지함을 열어서 내용을 확인할 수 있음

 

- 공개 키 서명: 특정한 비밀 키로 만들었다는 것을 누구나 확인할 수 있음.

ex) 인장으로 편지봉투를 봉하는 것에 비유할 수 있음. 봉인한 편지는 누구나 열어볼 수 있지만 인장 확인을 통해 인장을 소유한 발신자가 이 편지를 보냈음을 증명할 수 있음!

 

⇒ 비밀 키 암호보다 계산이 복잡! 효율을 위해 비밀키 암호(=대칭 암호)와 함께 사용됨. 메시지를 임의로 만들어진 비밀 키를 이용해 암호화한 다음 이 비밀 키를 다시 수신자의 공개 키로 암호화하여 메시지와 함께 전송하는 것이다. 이렇게 하면 공개 키 암호 기술로는 짧은 비밀 키만을 암호화하고 보다 효율적인 비밀 키 암호 기술로 전체 메시지를 암호화하므로 양쪽의 장점을 취할 수 있다.

 

※ 공개키 알고리즘은 공개키로 암호화를 하냐, 개인키로 암호화를 하냐에 따라 사용분야가 달라짐

>> 공개키의 경우 데이터 보안에 중점을 두고, 개인키로 암호화하면 인증 과정에 중점을 두는 것!

 

1. 공개키로 암호화를 하는 경우: 상대방의 공개키로 데이터를 암호화하고 데이터를 전달하면, 데이터를 받은 사람은(공개키 주인) 자신의 개인키로 데이터를 복호화 한다.

ex) A키로 암호화를 한다면, B키로 복호화가 가능하고, B키로 암호화를 한다면, A키로 복호화가 가능한 것이다.

 

2. 개인키로 암호화를 하는 경우: 개인키의 소유자가 개인키로 데이터를 암호화하고 공개키와 함께 전달. 이 과정에서 공개키와 데이터를 획득한 사람은 송신자의 공개키로 복호화가 가능함! 암호화된 데이터가 공개키로 복호화 된다는 것은 공개키와 쌍을 이루는 개인키에 의하여 암호화되었다는 것을 의미! 즉 데이터의 제공자의 신원 확인이 보장된다는것! 이 방법으로 공인인증체계의 기본바탕인 전자서명. 개인키 암호화를 전자서명이라 부른다.

 

 

출처: https://kswims.tistory.com/112

'CS > 보안' 카테고리의 다른 글

오토런 바이러스  (0) 2020.05.29
국제공통평가기준 (Common Criteria, CC)  (0) 2020.05.29
시스템 보안 - LSA, SAM, NTLM, SRM  (0) 2020.05.29
암호화 알고리즘 종류  (0) 2020.03.18