증권사 프로젝트를 하며 비대칭키 암호화를 사용해야 할 일이 생겼다.
구현을 해야 하는데 대칭키 암호화만 쓰다보니 비대칭키 암호화의 개념에 대해
뜬구름 잡듯이 알고 있어서 열심히 찾아봤다.
비대칭키 암호화는 키가 하나인 대칭키 암호화와는 다르게 개인 키, 공개 키가 한 쌍을 이루어 총 2개이다.
개인 키는 타인에게 노출되어서는 안되는 키이며, 그와는 반대로 공개 키는 타인에게 공개하는 키이다.
위 개념을 알고나서 나는 당연하게도 공개 키로 암호화를 하고,
복호화는 개인 키를 사용하겠구나라고 생각했다.
물론 이렇게 사용을 하기도 하지만 다른 방법이 하나 더 있었다.
위와는 반대로 개인 키로 암호화를 하고, 공개 키로 복호화를 하는 방법이다.
그럼 여기서 드는 의문점은, 암호화란게 보통 정보를 제 3자에게 노출하지 않고 전달할 때 사용하는데
모두가 알 수 있는 공개 키로 복호화를 한다면 정보의 기밀성이 유지되지 않을텐데..? 라는 의문점이 생길 수 있다.
정보의 기밀성 유지에 초점을 둔다면 위의 방법을 사용하는 건 잘못된 게 맞다.
다만, 위의 방법은 사용자의 인증에 초점을 두고 사용하는 방법이였다.
키들을 설명할 때 개인 키는 타인에게 노출되어서는 안되는 키라고 설명했다.
이걸 다르게 해석하자면 개인 키는 특정한 사람만이 가지고 있는 키인 것이다.
그렇다,,, 개인 키는 특정한 사람만이 가지고 있는 키이다.
그렇다면 암호화 된 데이터를 공개 키를 가지고 복호화를 시도 했을 때 정상적으로 복호화가 된다면?
복호화를 시도한 측에서는 누가 보낸 데이터인지 특정할 수 있는 것이다.
이러한 개념이 적용된게 전자서명 방식이라고 한다.
이렇게 알기 전엔 비대칭키 암호화를 쓰는 이유에 대해서 잘 몰랐는데,
이렇게도 쓸 수가 있었구나 라는 생각과 함께
너무 대칭키 암호화에만 익숙해져 다른 용도는 생각하지 않았다는 것을 느꼈다.
그래서 이 글을 요약해보자면,
1. 비대칭키 암호화에는 공개 키로 암호화, 개인 키로 암호화 두가지 방법이 있다.
2. 공개 키로 암호화 하는 방법은 "정보의 기밀성 유지" 에 초점을 둔 방법이다. (구글 인증, Apple 인증)
3. 개인 키로 암호화 하는 방법은 "사용자 인증" 에 초점을 둔 방법이다. (전자 서명)