일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- php 로그인 페이지 만들기
- Recon
- BANDiT
- php file upload
- active recon
- Reconnaissance
- php login page
- OS Command Injection
- FTZ
- ssrf
- sql injection
- Cryptography
- active reconnaissance
- tryhackme
- access control
- php To Do List
- over the wire
- Server Side Request Forgery
- privilege escalation
- THM
- overthewire
- Leviathan
- Authentication
- file upload
- 파일 업로드 취약점
- Cookie
- SQLi
- php
- War Game
- php 파일 업로드하기
- Today
- Total
R's Hacking Daily Log
Symmetric key Encryption - One Time Pad(OTP) 본문
데이터를 안전하게 주고받기 위해서 "Key"를 사용한다는 사실을 알게 되었다.
[이전 글 참고]
Alice와 Bob이 서로 동일한 Key를 사용하는 암호화를 대칭키 기반 암호화(Symmetric key Encryption)
Alice와 Bob이 서로 다른 Key를 사용하는 걸 비대칭키 기반 암호화(Asymmetric key Encryption)이라 한다.
그 중에서도 먼저 대칭키 기반 암호화 방식에 대해 살펴보자면 아래와 같이 나타낼 수 있다.
Symmetric key Encryption | |
Confidentiality | One time Pad Block cipher (ECB, CBC, CTR) |
Integrity Authentication |
Mac(NMac, HMac) |
암호화 방식이라고 해서 Confidentiality, Integrity, Aythentication을 모두 만족하지는 못한다.
그렇기 때문에 Symmetric key 방식이면서 Confidentiality를 만족하는 암호화 기법과
Integrity&Authentication을 만족하는 기법을 따로 살펴보도록 하자.
Symmetric key Encryption 중에서도 가장 간단한 암호화 기법인 "One Time Pad"에 대해 알아보자.
기본적으로 Symmetric key Encryption에서 암호화하고자 하는 데이터는 "bit string"을 말하며
암호화/복호화 과정에서 XOR 연산을 사용한다.
One Time Pad는 말 그대로 데이터를 암호화(or 복호화)를 할 때 랜덤하게 만든 Pad를 사용하는 방식이다.
* Pad = 암호화 할 데이터의 bit 수만큼 랜덤 하게 생성한 bit string(sequence)
PlainText = 1001인 데이터를 One Time Pad 방식으로 암호화한다고 할 때,
Alice와 Bob은 동일한 pad(=key) 0101를 사용한다.
(Alice와 Bob은 동일한 key를 사용했기 때문에 Symmetric key Encryption에 해당한다.)
Alice가 보낼 메시지 1001에 key 0101을 XOR 처리해 결과로 나온 1100을 Bob에게 보낸다.
Bob은 자신이 받은 메세지 1100에 key 0101을 XOR 처리해 Alice가 작성한 원본 메세지 1001을 얻게 된다.
plaintext(1001)에 key(0101)를 XOR 처리한 Ciphertext(1100)는 key가 없는 제 3자가
원본 메시지 내용을 알지 못하게 만들기 위한 과정이다.
그렇기 때문에 서로 동일한 키를 사전에 공유한 Alice와 Bob만이 이 메시지를 암호화&복호화하여 메세지를 주고받을 수 있다 하여 One Time Pad 암호화 방식은 Confidentiality를 만족시킨다고 할 수 있다.
하지만 key를 재사용한다면 어떻게 될까?
공격자가 중간에서 ciphertext 내용을 계속 기록하고 있었다고 한다면
ciphertext 1 & 2로 XOR 연산을 통해 plaintext와 관련된 정보를 얻어낼 수 있게 된다.
confidentiality란 ciphertext의 plaintext에 대해 그 어떤 추가적인 정보도 제공하지 않는 것을 기준으로 삼는다.
따라서 One Time Pad에서 메시지마다 랜덤 한 pad를 만들지 않고 재사용할 시 confidentiality를 만족한다고 할 수 없다.
[summary]
1. one time pad에서 pad란?
메시지를 암호화(복호화)할 때 사용할 key 역할을 하는 bit sequence다!
2. one time pad는 Symmetric key Encryption??
Alice와 Bob이 데이터를 암호화/복호화할 때 동일한 pad를 사용하기 때문에 symmetric!
3. one time pad는 암호학의 3가지 기준을 만족??
one time pad는 symmetric key 암호화 기법 중에서도 confidentiality를 만족한다.
4. one time pad에서 주의할 점은??
동일한 pad를 재사용하게 되면 [= two time pad]
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 |
Cryptography 맛보기 (0) | 2023.04.20 |