<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>나야홍박사</title>
    <link>https://ghdsus0107.tistory.com/</link>
    <description>KH정보교육원_정보보안 전문가 교육과정</description>
    <language>ko</language>
    <pubDate>Tue, 2 Jun 2026 00:53:29 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>나야홍박사</managingEditor>
    <image>
      <title>나야홍박사</title>
      <url>https://tistory1.daumcdn.net/tistory/7030443/attach/6d3b3408b77f4d00bf46a837212d2e1e</url>
      <link>https://ghdsus0107.tistory.com</link>
    </image>
    <item>
      <title>ACCESS LIST</title>
      <link>https://ghdsus0107.tistory.com/107</link>
      <description>&lt;h2 data-path-to-node=&quot;3&quot; data-ke-size=&quot;size26&quot;&gt;1. ACL의 개념 및 종류&lt;/h2&gt;
&lt;p id=&quot;p-rc_d83d2c17562b7e2e-45&quot; data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;4,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;4,1&quot;&gt;&lt;span&gt;ACL (Access Control List)은 패킷의 주소를 기반으로 네트워크 출입을 제어하는 보안 기능입니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;4,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;4,3&quot;&gt;. &lt;/span&gt;&lt;span data-path-to-node=&quot;4,4&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;4,5&quot;&gt;&lt;span&gt;관리 목적과 필터링 수준에 따라 크게 세 가지로 분류됩니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;4,6&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;4,7&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;5&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,0,0&quot;&gt;표준 ACL (Standard ACL):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;5,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;5,0,1,0,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,0,1,0,0,1&quot;&gt;&lt;span&gt;Source(출발지) 주소만을 기반으로 패킷을 필터링합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,0,1,0,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,0,1,0,0,3&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;5,0,1,1,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,0,1,1,0,1&quot;&gt;&lt;span&gt;식별 번호로는 1~99, 1300~1999를 사용합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,0,1,1,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,0,1,1,0,3&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,1,0&quot;&gt;확장 ACL (Extended ACL):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;5,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;5,1,1,0,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,1,1,0,0,1&quot;&gt;&lt;span&gt;Source 및 Destination(목적지) 주소뿐만 아니라, TCP/UDP 프로토콜 및 포트 번호까지 참조하여 더욱 정밀하게 패킷을 필터링합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,1,1,0,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,1,1,0,0,3&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;5,1,1,1,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,1,1,1,0,1&quot;&gt;&lt;span&gt;식별 번호로는 100~199, 2000~2699를 사용합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,1,1,1,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,1,1,1,0,3&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,2,0&quot;&gt;Named ACL:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;5,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;5,2,1,0,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,2,1,0,0,1&quot;&gt;&lt;span&gt;설정 시 숫자로 된 번호가 아닌, 사용자 설정 이름(문자열)을 이용하는 방식입니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,2,1,0,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,2,1,0,0,3&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;5,2,1,1,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,2,1,1,0,1&quot;&gt;&lt;span&gt;표준 및 확장 ACL 모두 동일하게 이름 기반으로 적용이 가능합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,2,1,1,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,2,1,1,0,3&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size26&quot;&gt;2. ACL 트래픽 제어 및 동작 규칙&lt;/h2&gt;
&lt;p id=&quot;p-rc_d83d2c17562b7e2e-52&quot; data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;7,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;7,1&quot;&gt;&lt;span&gt;트래픽은 들어오는 패킷(Inbound)과 나가는 패킷(Outbound)으로 나뉩니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;7,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;7,3&quot;&gt;. &lt;/span&gt;&lt;span data-path-to-node=&quot;7,4&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;7,5&quot;&gt;&lt;span&gt;폐기할 패킷은 네트워크 자원 절약을 위해 Inbound에서 처리하는 것이 이상적이나, 이는 관리 주체가 동일한 경우에만 가능합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;7,6&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;7,7&quot;&gt;. &lt;/span&gt;&lt;span data-path-to-node=&quot;7,8&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;7,9&quot;&gt;&lt;span&gt;또한 ACL은 라우터의 제한된 자원을 사용하므로 과도한 설정은 지양해야 합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;7,10&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;7,11&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;8&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li id=&quot;p-rc_d83d2c17562b7e2e-53&quot; data-path-to-node=&quot;8,0,1&quot;&gt;&lt;span data-path-to-node=&quot;8,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,0,1,0&quot;&gt;&lt;span&gt;기본 할당 규칙:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 인터페이스 하나당 정책(Policy)은 단 1개만 허용됩니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,0,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,0,1,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,1,0&quot;&gt;Rule 적용 원칙:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;8,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;8,1,1,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,1,1,0,1,0&quot;&gt;&lt;span&gt;Top-Down:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 작성된 순서대로 위에서부터 아래로 규칙을 확인합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,1,1,0,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,1,1,0,1,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;8,1,1,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,1,1,1,1,0&quot;&gt;&lt;span&gt;First Matching:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 규칙을 순차적으로 확인하다가 조건과 일치하는 리스트가 있으면 즉시 적용하고, 이후의 리스트는 더 이상 확인하지 않습니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,1,1,1,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,1,1,1,1,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;8,1,1,2,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,1,1,2,0,1&quot;&gt;&lt;span&gt;따라서 중첩되는 조건이 있을 경우, 반드시 정책 범위가 좁은(구체적인) 규칙을 먼저 설정해야 의도한 대로 동작합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,1,1,2,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,1,1,2,0,3&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;8,1,1,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,1,1,3,1,0&quot;&gt;&lt;span&gt;Default Deny:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 모든 규칙의 맨 마지막에는 보이지 않는 '모두 차단(deny)'이 기본으로 적용되어 있습니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,1,1,3,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,1,1,3,1,2&quot;&gt;. &lt;/span&gt;&lt;span data-path-to-node=&quot;8,1,1,3,1,3&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,1,1,3,1,4&quot;&gt;&lt;span&gt;그러므로 ACL 설정 시 반드시 명시적으로 허용(permit) 규칙을 지정해야 통신이 가능합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,1,1,3,1,5&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,1,1,3,1,6&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;8,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,2,1,0&quot;&gt;&lt;span&gt;라우터 내부 적용 순서:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 패킷은 &lt;/span&gt;&lt;span&gt;Inbound ACL&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span data-index-in-node=&quot;30&quot; data-math=&quot;\rightarrow&quot;&gt;$\rightarrow$&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Routing table&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span data-index-in-node=&quot;56&quot; data-math=&quot;\rightarrow&quot;&gt;$\rightarrow$&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Outbound ACL&lt;/span&gt;&lt;span&gt; 순서로 처리됩니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,2,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,2,1,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;9&quot; data-ke-size=&quot;size26&quot;&gt;3. 상황별 ACL 설정 문법&lt;/h2&gt;
&lt;h3 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size23&quot;&gt;표준 ACL (Standard ACL)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;11&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;11,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,0,1,0&quot;&gt;&lt;span&gt;기본 설정:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;access-list [번호] [permit | deny | remark] src_add wildcard_mask&lt;/span&gt;&lt;span&gt; 형태로 입력합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,0,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,0,1,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;11,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,1,1,0&quot;&gt;&lt;span&gt;와일드카드 마스크:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 단일 지정 호스트는 &lt;/span&gt;&lt;span&gt;0.0.0.0&lt;/span&gt;&lt;span&gt;, 모든 네트워크(any)는 &lt;/span&gt;&lt;span&gt;255.255.255.255&lt;/span&gt;&lt;span&gt;로 표기합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,1,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,1,1,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;11,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,2,1,0&quot;&gt;&lt;span&gt;인터페이스 적용:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ip access-group [번호] [in | out]&lt;/span&gt;&lt;span&gt; 명령어로 특정 인터페이스에 적용합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,2,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,2,1,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;11,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,3,1,0&quot;&gt;&lt;span&gt;삭제 시 주의점:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 번호 기반 ACL에서 특정 허용/차단 항목 일부만 삭제하려 시도할 경우, 해당 번호의 전체 ACL 목록이 일괄 삭제되므로 매우 주의해야 합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,3,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,3,1,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;12&quot; data-ke-size=&quot;size23&quot;&gt;확장 ACL (Extended ACL)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;13&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;13,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,0,1,0&quot;&gt;&lt;span&gt;기본 설정:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;access-list [번호] [permit | deny | remark] protocol src_add dst_add [sub_protocol]&lt;/span&gt;&lt;span&gt; 형태로 세밀하게 지정합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,0,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,0,1,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;13,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,1,0&quot;&gt;&lt;span&gt;프로토콜 지정:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; tcp, udp, ip, icmp, ospf, eigrp 등 다양한 프로토콜 제어가 가능합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,1,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,1,1,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;13,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,2,1,0&quot;&gt;&lt;span&gt;포트 제어:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 명령어 끝에 &lt;/span&gt;&lt;span&gt;eq 80&lt;/span&gt;&lt;span&gt; (웹/www), &lt;/span&gt;&lt;span&gt;eq 53&lt;/span&gt;&lt;span&gt; (도메인/DNS)과 같이 특정 포트 번호를 지정하여 서비스 단위의 필터링이 가능합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,2,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,2,1,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size23&quot;&gt;Named ACL&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;15,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,0,1,0&quot;&gt;&lt;span&gt;기본 설정:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ip access-list standard [이름]&lt;/span&gt;&lt;span&gt; 또는 &lt;/span&gt;&lt;span&gt;ip access-list extended [이름]&lt;/span&gt;&lt;span&gt;을 입력하여 하위 설정 프롬프트로 진입한 후 상세 규칙을 정의합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;15,0,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;15,0,1,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;15,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,1,1,0&quot;&gt;&lt;span&gt;인터페이스 적용:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ip access-group [이름] [in | out]&lt;/span&gt;&lt;span&gt; 형태로 인터페이스에 바인딩합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;15,1,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;15,1,1,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;16&quot; data-ke-size=&quot;size26&quot;&gt;4. 실무 팁: ACL 주석 (Remark) 활용&lt;/h2&gt;
&lt;p id=&quot;p-rc_d83d2c17562b7e2e-68&quot; data-path-to-node=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;17,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;17,1&quot;&gt;&lt;span&gt;설정된 ACL의 개수가 많아질 경우, 각 리스트의 용도를 파악하고 향후 유지보수를 원활히 하기 위해 주석을 남기는 것이 좋습니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;17,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;17,3&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;18&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;18,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,0,1,0&quot;&gt;&lt;span&gt;설정 방법:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;access-list [번호] remark [주석내용]&lt;/span&gt;&lt;span&gt; 형태로 지정합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,0,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,0,1,2&quot;&gt;. &lt;/span&gt;&lt;span data-path-to-node=&quot;18,0,1,3&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,0,1,4&quot;&gt;&lt;span&gt;(단, 라우터 환경상 한글 지원이 원활하지 않을 수 있습니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,0,1,5&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,0,1,6&quot;&gt;.)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;18,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,1,1,0&quot;&gt;&lt;span&gt;확인 방법:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 작성된 주석 내역은 &lt;/span&gt;&lt;span&gt;show ip access-lists&lt;/span&gt;&lt;span&gt; 명령어로는 보이지 않습니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,1,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,1,1,2&quot;&gt;. &lt;/span&gt;&lt;span data-path-to-node=&quot;18,1,1,3&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,1,1,4&quot;&gt;&lt;span&gt;반드시 &lt;/span&gt;&lt;span&gt;show running-config&lt;/span&gt;&lt;span&gt; 또는 &lt;/span&gt;&lt;span&gt;startup-config&lt;/span&gt;&lt;span&gt;를 출력해야 확인할 수 있습니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,1,1,5&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,1,1,6&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>네트워크/개념 정리</category>
      <author>나야홍박사</author>
      <guid isPermaLink="true">https://ghdsus0107.tistory.com/107</guid>
      <comments>https://ghdsus0107.tistory.com/107#entry107comment</comments>
      <pubDate>Mon, 11 May 2026 17:23:13 +0900</pubDate>
    </item>
    <item>
      <title>파이프라인 프로토콜, GBN, Selective Repeat</title>
      <link>https://ghdsus0107.tistory.com/106</link>
      <description>&lt;h2 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size26&quot;&gt;1. 파이프라인 프로토콜 (Pipelined Protocol)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;기존의 Stop-and-Wait 방식은 한 번에 하나의 패킷만 전송하고 확인응답(ACK)을 기다려야 하므로, 물리적인 링크의 대역폭이 넓더라도 이를 충분히 활용하지 못하는 치명적인 단점이 있습니다. 이를 해결하고 네트워크 링크의 효율을 극대화하기 위해 도입된 개념이 파이프라인 프로토콜입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0,0&quot;&gt;핵심 개념:&lt;/b&gt; 확인응답(ACK)을 기다리지 않고 여러 개의 패킷을 연속적으로 전송하는 기법입니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,0&quot;&gt;주요 요구사항:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,1,0,0&quot;&gt;순서 번호(Sequence Number) 확장:&lt;/b&gt; 여러 패킷이 동시에 전송되므로 각 패킷을 식별하기 위해 순서 번호의 범위가 커져야 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,1,1,0&quot;&gt;버퍼링(Buffering):&lt;/b&gt; 재전송이나 순서 재조합을 위해 송신자와 수신자 양측에 패킷을 임시로 저장할 버퍼가 필요합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,2,0&quot;&gt;기대 효과:&lt;/b&gt; 링크 활용도(Utilization)와 전체 시스템의 처리량(Throughput)이 비약적으로 상승합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;592&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sa8XY/dJMcaarJBLg/5RMP8Eyn1QjLnPgQEDqyI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sa8XY/dJMcaarJBLg/5RMP8Eyn1QjLnPgQEDqyI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sa8XY/dJMcaarJBLg/5RMP8Eyn1QjLnPgQEDqyI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsa8XY%2FdJMcaarJBLg%2F5RMP8Eyn1QjLnPgQEDqyI0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;592&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;592&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-path-to-node=&quot;8&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;9&quot; data-ke-size=&quot;size26&quot;&gt;2. Go-Back-N (GBN)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;GBN은 파이프라인을 구현하는 대표적인 슬라이딩 윈도우(Sliding Window) 기반 프로토콜입니다. 송신자는 윈도우 크기(N) 내에서 자유롭게 패킷을 전송하지만, 수신자는 오직 '순서대로' 도착한 패킷만 정상적으로 처리합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;11&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,0,0&quot;&gt;송신자 동작 및 윈도우 크기:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;11,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;송신자는 ACK를 받지 않은 상태라도 최대 N개의 패킷을 파이프라인에 유지하며 전송할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,1,0&quot;&gt;누적 확인응답 (Cumulative ACK):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;11,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;수신자는 ACK n을 전송하여 &quot;n번 패킷까지 모두 정상적으로 수신했다&quot;는 것을 알립니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,2,0&quot;&gt;오류 복구 (타이머 운영):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;11,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;송신자는 전송 중인 가장 오래된 패킷을 기준으로 단 하나의 타이머(Single Timer)만 운영합니다.&lt;/li&gt;
