-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
82fc48f
commit 4e7dc07
Showing
2 changed files
with
163 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
# SSL/TLS Handshake 과정 | ||
|
||
SSL/TLS 핸드쉐이크는 클라이언트와 서버 간에 안전한 통신 채널을 설정하는 과정입니다. 다음은 주요 단계를 설명한 내용입니다: | ||
|
||
--- | ||
|
||
## 1. **Client Hello** | ||
- 클라이언트가 서버에 핸드쉐이크를 시작하는 메시지를 보냅니다. | ||
- 포함된 정보: | ||
- 지원하는 **암호화 방식(Cipher Suites)** 목록 | ||
- **TLS/SSL 버전** | ||
- 랜덤 데이터(Nonce) | ||
|
||
--- | ||
|
||
## 2. **Server Hello** | ||
- 서버가 클라이언트에 응답합니다. | ||
- 포함된 정보: | ||
- 선택된 **암호화 방식** | ||
- **TLS/SSL 버전** | ||
- 랜덤 데이터(Nonce) | ||
|
||
--- | ||
|
||
## 3. **Server Certificate** | ||
- 서버는 자신의 인증서를 클라이언트에 보냅니다. | ||
- **인증서 내용**: | ||
- 서버의 공개 키 | ||
- 서버의 도메인 이름 | ||
- 인증 기관(CA) 서명 | ||
|
||
--- | ||
|
||
## 4. **Key Exchange** | ||
- **(옵션) Server Key Exchange**: 추가 키 교환 데이터를 전송 (예: DHE 또는 ECDHE 사용 시). | ||
- **Client Key Exchange**: | ||
- 클라이언트는 공유 키를 생성하기 위해 서버의 공개 키를 사용하여 데이터를 암호화한 후 서버에 전송합니다. | ||
|
||
--- | ||
|
||
## 5. **Session Key 생성** | ||
- 클라이언트와 서버는 각각 전송된 데이터를 바탕으로 세션 키를 생성합니다. | ||
- 세션 키는 이후 대칭 암호화에 사용됩니다. | ||
|
||
--- | ||
|
||
## 6. **Finished** | ||
- 양측이 핸드쉐이크 완료 메시지를 암호화하여 전송합니다. | ||
- 클라이언트와 서버는 각각 생성된 세션 키로 암호화된 "Finished" 메시지를 보냅니다. | ||
- 메시지가 정상적으로 해독되면 핸드쉐이크가 완료됩니다. | ||
|
||
--- | ||
|
||
## 결과: 보안 통신 시작 | ||
- 핸드쉐이크가 완료되면, 클라이언트와 서버 간의 데이터는 세션 키를 사용해 암호화되어 안전하게 전송됩니다. | ||
|
||
--- | ||
|
||
## SSL/TLS 핸드쉐이크 과정 다이어그램 | ||
|
||
```plaintext | ||
Client Server | ||
| | | ||
| ----------- Client Hello -------->| | ||
| | | ||
| <----------- Server Hello --------| | ||
| | | ||
| <------- Server Certificate ------| | ||
| | | ||
| - - (옵션) Server Key Exchange -->| | ||
| | | ||
| -------- Client Key Exchange ---->| | ||
| | | ||
| ----------- Finished ------------>| | ||
| <----------- Finished ------------| | ||
| | | ||
| [ Secure Communication ] | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
|
||
# RSA 암호화 알고리즘 | ||
|
||
RSA는 공개 키 암호화 알고리즘으로, 공개 키와 개인 키를 사용하여 데이터를 암호화하고 복호화합니다. 아래는 RSA의 작동 원리와 과정을 설명합니다. | ||
|
||
--- | ||
|
||
## 1. **RSA의 핵심 개념** | ||
- **비대칭 암호화**: | ||
- 공개 키(public key)는 데이터를 암호화하는 데 사용됩니다. | ||
- 개인 키(private key)는 데이터를 복호화하는 데 사용됩니다. | ||
- 소인수분해의 어려움에 기반: | ||
- 큰 소수 두 개를 곱한 값(모듈러스)의 소인수분해가 매우 어렵다는 수학적 원리를 이용합니다. | ||
|
||
--- | ||
|
||
## 2. **키 생성 과정** | ||
1. 두 개의 큰 소수 \( p \)와 \( q \)를 선택: | ||
- \( p \), \( q \)는 임의의 큰 소수. | ||
2. \( n = p imes q \) 계산: | ||
- \( n \)은 공개 키와 개인 키 모두에서 사용되는 모듈러스. | ||
3. 오일러 함수 \( \phi(n) = (p-1) imes (q-1) \) 계산. | ||
4. 공개 키 \( e \) 선택: | ||
- \( 1 < e < \phi(n) \)이고 \( e \)는 \( \phi(n) \)과 서로소. | ||
5. 개인 키 \( d \) 계산: | ||
- \( d \)는 \( e imes d \mod \phi(n) = 1 \)을 만족하는 값. | ||
6. 결과: | ||
- **공개 키**: \( (e, n) \) | ||
- **개인 키**: \( (d, n) \) | ||
|
||
--- | ||
|
||
## 3. **암호화 과정** | ||
1. 평문 \( M \)을 암호화: | ||
- 암호문 \( C = M^e \mod n \) | ||
2. \( M \)은 \( 0 \leq M < n \)을 만족해야 함. | ||
|
||
--- | ||
|
||
## 4. **복호화 과정** | ||
1. 암호문 \( C \)를 복호화: | ||
- 평문 \( M = C^d \mod n \) | ||
|
||
--- | ||
|
||
## 5. **RSA 과정 요약** | ||
```plaintext | ||
키 생성: | ||
1. 두 소수 \( p \), \( q \) 선택 | ||
2. \( n = p imes q \), \( \phi(n) = (p-1) imes (q-1) \) | ||
3. 공개 키 \( e \), 개인 키 \( d \) 생성 | ||
암호화: | ||
- 입력 평문 \( M \) | ||
- 암호문 \( C = M^e \mod n \) | ||
복호화: | ||
- 입력 암호문 \( C \) | ||
- 평문 \( M = C^d \mod n \) | ||
``` | ||
|
||
--- | ||
|
||
## 6. **RSA의 특성** | ||
### 장점: | ||
- 높은 보안성: | ||
- 비대칭 암호화를 사용하여 키가 공개되어도 복호화가 어렵습니다. | ||
- 디지털 서명 가능: | ||
- 데이터 무결성과 송신자의 신뢰성을 보장. | ||
|
||
### 단점: | ||
- 속도: | ||
- 대칭 암호화 방식보다 느림. | ||
- 키 길이: | ||
- 강력한 보안을 위해 긴 키를 사용해야 함. | ||
|
||
--- | ||
|
||
## 7. **RSA 활용 사례** | ||
- HTTPS 및 SSL/TLS에서 공개 키 교환. | ||
- 디지털 서명 생성 및 검증. | ||
- 이메일 암호화(GPG/PGP). | ||
|
||
<script type="text/javascript" async | ||
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.2.0/es5/tex-mml-chtml.js"> | ||
</script> |