인터넷의 원리 PART 10: 암호화와 공개 키– (1)

in #kr7 years ago (edited)

안녕하세요 여러분. 참새입니다.

인터넷은 개방적이고 대중적인 시스템이기 때문에 인터넷 상에서 정보를 주고 받을 때, 저희는 대중에게 공유되는 와이어, 케이블, 또는 다른 연결 고리를 통해서 정보를 전달하게 됩니다.

아이러니하게도, 저희는 이러한 인터넷의 개방적이고 대중적인 시스템을 사용하면서도 인터넷 상에서 수 많은 개인 정보들을 주고 받습니다.

신용 카드 정보를 입력해서 온라인 쇼핑몰에서 물건을 구매하기도 하고, 은행 정보를 입력해서 계좌에 접근하기도 하고, 다양한 사이트들의 비밀정보들이나 이메일 정보를 입력하기도 하죠.

그렇다면, 저희는 온라인 상에서 개인 정보들을 어떻게 보호할 수 있을까요?

우선, 정보들은 ‘암호화(encryption)’라는 과정을 통해서 보호될 수 있습니다. 제가 저의 친구 비둘기에게 편지를 보냈다고 가정 해보겠습니다. 위의 이미지처럼 제가 원래 보내려던 편지의 내용의 글자들의 순서가 뒤죽박죽 바뀌면서 편지의 원래 내용은 아무도 읽을 수 없게됩니다. 남들이 보기에는 낙서처럼 보이겠죠 ^^

암호화된 편지는 다시 ‘해독(decryption)’이라는 과정을 통해서 원래의 편지 내용으로 바뀝니다. 즉, 제가 비둘기에게 전하고 싶은 내용이 암호화되었다가 해독되어서 비둘기에게 전달되죠. 이 과정들을 거치면 안전하게 편지의 내용을 비밀리에 전달할 수 있겠죠?ㅎㅎ

수 백년동안 암호화하는 여러 가지 방법들이 연구되었고, 그 시초는 ‘시저의 암호(Caesar’s Cipher)’입니다.

시저 … 시저… 어디서 많이 들어본 이름 아닌가요?ㅎㅎ

네, 바로 그 ‘시저’ 맞을 겁니다 ^^ 바로 ‘줄리어스 시저 (Julius Caesar)’의 이름에서 따온 첫 암호화 방법이 ‘시저의 암호’입니다!

줄리어스 시저는 옛 로마의 정치가이자 장군이였습니다. 로마의 1인 지배자가 되어서 여러 가지 정책들을 추진하다가 암살되었던 역사적 인물입니다. (사실 잘 모르니 간단한 배경만 소개를 해드릴게요…^^;;)

줄리어스 시저가 암호를 만든 이유는 너무 당연합니다. 시저가 이끌던 군대에게 명령을 하고 싶은데, 만약에 적들이 그 명령들을 읽을 수 있다면 자신의 작전이 모두 들통날 테니까 적들이 자신의 군대 명령을 이해할 수 없도록 암호화 방법을 만들었습니다.

시저의 암호의 알고리즘 원리는 굉장히 간단합니다. ‘G’라는 알파벳이 있고, 이것을 시저의 암호로 다른 알파벳으로 표기해볼게요.

메세지를 보내는 사람과 받는 사람만이 알고 있는 비밀의 숫자 ‘3’이 있다고 가정하면, ‘G’라는 알파벳은 ‘ABCDEFGHIJ…..WZ’라는 알파벳 리스트에서 오른쪽으로 3칸 이동했을 때 대응되는 알파벳이 됩니다.

아직 어려우신가요? 걱정하지 마세요! 예시를 통해서 한 번 더 차근차근 볼게요 ^^

‘G’라는 알파벳 다음에는 ‘H’, ‘I’, ‘J’, 등등이 나옵니다. 이 때 비밀의 숫자인 ‘3’이 있기 때문에 G +3이 되어서 알파벳 리스트에서 ‘G’와 오른쪽으로 3칸 떨어져있는
J’가 표시됩니다. 즉, ‘3’이라는 비밀의 숫자가 있을 때 G = J로 표기되는 것이죠.

‘1’이 비밀의 숫자면 A = A+1 = B가 되고, ‘2’가 비밀의 숫자면 B = B+2 = D가 됩니다.

이렇게 메세지를 보내는 사람과 받는 사람만 알고 있는 비밀 숫자를 ‘키(key)’라고 부릅니다. Key를 한글로 번역하면 열쇠니까… 암호를 풀 수 있는 열쇠라고 생각하시면 간단하겠죠? ^^

‘HELLO’라는 단어를 ‘5’라는 키와 함께 시저의 암호로 바꾸면 어떻게 될까요?

각 자리 알파벳이 각각5자리만큼 이동한 값이 되어버리니까 ‘MJQQT’가 되겠네요! 즉, ‘HELLO’가 원래의 메세지라면 ‘MJQQT’는 키를 모르는 사람들이 볼 때 보이는 메세지의 내용이 됩니다.

그렇다면 메세지를 받는 사람은 어떻게 ‘MJQQT’를 ‘HELLO’로 다시 해독을 해서 메세지를 읽을 수 있을까요?

(정답): 받은 메세지의 각 자리의 알파벳들을 5자리만큼 왼쪽으로 이동했을 때 대응되는 알파벳을 조합하면 ‘HELLO’가 나오겠죠? ㅎㅎ

하지만 여기에는 문제점이 있습니다. 모든 자리의 알파벳에 똑같은 값의 숫자가 더해지니까 암호를 해독하는 것이 너무나도 쉽죠. (‘HELLO’의 단어에 구성 알파벳인 ‘H’, ‘E’, ‘L’, ‘L’, ‘O’에 모두 각각 5를 더해준 것 처럼요.)

