일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- Python
- Spring Framework
- 백준
- 스프링 프레임워크
- 프로그래머스
- 파이썬
- Java
- 다이나믹프로그래밍
- 프로그래밍언어론
- 라인플러스
- STL
- 백트래킹
- 알고리즘
- spring
- 릿코드
- C/C++
- leetcode
- 머신러닝
- binary search
- 딥러닝
- 스타벅스
- 벤쿠버
- DP
- jvm
- dfs
- 라인
- 모두를 위한 딥러닝
- C++
- BFS
- 시애틀
- Today
- Total
케이스윔의 개발 블로그
[암호화] 비공개키 암호화 & 공개키 암호화 본문
<비공개 키 암호방식 == 대칭 암호>
· 비공개키 암호방식: 동일한 키로 암호화, 복호화를 동시에 할 수 있는 방식. 암호화를 하는 측과 복호화를 하는 측이 같은 암호 키를 공유해야 한다! ‘abcd’라는 키로 암호화를 하면 복호화시에 ‘abcd’를 입력해야함! 이 과정에서 누가 대칭키를 획득하면 암호화된 데이터를 알아낼 수 있다는 단점 ㅠㅠ
계산 속도가 빠르다는 장점을 가진다! 상대방과 키를 공유해야하는데 안전하게 키 공유가 어려움. 상대방이 많아질수록 키 관리가 어려움 n(n-1)/2개의 키 필요!
-블록 암호 알고리즘: 대칭키 알고리즘 중 암/복호화시 데이터를 블록 단위로 처리하는 알고리즘 SSL/TLS에서 많이 사용됨
<공개 키 암호방식 == 비대칭 암호>
· 공개 키 암호방식: 암호방식의 한 종류로 사전에 비밀키를 나눠가지지 않은 사용자들이 안전하게 통신할 수 있도록 한다.(키를 분배하고 미리 가지고 있지 않아도 공개 채널 상에서 안전하게 통신할 수 있도록 해줌) 공개키와 비밀키가 존재함. 공개키는 누구나 알 수 있지만 그에 대응하는 비밀 키는 키의 소유자만이 알 수 있어야함
-> 공개키 또는 비밀키로 암호화를 할 수 있기 때문에 2가지의 경우를 생각할 수 있다. 수신자의 공개키로 암호화를 해서 수신자가 받아서 자신의 개인키로 복호화! 또는 송신자의 개인키로 암호화를 한 후 수신측에서 송신자의 공개키로 복호화!
-> 이 방식에서 핵심은 공개키를 통해 암호화한 것은 개인키를 통해 복호화할 수 있고 개인키를 통해서 암호화한 것은 공개키를 통해서 복호화할 수 있다는 것이다.
- 공개 키 암호: 특정한 비밀 키를 가지고 있는 사용자만 내용을 열어볼 수 있음
ex) 열쇠로 잠겨있고 좁은 투입구가 있는 편지함에 비유할 수 있음! 편지함은 위치(공개키)만 알면 투입구를 통해 누구나 편지를 넣을 수 있지만 열쇠(개인키)를 가진 사람만이 편지함을 열어서 내용을 확인할 수 있음
- 공개 키 서명: 특정한 비밀 키로 만들었다는 것을 누구나 확인할 수 있음.
ex) 인장으로 편지봉투를 봉하는 것에 비유할 수 있음. 봉인한 편지는 누구나 열어볼 수 있지만 인장 확인을 통해 인장을 소유한 발신자가 이 편지를 보냈음을 증명할 수 있음!
⇒ 비밀 키 암호보다 계산이 복잡! 효율을 위해 비밀키 암호(=대칭 암호)와 함께 사용됨. 메시지를 임의로 만들어진 비밀 키를 이용해 암호화한 다음 이 비밀 키를 다시 수신자의 공개 키로 암호화하여 메시지와 함께 전송하는 것이다. 이렇게 하면 공개 키 암호 기술로는 짧은 비밀 키만을 암호화하고 보다 효율적인 비밀 키 암호 기술로 전체 메시지를 암호화하므로 양쪽의 장점을 취할 수 있다.
※ 공개키 알고리즘은 공개키로 암호화를 하냐, 개인키로 암호화를 하냐에 따라 사용분야가 달라짐-> 공개키의 경우 데이터 보안에 중점을 두고, 개인키로 암호화하면 인증 과정에 중점을 두는 것!
1. 공개키로 암호화를 하는 경우: 상대방의 공개키로 데이터를 암호화하고 데이터를 전달하면, 데이터를 받은 사람은(공개키 주인) 자신의 개인키로 데이터를 복호화 한다.
ex) A키로 암호화를 한다면, B키로 복호화가 가능하고, B키로 암호화를 한다면, A키로 복호화가 가능한 것이다.
2. 개인키로 암호화를 하는 경우: 개인키의 소유자가 개인키로 데이터를 암호화하고 공개키와 함께 전달. 이 과정에서 공개키와 데이터를 획득한 사람은 송신자의 공개키로 복호화가 가능함! 암호화된 데이터가 공개키로 복호화 된다는 것은 공개키와 쌍을 이루는 개인키에 의하여 암호화되었다는 것을 의미! 즉 데이터의 제공자의 신원 확인이 보장된다는것! 이 방법으로 공인인증체계의 기본바탕인 전자서명. 개인키 암호화를 전자서명이라 부름!
'Study' 카테고리의 다른 글
[DB] transaction의 Level of isolation (0) | 2018.10.05 |
---|---|
[Jupyter] ipynb 파일 html 로 변환하기 (0) | 2018.08.08 |
[Django] Elasticsearch, Kibana와 연동하기 (2) | 2018.07.29 |
[Django] https 설정(openssl, stunnel) (0) | 2018.07.24 |
[네트워크] http와 https 알아보기 (0) | 2018.05.28 |