티스토리 뷰
🔐RSA 암호란 무엇인가?
- RSA는 공개키(비대칭키) 암호시스템 중 하나이다.
- RSA라 하니 무언가 의미가 있는 줄임말 인줄 알았으나, 1978년 이 암호시스템을 체계화 시킨
로널드 라이베스트(Ron Rivest), 아디 샤미르(Adi Shamir), 레너드 애들먼(Leonard Adleman)
세명의 이름 앞글자를 따서 RSA이다....
우선, 대칭키 암호와 비대칭키 암호화에 대해서 알아보자.
대칭키란 암호화 시키는 키와 복호화 시키는 키가 같은 경우이다.
비대칭키는 암호화 와 복호화의 키가 다른 경우이다.
대칭키의 문제점은 무엇일까?
📃 A가 B에게 비밀 문서를 전달한다고 해보자.
- A가 아무나 볼 수 없도록 암호화를 시켜서 문서를 전달했다.
- 전달 중 C가 문서를 가로챘다하더라도 암호화 되어있어 무슨 내용인지 알 수 가 없다.
- 하지만 문서를 받은 B도 읽을 수가 없다. 왜? 해석할 수가 없기 때문이다.
- 여기서 문제가 발생한다. 결국 암호를 해독하기위한 키가 필요하기 때문에 암호화 키를 B에게 전달해야 한다.
- 암호화 키를 전달할 때 C가 가로챈다면? 내용을 볼 수도 있고, 내용을 바꿔서 B에게 전달할 수도 있다.
비대칭키는 무엇일까?
암호화 키 : 공개키(public key)
복호화 키 : 개인키(private key)를 사용한다.
암호화와 복호화가 다른키를 사용하기 때문에 비대칭 키이다.
A는 공개키와 개인키를 가지고 있다. 공개키는 누구에게나 공개되어 있는 키 이고 개인키는 A만 가지고 있는 키이다.
B도 공개키와 개인키를 가지고 있다. 공개키는 누구에게나 공개되어 있는 키 이고 개인키는 B만 가지고 있는 키이다.
📃비대칭키로 비밀문서를 전달해보자.
- A는 B의 공개키로 전달한 문서를 암호화 한다.( B의 공개키로 암호화된 문서는 B의 개인키로 해독이 가능하다.)
- C가 문서를 가로챘다! 하지만 해독이 불가능하다.
- 문서를 받은 B는 자신의 개인키로 문서를 해독하여 볼 수 있다.
- B는 A의 공개키로 답장할 문서를 암호화 한다.
- 문서를 받은 A는 자신의 개인키로 문서를 해독하여 볼 수 있다.
- 비밀키는 전달하지 않고 암호화된 비밀 문서를 잘 주고 받았다. Good!
> 그러나...문제가 하나 더 있다.
만약 C가 문서를 가로챘다면 내용은 볼 수 없지만 문서를 태워버리고 자신이 새로 문서를 작성해서 B의 공개키로 암호화를 한 후, B에게 보낸다면? B는 A가 보냈는지 C가 보냈는지 알 수가 없다. 그렇다면 A가 보낸 문서인지 어떻게 확인 할 수 있을까??
📃다시 비밀문서를 전달해보자.
- A는 B의 공개키로 전달할 문서를 암호화 한다.
- 암호화된 문서를 A의 비밀키로 암호화를 한번 더 한다.
- C가 문서를 가로챘다! A의 공개키로 해독을 했다! 하지만 해독한 문서는 B의 공개키로 암호화된 문서이다.
- 문서를 전달받은 B는 A의 공개키로 해독을 했다. A의 공개키로 해독이 된다는 것의 의미는 A의 비밀키로 암호화 했다는 의미이다. 즉, 이 문서는 A가 보낸 문서가 맞다는 것을 인증 할 수 있다.
- B는 다시 자신의 개인키로 암호를 해독하여 내용을 볼 수 있다. Great~!
RSA는 이 비대칭키 암호화 시스템 중 한가지 이고
인증(개인키로 암호화)과 암호화(공개키로 암호화) 두가지를 모두 해결할 수 있다.
RSA의 원리를 알고싶다면?
ko.wikipedia.org/wiki/RSA_%EC%95%94%ED%98%B8
namu.wiki/w/RSA%20%EC%95%94%ED%98%B8%ED%99%94
'뉴비의 시선' 카테고리의 다른 글
추상클래스 vs 인터페이스 (0) | 2020.12.22 |
---|---|
REST? REST API? (0) | 2020.12.16 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- I/O Mechanisms
- Free space management
- Spring
- mapreduce
- Replacement Strategies
- Flume
- SQL
- 빅데이터 플랫폼
- jdbc
- RAID Architecture
- aop
- springboot
- Disk Scheduling
- gradle
- 빅데이터
- Disk System
- hadoop
- SPARK
- oracle
- JSON
- File Protection
- maven
- vmware
- Variable allocation
- I/O Services of OS
- 하둡
- linux
- Allocation methods
- HDFS
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함