112 lines
12 KiB
Plaintext
112 lines
12 KiB
Plaintext
<mxfile host="app.diagrams.net" modified="2026-05-10T00:00:00.000Z" agent="Mozilla/5.0" version="24.0.0" type="device">
|
|
<diagram name="s18c-cipher-vs-handshake" id="cipher-vs-handshake">
|
|
<mxGraphModel dx="1600" dy="900" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="900" math="0" shadow="0">
|
|
<root>
|
|
<mxCell id="0" />
|
|
<mxCell id="1" parent="0" />
|
|
|
|
<mxCell id="title" value="cipher suite vs 핸드셰이크 — 다른 차원의 두 개념 (혼동 금지)" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=24;fontStyle=1;fontFamily=Pretendard,Helvetica;" vertex="1" parent="1">
|
|
<mxGeometry x="60" y="36" width="1500" height="40" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="subtitle" value="cipher suite = 정적 설정 (4 슬롯 묶음, 명사) · 핸드셰이크 = 동적 절차 (N 메시지 교환, 동사)" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=15;fontFamily=Pretendard,Helvetica;fontColor=#57606A;" vertex="1" parent="1">
|
|
<mxGeometry x="60" y="76" width="1500" height="22" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="warn-bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FEE2E2;strokeColor=#B91C1C;strokeWidth=2;dashed=1;" vertex="1" parent="1">
|
|
<mxGeometry x="40" y="120" width="1520" height="70" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="warn-icon" value="❌" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=24;fontFamily=Pretendard,Helvetica;" vertex="1" parent="1">
|
|
<mxGeometry x="60" y="135" width="40" height="40" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="warn-text" value="흔한 오해: '핸드셰이크 4 단계 = cipher suite'
사실: 두 개념은 다른 차원 — cipher suite (4 슬롯 묶음, 정적) vs 핸드셰이크 (N 메시지 절차, 동적)" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#7F1D1D;spacingLeft=14;" vertex="1" parent="1">
|
|
<mxGeometry x="110" y="125" width="1440" height="60" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="grp-cipher" value="① cipher suite — 정적 설정 (명사)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#EDE9FE;strokeColor=#5B21B6;strokeWidth=2;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#5B21B6;align=left;verticalAlign=top;spacingLeft=10;spacingTop=6;" vertex="1" parent="1">
|
|
<mxGeometry x="40" y="210" width="740" height="490" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="cipher-name" value="TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#5B21B6;strokeWidth=2;fontSize=12;fontStyle=1;fontFamily=monospace;fontColor=#5B21B6;align=center;verticalAlign=middle;" vertex="1" parent="1">
|
|
<mxGeometry x="70" y="250" width="680" height="40" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="cipher-slot1" value="kex
ECDHE" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DBEAFE;strokeColor=#1E40AF;strokeWidth=2;fontSize=11;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;align=center;verticalAlign=middle;" vertex="1" parent="1">
|
|
<mxGeometry x="80" y="310" width="150" height="60" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cipher-slot2" value="auth
ECDSA" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#EDE9FE;strokeColor=#5B21B6;strokeWidth=2;fontSize=11;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#5B21B6;align=center;verticalAlign=middle;" vertex="1" parent="1">
|
|
<mxGeometry x="245" y="310" width="150" height="60" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cipher-slot3" value="bulk cipher
AES_256_GCM" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DCFCE7;strokeColor=#15803D;strokeWidth=2;fontSize=11;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#15803D;align=center;verticalAlign=middle;" vertex="1" parent="1">
|
|
<mxGeometry x="410" y="310" width="170" height="60" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cipher-slot4" value="MAC
SHA384" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FEF3C7;strokeColor=#B45309;strokeWidth=2;fontSize=11;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#B45309;align=center;verticalAlign=middle;" vertex="1" parent="1">
|
|
<mxGeometry x="595" y="310" width="155" height="60" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="cipher-key" value="★ '4' = 슬롯 4 개 (역할) · 단계 수 아님" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#5B21B6;strokeWidth=1;dashed=1;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#5B21B6;align=center;verticalAlign=middle;" vertex="1" parent="1">
|
|
<mxGeometry x="80" y="390" width="670" height="32" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="cipher-anal-title" value="비유 — 4 코스 메뉴" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#5B21B6;spacingLeft=14;" vertex="1" parent="1">
|
|
<mxGeometry x="80" y="436" width="670" height="22" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="cipher-menu" value="에피타이저: 샐러드 ← kex 슬롯
메인: 스테이크 ← auth 슬롯
디저트: 케이크 ← bulk 슬롯
음료: 와인 ← MAC 슬롯" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#5B21B6;strokeWidth=1;fontSize=11;fontFamily=monospace;fontColor=#3B0764;align=left;verticalAlign=top;spacingLeft=14;spacingTop=8;" vertex="1" parent="1">
|
|
<mxGeometry x="80" y="462" width="670" height="98" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="cipher-traits" value="✓ 정적 — 협상 결과로 결정되면 그 세션 내내 고정
✓ 명사 — '메뉴' 처럼 이름 그대로의 설정 묶음
✓ 슬롯에 들어갈 알고리즘은 옵션 (예: auth 슬롯 = ECDSA / RSA / Ed25519)
✓ 한 줄 이름이 곧 'menu order' — 4 알고리즘 동시 지정" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#3B0764;spacingLeft=20;" vertex="1" parent="1">
|
|
<mxGeometry x="60" y="580" width="700" height="100" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="grp-handshake" value="② 핸드셰이크 — 동적 절차 (동사)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#DBEAFE;strokeColor=#1E40AF;strokeWidth=2;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;align=left;verticalAlign=top;spacingLeft=10;spacingTop=6;" vertex="1" parent="1">
|
|
<mxGeometry x="820" y="210" width="740" height="490" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="hs-12-title" value="TLS 1.2 핸드셰이크 ≈ 7 메시지" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;spacingLeft=14;" vertex="1" parent="1">
|
|
<mxGeometry x="840" y="248" width="700" height="22" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="hs-12-flow" value="1. ClientHello
2. ServerHello + Certificate
3. ServerKeyExchange + ServerHelloDone
4. ClientKeyExchange
5. ChangeCipherSpec + Finished (client)
6. ChangeCipherSpec + Finished (server)
7. (Application Data 시작)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#1E40AF;strokeWidth=2;fontSize=11;fontFamily=monospace;fontColor=#1E3A8A;align=left;verticalAlign=top;spacingLeft=14;spacingTop=8;" vertex="1" parent="1">
|
|
<mxGeometry x="840" y="274" width="700" height="138" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="hs-13-title" value="TLS 1.3 핸드셰이크 ≈ 3 메시지" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;spacingLeft=14;" vertex="1" parent="1">
|
|
<mxGeometry x="840" y="424" width="700" height="22" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="hs-13-flow" value="1. ClientHello (key share 포함)
2. ServerHello + EncryptedExtensions + Certificate
 + CertificateVerify + Finished
