일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- over the wire
- sql injection
- Authentication
- overthewire
- Cookie
- tryhackme
- ssrf
- php
- php login page
- 파일 업로드 취약점
- THM
- FTZ
- SQLi
- access control
- Reconnaissance
- Recon
- php 파일 업로드하기
- Server Side Request Forgery
- Leviathan
- active reconnaissance
- active recon
- OS Command Injection
- php file upload
- file upload
- War Game
- Cryptography
- php To Do List
- BANDiT
- php 로그인 페이지 만들기
- privilege escalation
- Today
- Total
R's Hacking Daily Log
Cryptography 맛보기 본문
Cryptography란??
암호학이라 불리는 학문으로 원래는 통신을 목적으로 했다면
현재는 데이터 연산, 처리, 또는 데이터 그 자체의 보안을 보장하기 위한 목적으로 사용된다.
암호학에서는 데이터를 안전하게 보호하기 위해 만족시켜야 할 기본적인 3가지 요소가 존재한다.
1. confidentaility (기밀성)
:: 어떠한 데이터를 주고받는 상황에서 이 데이터를 제 3자가 읽을 수 없어야 한다는 의미
편지를 보낼 때 주고 받는 사람끼리만 그 내용을 알고 싶어 하듯이
"이건 너랑 나만 알아야 하는 기밀이야!"와 같은 상황에서의 기밀을 생각하면 된다.
2. integrity (무결성)
:: 누군가에 의해 데이터가 조작되지 않아야 한다는 의미로
제 3자에 의해 편지 내용에 그 어떤 손상(조작)도 가해져서는 안 된다.
3. authentication
:: 데이터를 보낸 사람이 자신이 주장하는 사람이라 보장할 수 있어야 한다는 의미
편지에 보낸 사람이 Bob이라고 적혀있을 때 다른 사람이 Bob인 척 편지를 보낸 게 아니라
저어어엉말로 이 편지를 보낸 게 Bob이라는 걸 증명할 수 있어야 한다는 뜻이다.
위의 3가지 조건을 만족시키기 위한 심플한 아이디어를 살펴보기 전에
시나리오에 등장하는 인물부터 알아보자.
insecure network를 통해서 서로 메세지를 주고받고 싶은 Alice와 Bob이 있고,
이들의 대화를 엿들을 수 있는 eve, 이들이 주고받는 메세지를 조작할 수 있는 mallory가 등장한다.
Eve와 Mallory의 공격을 회피해 안전하게 메세지를 주고 받고 싶은 Alice와 Bob..!!
1. confidentiality : 어떻게 하면 Eve가 메세지를 읽지 못하게 할 수 있을까?
Alice가 Bob에게 메세지를 보낼 때, key를 사용해서 메세지를 상자 안에 넣고 잠궈서 상자를 Bob에게 보낸다.
그러면 Bob은 Alice가 사용한 key와 동일한 key로 상자를 열어 메세지를 꺼내볼 수 있다.
이때 중간에서 eve가 이 자물쇠를 열려고 시도해 보겠지만 key가 없으면 상자를 열 수 없다!!
2. integrity, authentication :
메세지가 중간에 조작되지 않았고 이 메세지가 Alice로부터 왔다고 어떻게 확신할 수 있을까?
Alice가 Bob에게 편지를 보낼 때, 이번에는 seal이라는 것을 편지지에 붙여서 보냈다.
Bob은 이 seal이 원래 상태 그대로 붙어 있는지 확인해 편지가 뜯겼었는 지의 여부를 알 수 있다.
즉, 편지를 넣은 편지지에 seal 만들어 붙였을 때 이 seal이 망가지지 않았다면
(Alice가 만든 seal = Bob이 확인한 seal) Alice가 보낸 편지가 맞는구나!라고 판단할 수 있게 된다.
* seal은 메세지와 key를 사용해 특정 연산을 실행했을 때의 결과로 seal과 메세지를 같이 보내면
Bob은 자신이 갖고 있는 key와 받은 메세지를 가지고 seal을 만들어보는 것이다.
Alice가 보낸 seal과 Bob이 만든 seal이 동일하다면 메세지가 조작되지 않았음을 알 수 있게 되는 것
정리해 보자면, seal은 메세지가 조작되었는지 아닌지의 여부를 판단하기 위해 비교하는 값으로 사용되며
seal을 계산하기 위해 Alice와 Bob은 사전에 key를 공유하고 있어야 한다!
지금까지 간단히 3가지 기본 요소를 만족시키기 위한 시나리오를 살펴보았다.
마지막으로 암호학에서 사용하는 흔하면서도 확실히 짚어야 할 단어 몇 가지를 정의해 보자!
Plaintext & Ciphertext
1. plaintext
:: 아무것도 첨가되지 않은 요거트를 플레인 요거트라 하듯이 원래의 문장 그 자체를 말한다.
사람이 직관적으로 이해할 수 있는 text
2. ciphertext
:: 원래 문장에 무언가 첨가되어 형태가 변해버린 text
암호화를 거친 text다~라고 할 수 있는 데, 그렇다 보니 사람이 바로 이해할 수 없는 문자열이라 할 수 있다.
Encrypt & Decrypt
1. Encrypt = 암호화
:: plaintext로 어떤 연산을 거쳐 ciphertext를 만드는 과정을 말한다.
:: 우리가 직관적으로 알아볼 수 있는 문장을 이해할 수 없는 문장으로 만들어버리는 과정이다.
2. Decrypt = 복호화
:: 암호화와 반대 개념으로 ciphertext를 plaintext로 원상복귀시키는 과정을 말한다.
:: 알아볼 수 없게 만든 문장을 사람이 직관적으로 이해할 수 있는 문장으로 만들어주는 과정이다.
* ex) plaintext를 encrypt 했더니 ciphertext가 만들어졌다!
반대로, ciphertext를 decrypt 했더니 plaintext를 얻을 수 있었다!
'Daily-Note > cryptography' 카테고리의 다른 글
Symmetric Key Encryption - MACs (0) | 2023.07.09 |
---|---|
Symmetric key Encryption - AES (0) | 2023.07.07 |
Symmetric key Encryption - DES (0) | 2023.04.23 |
Symmetric key Encryption - Block Cipher (0) | 2023.04.22 |
Symmetric key Encryption - One Time Pad(OTP) (0) | 2023.04.21 |