&lt;li&gt;타임아웃이 발생하면, 손실된 패킷부터 시작하여 &lt;b data-index-in-node=&quot;26&quot; data-path-to-node=&quot;11,2,1,1,0&quot;&gt;윈도우 내의 미확인 패킷을 모두 일괄 재전송&lt;/b&gt;합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,3,0&quot;&gt;수신자 동작 (No Buffering):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;11,3,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;수신자는 순서가 어긋난(Out-of-order) 패킷이 도착하면 버퍼링하지 않고 즉시 폐기(Discard)합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;335&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAukE2/dJMcabc3vzq/Ukot2JlyzsRO9qWMkYatq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAukE2/dJMcabc3vzq/Ukot2JlyzsRO9qWMkYatq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAukE2/dJMcabc3vzq/Ukot2JlyzsRO9qWMkYatq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAukE2%2FdJMcabc3vzq%2FUkot2JlyzsRO9qWMkYatq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;335&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;335&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-path-to-node=&quot;13&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size26&quot;&gt;3. Selective Repeat (SR)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;GBN은 구현이 비교적 단순하지만 오류 발생 시 성공적으로 전송된 패킷까지 불필요하게 재전송해야 하므로 대역폭이 낭비되는 한계가 있습니다. Selective Repeat(선택적 재전송)은 이름 그대로 수신 실패가 의심되는 특정 패킷만 선별하여 재전송함으로써 이 문제를 해결합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,0,0&quot;&gt;개별 확인응답 (Individual ACK):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;누적 방식이 아닌, 수신된 각각의 패킷에 대해 개별적으로 ACK를 전송합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,1,0&quot;&gt;수신자 버퍼링 (Buffering):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;순서가 어긋나게 도착한 패킷이더라도 정상 패킷이라면 수신자 버퍼에 보관합니다.&lt;/li&gt;
&lt;li&gt;이후 누락되었던 패킷이 재전송되어 도착하면, 버퍼에 있던 패킷들과 순서를 맞춰 상위 계층으로 전달합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,2,0&quot;&gt;오류 복구 (개별 타이머 운영):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;송신자는 전송된 각각의 패킷마다 개별적인 논리 타이머를 운영합니다.&lt;/li&gt;
&lt;li&gt;타임아웃 발생 시, &lt;b data-index-in-node=&quot;11&quot; data-path-to-node=&quot;16,2,1,1,0&quot;&gt;해당 타이머가 만료된 특정 패킷만 단독으로 재전송&lt;/b&gt;합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,3,0&quot;&gt;설계 시 주의점 (윈도우 크기 제약):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16,3,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SR 프로토콜이 정상적으로 동작하려면 윈도우 크기(N)는 반드시 순서 번호 공간(Sequence Number Space) 크기의 절반 이하로 설정되어야 합니다. 그렇지 않으면 이전 윈도우의 재전송 패킷과 새로운 패킷을 수신자가 구분하지 못하는 오류가 발생할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;603&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mEGdr/dJMcacQAQic/tXySKBoQMopynRC17c5jK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mEGdr/dJMcacQAQic/tXySKBoQMopynRC17c5jK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mEGdr/dJMcacQAQic/tXySKBoQMopynRC17c5jK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmEGdr%2FdJMcacQAQic%2FtXySKBoQMopynRC17c5jK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;603&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;603&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>네트워크/개념 정리</category>
      <author>나야홍박사</author>
      <guid isPermaLink="true">https://ghdsus0107.tistory.com/106</guid>
      <comments>https://ghdsus0107.tistory.com/106#entry106comment</comments>
      <pubDate>Mon, 11 May 2026 16:34:58 +0900</pubDate>
    </item>
    <item>
      <title>전자 서명과 PKI</title>
      <link>https://ghdsus0107.tistory.com/101</link>
      <description>&lt;h3 data-path-to-node=&quot;28&quot; data-ke-size=&quot;size23&quot;&gt;1. 전자문서와 전자상거래의 문제점 해결&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;29&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;29,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;29,0,1,0&quot;&gt;&lt;span&gt;전자문서의 한계:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 물리적 특성으로 위변조를 식별할 수 있는 종이와 달리, 전자문서는 위변조가 쉽고(무결성 위협), 누가 작성했는지 입증하기 어려움 (부인방지 위협)&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;29,0,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;29,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;29,1,1,0&quot;&gt;&lt;span&gt;전자상거래의 위협:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 비대면 환경이라 거래 상대방의 신원 확인이 곤란하고(사용자 인증 위협), 네트워크 전송 내용의 비밀 유지가 어려움 (기밀성 위협)&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;29,1,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p id=&quot;p-rc_7890910d6f589e92-255&quot; data-path-to-node=&quot;30&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;30,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;30,1&quot;&gt;&lt;span&gt;이를 극복하기 위한 &lt;/span&gt;&lt;b data-index-in-node=&quot;11&quot; data-path-to-node=&quot;30,1&quot;&gt;&lt;span&gt;전자서명의 4가지 요건&lt;/span&gt;&lt;/b&gt;&lt;span&gt;은 다음과 같습니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;30,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;30,3&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;31&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;31,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;31,0,1,0&quot;&gt;&lt;span&gt;위조 불가 (Not forgeable):&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 합법적인 개인키 소유자(행위자) 외에는 서명 생성이 불가함을 증명해야 함&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;31,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;31,1,1,0&quot;&gt;&lt;span&gt;변경 불가 (Unalterable):&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 서명한 문서의 내용이나 서명 자체가 변경되지 않음을 증명해야 함&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;31,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;31,2,1,0&quot;&gt;&lt;span&gt;부인 불가 (Non-Repudiation):&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 서명은 오직 본인 이외에는 불가능하므로 사후에 부인할 수 없음을 증명함&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;31,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;31,3,1,0&quot;&gt;&lt;span&gt;재사용 불가 (Not Reusable):&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 해당 서명을 복사해 다른 전자문서의 서명으로 사용할 수 없음을 증명해야 함&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-path-to-node=&quot;32&quot; data-ke-size=&quot;size23&quot;&gt;2. 공개키를 이용한 전자서명 원리&lt;/h3&gt;