그러면 이제 해독하기 조금 더 어려운 암호를 만들어보도록 해볼까요?ㅎㅎ

원시적인 시저의 암호를 훨씬 더 풀기 어려운 암호로 만들어 보겠습니다.

원리는 간단합니다: “각 자리 알파벳에 서로 다른 값을 더해주면 됩니다.”

예를 들어보겠습니다. ‘5182273847’이라는 키가 있으면, 암호화 시키려는 메세지의 첫 번째 알파벳 자리에는 ‘5’를 더해주고, 두 번째 알파벳 자리에는 ‘1’을 더해주고, 세 번째 알파벳 자리에는 ‘8’을 더해주고, 네 번째 알파벳 자리에는 ‘2’를 더해주고,….이렇게 하면 암호를 해독하기가 훨씬 더 어려워지겠죠? 각 자리에 서로 다른 값이 더해졌기 때문에 암호 키를 모르는 사람은 암호를 풀 수가 없을 정도로 어려워질 겁니다.

10자리 숫자의 키를 사용하게 된다면 100억 개 이상의 조합이 가능해지니까 암호화된 메세지의 원래 내용을 키를 모르는 사람이 맞추기가 엄청 엄청 힘들겠죠 ^^;;

오늘은 숫자를 어려워하시는 분들에게는 조금 힘들 수도 있는 포스팅이였는데요, 읽어주셔서 너무 감사하다는 의미로 오늘 배운 암호의 원리에 관한 퀴즈를 하나 내도록 하겠습니다.

제가 비둘기에게 영어로된 메세지를 보냈습니다. 이 메세지는 암호화가 되어서 ‘UYGHP’로 표기가 되었고, 저와 비둘기는 ‘25233’이라는 암호 키가 있습니다. 비둘기가 ‘UYGHP’를 암호 키를 가지고 해독하면 어떤 단어가 될까요?

가장 먼저 맞추신 분에게는 댓글에 풀보팅을 해드릴게요 ^^

다음 포스팅에서 뵈요~

참조링크

제 포스팅이 유익하였다면 보팅 , 리스팀, 팔로잉 부탁드립니다 ^^

인터넷의 원리 PART.1: 인터넷이란 무엇인가?
https://steemit.com/kr/@kim066/part-1
인터넷의 원리 PART 2: 와이어, 케이블, 그리고 와이파이 (Wifi) - 1
https://steemit.com/kr/@kim066/part-2-wifi-1
인터넷의 원리 PART 3: 와이어, 케이블, 그리고 와이파이 (Wifi) - 2
https://steemit.com/kr/@kim066/part-3-wifi-3
인터넷의 원리 PART 4: IP 주소 & DNS – (1)
https://steemit.com/kr/@kim066/part-4-ip-and-dns-1
인터넷의 원리 PART 5: IP 주소 & DNS – (2)
https://steemit.com/kr/@kim066/part-5-ip-and-dns-2
인터넷의 원리 PART 6: IP 주소 & DNS – (3)
https://steemit.com/kr/@kim066/part-6-ip-and-dns-3
인터넷의 원리 PART 7: 패킷, 라우팅, 그리고 신뢰성 – (1)
https://steemit.com/kr/@kim066/part-7-1
인터넷의 원리 PART 8: 패킷, 라우팅, 그리고 신뢰성 – (2)
https://steemit.com/kr/@kim066/part-8-2
인터넷의 원리 PART 9: TCP/IP와 UDP/IP (번외편)
https://steemit.com/kr/@kim066/part-9-tcp-ip-udp-ip

Sort:  

STEEM 이 답 아닌가요? 본문을 읽으니 쉽게 풀 수가 있네요. ^^

생각보다 많은 분들이 공개키, 개인키 등 암호에 있어서의 키의 역할에 대해서 어려워 하시는데 이렇게 쉽고 자세하게 설명해 주시니 정말 좋네요. 저도 주변분들에게 이 글의 링크를 드려야 겠어요. 감사합니다.

으아 대학교 강의때 배웠던 내용들 다시보니 새로워보이네요@-@

오늘도 역시나 전문적인 이야기를 들려주시는군요.ㅎ
잘보고 가요^^

감사드립니다 :)

김님 본문과
상관없는 질문 드려도 될까요^^
무엇을 하시는 분이신지 궁금합니다
경제학자나 교수님?

글을 정말 쉽게 잘 풀어쓰시네요

오늘도 감사합니다.

와 이런글 제가 정말 좋아하는 타입인데요 드디어 찾았네요 팔로우 하고 지속적으로 즐감하겠습니다 앞으로도 유익하고 재미난 글 많이 부탁 드리겠습니다.

STEEM이네요! 어려운내용을 정말 쉽게 또 궁굼하게 해주셔서 집중해서 봤습니다. 좋은정보 진심으로 감사합니다!!!! 자주들릴께요~ 선생님 항상 행복한 하루 가득되세요!

좋은내용으로 보답하겠습니다. 방문해 주셔서 감사드립니다 ^^

크~ 전문적인 일하시나봐요 글수준이..
자주 놀러와서 배우고갈게요~~

내게 인도네시아에서 steemian 소개. 나는 내 repotation가 모든 나의 친구처럼 증가 할 것일 정도로 나의 게시물을 대피시키는 한국 .agar로부터의 steemian 협력을 희망한다.

너무나도 알기 쉽게 설명하셨네요 :)

Coin Marketplace

STEEM 0.21
TRX 0.25
JST 0.039
BTC 95276.42
ETH 3297.99
USDT 1.00
SBD 3.16