대칭키 vs 비대칭(공개)키 차이

jj J·2022년 12월 7일
0

JAVA

목록 보기
13/15

본 주제를 다루기 앞서, 먼저 단방향 암호화에 대해 정리하려한다.

단방향 암호화 (One Way Cryptography)

해시 함수를 이용하여 암호화하는 방식이다. 어떤 메세지를 해시 처리하면 해당 메세지는 복호화가 불가능하다. 이렇게 암호화만 가능하고 역으로 복호화는 불가능하기 때문에 단방향 암호화라고 한다.

패스워드 암호화

일반적으로 쓰는 포털 사이트 등에서 회원 정보 - 패스워드를 관리할 때 이 단방향 암호화를 사용한다.
회원가입할때 지정되는 패스워드는 해시 함수에 의해 암호화되어 해시값 형태로 보관되기 때문에, DB 관리자도 해당 패스워드를 알 수 없다.
따라서, 로그인 시 DB에 저장된 해시값과 로그인 시 암호화된 해시값을 비교해 로그인을 승인한다.

패스워드 분실

복호화가 불가능하기 때문에, 비밀번호를 분실해도 원래 비밀번호를 찾을 수 없고, 새로운 비밀번호를 지정해야한다.
왜냐하면, 해시값 외에 원본값은 알 수 있는 방법이 없기때문이다.

대칭 암호화 (Symmetric Cryptography)

송신자와 수신자가 동일한 비밀키를 사용한다. 송신자는 비밀키를 사용해 전송할 데이터를 암호화하고, 수신자도 동일한 비밀키를 사용해 수신 데이터의 복호화를 수행한다.

따라서, 데이터가 탈취되어도, 비밀키를 갖고 있지않으면, 암호를 해독할 수 없다.

그러므로 대칭 암호화는 비밀키를 교환하는 과정이 매우 중요한 과정이 되었다.
보편적으로 사용되는 알고리즘은 AES이다

비밀키 교환

해킹을 방지하기 위해, 비밀키는 교환 중 절대 탈취되면 안되지만, 완전 방지가 어렵고, 관리할 암호가 많아질 수록 전부 따로 키 교환을 해야하기 때문에, 관리할 키가 방대하게 많아지는 단점이 있다.

비대칭(공개) 암호화 (Asymmetric Cryptography)

송신자와 수신자가 서로 다른 2개의 비밀키를 사용한다.
송신자는 개인키를 사용해 전송할 데이터를 암호화하고, 수신자는 개인키와 쌍을 이루는 공개키를 사용하여 수신 데이터의 복호화를 수행한다.

개인키는 해당 사용자만 알 수 있는 키로 개인 보관하고, 공개키는 누구나 알 수 있도록 공개된 키이다.

따라서, 비대칭 암호화는 한 쌍의 개인키와 공개키를 사용함으로써 송신자와 수신자 간의 신뢰도를 높이고, 보안 강화에 효과적인 형태이다.

개인키, 공개키 생성

비대칭 암호화는 공개키 암호화라고도 하는데, 가장 대표적인 방식이 RSA이다.

RSA는 매우 큰 소수의 원리를 이용하는데, 2개의 큰 소수를 정해 이 2개를 곱해 나온 값을 공개키로 사용하고, 곱한 2개의 소수 중 하나를 개인키로 사용한다.

이렇게되면, 곱해 나온 값은 수많은 수의 조합이 있기 때문에, 공개키가 공개되더라도, 개인키를 알지 않는 이상 전혀 해독할 수가 없다.

따라서, 공개키로 암호화하여 데이터를 전송하면, 반드시 개인키를 알아야만 데이터를 복호화할 수 있다.

전자 서명, 공인인증서에도 활용되는데, 전자 서명은 사용자의 개인키를 사용하여 생성한 전자서명을 전송함으로써 수신자에게 현재 이용자가 본인임을 확인하는 과정에 사용할 수 있다.

profile
매일 발전

0개의 댓글