&lt;p id=&quot;p-rc_7890910d6f589e92-260&quot; data-path-to-node=&quot;33&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;33,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;33,1&quot;&gt;&lt;span&gt;전자서명에서 개인키는 서명자 본인의 '인감도장' 역할을 하고, 공개키는 서명을 확인하는 '인감증명서' 역할을 합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;33,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;33,3&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;34&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;34,0,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;34,0,0,1&quot;&gt;&lt;span&gt;전송할 평문의 메시지 다이제스트(해시값) 계산&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;34,1,0,0&quot;&gt;계산된 다이제스트를 &lt;b data-index-in-node=&quot;11&quot; data-path-to-node=&quot;34,1,0,0&quot;&gt;송신자의 개인키&lt;/b&gt;로 암호화 [&lt;/span&gt;&lt;span data-path-to-node=&quot;34,1,0,2&quot;&gt;&lt;span&gt;전자서명]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;34,2,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;34,2,0,1&quot;&gt;&lt;span&gt;메시지와 전자서명을 함께 수신자에게 전송&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;34,3,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;34,3,0,1&quot;&gt;&lt;span&gt;수신자는 받은 메시지에서 직접 메시지 다이제스트 계산&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;34,4,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;34,4,0,1&quot;&gt;&lt;span&gt;송신자로부터 온 전자서명을 &lt;/span&gt;&lt;b data-index-in-node=&quot;15&quot; data-path-to-node=&quot;34,4,0,1&quot;&gt;&lt;span&gt;송신자의 공개키&lt;/span&gt;&lt;/b&gt;&lt;span&gt;로 복호화&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;34,5,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;34,5,0,1&quot;&gt;&lt;span&gt;복호화하여 나온 해시값과 4번에서 직접 계산한 해시값을 비교하여, 일치하면 문서의 무결성과 송신자의 신원을 확신할 수 있음&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-path-to-node=&quot;35&quot; data-ke-size=&quot;size23&quot;&gt;3. 하이브리드 암호 시스템: 전자봉투 (Digital Envelope)&lt;/h3&gt;
&lt;p id=&quot;p-rc_7890910d6f589e92-267&quot; data-path-to-node=&quot;36&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;36,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;36,1&quot;&gt;&lt;span&gt;전자봉투 방식은 처리 속도가 빠른 대칭키 암호와, 키 관리가 편한 공개키 암호의 장점을 모두 결합해 '서명'과 '기밀성'을 동시에 달성합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;36,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;36,3&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;37&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;37,0,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;37,0,0,1&quot;&gt;&lt;span&gt;송신자는 난수를 생성하여 이를 통신에 쓸 대칭키(비밀키/세션키)로 지정&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;37,1,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;37,1,0,1&quot;&gt;&lt;span&gt;용량이 큰 본문 메시지는 속도가 빠른 이 &lt;/span&gt;&lt;b data-index-in-node=&quot;23&quot; data-path-to-node=&quot;37,1,0,1&quot;&gt;&lt;span&gt;대칭키로 암호화&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;37,2,0,0&quot;&gt;128비트짜리 대칭키 자체는 &lt;b data-index-in-node=&quot;16&quot; data-path-to-node=&quot;37,2,0,0&quot;&gt;수신자의 1024비트 공개키로 암호화&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-path-to-node=&quot;37,2,0,1&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;37,2,0,2&quot;&gt;&lt;span&gt;이렇게 키를 암호화한 패키지를 '전자봉투'라고 부름&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;37,3,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;37,3,0,1&quot;&gt;&lt;span&gt;송신자는 전자봉투와 암호화된 메시지를 수신자에게 함께 전송&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;37,4,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;37,4,0,1&quot;&gt;&lt;span&gt;수신자는 자신의 개인키로 전자봉투를 열어(복호화) 128비트 대칭키를 획득하고, 이 대칭키로 암호 메시지를 복호화하여 평문을 읽음&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-path-to-node=&quot;38&quot; data-ke-size=&quot;size23&quot;&gt;4. PKI 구성요소와 X.509 인증서&lt;/h3&gt;
&lt;p id=&quot;p-rc_7890910d6f589e92-273&quot; data-path-to-node=&quot;39&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;39,0&quot;&gt;위의 모든 시스템이 동작하려면 서명을 검증할 때 사용하는 '공개키'가 정말 그 사람의 것인지 믿을 수 있어야 합니다. &lt;/span&gt;&lt;span data-path-to-node=&quot;39,1&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;39,2&quot;&gt;&lt;span&gt;이를 위해 공인된 기관이 보증을 서주는 체계가 PKI입니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;39,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;39,4&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;40&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;40,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;40,0,1,0&quot;&gt;&lt;span&gt;인증서의 정의:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 개인키와 한 쌍인 공개키가 특정 자연인 또는 법인의 소유임을, 인증기관이 자신의 개인키로 전자서명하여 증명하는 전자적 정보 (현실의 인감증명서 역할)&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;40,0,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;40,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;40,1,1,0&quot;&gt;&lt;span&gt;X.509 (RFC 2459):&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 인증서의 국제 표준 포맷으로, 약 1KB 정도의 바이너리 데이터로 이루어져 있음&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;40,1,1,4&quot;&gt;&lt;span&gt;내부에는 확장 항목 외에 서명 전 인증서 내용(tbsCertificate), 메시지 다이제스트 및 공개키 알고리즘 명세, 인증기관 정보 등이 필수로 포함&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;40,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;40,2,1,0&quot;&gt;&lt;span&gt;인증서 발행:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 사용자가 공개키를 인증기관에 등록하면, 기관은 이를 자신의 개인키로 서명하여 발행&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p id=&quot;p-rc_7890910d6f589e92-277&quot; data-path-to-node=&quot;42&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;42,0&quot;&gt;&lt;span&gt;  PKI의 핵심 구성 기관 &lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;42,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;43&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;43,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;43,0,1,0&quot;&gt;&lt;span&gt;CA (Certificate Authority):&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 루트 CA 및 공인인증기관으로, 인증서를 발행하는 주체&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;43,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;43,1,1,0&quot;&gt;&lt;span&gt;RA (Registration Authorities):&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 사용자의 신원을 대면 혹은 온라인으로 확인하고 등록 업무를 수행하는 기관&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;43,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;43,2,1,0&quot;&gt;&lt;span&gt;CRL (Certificate Revocation List):&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 유효기간이 지나기 전 개인키가 유출되는 등의 이유로 폐지된 인증서들의 블랙리스트(폐지 목록)&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;43,2,1,4&quot;&gt;&lt;span&gt;인증 서버는 통신 전 이 CRL을 참조하여 인증서의 유효성 검증&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>암호학</category>
      <author>나야홍박사</author>
      <guid isPermaLink="true">https://ghdsus0107.tistory.com/101</guid>
      <comments>https://ghdsus0107.tistory.com/101#entry101comment</comments>
      <pubDate>Thu, 9 Apr 2026 17:44:24 +0900</pubDate>
    </item>
    <item>
      <title>해쉬(Hash) 함수</title>
      <link>https://ghdsus0107.tistory.com/100</link>
      <description>&lt;h3 data-path-to-node=&quot;17&quot; data-ke-size=&quot;size23&quot;&gt;1. 해시 함수의 5가지 요구 조건&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;18&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;18,0,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,0,0,1&quot;&gt;&lt;span&gt;어떤 크기의 메시지 &lt;/span&gt;&lt;span data-index-in-node=&quot;11&quot; data-math=&quot;M&quot;&gt;$M$&lt;/span&gt;&lt;span&gt;에도 적용 가능해야 합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,0,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,0,0,3&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;18,1,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,1,0,1&quot;&gt;&lt;span&gt;함수 &lt;/span&gt;&lt;span data-index-in-node=&quot;3&quot; data-math=&quot;H&quot;&gt;$H$&lt;/span&gt;&lt;span&gt;는 고정된 크기의 해시 코드를 만들어야 합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,1,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,1,0,3&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;18,2,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,2,0,1&quot;&gt;&lt;span&gt;주어진 &lt;/span&gt;&lt;span data-index-in-node=&quot;4&quot; data-math=&quot;M&quot;&gt;$M$&lt;/span&gt;&lt;span&gt;에 대해 $H(M)$을 계산하는 것이 쉬워야 합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,2,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,2,0,3&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;18,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,3,1,0&quot;&gt;&lt;span&gt;(One-way):&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 해시 코드 &lt;/span&gt;&lt;span data-index-in-node=&quot;17&quot; data-math=&quot;h&quot;&gt;$h$&lt;/span&gt;&lt;span&gt;가 주어졌을 때, &lt;/span&gt;&lt;span data-index-in-node=&quot;28&quot; data-math=&quot;H(M) = h&quot;&gt;$H(M) = h$&lt;/span&gt;&lt;span&gt;를 만족하는 원본 &lt;/span&gt;&lt;span data-index-in-node=&quot;46&quot; data-math=&quot;M&quot;&gt;$M$&lt;/span&gt;&lt;span&gt;을 찾는 것이 계산적으로 실행 불가능해야 합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,3,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,3,1,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;18,4,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,4,1,0&quot;&gt;&lt;span&gt;(Collision-free):&lt;/span&gt;&lt;/b&gt;&lt;span&gt; $H(M') = H(M)$이 되는 서로 다른 &lt;/span&gt;&lt;span data-index-in-node=&quot;43&quot; data-math=&quot;M&quot;&gt;$M$&lt;/span&gt;&lt;span&gt;과 $M'$를 찾거나, 이런 동일한 해시값을 갖는 임의의 쌍을 찾는 것이 계산적으로 실행 불가능해야 합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,4,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,4,1,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;18,5,1,0&quot;&gt;&lt;i data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,5,1,0&quot;&gt;&lt;span&gt;참고:&lt;/span&gt;&lt;/i&gt;&lt;span&gt; 아주 단순한 해시 함수는 메시지를 &lt;/span&gt;&lt;span data-index-in-node=&quot;23&quot; data-math=&quot;n&quot;&gt;$n$&lt;/span&gt;&lt;span&gt; 비트 블록 &lt;/span&gt;&lt;span data-index-in-node=&quot;31&quot; data-math=&quot;m&quot;&gt;$m$&lt;/span&gt;&lt;span&gt;개로 나누고, 이 블록들을 서로 XOR 연산하여 해시 코드를 추출하는 방식도 있습니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,5,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,5,1,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;19&quot; data-ke-size=&quot;size23&quot;&gt;2. 해시 함수의 종류 및 알고리즘 비교&lt;/h3&gt;
&lt;p id=&quot;p-rc_7890910d6f589e92-250&quot; data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;20,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;20,1&quot;&gt;&lt;span&gt;디지털 서명과 인증 등에 폭넓게 사용되는 대표적인 해시 알고리즘들을 살펴봅니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;20,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;20,3&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 188px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 24.3798%; height: 21px; text-align: center;&quot;&gt;&lt;b&gt;알고리즘&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.8914%; height: 21px; text-align: center;&quot;&gt;&lt;b&gt;메시지 다이제스트 길이&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 54.7287%; height: 21px; text-align: center;&quot;&gt;&lt;b&gt;비고&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 24.3798%; height: 21px;&quot;&gt;&lt;b&gt;SHA-1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.8914%; height: 21px;&quot;&gt;160비트&lt;/td&gt;
&lt;td style=&quot;width: 54.7287%; height: 21px;&quot;&gt;1995년 표준화 (FIPS 180-1로 정의)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 42px;&quot;&gt;
&lt;td style=&quot;width: 24.3798%; height: 42px;&quot;&gt;&lt;b&gt; HAS-160 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.8914%; height: 42px;&quot;&gt;160 비트&lt;/td&gt;
&lt;td style=&quot;width: 54.7287%; height: 42px;&quot;&gt;SHA-1 기반으로 만들어져 1998년 한국 정부가 표준화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 24.3798%; height: 21px;&quot;&gt;&lt;b&gt; MD5 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.8914%; height: 21px;&quot;&gt;128 비트&lt;/td&gt;
&lt;td style=&quot;width: 54.7287%; height: 21px;&quot;&gt;1991년 RSA사가 개발, 충돌 문제 있음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 24.3798%; height: 21px;&quot;&gt;&lt;b&gt; MD2 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.8914%; height: 21px;&quot;&gt;128 비트&lt;/td&gt;
&lt;td style=&quot;width: 54.7287%; height: 21px;&quot;&gt;RSA사가 개발, 충돌 문제 있음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 24.3798%; height: 21px;&quot;&gt;&lt;b&gt; RIPEMD-160 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.8914%; height: 21px;&quot;&gt;160 비트&lt;/td&gt;
&lt;td style=&quot;width: 54.7287%; height: 21px;&quot;&gt;유럽의 표준 알고리즘&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  SHA와 MD5의 상세 스펙 차이&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 188px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.1007%; height: 21px; text-align: center;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.7984%; height: 21px; text-align: center;&quot;&gt;&lt;b&gt;MD5&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.1008%; height: 21px; text-align: center;&quot;&gt;&lt;b&gt; SHA (SHA-1) &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.1007%; height: 21px;&quot;&gt;&lt;b&gt; 다이제스트 길이 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.7984%; height: 21px;&quot;&gt;128 비트&lt;/td&gt;
&lt;td style=&quot;width: 33.1008%; height: 21px;&quot;&gt;160 비트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 42px;&quot;&gt;
&lt;td style=&quot;width: 33.1007%; height: 42px;&quot;&gt;&lt;b&gt; 처리 기본 단위 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.7984%; height: 42px;&quot;&gt;64번 (16번 x 4라운드)&lt;/td&gt;
&lt;td style=&quot;width: 33.1008%; height: 42px;&quot;&gt;80번&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.1007%; height: 21px;&quot;&gt;&lt;b&gt; 최대 메시지 크기 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.7984%; height: 21px;&quot;&gt;무한대&lt;/td&gt;
&lt;td style=&quot;width: 33.1008%; height: 21px;&quot;&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;24,3,2,1,0&quot;&gt;&lt;span data-index-in-node=&quot;0&quot; data-math=&quot;2^{64}&quot;&gt;2^64&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.1007%; height: 21px;&quot;&gt;&lt;b&gt; 기약논리 함수 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.7984%; height: 21px;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;width: 33.1008%; height: 21px;&quot;&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.1007%; height: 21px;&quot;&gt;&lt;b&gt; 덧셈 상수 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.7984%; height: 21px;&quot;&gt;64개&lt;/td&gt;
&lt;td style=&quot;width: 33.1008%; height: 21px;&quot;&gt;4개&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>암호학</category>
      <author>나야홍박사</author>
      <guid isPermaLink="true">https://ghdsus0107.tistory.com/100</guid>
      <comments>https://ghdsus0107.tistory.com/100#entry100comment</comments>
      <pubDate>Thu, 9 Apr 2026 17:41:06 +0900</pubDate>
    </item>
    <item>
      <title>키 관리</title>
      <link>https://ghdsus0107.tistory.com/99</link>
      <description>&lt;h3 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size23&quot;&gt;1. 비밀키(대칭키) 분배의 어려움과 키 계층 구조&lt;/h3&gt;
&lt;p id=&quot;p-rc_7890910d6f589e92-224&quot; data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;5,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,1&quot;&gt;&lt;span&gt;비밀키 방식에서는 수신자와 송신자가 동일한 키를 가져야 합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,3&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;6,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0,1,0&quot;&gt;&lt;span&gt;기존 분배 방식의 한계:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 물리적인 방법으로 키를 전달하는 것은 링크 암호화에서는 가능하지만 단대단(End-to-End) 암호화에서는 적용이 어려움&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;6,0,1,2&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,0,1,3&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,0,1,4&quot;&gt;&lt;span&gt;이전 키를 사용하여 암호화된 새로운 키를 전송하는 방법도 있지만, 공격자에게 한 번 키가 노출되면 이후의 모든 키가 노출된다는 치명적인 단점이 있음&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-path-to-node=&quot;6,1,1&quot;&gt;&lt;span data-path-to-node=&quot;6,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,1,0&quot;&gt;&lt;span&gt;키 계층 구조:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 이 문제를 해결하기 위해 두 가지 키를 분리하여 운영&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;마스터키:&lt;/b&gt; 키 분배 센터(KDC)와 사용자가 공유하는 유일한 장기 키로, 통신 개체가 N개일 때 N개의 마스터키가 필요함&lt;/li&gt;
&lt;li&gt;&lt;b&gt;세션키:&lt;/b&gt;&amp;nbsp;종단 시스템 간의 실제 통신을 암호화하는 임시 키로, 논리적 연결에 사용된 후 폐기됨
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;N개의 개체가 통신할 경우 $N(N-1) / 2$개의 세션키가 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size23&quot;&gt;2. 제3자 신뢰 기관: KDC를 이용한 비밀키 분배 (Kerberos 방식)&lt;/h3&gt;
&lt;p id=&quot;p-rc_7890910d6f589e92-229&quot; data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;8,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,1&quot;&gt;&lt;span&gt;단대단 암호화에서 널리 채택되는 방식은 제3자인 '키 분배 센터(KDC)'를 통하는 것입니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,3&quot;&gt;. &lt;/span&gt;&lt;span data-path-to-node=&quot;8,4&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,5&quot;&gt;&lt;span&gt;각 사용자 A와 B는 KDC와 각각의 마스터키(&lt;/span&gt;&lt;span data-index-in-node=&quot;26&quot; data-math=&quot;KA&quot;&gt;$KA$&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span data-index-in-node=&quot;30&quot; data-math=&quot;KB&quot;&gt;$KB$&lt;/span&gt;&lt;span&gt;)를 공유하고 있다고 가정합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,6&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,7&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;(1) 세션키 요구:&lt;/b&gt; 발신자 A가 KDC에게 세션키를 요구하며 A와 B의 신원 정보(ID)를 보냄
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;(Request || ID(A), A, B)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;9,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,1,1,0&quot;&gt;&lt;span&gt;(2) KDC의 키 배포:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; KDC는 A와 B에게 세션키(SK)와 상대의 신원정보, 타임스탬프(T)를 묶어 각자의 마스터키로 암호화하여 배포&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;9,1,1,0&quot;&gt;&lt;span&gt;(&lt;/span&gt;&lt;span data-index-in-node=&quot;82&quot; data-math=&quot;E_{KA}[SK, ID(B), T]&quot;&gt;$E_{KA}[SK, ID(B), T]$&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span data-index-in-node=&quot;104&quot; data-math=&quot;E_{KB}[SK, ID(A), T]&quot;&gt;$E_{KB}[SK, ID(A), T]$&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;9,1,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;9,1,1,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;9,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,2,1,0&quot;&gt;&lt;span&gt;(3) 신원 확인 (A$\rightarrow$B):&lt;/span&gt;&lt;/b&gt;&lt;span&gt; A는 전달받은 세션키를 이용해 $E_{SK}[ID(A), T]$를 B에게 전송하여 통신을 시작하고, B는 A의 신원 확인&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;9,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,3,1,0&quot;&gt;&lt;span&gt;(4) 추가 인증 (B$\rightarrow$A):&lt;/span&gt;&lt;/b&gt;&lt;span&gt; B는 수신 확인 및 인증을 위해 타임스탬프에 1을 더하여 $E_{SK}[ID(B), T+1]$를 A에게 전송하고, A는 이를 통해 B의 신원을 최종 확인&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size23&quot;&gt;3. 공개키 분배의 유효성과 SESAME 프로토콜&lt;/h3&gt;
&lt;p id=&quot;p-rc_7890910d6f589e92-234&quot; data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;11,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,1&quot;&gt;&lt;span&gt;공개키 방식에서도 키를 단순히 공개 발표하거나, 기관의 디렉토리에 등록하여 전자적으로 접근하게 하는 방법이 있습니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,3&quot;&gt;. &lt;/span&gt;&lt;span data-path-to-node=&quot;11,4&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,5&quot;&gt;&lt;span&gt;하지만 이런 방식은 다른 사용자로 위장하여 공개키를 공개하거나, 디렉토리 정보 자체를 수정해 임의의 가입자로 위장하는 문제점이 존재합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,6&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,7&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;p-rc_7890910d6f589e92-235&quot; data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;12,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;12,1&quot;&gt;&lt;span&gt;이를 해결하기 위해 공개키 기관을 거쳐 세션키를 분배하는 과정(SESAME)을 거칩니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;12,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;12,3&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;13&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;13,0,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,0,0,1&quot;&gt;&lt;span&gt;A가 B의 공개키를 타임스탬프와 함께 공개키 기관에 요구합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,0,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,0,0,3&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;13,1,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,1,0,1&quot;&gt;&lt;span&gt;기관은 B의 공개키를 기관의 개인키로 암호화(서명)하여 A에게 전송합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,1,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,1,0,3&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;13,2,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,2,0,1&quot;&gt;&lt;span&gt;A는 B의 공개키를 확보한 후, 자신의 식별자와 임시비표(&lt;/span&gt;&lt;span data-index-in-node=&quot;32&quot; data-math=&quot;N_1&quot;&gt;$N_1$&lt;/span&gt;&lt;span&gt;)를 B의 공개키로 암호화하여 B에게 보냅니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,2,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,2,0,3&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;13,3,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,3,0,1&quot;&gt;&lt;span&gt;B 역시 공개키 기관을 통해 A의 공개키를 안전하게 획득합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,3,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,3,0,3&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;13,4,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,4,0,1&quot;&gt;&lt;span&gt;B는 임시비표 &lt;/span&gt;&lt;span data-index-in-node=&quot;8&quot; data-math=&quot;N_1&quot;&gt;$N_1$&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span data-index-in-node=&quot;13&quot; data-math=&quot;N_2&quot;&gt;$N_2$&lt;/span&gt;&lt;span&gt;를 A의 공개키로 암호화해 A에게 응답합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,4,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,4,0,3&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;13,5,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,5,0,1&quot;&gt;&lt;span&gt;A는 &lt;/span&gt;&lt;span data-index-in-node=&quot;3&quot; data-math=&quot;N_2&quot;&gt;$N_2$&lt;/span&gt;&lt;span&gt;를 다시 B의 공개키로 암호화해 전송하여 서로를 인증합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,5,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,5,0,3&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;13,6,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,6,0,1&quot;&gt;&lt;span&gt;마지막으로 A는 실제 통신에 쓸 세션키(&lt;/span&gt;&lt;span data-index-in-node=&quot;22&quot; data-math=&quot;Ks&quot;&gt;$Ks$&lt;/span&gt;&lt;span&gt;)를 선택하여, 이를 자신의 개인키로 서명하고 다시 B의 공개키로 암호화(&lt;/span&gt;&lt;span data-index-in-node=&quot;65&quot; data-math=&quot;E_{KUb}[E_{KRa}[Ks]]&quot;&gt;$E_{KUb}[E_{KRa}[Ks]]$&lt;/span&gt;&lt;span&gt;)하여 B에게 전송합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,6,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,6,0,3&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>암호학</category>
      <author>나야홍박사</author>
      <guid isPermaLink="true">https://ghdsus0107.tistory.com/99</guid>
      <comments>https://ghdsus0107.tistory.com/99#entry99comment</comments>
      <pubDate>Thu, 9 Apr 2026 17:36:54 +0900</pubDate>
    </item>
    <item>
      <title>공개키 암호</title>
      <link>https://ghdsus0107.tistory.com/98</link>
      <description>&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;비밀키(대칭키) 암호 방식은 속도가 빠르다는 장점이 있지만, 통신 당사자끼리 키를 안전하게 나눠 가져야 하는 '키 분배' 문제가 있었습니다. 이를 해결하기 위해 등장한 것이 바로 '공개키 암호 시스템'입니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size23&quot;&gt;1. 공개키 암호 시스템의 기본 개념&lt;/h3&gt;
&lt;p id=&quot;p-rc_4ee1152a1cc47b07-106&quot; data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;5,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,1&quot;&gt;&lt;span&gt;공개키 알고리즘은 하나의 키가 아닌, &lt;/span&gt;&lt;b data-index-in-node=&quot;21&quot; data-path-to-node=&quot;5,1&quot;&gt;&lt;span&gt;두 개의 서로 다른 키&lt;/span&gt;&lt;/b&gt;&lt;span&gt;를 쌍으로 사용합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,3&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li id=&quot;p-rc_4ee1152a1cc47b07-107&quot; data-path-to-node=&quot;6,0,1&quot;&gt;&lt;span data-path-to-node=&quot;6,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0,1,0&quot;&gt;&lt;span&gt;공개키(Public Key):&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 모든 사람이 접근 가능하도록 외부에 공개하는 키&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;6,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,1,0&quot;&gt;&lt;span&gt;개인키(Private Key):&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 각 사용자 자신만이 비밀로 소유하는 키&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;6,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,2,1,0&quot;&gt;&lt;span&gt;핵심 원리:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 암호 알고리즘과 암호키(공개키)를 공개하더라도, 복호키(개인키)를 계산해 내는 것은 불가능해야 함&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;6,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,3,1,0&quot;&gt;&lt;span&gt;통신 과정:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; A가 B에게 메시지를 보낼 때 B의 공개키로 암호화하면, 오직 B의 개인키로만 이 메시지를 복호화할 수 있음&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;6,3,1,2&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,3,1,3&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,3,1,4&quot;&gt;&lt;span&gt;B의 개인키를 모르는 제3자는 메시지 복호화 불가능&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size23&quot;&gt;2. 공개키 암호의 두 가지 핵심 응용&lt;/h3&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;공개키 암호는 누구의 키로 암호화하느냐에 따라 크게 두 가지 목적으로 활용될 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;9,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,0,1,0&quot;&gt;&lt;span&gt;기밀성 보장 (암호화):&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 수신자(B)의 &lt;/span&gt;&lt;b data-index-in-node=&quot;22&quot; data-path-to-node=&quot;9,0,1,0&quot;&gt;&lt;span&gt;공개키&lt;/span&gt;&lt;/b&gt;&lt;span&gt;로 평문을 암호화&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;9,0,1,2&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-path-to-node=&quot;9,0,1,3&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;9,0,1,4&quot;&gt;&lt;span&gt;암호 해독자가 암호문과 공개키를 가로채더라도, 수신자의 개인키가 없으면 평문 획득 불가능&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;9,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,1,1,0&quot;&gt;&lt;span&gt;전자서명 및 인증 (Authentication):&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 반대로 송신자(A)의 &lt;/span&gt;&lt;b data-index-in-node=&quot;40&quot; data-path-to-node=&quot;9,1,1,0&quot;&gt;&lt;span&gt;개인키&lt;/span&gt;&lt;/b&gt;&lt;span&gt;로 평문을 암호화하여 서명문을 만듬&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;9,1,1,2&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-path-to-node=&quot;9,1,1,3&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;9,1,1,4&quot;&gt;&lt;span&gt;누구나 A의 공개키로 이를 복호화해볼 수 있어 평문 확인이 가능하지만, A의 개인키를 알 수 없으므로 다른 사람이 위조된 서명문을 작성하는 것은 불가능&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;9,2,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;9,2,0,1&quot;&gt;&lt;span&gt;실제 통신에서는 이 두 가지를 결합하여 기밀 유지와 서명을 동시에 수행하기도 함&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size23&quot;&gt;3. 공개키 암호 시스템의 종류&lt;/h3&gt;
&lt;p id=&quot;p-rc_4ee1152a1cc47b07-114&quot; data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;11,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,1&quot;&gt;&lt;span&gt;공개키 암호는 쉽게 풀 수 없는 '수학적인 난제'를 이용하여 암호화를 수행합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,3&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;12,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,0,1,0&quot;&gt;&lt;span&gt;소인수 분해의 어려움 기반:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 가장 널리 알려진 &lt;/span&gt;&lt;b data-index-in-node=&quot;26&quot; data-path-to-node=&quot;12,0,1,0&quot;&gt;&lt;span&gt;RSA&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 알고리즘이 있음&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;12,0,1,4&quot;&gt;&lt;span&gt;RSA는 암호/복호, 디지털 서명, 키 교환이 모두 가능&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;12,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,1,1,0&quot;&gt;&lt;span&gt;이산대수 문제 기반:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 엘가말(El Gamal), 디피-헬만(Diffie-Hellman), 타원 곡선(ECC) 알고리즘 등이 속함&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;13&quot; data-ke-size=&quot;size23&quot;&gt;4. 대표적인 알고리즘: RSA&lt;/h3&gt;
&lt;p id=&quot;p-rc_4ee1152a1cc47b07-117&quot; data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;14,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;14,1&quot;&gt;&lt;span&gt;1977년에 개발되어 1978년에 공포된 RSA(Rivest, Shamir, Adleman)는 대표적인 공개키 알고리즘입니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;14,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;14,3&quot;&gt;.&lt;/span&gt;&lt;span data-path-to-node=&quot;15,0,2,0,0,0&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li id=&quot;p-rc_4ee1152a1cc47b07-118&quot; data-path-to-node=&quot;15,0,1&quot;&gt;&lt;span data-path-to-node=&quot;15,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,0,1,0&quot;&gt;&lt;span&gt;수식:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; * 암호화: &lt;/span&gt;&lt;span data-index-in-node=&quot;11&quot; data-math=&quot;C=M^{e}&quot;&gt;$C=M^{e}$&lt;/span&gt;&lt;span&gt; mod n &lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;15,0,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;복호화:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;$M=C^{d}$&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;mod n&lt;/span&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li id=&quot;p-rc_4ee1152a1cc47b07-120&quot; data-path-to-node=&quot;15,1,1&quot;&gt;&lt;span data-path-to-node=&quot;15,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,1,1,0&quot;&gt;&lt;span&gt;키 쌍:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 공개키는 &lt;/span&gt;&lt;span data-index-in-node=&quot;10&quot; data-math=&quot;KU=\{e,n\}&quot;&gt;$KU=\{e,n\}$&lt;/span&gt;&lt;span&gt; 이고, 개인키는 &lt;/span&gt;&lt;span data-index-in-node=&quot;30&quot; data-math=&quot;KR=\{d,n\}&quot;&gt;$KR=\{d,n\}$&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;15,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,2,1,0&quot;&gt;&lt;span&gt;안전성의 비밀:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;span data-index-in-node=&quot;9&quot; data-math=&quot;n&quot;&gt;$n$&lt;/span&gt;&lt;span&gt;을 만들기 위해 &lt;/span&gt;&lt;span data-index-in-node=&quot;19&quot; data-math=&quot;10^{100}&quot;&gt;$10^{100}$&lt;/span&gt;&lt;span&gt; 정도 크기의 두 소수 &lt;/span&gt;&lt;span data-index-in-node=&quot;40&quot; data-math=&quot;p&quot;&gt;$p$&lt;/span&gt;&lt;span&gt;와 &lt;/span&gt;&lt;span data-index-in-node=&quot;43&quot; data-math=&quot;q&quot;&gt;$q$&lt;/span&gt;&lt;span&gt;를 선택해 곱함&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;15,2,1,0&quot;&gt;&lt;span&gt;(&lt;/span&gt;&lt;span data-index-in-node=&quot;56&quot; data-math=&quot;n=p^{*}q&quot;&gt;$n=p^{*}q$&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;15,2,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;15,2,1,2&quot;&gt;. &lt;/span&gt;&lt;span data-path-to-node=&quot;15,2,1,3&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;15,2,1,4&quot;&gt;&lt;span&gt;공개된 &lt;/span&gt;&lt;span data-index-in-node=&quot;4&quot; data-math=&quot;e&quot;&gt;$e$&lt;/span&gt;&lt;span&gt;와 &lt;/span&gt;&lt;span data-index-in-node=&quot;7&quot; data-math=&quot;n&quot;&gt;$n$&lt;/span&gt;&lt;span&gt;을 알더라도, 매우 큰 수인 &lt;/span&gt;&lt;span data-index-in-node=&quot;24&quot; data-math=&quot;n&quot;&gt;$n$&lt;/span&gt;&lt;span&gt;을 소인수분해하는 것은 수학적인 난제이므로 개인키를 알아낼 수 없음&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;16&quot; data-ke-size=&quot;size23&quot;&gt;5. 공개키 암호의 요구사항과 한계점 극복&lt;/h3&gt;
&lt;p data-path-to-node=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;성공적인 공개키 암호 시스템이 되기 위해서는 몇 가지 조건과 방어책이 필요합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;18&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;18,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,0,1,0&quot;&gt;&lt;span&gt;요구 사항:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 키 쌍의 생성이 쉬워야 하며, 암호문 생성과 복호화 과정도 쉬워야 함&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;18,0,1,4&quot;&gt;&lt;span&gt;반면 공개키나 암호문만으로 개인키와 평문을 복구하는 것은 어려워야 함&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;18,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,1,1,0&quot;&gt;&lt;span&gt;한계와 방어:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 무차별 대입 공격(전사적 공격)에 취약할 수 있어 키의 크기를 크게 만들어 방지하지만, 이 때문에 대칭키 방식보다 상대적으로 속도가 느려짐&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;18,1,1,2&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,1,1,3&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,1,1,4&quot;&gt;&lt;span&gt;또한, 모든 가능한 메시지를 공개키로 암호화해 비교하는 공격을 막기 위해 메시지에 임의의 비트를 추가하여 보호함&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>암호학</category>
      <author>나야홍박사</author>
      <guid isPermaLink="true">https://ghdsus0107.tistory.com/98</guid>
      <comments>https://ghdsus0107.tistory.com/98#entry98comment</comments>
      <pubDate>Thu, 9 Apr 2026 17:27:11 +0900</pubDate>
    </item>
    <item>
      <title>비밀키 암호</title>
      <link>https://ghdsus0107.tistory.com/97</link>
      <description>&lt;h3 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size23&quot;&gt;1. 비밀키 암호의 원리와 특징&lt;/h3&gt;
&lt;p id=&quot;p-rc_5c03e2d2afca419c-69&quot; data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;5,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,1&quot;&gt;&lt;span&gt;비밀키 암호는 송신자와 수신자가 암호화와 복호화에 동일한 키(공용키)를 사용하는 방식입니다. &lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,3&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,4&quot;&gt;&lt;span&gt;관용 암호, 대칭키 암호, 공유키 암호라는 이름으로도 불립니다. &lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,5&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;6,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0,1,0&quot;&gt;&lt;span&gt;장점:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 알고리즘의 수행 속도가 빠르며, 매우 다양한 알고리즘이 개발&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;6,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,1,0&quot;&gt;&lt;span&gt;단점:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 송수신자 간에 키를 안전하게 교환하고 관리해야 하는 '키 분배의 어려움'이 있으며, 디지털 서명에 적용하기가 어려움&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size23&quot;&gt;2. 블록 암호의 뼈대, Feistel 암호 구조&lt;/h3&gt;
&lt;p id=&quot;p-rc_5c03e2d2afca419c-72&quot; data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;8,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,1&quot;&gt;&lt;span&gt;현대 블록 암호의 대표적인 구조인 파이스텔(Feistel) 구조는 1970년대 IBM의 연구를 중심으로 시작되어 Lucifer 알고리즘의 기초가 되었습니다. &lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;9,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,0,1,0&quot;&gt;&lt;span&gt;동일한 구조:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 암호화와 복호화 과정이 동일하여 별도의 복호화 알고리즘을 구현할 필요가 없음&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;9,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,1,1,0&quot;&gt;&lt;span&gt;작동 원리:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 평문을 좌우 블록으로 나눈 뒤, 취약한 라운드 함수(&lt;/span&gt;&lt;span data-index-in-node=&quot;36&quot; data-math=&quot;F&quot;&gt;$F$&lt;/span&gt;&lt;span&gt;)를 반복적으로 교차 적용하여 강한 암호를 설계합니다. &lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;9,1,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;9,1,1,2&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;9,1,1,3&quot;&gt;&lt;span&gt;연산식은 &lt;/span&gt;&lt;span data-index-in-node=&quot;5&quot; data-math=&quot;L_i = R_{i-1}&quot;&gt;$L_i = R_{i-1}$&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span data-index-in-node=&quot;20&quot; data-math=&quot;R_i = L_{i-1} \oplus F(R_{i-1})&quot;&gt;$R_i = L_{i-1} \oplus F(R_{i-1})$&lt;/span&gt;&lt;span&gt; 와 같이 이루어짐&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size23&quot;&gt;3. 데이터 암호화 표준, DES (Data Encryption Standard)&lt;/h3&gt;
&lt;p id=&quot;p-rc_5c03e2d2afca419c-75&quot; data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;11,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,1&quot;&gt;&lt;span&gt;DES는 1977년 미국 국립표준국(NBS)에서 표준 암호 알고리즘으로 채택한 대표적인 64비트 블록 암호 알고리즘입니다. &lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;12,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,0,1,0&quot;&gt;&lt;span&gt;키 구성:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 총 64비트의 키를 입력받지만, 8번째 비트마다 패리티 체크(Parity check) 용도로 사용하기 때문에 &lt;/span&gt;&lt;b data-index-in-node=&quot;67&quot; data-path-to-node=&quot;12,0,1,0&quot;&gt;&lt;span&gt;실제 유효한 암호화 키는 56비트&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;12,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,1,1,0&quot;&gt;&lt;span&gt;처리 과정:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 입력 메시지를 64비트 단위로 나누어 총 16라운드(round)에 걸쳐 처리합니다. &lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;12,1,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;12,1,1,2&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;12,1,1,3&quot;&gt;&lt;span&gt;복호화는 암호화의 역순으로 진행&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;12,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,2,1,0&quot;&gt;&lt;span&gt;f 함수의 역할:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 각 라운드 내부에서는 확장 순열(E-Table), 서브키와의 XOR 연산, S-box를 이용한 치환 및 선택, 그리고 P-box 순열 과정을 거쳐 혼합과 확산을 수행&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;13&quot; data-ke-size=&quot;size23&quot;&gt;4. DES의 작동 모드와 한계 극복 (3중 DES)&lt;/h3&gt;
&lt;p id=&quot;p-rc_5c03e2d2afca419c-79&quot; data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;14,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;14,1&quot;&gt;&lt;span&gt;암호 알고리즘을 실제 연속된 데이터 블록에 적용하기 위해 다양한 작동 모드가 활용됩니다. &lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;14,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;15,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,0,1,0&quot;&gt;&lt;span&gt;작동 모드의 종류:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 평문 블록을 독립적으로 암호화하는 &lt;/span&gt;&lt;b data-index-in-node=&quot;30&quot; data-path-to-node=&quot;15,0,1,0&quot;&gt;&lt;span&gt;ECB&lt;/span&gt;&lt;/b&gt;&lt;span&gt;(Electronic Codebook) 모드, 이전 암호문을 다음 평문과 결합하는 &lt;/span&gt;&lt;b data-index-in-node=&quot;79&quot; data-path-to-node=&quot;15,0,1,0&quot;&gt;&lt;span&gt;CBC&lt;/span&gt;&lt;/b&gt;&lt;span&gt;(Cipher Block Chaining) 모드, 그 외에도 &lt;/span&gt;&lt;b data-index-in-node=&quot;116&quot; data-path-to-node=&quot;15,0,1,0&quot;&gt;&lt;span&gt;CFB&lt;/span&gt;&lt;/b&gt;&lt;span&gt;, &lt;/span&gt;&lt;b data-index-in-node=&quot;121&quot; data-path-to-node=&quot;15,0,1,0&quot;&gt;&lt;span&gt;OFB&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 모드 등이 있음&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;15,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,1,1,0&quot;&gt;&lt;span&gt;3중 DES (Triple DES):&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 컴퓨팅 파워의 발전으로 56비트 키를 가진 DES가 무차별 대입 공격(Brute-force attack)에 취약&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;15,1,1,3&quot;&gt;&lt;span&gt;이를 보완하기 위해 2개의 키를 사용하여 &lt;/span&gt;&lt;b data-index-in-node=&quot;23&quot; data-path-to-node=&quot;15,1,1,3&quot;&gt;&lt;span&gt;'암호화 &lt;/span&gt;&lt;span data-index-in-node=&quot;28&quot; data-math=&quot;\rightarrow&quot;&gt;$\rightarrow$&lt;/span&gt;&lt;span&gt; 복호화 &lt;/span&gt;&lt;span data-index-in-node=&quot;44&quot; data-math=&quot;\rightarrow&quot;&gt;$\rightarrow$&lt;/span&gt;&lt;span&gt; 암호화'&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 과정을 거치는 3중 DES가 등장&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;16&quot; data-ke-size=&quot;size23&quot;&gt;5. 차세대 표준 및 다양한 비밀키 알고리즘&lt;/h3&gt;
&lt;p id=&quot;p-rc_5c03e2d2afca419c-82&quot; data-path-to-node=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;17,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;17,1&quot;&gt;&lt;span&gt;DES의 수명이 다하면서, 이를 대체하기 위한 더 강력한 알고리즘들이 등장했습니다. &lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;17,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;18&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;18,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,0,1,0&quot;&gt;&lt;span&gt;AES (Advanced Encryption Standard):&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 2000년 10월, DES를 대체할 새로운 표준으로 선정된 알고리즘(Rijndael 기반)입니다. &lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,0,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,0,1,2&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,0,1,3&quot;&gt;&lt;span&gt;알려진 모든 공격에 대응이 가능하며 128, 192, 256비트의 다양한 키 길이 지원&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;18,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,1,1,0&quot;&gt;&lt;span&gt;IDEA:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 128비트 키와 64비트 평문 블록을 이용해 8라운드로 작동하며, PGP(Pretty Good Privacy) 메일 시스템에 이용&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li id=&quot;p-rc_5c03e2d2afca419c-85&quot; data-path-to-node=&quot;18,2,1&quot;&gt;&lt;span data-path-to-node=&quot;18,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,2,1,0&quot;&gt;&lt;span&gt;국내 암호 알고리즘:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; * &lt;/span&gt;&lt;b data-index-in-node=&quot;14&quot; data-path-to-node=&quot;18,2,1,0&quot;&gt;&lt;span&gt;SEED:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 1999년 한국정보보호센터에서 개발한 128비트 블록/키 기반 알고리즘으로 16라운드에 걸쳐 G 함수 사용&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-path-to-node=&quot;18,2,1&quot;&gt;기타 국내 표준으로&amp;nbsp;&lt;b data-path-to-node=&quot;18,2,2,0,0,1&quot; data-index-in-node=&quot;11&quot;&gt;HIGHT&lt;/b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;(64비트 블록)와&amp;nbsp;&lt;/span&gt;&lt;b data-path-to-node=&quot;18,2,2,0,0,1&quot; data-index-in-node=&quot;27&quot;&gt;LEA&lt;/b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;(128비트 블록) 등이 있음&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>암호학</category>
      <author>나야홍박사</author>
      <guid isPermaLink="true">https://ghdsus0107.tistory.com/97</guid>
      <comments>https://ghdsus0107.tistory.com/97#entry97comment</comments>
      <pubDate>Thu, 9 Apr 2026 17:22:33 +0900</pubDate>
    </item>
    <item>
      <title>암호의 개념과 고전 암호</title>
      <link>https://ghdsus0107.tistory.com/94</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 암호의 개념과 고전 암호&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;암호의 개념&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;통신 당사자들끼리만 아는 비밀스러운 신호나 부호&lt;/li&gt;
&lt;li&gt;암호화와 복호화하기 위한 원리, 수단, 방법 등을 취급하는 기술이나 과학&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;주요 용어&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;평문 (Plaintext)&lt;/b&gt;: 송신자가 보내고자 하는 원본 메시지&lt;/li&gt;
&lt;li&gt;&lt;b&gt;암호문 (Ciphertext)&lt;/b&gt;: 개방통신로를 통해 전달되는, 해독 불가능한 상태의 메시지&lt;/li&gt;
&lt;li&gt;&lt;b&gt;암호알고리즘 (Cryptographic)&lt;/b&gt;: 평문을 암호문으로 바꾸는 과정(암호화) (암호화 키 사용)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;복호알고리즘 (Decipher)&lt;/b&gt;: 암호문을 다시 평문으로 복구하는 과정(복호화) (복호화 키 사용)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;암호 해독 (Cryptanalysis)&lt;/b&gt;: 제3자(Attacker)가 암호문이나 개방통신로의 정보를 가로채어 합법적인 키 없이 평문을 알아내려는 시도&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;암호학 (Cryptology)의 분류&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;암호학은 방패 역할을 하는 &lt;b&gt;암호 지정학 (Cryptography, 암호를 만드는 기술)&lt;/b&gt;과 창 역할을 하는 &lt;b&gt;암호 해독학 (Cryptanalysis, 암호를 깨는 기술)&lt;/b&gt;의 두 가지 분야로 나뉘며, 이 둘은 끊임없이 대립하며 발전해옴&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 암호 원리&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;평문을 암호화하기 위한 연산자의 유형&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,0,2,0,0&quot;&gt;치환 (Substitution)&lt;/b&gt;: 평문의 각 원소를 다른 원소로 사상(대치)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,0,2,1,0&quot;&gt;전치 (Transposition)&lt;/b&gt;: 평문의 각 원소를 재배열하여 순서를 바꿈&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,0,2,2,0&quot;&gt;혼합 (Confusion)&lt;/b&gt;: 평문의 원소를 치환 선택(bit)하여 암호문과 키의 관계를 복잡하게 만듬&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,0,2,3,0&quot;&gt;확산 (Diffusion)&lt;/b&gt;: 평문의 원소를 확대(bit)하여 평문의 통계적 특성이 암호문 전반에 퍼지게 함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;사용된 키의 수&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;대칭키 (관용 암호)&lt;/b&gt;:송수신자가 같은 키를 사용, 속도가 빠르지만 키 분배가 어렵고 디지털 서명이 불가능&lt;/li&gt;
&lt;li&gt;&lt;b&gt;공개키 암호&lt;/b&gt;: 송수신자가 다른 키를 사용(개인키 비밀 유지, 공개키 공개), 속도가 느리지만 키 쌍 중 하나만 알면 되며 디지털 서명 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;평문 처리 방법&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;블록 암호화 (Block cipher)&lt;/b&gt;: 연산을 일정한 크기의 블록 단위로 묶어서 처리&lt;/li&gt;
&lt;li&gt;&lt;b&gt;스트림 암호화 (Stream cipher)&lt;/b&gt;: 입력을 비트나 바이트 단위로 연속적으로 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 통신 암호화의 위치&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;9,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,0,1,0&quot;&gt;&lt;span&gt;단대단 암호 (End-to-End Encryption)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;9,0,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9,0,2&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;OSI 참조모델에서 가장 높은 계층(7, 6계층)에서 이루어짐&lt;/li&gt;
&lt;li&gt;암호화는 송수신 프로세서가 담당&lt;/li&gt;
&lt;li&gt;네트워크망 자체에서 보안 유지에 실패하더라도 데이터의 비밀성은 위협받지 않는 강력한 방식
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;링크 암호 (Link Encryption)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;OSI 참조모델에서 가장 낮은 계층(1, 2계층)에서 암호화&lt;/li&gt;
&lt;li&gt;암호화는 송수신 호스트에서 담당&lt;/li&gt;
&lt;li&gt;신뢰적인 호스트 사이에 비신뢰적인 매체를 사용할 때 유리하지만, 송수신 호스트나 중간 노드(라우터 등)에서 데이터가 노출된다는 단점&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;패킷 구조 관점의 차이&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;링크 암호화는 데이터 내용뿐만 아니라 '헤더(출발지/목적지 IP 등)'까지 전부 암호화하여 트래픽 분석을 막음&lt;/li&gt;
&lt;li&gt;하지만 다음 라우터로 갈 때 목적지를 확인해야 하므로 중간 노드에서 한 번 복호화(평문 노출)가 일어남&lt;/li&gt;
&lt;li&gt;반면, 단대단 암호화는 헤더는 놔두고 '페이로드(실제 내용)'만 암호화하므로 중간 노드에서 절대 평문이 노출되지 않음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. 고전적 암호 기술 - 스테가노 그래피 (Steganography)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;특징&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다양한 원문의 변환에 의해 의미를 감추는 암호 방법과 달리, 메시지의 존재 자체를 은폐하는 기법&lt;/li&gt;
&lt;li&gt;원문 내의 단어나 문자를 적당히 배열하여 실제 메시지를 나타냄&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;장단점&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;장점&lt;/b&gt;: 생성이 쉬움&lt;/li&gt;
&lt;li&gt;&lt;b&gt;단점&lt;/b&gt;: 적은 정보 비트를 숨기는 데 많은 오버헤드가 요구되며, 방법이 한 번 노출되면 재사용이 불가능하고 타인에 의해 이용될 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. 고전적 암호 기술 - 치환 기법 (Substitution)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다양한 원문의 변환을 통해 외부인이 그 의미를 알지 못하도록 메시지를 변형하는 기법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;p-rc_737a78b5e1f55ec7-740&quot; data-path-to-node=&quot;15,0,1&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;15,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,0,1,0&quot;&gt;&lt;span&gt;1) 시저 암호 (Caesar Cipher)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;15,0,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15,0,2&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;줄리어스 시저에 의해 개발된 단일 문자 치환 방식&lt;/li&gt;
&lt;li&gt;암호화 일반화 식: &lt;span data-index-in-node=&quot;11&quot; data-math=&quot;C=E(p)=(p+k) \pmod{26}&quot;&gt;C = E ( p ) = ( p + k ) mod 26&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;복호화 일반화 식: &lt;span data-index-in-node=&quot;11&quot; data-math=&quot;p=D(C)=(C-k) \pmod{26}&quot;&gt;p = D ( C ) = ( C - k ) mod 26&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,0,2,3,0&quot;&gt;단점&lt;/b&gt;: 알고리즘이 알려져 있고 가능한 키가 25개뿐이어서 Brute-force attack(무차별 대입 공격)이 가능하며, 평문의 언어를 알면 쉽게 인식할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;p id=&quot;p-rc_737a78b5e1f55ec7-741&quot; data-path-to-node=&quot;15,1,1&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;15,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,1,1,0&quot;&gt;&lt;span&gt;2) 단일 치환 암호&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;15,1,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15,1,2&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시저 암호의 키 공간을 &lt;span data-index-in-node=&quot;13&quot; data-math=&quot;26!&quot;&gt;$26!$&lt;/span&gt; (팩토리얼)로 급격히 증가시킨 방법&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,1,2,1,0&quot;&gt;단점&lt;/b&gt;: 출현 빈도수를 이용해 평문 유추가 가능, 예를 들어 영어에서는 t, e, a, h 등이 많이 나타나는데, 암호문에서도 그에 상응하는 문자가 같은 빈도로 나타나는 약점 보임&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;15,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,2,1,0&quot;&gt;&lt;span&gt;3) 다중 치환 기법 - Playfair 알고리즘&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;15,2,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15,2,2&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;평문을 2자리씩 쌍으로 묶어 암호화&lt;/li&gt;
&lt;li&gt;&lt;span data-index-in-node=&quot;0&quot; data-math=&quot;5 \times 5&quot;&gt;5 X 5&lt;/span&gt; 행렬을 기초로 하며, 키워드의 중복 문자를 제외하고 알파벳을 채운 뒤 I와 J는 한 문자로 취급&lt;/li&gt;
&lt;li&gt;반복되는 평문은 X와 같은 채움 문자로 분리&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,2,2,2,0&quot;&gt;규칙&lt;/b&gt;: 같은 행에 있으면 우측 문자, 같은 열에 있으면 바로 밑의 문자, 그 외에는 대각선에 위치한 문자와 치환&lt;/li&gt;
&lt;li id=&quot;p-rc_737a78b5e1f55ec7-743&quot; data-path-to-node=&quot;15,2,2,3,1&quot;&gt;&lt;span data-path-to-node=&quot;15,2,2,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,2,2,3,1,0&quot;&gt;&lt;span&gt;특징 및 단점&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;15,2,2,3,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;15,2,2,3,1,2&quot;&gt;: 2중자는 &lt;span data-index-in-node=&quot;7&quot; data-math=&quot;26 \times 26 = 676&quot;&gt;26 X 26 = 676&lt;/span&gt;가지이므로 빈도수 분석이 어려워 세계 대전 중 육군에서 사용, 하지만 수백 자의 암호문자만 확보되면 원래 구조가 많이 드러난다는 단점&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p id=&quot;p-rc_737a78b5e1f55ec7-744&quot; data-path-to-node=&quot;15,3,1&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;15,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,3,1,0&quot;&gt;&lt;span&gt;4) 다중 단일 문자 치환 - Vigenere 방법&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;15,3,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15,3,2&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단순 단일 문자 치환을 개량하여, 주어진 변환에 사용될 여러 규칙 집합을 키에 의해 결정 (예: 키워드가 Infinitive이면 각 글자에 맞춰 다른 치환 규칙 적용)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,3,2,1,0&quot;&gt;특징&lt;/b&gt;: 평문자에 대한 암호문자가 여러 개 존재하게 되어 문자 빈도수에 대한 정보가 불분명&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,3,2,2,0&quot;&gt;단점&lt;/b&gt;: 평문 구조에 대한 정보가 완벽히 은폐되지는 않으며, 반복되는 패턴을 분석하면 키워드의 길이 유추 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;6. 고전적 암호 기술 - 전치 기법 (Transposition)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;평문자의 의미(알파벳) 자체는 그대로 두되, 그 순서나 위치를 바꾸는 방식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;19,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,0,1,0&quot;&gt;&lt;span&gt;Rail Fence 기법&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;19,0,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;19,0,1,2&quot;&gt;: 깊이(행의 수)를 정해두고 평문을 위아래로 지그재그로 적은 뒤, 행 단위로 쭉 읽어내어 암호문 생성&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;19,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,1,1,0&quot;&gt;&lt;span&gt;사각형 행렬 사용 (Row Transposition)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;19,1,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;19,1,1,2&quot;&gt;: 사각형 행렬에 평문을 가로로 채워 넣고, 미리 정해둔 '키'의 순서에 따라 세로 열(Column)을 골라내어 읽음&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;19,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,2,1,0&quot;&gt;&lt;span&gt;다중 전치&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;19,2,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;19,2,1,2&quot;&gt;: 전치 암호기법은 한 번만 적용하면 해독되기 쉬우므로, 두 단계 이상의 전치를 중복으로 행함으로써 안전성 향상&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>암호학</category>
      <author>나야홍박사</author>
      <guid isPermaLink="true">https://ghdsus0107.tistory.com/94</guid>
      <comments>https://ghdsus0107.tistory.com/94#entry94comment</comments>
      <pubDate>Wed, 18 Mar 2026 12:48:21 +0900</pubDate>
    </item>
    <item>
      <title>[Oracle] 오라클 클라이언트 TNS 설정, SQL 파일 실행 및 방화벽 문제 해결 완벽 가이드 (Windows -&amp;gt; Linux)</title>
      <link>https://ghdsus0107.tistory.com/93</link>
      <description>&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;가상 머신(VMware) 환경이나 실무 서버 구축 시, 리눅스(Linux)에 오라클 19c 서버를 띄워두고 윈도우(Windows) 클라이언트에서 원격으로 접속해야 하는 경우가 많습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 윈도우 환경에서 tnsnames.ora 파일을 통해 원격 DB와 연동하는 방법, 만들어둔 .sql 스크립트를 실행하는 방법, 그리고 가장 많이 겪는 'tnsping 무한 대기' 방화벽 에러 해결법까지 한 번에 정리해 보겠습니다.&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size26&quot;&gt;1. SQL 스크립트 파일 실행하여 데이터 셋팅하기&lt;/h2&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;미리 메모장 등으로 작성해 둔 테이블 생성 및 데이터 삽입용 스크립트 파일(예: school.sql)이 있다면, SQL*Plus를 통해 한 번에 실행할 수 있습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;8&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;윈도우 **명령 프롬프트(CMD)**를 엽니다.&lt;/li&gt;
