일단 난 개발자 아니고 마케터고,
오늘 밥먹다가

어떤 사이트 비번 까먹어서
비밀번호 찾기했는데

사이트가 내 비번을 그냥 알려주면 될 것을,
왜 매번 비번 바꾸기로 넘어가는지
짜증나서 관련 지식 검색해보다가

서버에는 암호화 되어 저장되기에
온라인 사이트에서도
내 비번 자체를 알 수는 없다는 것을
배우게 되었고

비번찾기랑 무관하게,
그냥
의식의 흐름에 따라 암호학 나무위키를
보다가

공개키 개인키 개념에 대해
30분동안 이해해보려고 노력했음

비개발자에 수포자 입장에서
도저히 너무 어렵고 뭔 말인지 모르겠어서

내가 이해한 바를 적어볼테니
대충 맥락은 맞는건지 누가 판단좀 해줘

이해가 잘 안되니까 찝찝하고 짜증난다.

음...


예를들어 내가 디시에 회원가입을 한다고 가정해.
내 패스워드를 생성했다 치자.

그러면 디시의 서버가 공개키랑
개인키를 생성하는데,

예를들어,
공개키는 '나루토', 개인키는 '성별' 이야.

다시 돌아가서,
내가 아까 설정했던 패스워드가
ABCD 라는 텍스트라고 치자.

그럼 ABCD는
디시에서 누구에게나 공개한 공개키인
'나루토'를 통해 암호화 되어서

ABCD 에 나루토를 결합한
어떠한 일련의 복잡한 계산을 통해

ejdoa 라는 암호로 암호화가 돼

그리고 이 ejdoa 라는 암호는
아무리 나루토라는 공개키를 알고 있는
해커라도,

공개키만 안다고 해서
다시 ABCD 로 복호화 할 수는 없어.

공개키는 암호화에만 사용되는거지
복호화에는 사용할 수 없기 때문이야.

나루토 라는 단어를 토대로
아무리 역계산을 하려해도
역으로 ABCD 라는 답이 나오지는 않아.

그런데 이 ejdoa 라는 암호가
디시의 서버까지 도착하면

디시에서는
'나루토' 라는 공개키와
디시 스스로만 알고 있는 '성별' 이라는
개인키를 조합하고 계산해서
'남자' 라는 결과값을 도출하고

이 '남자'라는 결과값을
ejdoa 라는 암호에 적용해서

또 이러쿵 저러쿵 계산하면
그제서야 'ABCD' 라는 내 비밀번호 텍스트가
결과값으로 나오고

이 ABCD 라는 유저 개인 비번을
서버에 그대로 저장하는게 아니라

암호화만 가능하고
복호화는 절대 안되는
단방향 프로세스를 통해

fjruidpdl 막 이렇게 바꿔서
서버에 저장한다.

그래서 디시도 내 비밀번호가 뭔지 절대 모르고
그래서 비번찾기를 하더라도

내 비번을 순순히 뱉지 않고
비번을 바꾸는 메뉴가 나오는거다.

이게 대충 맞게 이해한건가?

- dc official App