3. Finished (client)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#1E40AF;strokeWidth=2;fontSize=11;fontFamily=monospace;fontColor=#1E3A8A;align=left;verticalAlign=top;spacingLeft=14;spacingTop=8;" vertex="1" parent="1">
|
|
<mxGeometry x="840" y="450" width="700" height="80" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="hs-key" value="★ 단계 수는 TLS 버전마다 다름 (4 가 고정값 아님)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#1E40AF;strokeWidth=1;dashed=1;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;align=center;verticalAlign=middle;" vertex="1" parent="1">
|
|
<mxGeometry x="840" y="544" width="700" height="32" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="hs-anal-title" value="비유 — 식당 가서 먹는 절차" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;spacingLeft=14;" vertex="1" parent="1">
|
|
<mxGeometry x="840" y="586" width="700" height="22" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="hs-restaurant" value="입장 → 주문 → 조리 → 서빙 → 먹기 → 계산 → 퇴장
(여기서 '주문' 단계에 메뉴 = cipher suite 가 협상됨)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#1E40AF;strokeWidth=1;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#1E3A8A;align=left;verticalAlign=top;spacingLeft=14;spacingTop=8;" vertex="1" parent="1">
|
|
<mxGeometry x="840" y="612" width="700" height="50" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="hs-traits" value="✓ 동적 — 시간순으로 메시지를 주고받는 절차 (동사)" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#1E3A8A;spacingLeft=20;" vertex="1" parent="1">
|
|
<mxGeometry x="820" y="675" width="720" height="22" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="grp-meet" value="③ 두 개념의 만남 — 핸드셰이크 안에서 cipher suite 가 협상된다" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFF7ED;strokeColor=#FB923C;strokeWidth=1;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#C2410C;align=left;verticalAlign=top;spacingLeft=10;spacingTop=6;" vertex="1" parent="1">
|
|
<mxGeometry x="40" y="720" width="1520" height="70" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="meet-text" value="• 핸드셰이크 1 단계 (ClientHello/ServerHello) → cipher suite 를 '협상' (어느 묶음 쓸지 선택)
• 핸드셰이크 후속 단계 → cipher suite 의 kex 슬롯 (ECDHE) + auth 슬롯 (ECDSA) 알고리즘이 사용됨
• 핸드셰이크 종료 후 (Phase 2) → cipher suite 의 bulk 슬롯 (AES) + MAC 슬롯 (SHA) 가 데이터 암호화에 사용됨" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#7C2D12;spacingLeft=20;spacingTop=4;" vertex="1" parent="1">
|
|
<mxGeometry x="50" y="745" width="1500" height="40" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="caption-bg" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F6F8FA;strokeColor=#D0D7DE;" vertex="1" parent="1">
|
|
<mxGeometry x="40" y="800" width="1520" height="44" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="caption" value="cipher suite (4 슬롯 묶음, 명사) ≠ 핸드셰이크 (N 메시지 절차, 동사) · '핸드셰이크 4 단계 = cipher suite' 는 잘못된 매핑" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=14;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#24292F;" vertex="1" parent="1">
|
|
<mxGeometry x="40" y="800" width="1520" height="44" as="geometry" />
|
|
</mxCell>
|
|
|
|
</root>
|
|
</mxGraphModel>
|
|
</diagram>
|
|
</mxfile>
|