<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>History on kenji.blog</title><link>http://kenji.blog/ko/tags/history/</link><description>Recent content in History on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>ko</language><copyright>kenjinote</copyright><lastBuildDate>Fri, 11 Sep 2026 15:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/ko/tags/history/index.xml" rel="self" type="application/rss+xml"/><item><title>암호 기술의 역사: 카이사르 암호에서 양자 내성 암호(PQC)까지</title><link>http://kenji.blog/ko/p/history-of-cryptography-caesar-to-pqc/</link><pubDate>Fri, 11 Sep 2026 15:00:00 +0900</pubDate><guid>http://kenji.blog/ko/p/history-of-cryptography-caesar-to-pqc/</guid><description>&lt;img src="http://kenji.blog/p/history-of-cryptography-caesar-to-pqc/img/eyecatch.jpg" alt="Featured image of post 암호 기술의 역사: 카이사르 암호에서 양자 내성 암호(PQC)까지" />&lt;h1 id="1-서론-암호-기술이란-무엇인가">1. 서론: 암호 기술이란 무엇인가?
&lt;/h1>&lt;p>암호 기술(Cryptography)은 정보의 기밀성을 유지하기 위한 기술로, 인류의 역사와 함께 진화해 왔습니다. 고대 전쟁에서의 비밀 지령 전달부터 현대 인터넷의 신용카드 정보 보호에 이르기까지 암호의 목적은 일관됩니다. 그것은 &amp;ldquo;의도된 수신자만이 정보를 이해할 수 있게 하고, 제3자는 해독할 수 없도록 하는 것&amp;quot;입니다.&lt;/p>
&lt;p>현대의 정보 보안에서 암호 기술은 단순한 &amp;lsquo;정보의 은닉(기밀성: Confidentiality)&amp;lsquo;에 그치지 않고, 데이터의 &amp;lsquo;무결성(Integrity)&amp;rsquo;, &amp;lsquo;인증(Authentication)&amp;rsquo;, &amp;lsquo;부인 방지(Non-repudiation)&amp;lsquo;와 같은 중요한 역할을 담당하고 있습니다.&lt;/p>
&lt;p>본 기사에서는 고대의 단순한 환자식 암호에서 시작하여, 기계식 암호, 현대의 대칭키·공개키 암호, 그리고 양자 컴퓨터의 실용화로 도래할 &amp;lsquo;양자 내성 암호(PQC)&amp;rsquo; 시대까지, 암호 기술의 진화 역사를 기술적·수학적 관점에서 상세히 풀어보겠습니다.&lt;/p>
&lt;hr>
&lt;h1 id="2-고전-암호의-시대-문자의-치환과-전치">2. 고전 암호의 시대: 문자의 치환과 전치
&lt;/h1>&lt;p>암호의 기원은 기원전으로 거슬러 올라갑니다. 초기의 암호는 주로 &amp;lsquo;전치(자리 바꿈)&amp;lsquo;와 &amp;lsquo;환자(치환)&amp;lsquo;의 두 가지 접근 방식으로 구성되어 있었습니다.&lt;/p>
&lt;h2 id="스키테일-암호-전치식-암호">스키테일 암호 (전치식 암호)
&lt;/h2>&lt;p>기원전 5세기 고대 그리스 스파르타에서 사용된 &amp;lsquo;스키테일(Scytale)&amp;lsquo;은 가장 오래된 암호 도구 중 하나입니다. 특정 굵기의 나무 막대에 가늘고 긴 양피지를 감고, 그 위에 가로쓰기로 메시지를 적습니다. 종이를 풀면 글자가 의미 없는 순서로 나열되지만, 같은 굵기의 막대를 가진 수신자가 다시 종이를 감으면 원래의 메시지를 읽을 수 있는 방식이었습니다.&lt;/p>
&lt;h2 id="카이사르-암호-단일-환자식-암호">카이사르 암호 (단일 환자식 암호)
&lt;/h2>&lt;p>기원전 1세기, 고대 로마의 영웅 율리우스 카이사르(시저)가 사용했다고 전해지는 것이 &amp;lsquo;카이사르 암호&amp;rsquo;입니다. 이는 알파벳을 일정 수(보통 3글자)만큼 시프트시키는 단일 환자식 암호(Monoalphabetic substitution)입니다.&lt;/p>
&lt;p>수학적으로는 문자를 $0$부터 $25$까지의 수치로 취급하고, 시프트 수를 $K$라고 할 때, 평문 $P$에서 암호문 $C$로의 변환은 다음 합동식으로 나타낼 수 있습니다.&lt;/p>
$$C \equiv P + K \pmod{26}$$
&lt;p>복호화는 역연산을 수행합니다.&lt;/p>
$$P \equiv C - K \pmod{26}$$
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 카이사르 암호의 간단한 Python 구현 예&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">caesar_cipher&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">text&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">shift&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mode&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;encrypt&amp;#34;&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">mode&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;decrypt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">shift&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">shift&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">char&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">text&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">char&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isalpha&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">base&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">ord&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;A&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="n">char&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isupper&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="k">else&lt;/span> &lt;span class="nb">ord&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;a&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 시프트 계산&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">result&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="nb">chr&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="nb">ord&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">char&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">base&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">shift&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">26&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">base&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">result&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="n">char&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">result&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 실행 예&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">plaintext&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;HELLO WORLD&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">ciphertext&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">caesar_cipher&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">plaintext&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;encrypt&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;암호문: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">ciphertext&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># KHOOR ZRUOG&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="빈도-분석과-비즈네르-암호">빈도 분석과 비즈네르 암호
&lt;/h2>&lt;p>단일 환자식 암호는 9세기 아랍의 학자 알 킨디가 고안한 &amp;lsquo;빈도 분석(Frequency Analysis)&amp;lsquo;에 의해 쉽게 해독되기 시작했습니다. 영어라면 &amp;lsquo;E&amp;rsquo;나 &amp;lsquo;T&amp;rsquo;가 자주 등장한다는 언어의 통계적 특성을 이용한 것입니다.&lt;/p>
&lt;p>이에 대항하기 위해 16세기에 고안된 것이 &amp;lsquo;비즈네르 암호(Vigenère cipher)&amp;lsquo;입니다. 이는 여러 개의 시프트(키)를 주기적으로 전환하여 사용하는 다중 환자식 암호(Polyalphabetic substitution)로, 약 300년 동안 &amp;lsquo;해독 불가능한 암호(Le Chiffre Indéchiffrable)&amp;lsquo;라 불렸습니다.&lt;/p>
&lt;p>수학적으로는 평문의 $i$번째 문자 $P_i$와 반복되는 키의 $i$번째 문자 $K_i$를 사용하여 다음과 같이 암호화합니다.&lt;/p>
$$C_i \equiv P_i + K_i \pmod{26}$$
&lt;p>이 암호도 19세기에 들어 찰스 배비지와 프리드리히 카시스키에 의해 암호문 속 반복 패턴에서 키의 길이를 알아내는 &amp;lsquo;카시스키 검사(Kasiski examination)&amp;lsquo;가 발견되면서 해독되게 됩니다.&lt;/p>
&lt;div class="mermaid">graph TD
subgraph "고전 암호의 분류"
A["고전 암호"] --> B["전치식 암호"]
A --> C["환자식 암호"]
B --> D["스키테일 암호"]
C --> E["단일 환자식"]
C --> F["다중 환자식"]
E --> G["카이사르 암호"]
F --> H["비즈네르 암호"]
end&lt;/div>
&lt;hr>
&lt;h1 id="3-기계식-암호와-세계-대전-애니그마와-그-해독">3. 기계식 암호와 세계 대전: 애니그마와 그 해독
&lt;/h1>&lt;p>20세기에 들어 통신 수단이 편지에서 전신이나 무선으로 전환되면서 암호화의 속도와 복잡성이 요구되었습니다. 이때 등장한 것이 로터(회전판)를 조합한 &amp;lsquo;기계식 암호&amp;rsquo;입니다.&lt;/p>
&lt;h2 id="애니그마enigma의-위협">애니그마(Enigma)의 위협
&lt;/h2>&lt;p>제2차 세계 대전 중 나치 독일이 사용한 &amp;lsquo;애니그마&amp;rsquo;는 암호 기술 역사상 가장 유명한 암호기입니다. 애니그마는 여러 개의 로터(보통 3~4개)와 문자의 배선을 바꾸는 플러그보드(Steckerbrett), 그리고 리플렉터(반사 로터)로 구성되어 있었습니다.&lt;/p>
&lt;p>키보드로 한 글자를 입력할 때마다 로터가 회전하기 때문에, 같은 글자를 연속해서 입력해도 다른 암호 문자가 출력됩니다(다중 환자식 암호의 극치). 그 키 공간(설정의 조합)은 약 $1.58 \times 10^{19}$ 가지(약 1,580경)에 달해, 당시 기술로는 무차별 대입을 통한 해독이 불가능하다고 여겨졌습니다.&lt;/p>
&lt;h2 id="앨런-튜링과-봄브bombe">앨런 튜링과 &amp;lsquo;봄브(Bombe)&amp;rsquo;
&lt;/h2>&lt;p>이 난공불락의 애니그마에 도전한 것이 폴란드의 수학자 마리안 레예프스키 등의 초기 성과를 이어받은 영국의 블레츨리 파크 암호 해독 팀입니다.&lt;/p>
&lt;p>특히 앨런 튜링(Alan Turing)은 암호문 일부에 대응하는 평문의 추측(크립: Crib)을 이용하여 전기 기계식 해독기인 &amp;lsquo;봄브(Bombe)&amp;lsquo;를 개발했습니다. 봄브는 논리적인 모순을 고속으로 검출하고 불가능한 로터 설정을 차례로 배제함으로써 애니그마 해독에 성공했습니다. 이 위업은 연합군의 승리를 몇 년 앞당겼다고 평가받습니다.&lt;/p>
&lt;hr>
&lt;h1 id="4-현대-암호의-서막-대칭키-암호-des와-aes">4. 현대 암호의 서막: 대칭키 암호 (DES와 AES)
&lt;/h1>&lt;p>전후 컴퓨터의 등장으로 암호는 &amp;lsquo;문자&amp;rsquo;의 조작에서 &amp;lsquo;비트(0과 1)&amp;lsquo;의 조작으로 극적인 패러다임 전환을 이룹니다.&lt;/p>
&lt;h2 id="클로드-섀넌과-정보-이론">클로드 섀넌과 정보 이론
&lt;/h2>&lt;p>1949년, 클로드 섀넌은 논문 &amp;lsquo;비밀 통신의 통신 이론&amp;rsquo;을 발표하며 현대 암호의 수학적 기초를 다졌습니다. 그는 안전한 암호 설계의 원칙으로 &amp;lsquo;혼돈(Confusion)&amp;lsquo;과 &amp;lsquo;확산(Diffusion)&amp;lsquo;을 제창했습니다.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>혼돈(Confusion)&lt;/strong>: 키와 암호문의 관계를 가능한 한 복잡하게 만드는 것. (환자/치환, S-box를 통해 구현)&lt;/li>
&lt;li>&lt;strong>확산(Diffusion)&lt;/strong>: 평문의 1비트 변경이 암호문의 많은 비트에 영향을 미치도록 하는 것. (전치, 자리 바꿈을 통해 구현)&lt;/li>
&lt;/ul>
&lt;h2 id="des-data-encryption-standard">DES (Data Encryption Standard)
&lt;/h2>&lt;p>1977년, 미국 국립표준기술연구소(NIST, 당시 NBS)는 IBM의 설계를 바탕으로 한 &amp;lsquo;DES&amp;rsquo;를 표준 암호로 제정했습니다.
DES는 &amp;lsquo;파이스텔 구조(Feistel Network)&amp;lsquo;라 불리는 아키텍처를 채택했으며, 64비트의 블록 길이와 56비트의 키 길이를 가집니다. 암호화와 복호화 알고리즘이 거의 같은 구조가 된다는 구현상의 이점이 있었습니다.&lt;/p>
&lt;p>하지만 컴퓨터의 계산 능력이 향상됨에 따라 56비트의 키 길이(약 $7.2 \times 10^{16}$ 가지)로는 불충분하다는 것이 명백해졌습니다. 1998년에는 전자 프론티어 재단(EFF)이 전용 머신 &amp;lsquo;Deep Crack&amp;rsquo;을 개발하여 단 며칠 만에 DES를 해독해 보였습니다.&lt;/p>
&lt;h2 id="aes-advanced-encryption-standard">AES (Advanced Encryption Standard)
&lt;/h2>&lt;p>DES를 대체할 새로운 표준으로 2001년에 제정된 것이 &amp;lsquo;AES&amp;rsquo;입니다. 공모를 통해 선정된 벨기에의 암호학자가 개발한 &amp;lsquo;레인달(Rijndael)&amp;rsquo; 알고리즘이 채택되었습니다.&lt;/p>
&lt;p>AES는 파이스텔 구조가 아닌 &amp;lsquo;SPN 구조(Substitution-Permutation Network)&amp;lsquo;를 채택하였고, 갈루아 체(유한체) $GF(2^8)$ 상의 수학적 연산을 이용합니다. 키 길이는 128, 192, 256비트 중에서 선택할 수 있으며, 현재도 전 세계적으로 표준 대칭키 암호로 널리 사용되고 있습니다.&lt;/p>
&lt;div class="mermaid">graph TD
subgraph "AES의 1라운드 처리 (SPN 구조)"
A["입력 상태 (128-bit)"] --> B("SubBytes (바이트 대체 / S-Box)")
B --> C("ShiftRows (행 시프트)")
C --> D("MixColumns (열 믹스 / GF(2^8) 상의 곱셈)")
D --> E("AddRoundKey (라운드 키와의 XOR)")
E --> F["다음 라운드로"]
end&lt;/div>
&lt;hr>
&lt;h1 id="5-공개키-암호의-혁명-diffie-hellman에서-rsa로">5. 공개키 암호의 혁명: Diffie-Hellman에서 RSA로
&lt;/h1>&lt;p>대칭키 암호에는 결정적인 약점이 있었습니다. 바로 &amp;lsquo;키 분배 문제(Key Distribution Problem)&amp;lsquo;입니다. 암호 통신을 시작하기 전에 멀리 떨어진 상대와 어떻게 안전하게 &amp;lsquo;공통의 키&amp;rsquo;를 공유할 것인가 하는 문제입니다. 이 문제를 해결한 것이 1970년대에 탄생한 &amp;lsquo;공개키 암호&amp;rsquo;입니다.&lt;/p>
&lt;h2 id="diffie-hellman-키-교환">Diffie-Hellman 키 교환
&lt;/h2>&lt;p>1976년, 휫필드 디피와 마틴 헬먼은 획기적인 논문 &amp;lsquo;암호학의 새로운 방향(New Directions in Cryptography)&amp;lsquo;을 발표했습니다. 이들은 &amp;lsquo;이산 로그 문제(Discrete Logarithm Problem)&amp;lsquo;라는 수학적 어려움을 이용하여 도청당하고 있는 통신 경로 상에서도 안전하게 키를 공유할 수 있는 기법을 제안했습니다.&lt;/p>
&lt;ol>
&lt;li>큰 소수 $p$와 생성원 $g$를 공개합니다.&lt;/li>
&lt;li>Alice는 비밀 값 $a$를 선택하고, $A = g^a \pmod{p}$를 Bob에게 전송합니다.&lt;/li>
&lt;li>Bob은 비밀 값 $b$를 선택하고, $B = g^b \pmod{p}$를 Alice에게 전송합니다.&lt;/li>
&lt;li>Alice는 $K = B^a \pmod{p}$를 계산하고, Bob은 $K = A^b \pmod{p}$를 계산합니다.&lt;/li>
&lt;li>지수 법칙에 의해 $K = (g^b)^a = (g^a)^b = g^{ab} \pmod{p}$가 되어, 훌륭하게 같은 키 $K$를 공유할 수 있습니다.&lt;/li>
&lt;/ol>
&lt;h2 id="rsa-암호">RSA 암호
&lt;/h2>&lt;p>이듬해인 1977년, 론 리베스트, 아디 샤미르, 레너드 애들먼의 세 사람에 의해 고안된 것이 &amp;lsquo;RSA 암호&amp;rsquo;입니다. 이는 &amp;ldquo;거대한 합성수의 소인수분해는 어렵다&amp;quot;는 성질에 기반하고 있습니다.&lt;/p>
&lt;p>&lt;strong>RSA의 수학적 원리:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>2개의 거대한 소수 $p$와 $q$를 선택하고, $n = p \times q$를 계산합니다.&lt;/li>
&lt;li>오일러의 피 함수 $\phi(n) = (p-1)(q-1)$을 계산합니다.&lt;/li>
&lt;li>$\phi(n)$과 서로소인 정수 $e$(공개키)를 선택합니다.&lt;/li>
&lt;li>$e \times d \equiv 1 \pmod{\phi(n)}$이 되는 정수 $d$(비밀키)를 계산합니다.&lt;/li>
&lt;/ol>
&lt;p>암호화: 평문 $M$에 대해 $C \equiv M^e \pmod{n}$
복호화: 암호문 $C$에 대해 $M \equiv C^d \pmod{n}$&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># RSA 암호의 개념을 보여주는 Python 코드 (실무용은 아닙니다)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">ext_euclid&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">b&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 확장 유클리드 호제법을 이용한 모듈러 역원 계산&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">b&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">a&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">x&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">y&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">g&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">ext_euclid&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">b&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="n">b&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">y&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">x&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">a&lt;/span> &lt;span class="o">//&lt;/span> &lt;span class="n">b&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">y&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">g&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">rsa_example&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 작은 소수를 사용한 예&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">p&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">q&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">61&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">53&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">p&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">q&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">phi&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">p&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">q&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">e&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">17&lt;/span> &lt;span class="c1"># phi와 서로소인 값&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">d&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">_&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">_&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">ext_euclid&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">phi&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">d&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">d&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="n">phi&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;공개키: (e=&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">, n=&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">)&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;비밀키: (d=&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">d&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">, n=&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">)&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 메시지의 암호화와 복호화&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">message&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">65&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ciphertext&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">pow&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">message&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">decrypted&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">pow&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ciphertext&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">d&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;평문: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">message&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> -&amp;gt; 암호문: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">ciphertext&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> -&amp;gt; 복호화 후: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">decrypted&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">rsa_example&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr>
&lt;h1 id="6-타원-곡선-암호ecc의-대두">6. 타원 곡선 암호(ECC)의 대두
&lt;/h1>&lt;p>RSA 암호는 강력하지만 컴퓨터의 성능 향상에 따라 안전성을 유지하기 위해 키 길이를 늘려야 했고(현재는 2048비트나 3072비트), 계산 비용이 증가한다는 문제가 발생했습니다.&lt;/p>
&lt;p>그래서 1985년에 제안된 것이 &amp;lsquo;타원 곡선 암호(Elliptic Curve Cryptography: ECC)&amp;lsquo;입니다. 이는 유한체 상의 타원 곡선(일반적으로 $y^2 = x^3 + ax + b$ 형태)에서의 점 덧셈을 이용한 것입니다.&lt;/p>
&lt;p>타원 곡선 상의 이산 로그 문제(ECDLP)는 소인수분해 문제보다 푸는 것이 더 어렵다고 알려져 있으며, &lt;strong>RSA의 3072비트와 동등한 안전성을 ECC라면 불과 256비트의 키 길이로 구현&lt;/strong>할 수 있습니다. 이를 통해 스마트폰이나 IoT 기기 등 계산 자원이 제한된 환경에서도 빠르고 안전한 암호 통신(ECDSA나 ECDH 등)이 가능해졌습니다.&lt;/p>
&lt;hr>
&lt;h1 id="7-양자-컴퓨터의-위협과-양자-내성-암호pqc">7. 양자 컴퓨터의 위협과 양자 내성 암호(PQC)
&lt;/h1>&lt;p>암호 기술은 반석처럼 보였으나, 1994년 피터 쇼어(Peter Shor)가 발표한 &amp;lsquo;쇼어의 알고리즘&amp;rsquo;으로 인해 큰 충격이 가해졌습니다.&lt;/p>
&lt;p>양자 컴퓨터는 &amp;lsquo;중첩&amp;rsquo;과 &amp;lsquo;양자 얽힘&amp;rsquo;이라는 양자 역학의 성질을 이용하여 계산을 수행합니다. 쇼어의 알고리즘을 충분한 성능의 양자 컴퓨터에서 실행하면, 소인수분해 문제나 이산 로그 문제가 &amp;lsquo;다항식 시간&amp;rsquo; 내에 풀린다는 것이 수학적으로 증명된 것입니다. 즉, 실용적인 양자 컴퓨터가 완성되는 날(Q-Day), 현재 사용되고 있는 RSA나 ECC 같은 공개키 암호는 모두 순식간에 붕괴됩니다.&lt;/p>
&lt;h2 id="pqcpost-quantum-cryptography의-등장">PQC(Post-Quantum Cryptography)의 등장
&lt;/h2>&lt;p>이 전대미문의 위협에 대비해, 양자 컴퓨터로도 해독이 어려운 새로운 수학적 문제에 기반한 &amp;lsquo;양자 내성 암호(PQC)&amp;rsquo; 연구가 빠른 속도로 진행되고 있습니다. NIST(미국 국립표준기술연구소)는 수년간 PQC의 표준화 과정을 진행해 왔으며, 주로 다음의 수학적 접근 방식이 유력하게 꼽히고 있습니다.&lt;/p>
&lt;h3 id="1-격자-기반-암호-lattice-based-cryptography">1. 격자 기반 암호 (Lattice-based Cryptography)
&lt;/h3>&lt;p>현재 가장 유력한 접근법으로, NIST의 표준화 알고리즘(ML-KEM / Kyber, ML-DSA / Dilithium)에도 채택되었습니다. 다차원 공간의 &amp;lsquo;격자(Lattice)&amp;rsquo; 위에서 특정 점을 찾는 문제(최단 벡터 문제: SVP 등)나, LWE(Learning With Errors: 오차가 있는 학습) 문제의 어려움에 기반하고 있습니다.&lt;/p>
&lt;p>LWE 문제의 개념은 연립 일차 방정식에 의도적으로 &amp;lsquo;작은 노이즈(오차)&amp;lsquo;를 더하면 순간적으로 해를 구하기가 매우 어려워진다는 성질을 이용한 것입니다.
방정식계: $\mathbf{A}\mathbf{s} + \mathbf{e} \equiv \mathbf{b} \pmod{q}$
($\mathbf{A}$와 $\mathbf{b}$는 공개, $\mathbf{s}$는 비밀키, $\mathbf{e}$는 미세한 노이즈)&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># LWE 문제의 개념적 의사 코드 (학습 목적)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">n&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">256&lt;/span> &lt;span class="c1"># 차원&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">q&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">3329&lt;/span> &lt;span class="c1"># 법(modulus)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">m&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">512&lt;/span> &lt;span class="c1"># 방정식의 수&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 비밀키 s와 작은 에러 e&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">s&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">random&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">randint&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">5&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">size&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">e&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">random&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">randint&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">size&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">m&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 공개 행렬 A와 공개 벡터 b&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">A&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">random&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">randint&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">q&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">size&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">m&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">b&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dot&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">A&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">s&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="n">q&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 양자 컴퓨터를 사용해도 A와 b로부터 s를 복원하는 것은 매우 어렵다고 여겨짐&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="2-해시-기반-암호-hash-based-cryptography">2. 해시 기반 암호 (Hash-based Cryptography)
&lt;/h3>&lt;p>해시 함수의 충돌 저항성에만 안전성의 근거를 두는 전자 서명 방식입니다. 수학적인 구조를 가지지 않기 때문에 양자 공격에 강하지만, 서명 크기가 커지는 경향이 있습니다(SPHINCS+ 등).&lt;/p>
&lt;h3 id="3-코드-기반-암호-code-based-cryptography">3. 코드 기반 암호 (Code-based Cryptography)
&lt;/h3>&lt;p>오류 정정 코드 이론에 기반한 암호 방식입니다. 1978년에 제안된 McEliece 암호 등이 유명하며, 역사가 길고 안전성이 입증되었으나 공개키의 크기가 매우 크다(수 메가바이트에 달하기도 함)는 과제가 있습니다.&lt;/p>
&lt;div class="mermaid">timeline
title "암호 기술과 컴퓨터의 진화 역사"
"고대~중세" : "카이사르 암호" : "비즈네르 암호" : "빈도 분석의 탄생"
"1930~40년대" : "애니그마의 운용과 해독" : "튜링 머신·봄브의 개발"
"1970년대" : "DES 표준화 (1977)" : "Diffie-Hellman 키 교환 (1976)" : "RSA 암호의 탄생 (1977)"
"1980~90년대" : "타원 곡선 암호(ECC) 제안" : "쇼어의 알고리즘 발표 (1994)"
"2000년대" : "AES 표준화 (2001)"
"2010년대~현재" : "양자 컴퓨터 연구 가속" : "NIST의 PQC 표준화 프로젝트 시작"
"가까운 미래 (Q-Day)" : "대규모 양자 컴퓨터 실현?" : "PQC(ML-KEM/ML-DSA)로의 완전 전환"&lt;/div>
&lt;hr>
&lt;h1 id="8-결론-끝없는-방패와-창의-싸움">8. 결론: 끝없는 방패와 창의 싸움
&lt;/h1>&lt;p>암호 기술의 역사는 새로운 암호 방식(방패)의 발명과 그것을 깨는 새로운 해독 기법(창)의 끝없는 싸움의 역사입니다.&lt;/p>
&lt;p>카이사르 암호는 빈도 분석에 패배했고, 무적을 자랑하던 애니그마는 튜링의 천재적인 두뇌와 기계의 힘에 패배했습니다. 그리고 지금, 현대 인터넷 사회의 근간을 지탱하는 RSA나 ECC 같은 강력한 암호도 양자 컴퓨터라는 새로운 &amp;lsquo;창&amp;rsquo; 앞에 위협을 받고 있습니다.&lt;/p>
&lt;p>하지만 인류는 이미 그 너머의 미래를 바라보며 양자 내성 암호(PQC)라는 새로운 &amp;lsquo;방패&amp;rsquo;를 준비하고 있습니다. 현재 전 세계의 IT 인프라에서 기존의 공개키 암호로부터 PQC로의 전환 준비(Crypto Agility 확보)가 시급한 과제가 되었습니다.&lt;/p>
&lt;p>암호 기술은 단순하고 난해한 수학 퍼즐이 아니라, 우리의 프라이버시, 재산, 그리고 사회 인프라 자체를 지키기 위한 최강의 방벽인 것입니다.&lt;/p></description></item></channel></rss>