&lt;li&gt;관리자 계정이나 권한이 있는 계정으로 오라클에 로컬 접속합니다.&lt;/li&gt;
&lt;li&gt;SQL&amp;gt; 프롬프트가 뜨면, 파일의 절대 경로 맨 앞에 &lt;b data-index-in-node=&quot;30&quot; data-path-to-node=&quot;8,2,0&quot;&gt;@ (골뱅이)&lt;/b&gt; 기호를 붙여서 실행합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwij04_imKaTAxUAAAAAHQAAAAAQmQs&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;&lt;span&gt;SQL&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;moonscript&quot;&gt;&lt;code&gt;-- 실행 예시 (반드시 @를 붙여야 파일로 인식합니다)
SQL&amp;gt; @C:\Users\st\school.sql
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;스크립트가 정상적으로 돌면 &quot;테이블이 생성되었습니다&quot;, &quot;1 행이 작성되었습니다&quot;라는 메시지가 출력되며 세팅이 완료됩니다.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;11&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;12&quot; data-ke-size=&quot;size26&quot;&gt;2. tnsnames.ora 파일 등록 (환경 변수 TNS_ADMIN 설정)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;원격지 서버에 있는 DB에 접속하려면 오라클의 전화번호부 역할을 하는 tnsnames.ora 파일이 필요합니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;가장 확실한 적용 방법은 윈도우 시스템 환경 변수에 파일의 위치를 직접 선언해 주는 것입니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;15&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;윈도우 검색창에 &lt;b data-index-in-node=&quot;9&quot; data-path-to-node=&quot;15,0,0&quot;&gt;'환경 변수'&lt;/b&gt; 검색 ➔ &lt;b data-index-in-node=&quot;22&quot; data-path-to-node=&quot;15,0,0&quot;&gt;[시스템 환경 변수 편집]&lt;/b&gt; 실행&lt;/li&gt;
&lt;li&gt;창 하단의 &lt;b data-index-in-node=&quot;6&quot; data-path-to-node=&quot;15,1,0&quot;&gt;[환경 변수]&lt;/b&gt; 버튼 클릭&lt;/li&gt;
&lt;li&gt;'시스템 변수' 탭에서 &lt;b data-index-in-node=&quot;13&quot; data-path-to-node=&quot;15,2,0&quot;&gt;[새로 만들기]&lt;/b&gt; 클릭&lt;/li&gt;
&lt;li&gt;아래와 같이 입력합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15,3,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,3,1,0,0&quot;&gt;변수 이름:&lt;/b&gt; TNS_ADMIN&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,3,1,1,0&quot;&gt;변수 값:&lt;/b&gt; C:\Users\st (  &lt;b data-index-in-node=&quot;22&quot; data-path-to-node=&quot;15,3,1,1,0&quot;&gt;주의:&lt;/b&gt; tnsnames.ora 파일명이 들어가면 안 됩니다! 파일이 위치한 &lt;b data-index-in-node=&quot;64&quot; data-path-to-node=&quot;15,3,1,1,0&quot;&gt;폴더(디렉토리) 경로&lt;/b&gt;까지만 적어야 합니다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;열려있는 모든 CMD 창을 닫고 &lt;b data-index-in-node=&quot;18&quot; data-path-to-node=&quot;15,4,0&quot;&gt;새로 열어야&lt;/b&gt; 설정이 적용됩니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-path-to-node=&quot;16&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;17&quot; data-ke-size=&quot;size26&quot;&gt;3. 연결 테스트 (tnsping) 및 방화벽 문제 해결&lt;/h2&gt;
&lt;p data-path-to-node=&quot;18&quot; data-ke-size=&quot;size16&quot;&gt;TNS 설정이 끝났다면, 내가 설정한 별칭(Alias)으로 핑이 제대로 나가는지 테스트해야 합니다.&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwij04_imKaTAxUAAAAAHQAAAAAQmgs&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;&lt;span&gt;DOS&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;avrasm&quot;&gt;&lt;code&gt;C:\&amp;gt; tnsping dal
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-path-to-node=&quot;20&quot; data-ke-size=&quot;size26&quot;&gt;❌ 에러 케이스 1: TNS-03505: Failed to resolve name&lt;/h2&gt;
&lt;p data-path-to-node=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;오라클이 tnsnames.ora 파일을 찾지 못했거나, 파일 안의 문법이 틀린 경우입니다. TNS_ADMIN 환경 변수 경로에 오타가 없는지, CMD 창을 새로 띄웠는지 다시 확인합니다.&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;22&quot; data-ke-size=&quot;size26&quot;&gt;❌ 에러 케이스 2: 응답 없이 커서만 깜빡이는 무한 대기 (Hanging) 상태&lt;/h2&gt;
&lt;p data-path-to-node=&quot;23&quot; data-ke-size=&quot;size16&quot;&gt;파일은 정상적으로 찾았고 리눅스 서버까지 도달했으나, &lt;b data-index-in-node=&quot;30&quot; data-path-to-node=&quot;23&quot;&gt;리눅스 서버의 방화벽이 오라클 포트(1521)를 막고 있는 상황&lt;/b&gt;입니다. 리눅스 서버 터미널로 접속하여 root 권한으로 방화벽을 열어주어야 합니다.&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwij04_imKaTAxUAAAAAHQAAAAAQmws&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;&lt;span&gt;Bash&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;dockerfile&quot;&gt;&lt;code&gt;# 리눅스 터미널 (root 계정)
$ firewall-cmd --add-port=1521/tcp --permanent
$ firewall-cmd --reload
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;만약 방화벽을 열 권한이 없는 실습 서버라면, 관리자나 강사님께 &quot;1521 포트 개방&quot;을 요청해야 합니다.&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;26&quot; data-ke-size=&quot;size26&quot;&gt;  성공 케이스: OK (30 msec)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;27&quot; data-ke-size=&quot;size16&quot;&gt;방화벽이 정상적으로 열려있고 리스너가 살아있다면, 아래와 같이 밀리초 단위의 응답 속도와 함께 OK 사인이 떨어집니다.&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwij04_imKaTAxUAAAAAHQAAAAAQnAs&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;&lt;span&gt;DOS&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;확인(30밀리초)  -- (영문판: OK (30 msec))
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-path-to-node=&quot;29&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;30&quot; data-ke-size=&quot;size26&quot;&gt;4. 최종 원격 DB 접속 및 확인&lt;/h2&gt;
&lt;p data-path-to-node=&quot;31&quot; data-ke-size=&quot;size16&quot;&gt;tnsping 테스트가 성공했다면 고속도로가 뚫린 것입니다! 윈도우 CMD 창에서 바로 접속을 시도합니다.&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwij04_imKaTAxUAAAAAHQAAAAAQnQs&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;&lt;span&gt;DOS&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;C:\&amp;gt; sqlplus 계정명/비밀번호@TNS별칭
-- 예시: sqlplus st06/1234@dal
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-path-to-node=&quot;33&quot; data-ke-size=&quot;size16&quot;&gt;SQL&amp;gt; 프롬프트가 뜨면 접속 성공입니다. 이제 SELECT * FROM TAB; 명령어를 통해 1번 단계에서 만들어둔 테이블들이 잘 존재하는지 확인하며 자유롭게 SQL 쿼리를 테스트해 보세요!&lt;/p&gt;</description>
      <category>DB_SQL</category>
      <author>나야홍박사</author>
      <guid isPermaLink="true">https://ghdsus0107.tistory.com/93</guid>
      <comments>https://ghdsus0107.tistory.com/93#entry93comment</comments>
      <pubDate>Tue, 17 Mar 2026 17:12:06 +0900</pubDate>
    </item>
    <item>
      <title>암호학</title>
      <link>https://ghdsus0107.tistory.com/89</link>
      <description>&lt;h2 data-path-to-node=&quot;1&quot; data-ke-size=&quot;size26&quot;&gt;1. 암호의 개념&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;2&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;2,0,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;2,0,0,1&quot;&gt;&lt;span&gt;암호란 통신 당사자들끼리만 아는 비밀스런 신호나 부호&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;2,1,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;2,1,0,1&quot;&gt;&lt;span&gt;개방된 통신망에서 발생할 수 있는 공격으로부터 정보를 보호하기 위해, 암호화와 복호화의 원리, 수단, 방법 등을 다루는 기술이나 과학&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;3&quot; data-ke-size=&quot;size26&quot;&gt;2. 암호 용어&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;4&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;4,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,0,1,0&quot;&gt;&lt;span&gt;평문 (Plaintext)&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: 송신자가 보내는 암호화되기 전의 원본 메시지&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;4,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,1,1,0&quot;&gt;&lt;span&gt;암호문 (Ciphertext)&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: 암호 알고리즘을 거쳐 형태가 변환된 메시지&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;4,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,2,1,0&quot;&gt;&lt;span&gt;암호 알고리즘 (Cryptographic)&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: 평문을 암호문으로 변환하는 연산 과정&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;4,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,3,1,0&quot;&gt;&lt;span&gt;복호 알고리즘 (Decipher)&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: 암호문을 다시 평문으로 되돌리는 과정&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;4,4,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,4,1,0&quot;&gt;&lt;span&gt;키 (Key)&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: 암호화(암호화 키) 및 복호화(복호화 키) 과정에 사용되는 핵심 데이터&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;4,5,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,5,1,0&quot;&gt;&lt;span&gt;암호 해독 (Cryptanalysis)&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: 정당한 수신자가 아닌 공격자가 암호문을 평문으로 알아내려는 행위&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;5&quot; data-ke-size=&quot;size26&quot;&gt;3. 암호 원리&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li id=&quot;p-rc_58ad7e526124465d-281&quot; data-path-to-node=&quot;6,0,1&quot;&gt;&lt;span data-path-to-node=&quot;6,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0,1,0&quot;&gt;&lt;span&gt;평문 연산자 유형&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-path-to-node=&quot;6,0,1&quot;&gt;&lt;span data-path-to-node=&quot;6,0,2,0,1,0&quot;&gt;&lt;b data-path-to-node=&quot;6,0,2,0,1,0&quot; data-index-in-node=&quot;0&quot;&gt;&lt;span&gt;치환 (Substitution)&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: 평문의 각 원소를 다른 원소로 대응&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,0,2,0,1,1&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-path-to-node=&quot;6,0,1&quot;&gt;&lt;span data-path-to-node=&quot;6,0,2,1,1,0&quot;&gt;&lt;b data-path-to-node=&quot;6,0,2,1,1,0&quot; data-index-in-node=&quot;0&quot;&gt;&lt;span&gt;전치 (Transposition)&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: 평문의 각 원소의 배열 순서를 재배열&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,0,2,1,1,1&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-path-to-node=&quot;6,0,1&quot;&gt;&lt;span data-path-to-node=&quot;6,0,2,2,1,0&quot;&gt;&lt;b data-path-to-node=&quot;6,0,2,2,1,0&quot; data-index-in-node=&quot;0&quot;&gt;&lt;span&gt;혼합 (Confusion)&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: 평문의 원소를 비트 단위로 치환 선택&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,0,2,2,1,1&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-path-to-node=&quot;6,0,1&quot;&gt;&lt;span data-path-to-node=&quot;6,0,2,3,1,0&quot;&gt;&lt;b data-path-to-node=&quot;6,0,2,3,1,0&quot; data-index-in-node=&quot;0&quot;&gt;&lt;span&gt;확산 (Diffusion)&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: 평문의 원소를 비트 단위로 확대&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li id=&quot;p-rc_58ad7e526124465d-286&quot; data-path-to-node=&quot;6,1,1&quot;&gt;&lt;span data-path-to-node=&quot;6,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,1,0&quot;&gt;&lt;span&gt;키의 수에 따른 분류&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,1,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-path-to-node=&quot;6,1,1&quot;&gt;&lt;span data-path-to-node=&quot;6,1,2,0,1,0&quot;&gt;&lt;b data-path-to-node=&quot;6,1,2,0,1,0&quot; data-index-in-node=&quot;0&quot;&gt;&lt;span&gt;대칭키&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: 송신자와 수신자가 동일한 키 사용&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,1,2,0,1,1&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-path-to-node=&quot;6,1,1&quot;&gt;&lt;span data-path-to-node=&quot;6,1,2,1,1,0&quot;&gt;&lt;b data-path-to-node=&quot;6,1,2,1,1,0&quot; data-index-in-node=&quot;0&quot;&gt;&lt;span&gt;공개키&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: 송신자와 수신자가 서로 다른 키 사용&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li id=&quot;p-rc_58ad7e526124465d-289&quot; data-path-to-node=&quot;6,2,1&quot;&gt;&lt;span data-path-to-node=&quot;6,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,2,1,0&quot;&gt;&lt;span&gt;처리에 따른 분류&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,2,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-path-to-node=&quot;6,2,1&quot;&gt;&lt;span data-path-to-node=&quot;6,2,2,0,1,0&quot;&gt;&lt;b data-path-to-node=&quot;6,2,2,0,1,0&quot; data-index-in-node=&quot;0&quot;&gt;&lt;span&gt;블록 암호화&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: 연산을 정해진 블록 단위로 묶어서 처리&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,2,2,0,1,1&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-path-to-node=&quot;6,2,1&quot;&gt;&lt;span data-path-to-node=&quot;6,2,2,1,1,0&quot;&gt;&lt;b data-path-to-node=&quot;6,2,2,1,1,0&quot; data-index-in-node=&quot;0&quot;&gt;&lt;span&gt;스트림 암호화&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: 입력을 연속적으로 흐르듯 처리&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,2,2,1,1,1&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,3,0&quot;&gt;암호화 계층에 따른 분류&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6,3,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;6,3,1,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,3,1,0,1,0&quot;&gt;&lt;span&gt;단대단 암호 (End-to-End)&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: 통신 양 끝단의 프로세서가 담당하며(OSI 7, 6계층), 네트워크 중간에서 보안이 뚫려도 데이터 기밀성 유지&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;6,3,1,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,3,1,1,1,0&quot;&gt;&lt;span&gt;링크 암호 (Link)&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: 비신뢰적인 매체를 사용할 때 호스트나 중간 노드 간 낮은 계층(OSI 1, 2계층)에서 암호화되나, 중간 노드에서 내용이 노출될 위험 존재&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,4,0&quot;&gt;관용 암호 vs 공개키 암호&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6,4,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;6,4,1,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,4,1,0,0,0&quot;&gt;관용 암호&lt;/b&gt;: 암/복호화에 같은 알고리즘과 공유된 비밀키를 사용하며 속도가 빠릅니다. &lt;/span&gt;&lt;span data-path-to-node=&quot;6,4,1,0,0,1&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,4,1,0,0,2&quot;&gt;&lt;span&gt;하지만 키 분배가 어렵고 디지털 서명이 불가능&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;6,4,1,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,4,1,1,0,0&quot;&gt;공개키 암호&lt;/b&gt;: 암/복호화에 서로 다른 공개키와 개인키를 사용하며 속도가 상대적으로 느립니다. &lt;/span&gt;&lt;span data-path-to-node=&quot;6,4,1,1,0,1&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,4,1,1,0,2&quot;&gt;&lt;span&gt;개인키는 비밀로 유지하며 디지털 서명이 가능&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size26&quot;&gt;4. 고전적 암호 기술&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Steganography (스테가노그래피)&lt;/b&gt;: 외부인이 보았을 때 메시지의 존재 자체를 완전히 은폐하는 방법
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;8,0,2&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;8,0,2,0,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,0,2,0,0,1&quot;&gt;&lt;span&gt;원문 문자에 연필로 덧쓰거나(문자 마킹), 열이나 화학 처리로만 보이는 잉크 사용, 빛을 비춰야 보이는 핀 구멍 내기 등의 방법 사용&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;8,0,2,1,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,0,2,1,0,1&quot;&gt;&lt;span&gt;생성이 쉽지만 정보 은닉에 많은 오버헤드가 발생하며, 한 번 방식이 노출되면 다시는 사용할 수 없음&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;8,0,2,2,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,0,2,2,0,1&quot;&gt;&lt;span&gt;최근에는 동영상이나 이미지 파일에 원문을 숨겨 테러나 범죄에 악용되기도 함&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,1,0&quot;&gt;치환 기법 (Substitution)&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;8,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;8,1,1,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,1,1,0,0,0&quot;&gt;시저 암호&lt;/b&gt;: 글자를 일정 수만큼 밀어서 암호화합니다. &lt;span data-index-in-node=&quot;30&quot; data-math=&quot;C=E(p)=(p+k) \pmod{26}&quot;&gt;$C=E(p)=(p+k) \pmod{26}$&lt;/span&gt;. &lt;/span&gt;&lt;span data-path-to-node=&quot;8,1,1,0,0,1&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,1,1,0,0,2&quot;&gt;&lt;span&gt;단, 키 공간이 25개뿐이라 모든 경우를 대입하는 무차별 공격(Brute-force)에 매우 취약함&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;8,1,1,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,1,1,1,1,0&quot;&gt;&lt;span&gt;단일 치환&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: 각 문자에 알파벳 26자를 무작위로 1:1 치환하여 키 공간을 넓혔으나(&lt;/span&gt;&lt;span data-index-in-node=&quot;47&quot; data-math=&quot;26!&quot;&gt;$26!$&lt;/span&gt;&lt;span&gt;), 영어 문장에서 특정 문자(t, e, a 등)가 자주 쓰이는 출현 빈도수를 분석하면 평문을 유추할 수 있음&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;8,1,1,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,1,1,2,0,0&quot;&gt;다중 치환 (Playfair)&lt;/b&gt;: 2글자씩 묶어 &lt;span data-index-in-node=&quot;26&quot; data-math=&quot;5 \times 5&quot;&gt;$5 \times 5$&lt;/span&gt; 행렬 안에서 대각선이나 상하좌우 규칙을 이용해 암호화합니다. &lt;/span&gt;&lt;span data-path-to-node=&quot;8,1,1,2,0,1&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,1,1,2,0,2&quot;&gt;&lt;span&gt;빈도수 분석은 어려워졌지만, 암호문이 아주 길어지면 원래 구조가 드러나는 단점이 있음&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;8,1,1,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,1,1,3,1,0&quot;&gt;&lt;span&gt;다중 단일 문자 치환 (Vigenere)&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: 하나의 단일 문자 치환 규칙 집합을 사용하며, 주어진 변환 규칙은 키워드에 의해 결정되어 문자 빈도수 정보를 불분명하게 만듬&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;전치 기법 (Transposition)&lt;/b&gt;: 문자를 치환하지 않고 평문자 자체의 순서만 뒤바꾸는 기법
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;8,2,2,0,0,1&quot;&gt;&lt;span&gt;깊이에 따라 지그재그로 문자를 배열하는 rail fence 기법이나, 사각형 행렬에 채워 넣고 열 단위로 읽는 방식 등이 있음&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,2,2,0,0,2&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;두 단계 이상의 전치를 연속으로 거치면 훨씬 더 높은 안전성을 얻을 수 있음&lt;span style=&quot;letter-spacing: 0px;&quot; data-path-to-node=&quot;8,2,2,1,0,2&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>암호학</category>
      <author>나야홍박사</author>
      <guid isPermaLink="true">https://ghdsus0107.tistory.com/89</guid>
      <comments>https://ghdsus0107.tistory.com/89#entry89comment</comments>
      <pubDate>Fri, 13 Mar 2026 17:18:54 +0900</pubDate>
    </item>
  </channel>
</rss>