Files
project-infra/presentation/diagrams/s18b-cipher-suite-anatomy.drawio
T

219 lines
22 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="s18b-cipher-suite-anatomy" id="cipher-suite">
<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 해부 — cipher 는 ECDSA 자체가 아님 (4 알고리즘 묶음 중 1 슬롯)" 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 협상 = 어느 묶음을 쓸지 결정하는 단계. 묶음 안에 키교환 · 인증(ECDSA) · 데이터암호화(AES) · 무결성(SHA) 슬롯 4 개가 따로 있음" 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="grp-name" value="① cipher suite 한 줄 — 4 슬롯의 합성어" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F6F8FA;strokeColor=#D0D7DE;strokeWidth=1;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#24292F;align=left;verticalAlign=top;spacingLeft=10;spacingTop=6;" vertex="1" parent="1">
<mxGeometry x="40" y="120" width="1520" height="120" as="geometry" />
</mxCell>
<mxCell id="seg-prefix" value="TLS_" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E5E7EB;strokeColor=#6B7280;strokeWidth=2;fontSize=14;fontStyle=1;fontFamily=monospace;fontColor=#374151;align=center;verticalAlign=middle;" vertex="1" parent="1">
<mxGeometry x="80" y="155" width="80" height="50" as="geometry" />
</mxCell>
<mxCell id="seg-kex" value="ECDHE_" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#DBEAFE;strokeColor=#1E40AF;strokeWidth=3;fontSize=15;fontStyle=1;fontFamily=monospace;fontColor=#1E40AF;align=center;verticalAlign=middle;" vertex="1" parent="1">
<mxGeometry x="160" y="155" width="160" height="50" as="geometry" />
</mxCell>
<mxCell id="seg-auth" value="ECDSA_" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#EDE9FE;strokeColor=#5B21B6;strokeWidth=3;fontSize=15;fontStyle=1;fontFamily=monospace;fontColor=#5B21B6;align=center;verticalAlign=middle;" vertex="1" parent="1">
<mxGeometry x="320" y="155" width="160" height="50" as="geometry" />
</mxCell>
<mxCell id="seg-with" value="WITH_" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E5E7EB;strokeColor=#6B7280;strokeWidth=2;fontSize=14;fontStyle=1;fontFamily=monospace;fontColor=#374151;align=center;verticalAlign=middle;" vertex="1" parent="1">
<mxGeometry x="480" y="155" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="seg-bulk" value="AES_256_GCM_" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#DCFCE7;strokeColor=#15803D;strokeWidth=3;fontSize=15;fontStyle=1;fontFamily=monospace;fontColor=#15803D;align=center;verticalAlign=middle;" vertex="1" parent="1">
<mxGeometry x="580" y="155" width="280" height="50" as="geometry" />
</mxCell>
<mxCell id="seg-mac" value="SHA384" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FEF3C7;strokeColor=#B45309;strokeWidth=3;fontSize=15;fontStyle=1;fontFamily=monospace;fontColor=#B45309;align=center;verticalAlign=middle;" vertex="1" parent="1">
<mxGeometry x="860" y="155" width="160" height="50" as="geometry" />
</mxCell>
<mxCell id="seg-prefix-lbl" value="prefix" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=2;fontFamily=Pretendard,Helvetica;fontColor=#6B7280;" vertex="1" parent="1">
<mxGeometry x="80" y="208" width="80" height="18" as="geometry" />
</mxCell>
<mxCell id="seg-kex-lbl" value="키 교환 (Key Exchange)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;" vertex="1" parent="1">
<mxGeometry x="160" y="208" width="160" height="18" as="geometry" />
</mxCell>
<mxCell id="seg-auth-lbl" value="인증 / 서명 (Authentication)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#5B21B6;" vertex="1" parent="1">
<mxGeometry x="320" y="208" width="160" height="18" as="geometry" />
</mxCell>
<mxCell id="seg-with-lbl" value="연결자" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=2;fontFamily=Pretendard,Helvetica;fontColor=#6B7280;" vertex="1" parent="1">
<mxGeometry x="480" y="208" width="100" height="18" as="geometry" />
</mxCell>
<mxCell id="seg-bulk-lbl" value="데이터 암호화 (Bulk Cipher)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#15803D;" vertex="1" parent="1">
<mxGeometry x="580" y="208" width="280" height="18" as="geometry" />
</mxCell>
<mxCell id="seg-mac-lbl" value="무결성 / 해시 (MAC)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=11;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#B45309;" vertex="1" parent="1">
<mxGeometry x="860" y="208" width="160" height="18" as="geometry" />
</mxCell>
<mxCell id="name-note" value="cipher suite 한 줄 = 4 슬롯 (kex / auth / bulk / mac)&#xa;ECDSA 도 AES 도 cipher suite '한 부분' — 둘 다 cipher 의 일부일 뿐 cipher 자체 아님" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F6F8FA;strokeColor=#D0D7DE;strokeWidth=1;dashed=1;fontSize=11;fontStyle=2;fontFamily=Pretendard,Helvetica;fontColor=#24292F;align=center;verticalAlign=middle;" vertex="1" parent="1">
<mxGeometry x="1060" y="155" width="480" height="60" as="geometry" />
</mxCell>
<mxCell id="grp-slots" value="② 4 슬롯 상세 — 각 슬롯이 무엇을 하나" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#D0D7DE;strokeWidth=1;fontSize=13;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#24292F;align=left;verticalAlign=top;spacingLeft=10;spacingTop=6;" vertex="1" parent="1">
<mxGeometry x="40" y="260" width="1520" height="280" as="geometry" />
</mxCell>
<mxCell id="slot-kex-bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DBEAFE;strokeColor=#1E40AF;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="60" y="300" width="360" height="220" as="geometry" />
</mxCell>
<mxCell id="slot-kex-title" value="ECDHE — 키 교환" style="text;html=1;align=center;verticalAlign=top;whiteSpace=wrap;fontSize=14;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;spacingTop=10;" vertex="1" parent="1">
<mxGeometry x="60" y="300" width="360" height="26" as="geometry" />
</mxCell>
<mxCell id="slot-kex-role" value="역할:" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;spacingLeft=14;" vertex="1" parent="1">
<mxGeometry x="60" y="332" width="360" height="20" as="geometry" />
</mxCell>
<mxCell id="slot-kex-body" value="• 양쪽이 도청 없이 비밀(shared secret) 공유&#xa;• 매 세션 새 ephemeral 키 (forward secrecy)" 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="60" y="352" width="360" height="40" as="geometry" />
</mxCell>
<mxCell id="slot-kex-when" value="언제: 핸드셰이크 (Phase 1)" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;spacingLeft=14;" vertex="1" parent="1">
<mxGeometry x="60" y="396" width="360" height="20" as="geometry" />
</mxCell>
<mxCell id="slot-kex-options" value="옵션: ECDHE · DHE · RSA(레거시)" 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="60" y="416" width="360" height="20" as="geometry" />
</mxCell>
<mxCell id="slot-kex-output" value="결과: ECDH shared secret&#xa; → HKDF → AES 키 도출" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#1E40AF;strokeWidth=1;dashed=1;fontSize=10;fontStyle=2;fontFamily=Pretendard,Helvetica;fontColor=#1E40AF;align=left;verticalAlign=top;spacingLeft=14;spacingTop=8;" vertex="1" parent="1">
<mxGeometry x="80" y="450" width="320" height="56" as="geometry" />
</mxCell>
<mxCell id="slot-auth-bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#EDE9FE;strokeColor=#5B21B6;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="440" y="300" width="360" height="220" as="geometry" />
</mxCell>
<mxCell id="slot-auth-title" value="ECDSA — 인증 / 서명" style="text;html=1;align=center;verticalAlign=top;whiteSpace=wrap;fontSize=14;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#5B21B6;spacingTop=10;" vertex="1" parent="1">
<mxGeometry x="440" y="300" width="360" height="26" as="geometry" />
</mxCell>
<mxCell id="slot-auth-role" value="역할:" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#5B21B6;spacingLeft=14;" vertex="1" parent="1">
<mxGeometry x="440" y="332" width="360" height="20" as="geometry" />
</mxCell>
<mxCell id="slot-auth-body" value="• 서버가 cert 의 진짜 주인임을 증명&#xa;• cert 개인키로 ECDHE 매개변수 서명&#xa;• 클라이언트가 cert 공개키로 검증" 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="440" y="352" width="360" height="60" as="geometry" />
</mxCell>
<mxCell id="slot-auth-when" value="언제: 핸드셰이크 (Phase 1) — 단 1 회" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#5B21B6;spacingLeft=14;" vertex="1" parent="1">
<mxGeometry x="440" y="416" width="360" height="20" as="geometry" />
</mxCell>
<mxCell id="slot-auth-options" value="옵션: ECDSA · RSA · Ed25519" 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="440" y="436" width="360" height="20" as="geometry" />
</mxCell>
<mxCell id="slot-auth-yaml" value="★ yaml 매핑:&#xa;privateKey.algorithm: ECDSA → 이 슬롯" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#5B21B6;strokeWidth=2;fontSize=10;fontStyle=1;fontFamily=monospace;fontColor=#5B21B6;align=left;verticalAlign=top;spacingLeft=14;spacingTop=8;" vertex="1" parent="1">
<mxGeometry x="460" y="464" width="320" height="42" as="geometry" />
</mxCell>
<mxCell id="slot-bulk-bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DCFCE7;strokeColor=#15803D;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="820" y="300" width="360" height="220" as="geometry" />
</mxCell>
<mxCell id="slot-bulk-title" value="AES_256_GCM — 데이터 암호화" style="text;html=1;align=center;verticalAlign=top;whiteSpace=wrap;fontSize=14;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#15803D;spacingTop=10;" vertex="1" parent="1">
<mxGeometry x="820" y="300" width="360" height="26" as="geometry" />
</mxCell>
<mxCell id="slot-bulk-role" value="역할:" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#15803D;spacingLeft=14;" vertex="1" parent="1">
<mxGeometry x="820" y="332" width="360" height="20" as="geometry" />
</mxCell>
<mxCell id="slot-bulk-body" value="• 모든 application data 암호화/복호화&#xa;• 핸드셰이크에서 도출한 AES 키 사용&#xa;• 양쪽이 같은 키로 (대칭)" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#14532D;spacingLeft=20;" vertex="1" parent="1">
<mxGeometry x="820" y="352" width="360" height="60" as="geometry" />
</mxCell>
<mxCell id="slot-bulk-when" value="언제: 핸드셰이크 이후 (Phase 2) — 지속" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#15803D;spacingLeft=14;" vertex="1" parent="1">
<mxGeometry x="820" y="416" width="360" height="20" as="geometry" />
</mxCell>
<mxCell id="slot-bulk-options" value="옵션: AES_256_GCM · AES_128_GCM · CHACHA20" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#14532D;spacingLeft=20;" vertex="1" parent="1">
<mxGeometry x="820" y="436" width="360" height="20" as="geometry" />
</mxCell>
<mxCell id="slot-bulk-detail" value="256 = 키 길이(bit) · GCM = mode (인증 암호)&#xa;μs 단위 연산 → 모든 트래픽 처리 가능" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#15803D;strokeWidth=1;dashed=1;fontSize=10;fontStyle=2;fontFamily=Pretendard,Helvetica;fontColor=#15803D;align=left;verticalAlign=top;spacingLeft=14;spacingTop=8;" vertex="1" parent="1">
<mxGeometry x="840" y="466" width="320" height="40" as="geometry" />
</mxCell>
<mxCell id="slot-mac-bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FEF3C7;strokeColor=#B45309;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="1200" y="300" width="340" height="220" as="geometry" />
</mxCell>
<mxCell id="slot-mac-title" value="SHA384 — 무결성 / 해시" style="text;html=1;align=center;verticalAlign=top;whiteSpace=wrap;fontSize=14;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#B45309;spacingTop=10;" vertex="1" parent="1">
<mxGeometry x="1200" y="300" width="340" height="26" as="geometry" />
</mxCell>
<mxCell id="slot-mac-role" value="역할:" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#B45309;spacingLeft=14;" vertex="1" parent="1">
<mxGeometry x="1200" y="332" width="340" height="20" as="geometry" />
</mxCell>
<mxCell id="slot-mac-body" value="• 메시지 변조 감지 (MAC)&#xa;• HKDF 의 PRF 함수 (키 도출)&#xa;• 핸드셰이크 메시지 해시(Finished)" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#7C2D12;spacingLeft=20;" vertex="1" parent="1">
<mxGeometry x="1200" y="352" width="340" height="60" as="geometry" />
</mxCell>
<mxCell id="slot-mac-when" value="언제: Phase 1 + Phase 2 모두 (지속)" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#B45309;spacingLeft=14;" vertex="1" parent="1">
<mxGeometry x="1200" y="416" width="340" height="20" as="geometry" />
</mxCell>
<mxCell id="slot-mac-options" value="옵션: SHA384 · SHA256 · POLY1305" style="text;html=1;align=left;verticalAlign=top;whiteSpace=wrap;fontSize=11;fontFamily=Pretendard,Helvetica;fontColor=#7C2D12;spacingLeft=20;" vertex="1" parent="1">
<mxGeometry x="1200" y="436" width="340" height="20" as="geometry" />
</mxCell>
<mxCell id="slot-mac-detail" value="GCM 같은 인증 암호 사용 시&#xa;MAC 역할 일부가 bulk cipher 안에 흡수됨" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#B45309;strokeWidth=1;dashed=1;fontSize=10;fontStyle=2;fontFamily=Pretendard,Helvetica;fontColor=#B45309;align=left;verticalAlign=top;spacingLeft=14;spacingTop=8;" vertex="1" parent="1">
<mxGeometry x="1220" y="464" width="300" height="42" as="geometry" />
</mxCell>
<mxCell id="grp-negotiation" value="③ cipher 협상 — 어느 묶음을 쓸지 결정만 하는 단계" 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="560" width="1520" height="220" as="geometry" />
</mxCell>
<mxCell id="ch-browser" value="" style="sketch=0;outlineConnect=0;fillColor=#232F3E;strokeColor=#232F3E;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;aspect=fixed;shape=mxgraph.aws4.user;" vertex="1" parent="1">
<mxGeometry x="80" y="620" width="60" height="60" as="geometry" />
</mxCell>
<mxCell id="ch-browser-lbl" value="Browser" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=12;fontFamily=Pretendard,Helvetica;fontStyle=1;" vertex="1" parent="1">
<mxGeometry x="40" y="684" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="ch-server" value="" style="sketch=0;outlineConnect=0;fillColor=#232F3E;strokeColor=#232F3E;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;aspect=fixed;shape=mxgraph.aws4.server_2;" vertex="1" parent="1">
<mxGeometry x="1380" y="620" width="60" height="60" as="geometry" />
</mxCell>
<mxCell id="ch-server-lbl" value="Server" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=12;fontFamily=Pretendard,Helvetica;fontStyle=1;" vertex="1" parent="1">
<mxGeometry x="1340" y="684" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="ch-msg1-arrow" style="endArrow=classic;html=1;strokeColor=#C2410C;strokeWidth=3;fontFamily=Pretendard,Helvetica;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="ch-browser" target="ch-server">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="760" y="640" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ch-msg1-lbl" value="ClientHello — 지원하는 cipher suites 목록 제시" style="text;html=1;align=center;verticalAlign=middle;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#C2410C;fillColor=#FFFFFF;" vertex="1" parent="1">
<mxGeometry x="280" y="610" width="500" height="22" as="geometry" />
</mxCell>
<mxCell id="ch-msg1-list" value="[ TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,&#xa; TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,&#xa; TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, ... ]" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFEDD5;strokeColor=#C2410C;strokeWidth=1;fontSize=10;fontFamily=monospace;fontColor=#7C2D12;align=left;verticalAlign=top;spacingLeft=14;spacingTop=4;" vertex="1" parent="1">
<mxGeometry x="200" y="640" width="540" height="60" as="geometry" />
</mxCell>
<mxCell id="ch-msg2-arrow" style="endArrow=classic;html=1;strokeColor=#C2410C;strokeWidth=3;fontFamily=Pretendard,Helvetica;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="ch-server" target="ch-browser">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="780" y="660" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ch-msg2-lbl" value="ServerHello — 그 중 하나 선택해 응답" style="text;html=1;align=center;verticalAlign=middle;fontSize=12;fontStyle=1;fontFamily=Pretendard,Helvetica;fontColor=#C2410C;fillColor=#FFFFFF;" vertex="1" parent="1">
<mxGeometry x="820" y="624" width="500" height="22" as="geometry" />
</mxCell>
<mxCell id="ch-msg2-pick" value="선택: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FED7AA;strokeColor=#C2410C;strokeWidth=2;fontSize=11;fontStyle=1;fontFamily=monospace;fontColor=#7C2D12;align=center;verticalAlign=middle;" vertex="1" parent="1">
<mxGeometry x="820" y="648" width="500" height="32" as="geometry" />
</mxCell>
<mxCell id="ch-conclusion" value="⚠ 이 협상 단계에서 ECDSA / AES 자체는 사용 안 됨 — 어느 묶음을 쓸지 '결정' 만 함.&#xa; 실제 ECDSA 서명 → 다음 메시지 (ServerKeyExchange, Phase 1) · 실제 AES 암호화 → 핸드셰이크 종료 후 (Phase 2)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFEDD5;strokeColor=#C2410C;strokeWidth=1;dashed=1;fontSize=11;fontStyle=2;fontFamily=Pretendard,Helvetica;fontColor=#7C2D12;align=left;verticalAlign=middle;spacingLeft=14;" vertex="1" parent="1">
<mxGeometry x="60" y="720" width="1480" height="46" 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 (광의) ≠ ECDSA · cipher suite = 4 슬롯 묶음 (kex/auth/bulk/mac) · cipher 협상 = 묶음 결정 단계 (알고리즘 사용 X) · ECDSA·AES 는 묶음 안 두 다른 슬롯" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=13;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>