-
대칭키와 비대칭키(공개키) 알고리즘 암호화 방식[프로그램]/IT 이야기 2020. 12. 16. 19:00728x90
암호화 방식 중 대칭키 알고리즘과 비대칭키 알고리즘이 있다.
이 방식에 대한 예를 통해 구조를 이해해보도록 하자.대칭키 알고리즘은 오래전부터 써오던 방식으로 예를 들면 우리가 초등학교 때 친구에게 편지를 전해줄때
다른 분단에 있을 경우 여러사람을 경유해야한다.
중간에 다른 친구가 보면 안되는 내용일 경우 이렇게 암호화해서 보낼 것이다.친구에게 전달: 9 BCJ5 MCI
이게 무슨 글자인지 중간에 보는 사람은 모른다. 하지만 나와 그 친구는 아래와 같은 각 문자에 대칭하는
표를 가지고 있기에 저게 무슨 문자인지 알 수 있다.(서로 가지고 있었다고 치자..ㅎㅎ;;)A B C D E F G H I J K L O P Q R S T U V W X Y Z 1 2 3 4 5 6 7 8 9 0 A B C D E F G H I J K L M N <표: 대칭표>
친구가 암호를 복원: I LOVE YOU
저 대칭표만 있으면 친구와 나는 얼마든지 암호화해서 내용을 전달 받을 수 있다.
이것이 바로 대칭키 알고리즘이다.
서로 대칭이 되는 같은 암호표를 가지고 있기에 암호화가 가능하다.
하지만 단점은 이 암호표가 노출되지 않았을 때만 암호화가 유효하다는 것이다.
물론 서로 미리 만나서 전달을 한다면야 문제가 없겠지만
직접 만나지 않고 선으로 연결된 온라인에선 문제가 된다.암호표를 네트워크로 보내자니 중간에 해커에 의해 암호표가 노출된다면
암호화를 한다는게 의미가 없어진다.그래서 나온 방식이 RSA 방식(Rivesx, Shamir, Adleman 3명이 개발한 알고리즘)이다.
바로 두개의 암호화키를 만들었다.
예를들어 A암호화키, B암호화키가 한쌍이 되어,
A암호화키로 문서를 암호화한 것은 B암호화키로 복원이 가능하다.
( 원문 X A키 → A키암호화문서 ====전달====> A키암호화문서 X B키 → 원문 )
B암호화키로 문서를 암호화한 것은 A암호화키로 복원이 가능하다.
( 원문 X B키 → B키암호화문서 ====전달====> B키암호화문서 X A키 → 원문 )즉, 이렇게 하면 두개의 키중 하나는 공개적으로 배포를 하고(공개키), 하나는 내가 보관한다.(개인키)
그리고 공개키를 암호화 전용으로, 개인키는 복호화 전용으로 사용하면 보안이 한층 강화된다.상대방(공개키)과 내(개인키)가 대칭되지 않는 다른 키를 가지고 있다고 해서 비대칭키 알고리즘 이라고
한다.학교로 다시 돌아가보자.
나의 A키(공개키)는 'X 0.5' 라고 가정
나의 B키(개인키)는 'X 2' 라고 가정
영철이의 A키(공개키)는 'X 0.25' 라고 가정
영철이의 B키(개인키)는 'X 4' 라고 가정우리반애들에게 내 공개키(X 0.5)를 배포한다.
영철이는 우리반애들에게 자신의 공개키(X 0.25)를 배포했다.이제 영철이한테 내가 숫자 7을 전달하고 싶다.
그럼 난 영철이의 공개키로 암호화를 한다.
(내 키로 암호화면 공개키를 아는 다른 친구들이 다 복호화할 수 있기 때문)7 X 0.25(영철이 공개키) = 1.75
1.75를 친구들에게 돌린다.
(친구들은 영철이의 공개키로는 원문을 알 수가 없다.
운좋아서 맞출수도 있겠지만;;; 그런 경우는 거의 불가능에 가깝기 때문에 일단은 통과)영철이는 이제 자신의 개인키로 암호를 해독하게 된다.
1.75 X 4(영철이 개인키) = 7
쨘 내가 전달하고자하는 7이 전달 되었다.
이제 영철이가 답변으로 나에게 8이란 숫자를 전달하고자한다.
8 X 0.5(나의 공개키) = 4
이제 암호화된 2를 반 전체에 그냥 뿌려댄다.
내가 받아서 내 개인키로 풀어보자.2 X 4(내 개인키) = 8
영철이가 보낸 암호문을 완벽히 해독했다.
물론... 지금은 예제로 숫자가 작아서 그렇지만 실제론 숫자가 엄청 커지기 때문에
상대의 개인키를 알아내기란 매우 어렵다...참고로
대칭키알고리즘 종류: DES, AES, SEED
비대칭키알고리즘 종류: RSADES는 Data Encryption Standard의 약자이고 AES는 Advanced Encryption Standard의
약자이다. 영어를 보면 알겠지만 DES보다 AES가 좀더 진보된(Advanced) 암호화 방식이란 뜻이다.728x90