<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/resources/xsl/jats-html.xsl"?>
<article article-type="research-article" dtd-version="1.1" xml:lang="ko" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
	<journal-meta>
		<journal-id journal-id-type="publisher-id">jkits</journal-id>
		<journal-title-group>
		<journal-title>한국지식정보기술학회 논문지</journal-title>
		<journal-title xml:lang="en">Journal of Knowledge Information Technology and Systems</journal-title>
		</journal-title-group>
		<issn pub-type="ppub">1975-7700</issn>
		<publisher>
		<publisher-name>한국지식정보기술학회</publisher-name>
		<publisher-name xml:lang="en">Korea Knowledge Information Technology Society</publisher-name>
		</publisher>
	</journal-meta>
	<article-meta>
		<article-id pub-id-type="publisher-id">jkits_2019_14_06_711</article-id>
		<article-id pub-id-type="doi">10.34163/jkits.2019.14.6.014</article-id>
		<article-categories>
			<subj-group>
				<subject>Research Article</subject>
			</subj-group>
		</article-categories>
		<title-group>
			<article-title>암호화 보안 프로토콜의 정형명세</article-title>
			<trans-title-group xml:lang="en">
				<trans-title>Formal Specification of Cryptographic Security Protocols</trans-title>
			</trans-title-group>
		</title-group>
		<contrib-group>
			<contrib contrib-type="author" xlink:type="simple">
				<name-alternatives>
					<name name-style="eastern">
						<surname>이</surname>
						<given-names>계식</given-names>
					</name>
					<name name-style="western" xml:lang="en">
						<surname>Lee</surname>
						<given-names>Gyesik</given-names>
					</name>
				</name-alternatives>
				<xref ref-type="fn" rid="fn001"><sup>*</sup></xref>
			</contrib>
					</contrib-group>
		<aff-alternatives id="A1">
			<aff><italic>한경대학교 컴퓨터공학과 부교수</italic></aff>
			<aff xml:lang="en"><italic>Department of Computer Science and Engineering, Hankyong National University</italic></aff>
		</aff-alternatives>
		<author-notes>
			<fn id="fn001"><label>*</label><p>Corresponding author is with the Department of Computer Science and Engineering, Hankyong National University, 327 Jungang-ro Anseong-si Gyeonggi-do, 17579, KOREA.</p><p><italic>E-mail address</italic>: <email>gslee@hknu.ac.kr</email></p></fn>
		</author-notes>
		<pub-date pub-type="ppub">
			<month>12</month>
			<year>2019</year>
		</pub-date>
		<volume>14</volume>
		<issue>6</issue>
		<fpage>711</fpage>
		<lpage>718</lpage>
		<history>
			<date date-type="received">
				<day>21</day>
				<month>11</month>
				<year>2019</year>
			</date>
			<date date-type="rev-recd">
				<day>02</day>
				<month>12</month>
				<year>2019</year>
			</date>
			<date date-type="accepted">
				<day>07</day>
				<month>12</month>
				<year>2019</year>
			</date>
		</history>
		<permissions>
			<copyright-statement>&#x00A9; 2019 KKITS All rights reserved</copyright-statement>
			<copyright-year>2019</copyright-year>
		</permissions>
		<abstract>
		<title>요약</title>
		<p>암호화 보안 프로토콜의 정형명세를 소개한다. 암호화 보안 프로토콜을 검증하기 위해 정형명세를 이용하는 방법을 보여준다. 검증의 각 단계를 니드햄-슈뢰더(Needham-Schroeder) 공개키 프로토콜을 이용하여 구체적으로 설명한다. 사용되는 구문법(syntax)은 스카이터(Scyther) 툴의 구문법과 유사하며, 사용되는 명세는 간단하며 직관적이다. 우리가 사용하는 명세는 프로베리프(ProVerif)의 기본 개념과도 대응된다. 예를들어, 메시지는 기호들의 나열로 표현되며 공격자는 정형화된 프로세서로 모델링된다. 니드햄-슈뢰더 공개키 프로토콜의 정형화된 언어 <italic>L</italic> = (<italic>V, C, R, F</italic>) 로 구성되는데, <italic>V</italic>는 수신된 메시지를 위한 변수들의 집합, <italic>C</italic>는 일회성 난수(nonces)를 위한 지역 상수 기호 집합, <italic>R</italic>은 역할 이름 집합, <italic>F</italic>는 공개키/개인키 생성함수들의 집합이다. 프로토콜은 개시자, 반응자, 서버 등의 각 역할이 수행해야 하는 행위를 지정한다. 이 프로토콜의 정형명세에서 각 역할의 행위는 상태전이 체계로 정형화되는데, 그 체계가 기술하는 내용은 메시지 생성방법, 수신된 메시지에 대한 반응, 메시지 조작방법 등이다. 많은 보안 관련 성질 중에서 여기서는 기밀성(secrecy)과 인증(authentication)을 정형적으로 다루는 방법에 대하여 기술한다.</p>
		</abstract>
		<trans-abstract xml:lang="en">
<title>ABSTRACT</title>
<p>We introduce a way of formal specification of cryptographic security protocols. We demonstrate how to use formal methods in verifying cryptographic security protocols. Each step of the verification is explained with a concrete example, the Needham-Schroeder public-key protocol. The style of describing the syntax is similar to that of the tool Scyther. It is simple and intuitive to use for the specification of security protocols. Our description corresponds also to the basic concepts of the tool ProVerif. Specifications of cryptographic security protocols are represented at the most abstract level: Messages are terms constructed from symbols and the attacker is modeled as a formal process. A formal language <italic>L</italic> = (<italic>V, C, R, F</italic>) for public-key protocols consists of a set <italic>V</italic> of variables for received messages, a set <italic>C</italic> of local constant symbols, a set R of role name symbols, and a set <italic>F</italic> of function symbols. Then a protocol describes the behavior of each of the roles such as initiator, responder, key server, etc. In the specification, the behavior of each role is formalized as a transition system describing how to create messages, how to react to the received messages, and how to manipulate messages. Among many security properties, we illustrate how to formally handle secrecy and authentication.</p>
		</trans-abstract>
		<kwd-group kwd-group-type="author" xml:lang="en">
			<kwd>Cryptographic security protocols</kwd>
			<kwd>Formal specifications</kwd>
			<kwd>Automatic verification</kwd>
			<kwd>Formal methods</kwd>
			<kwd>Scyther</kwd>
			<kwd>ProVerif</kwd>
		</kwd-group>
	</article-meta>
</front>
<body>
<sec id="sec001" sec-type="intro">
	<title>1. 서 론</title>
	<p>디지털 통신의 보안은 다양한 요소들에 의존하며 특히 암호화의 중요성이 크다. 디지털 통신의 암호화와 관련된 기술과 문제는 다양하다. 예를 들어, 암호화 알고리즘의 안전성, 알고리즘 구현의 신뢰성, 암호화 시스템의 정확성, 그리고 암호화 보안 프로토콜의 안전성 등이 주요 관련 요소들이다. 이 중에서 암호화 보안 프로토콜의 안전성을 제외한 다른 요소들의 명세에 대한 표준화는 널리 알려져 있다. 반면에 암호화 보안 프로토콜의 명세에 대해서는 일반적으로 합의된 표준화는 존재하지 않는다.</p>
	<p>암호화 보안 프로토콜은 보안 연결을 사용하여 통신 당사자들의 사생활 보호와 데이터의 무결성을 보장하면서 서로 통신하는 데에 사용된다. 암호화 보안 프로토콜의 명세를 정형화(formalization)하면 이를 바탕으로 암호화 보안 프로토콜의 안전성을 검증할 수 있다. 예를 들어, 스카이터(Scyther)[<xref ref-type="bibr" rid="B001">1</xref>-<xref ref-type="bibr" rid="B003">3</xref>], 프로베리프(ProVerif)[<xref ref-type="bibr" rid="B004">4</xref>-<xref ref-type="bibr" rid="B006">6</xref>] 등 이미 잘 알려진 암호화 보안 프로토콜 자동 검증 도구들을 이용하여 프로토콜의 안전성을 검증하는 데에 활용될 수 있으며, 심지어 자동차 보안 시스템에서 사용되는 암호화 보안 프로토콜의 검증에 사용될 수 있다[<xref ref-type="bibr" rid="B007">7</xref>-<xref ref-type="bibr" rid="B009">9</xref>].</p>
	<p>본 논문은 암호화 보안 프로토콜의 안전성 검증에 필수요소인 정형명세(formal specification)에 대한 한 가지 방법을 소개하며, 구체적인 논문 구성은 다음과 같다.</p>
	<p>2절은 보안 프로토콜의 정형명세 언어와 암호화 프로토콜의 명세를 작성하는 방법을 소개한다. 3절에서는 공격자가 존재하는 네트워크에서 암호화 프로토콜 통신 참가자의 지식상태가 변화하는 과정인 상태전이를 정의하고 설명한다. 4장은 상태전이궤적의 성질을 이용하여 정형검증이 가능한 기밀성(secrecy)과 인증(authentication)을 정의하고 활용법을 소개한다. 끝으로 5장에서는 본 연구결과의 결론을 소개하며 마무리한다.</p>
</sec>
<sec id="sec002">
<title>2. 보안 프로토콜 정형명세</title>
	<p>먼저 암호화 보안 프로토콜 명세언어를 정의하고, 이후에 간단한 예제를 이용하여 암호화 보안 프로토콜을 검증하는 방법을 소개한다. 사용하는 예제는 니드햄-슈뢰더(Needham-Schroeder) 공개키프로토콜이다. 아래에서 소개되는 명세언어는 암호화 보안 프로토콜 검증도구인 스카이터와 프로베리프의 작동원리를 바탕으로 하여 작성되었다.</p>
<sec id="sec002-1">
<title>2.1 정형명세 언어</title>
	<p>니드햄-슈뢰더 공개키 프로토콜에 대한 언어</p>
<table-wrap id="t001">
	<table width="100%">
	<tbody>
		<tr>
		<td align="center"><italic>L</italic>= (<italic>V, C, R, F</italic>)</td>
		</tr>
	</tbody>
	</table>
</table-wrap>
	<p>은 다음 네 개의 집합으로 구성된다.</p>
	<p>• <italic>V</italic> : 수신된 메시지를 저장하는 변수들의 집합</p>
	<p>• <italic>C</italic>: 일회성 난수(nonce)를 가리키는 지역 상수 기호들의 집합</p>
	<p>• <italic>R</italic> : 역할 이름(role name) 기호들의 집합</p>
	<p>• <italic>F</italic> : 공개키 생성함수 <italic>pk</italic>, 개인키 생성 함수 <italic>sk</italic>, 순서쌍 생성 함수 (·,·), 순서쌍을 분해하는 사영함수 π<sub>1</sub> 과 π<sub>2</sub>, 암호화 함수 <italic>enc</italic>, 복호화 함수 <italic>dec</italic> 등으로 구성된 집합</p>
	<p>암호화 함수 <italic>enc</italic>와 복호화 함수 <italic>dec</italic>는 오류를 발생시키지 않으며, 일종의 블랙박스처럼 작동하고 몇 가지 관련 성질만 알려졌다고 가정한다.</p>
	<p><italic>L</italic> 언어의 항(term)은 <italic>dec</italic>(<italic>sk</italic>(<italic>r</italic>), <italic>enc</italic>(<italic>pk</italic>(<italic>r</italic>),<italic>m</italic>)), π<sub>i</sub>(<italic>m</italic><sub>1</sub>, <italic>m</italic><sub>2</sub>) 등처럼 함수 기호와 변수, 상수 기호, 역할 이름 등의 조합으로 생성되며 특별한 제한 조건은 없다. 위에서 <italic>r</italic>, <italic>m</italic>, <italic>m</italic><sub>1</sub>, <italic>m</italic><sub>2</sub>등은 임의의 항을 가리킨다. 각 항마다 고유의 자료형이 존재하고 지정된 자료형의 인자들만 함수들의 인자로 사용 될 수 있다. 또한 항들 사이의 대수적 관계가 다음과 같이 성립한다고 가정한다.</p>
<table-wrap id="t002">
	<table width="100%">
	<tbody>
		<tr>
		<td align="center">
	<p><italic>dec</italic>(<italic>sk</italic>(<italic>r</italic>)), <italic>enc</italic>(<italic>pk</italic>(<italic>r</italic>),<italic>m</italic>)=<italic>m</italic></p>
	<p>π<sub><italic>i</italic></sub>(<italic>m</italic><sub>1</sub>, <italic>m</italic><sub>2</sub>)=<italic>m</italic><sub><italic>i</italic></sub></p>
		</td>
		</tr>
	</tbody>
	</table>
</table-wrap>
	<p>함수들의 집합 <italic>F</italic> 에 배타적 논리합(exclusive or) 연산자와 함께 아래 대수식을 추가하면 암호화 알고리즘이 약해질 수 있음이 잘 알려져 있다<xref ref-type="bibr" rid="B010">[10]</xref>.</p>
<disp-formula-group>
	<disp-formula id="dm01">
<mml:math id="dm01-1"><mml:mfenced><mml:mrow><mml:mi>x</mml:mi><mml:mo>&#x2295;</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:mfenced><mml:mo>&#x2295;</mml:mo><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mi>x</mml:mi><mml:mo>&#x2295;</mml:mo><mml:mfenced><mml:mrow><mml:mi>y</mml:mi><mml:mo>&#x2295;</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfenced><mml:mspace linebreak="newline"/><mml:mi>x</mml:mi><mml:mo>&#x2295;</mml:mo><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:mi>y</mml:mi><mml:mo>&#x2295;</mml:mo><mml:mi>x</mml:mi><mml:mspace linebreak="newline"/><mml:mn>0</mml:mn><mml:mo>&#x2295;</mml:mo><mml:mi>x</mml:mi><mml:mo>=</mml:mo><mml:mi>x</mml:mi><mml:mspace linebreak="newline"/><mml:mi>x</mml:mi><mml:mo>&#x2295;</mml:mo><mml:mn>0</mml:mn><mml:mo>=</mml:mo><mml:mi>x</mml:mi><mml:mspace linebreak="newline"/><mml:mi>x</mml:mi><mml:mo>&#x2295;</mml:mo><mml:mi>x</mml:mi><mml:mo>=</mml:mo><mml:mn>0</mml:mn><mml:mspace linebreak="newline"/><mml:mi>e</mml:mi><mml:mi>n</mml:mi><mml:mi>c</mml:mi><mml:mfenced><mml:mrow><mml:mi>k</mml:mi><mml:mo>,</mml:mo><mml:mi>x</mml:mi><mml:mo>&#x2295;</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:mfenced><mml:mo>=</mml:mo><mml:mi>e</mml:mi><mml:mi>n</mml:mi><mml:mi>c</mml:mi><mml:mfenced><mml:mrow><mml:mi>k</mml:mi><mml:mo>,</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:mfenced><mml:mo>&#x2295;</mml:mo><mml:mi>e</mml:mi><mml:mi>n</mml:mi><mml:mi>c</mml:mi><mml:mfenced><mml:mrow><mml:mi>k</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:mfenced></mml:math>
	</disp-formula>
</disp-formula-group>
	<p>배타적 논리합을 스카이터, 프로베리프 등과 같은 자동 검증기에서 사용하는 것과 관련된 많은 이슈들이 존재한다<xref ref-type="bibr" rid="B011">[11]</xref>.</p>
</sec>
<sec id="sec002-2">
<title>2.2 프로토콜 명세</title>
	<p>니드햄-슈뢰더 공개키 프로토콜 언어 <italic>L</italic> = (<italic>V</italic> ,<italic>C</italic>, <italic>R</italic>, <italic>F</italic>)를 이용하여 프로토콜을 작성할 수 있다. 프로토콜은 개시자(initiator), 반응자(responder), 키 서버(key server) 등 통신 당사자들의 역할을 명세한다. 즉, 메시지 생성, 수신된 메시지에 대한 대응, 메시지 조작 등의 연속적인 처리과정을 기술한다. 이 논문에서는 단순한 설명을 위해 통신이 하나의 공개채널을 통해서만 이루어진다고 가정한다. 메시지 송신과 수신 이벤트 : <bold>Send</bold>와 <bold>Receive</bold> 함수를 이용한다.</p>
	<p>• <bold>Send</bold>(<italic>i</italic>, <italic>r</italic>, <italic>m</italic>) : <italic>i</italic>가 <italic>r</italic>에게 메시지 <italic>m</italic> 보내기</p>
	<p>• <bold>Receive</bold>(<italic>i</italic>, <italic>r</italic>, <italic>m</italic>) : <italic>t</italic>이 <italic>i</italic>에게서 메시지 <italic>m</italic> 받기</p>
	<p><bold>역할 명세(role specification)</bold> : 프로토콜은 통신 당사자들의 역할 명세로 이루어지며, 역할 명세는 유한 개의 수신 및 송신 이벤트의 연속으로 구성된다. 또한 각각의 역할은 자신의 개인키와 함께 다른 통신 참여자들의 역할 이름과 그들의 공개키에 대한 정보를 함께 갖는다고 가정한다.</p>
	<p>니드햄-슈뢰더 공개키 프로토콜은 두 개의 역할 명세를 갖는다.</p>
		<p>• <bold>개시자(initiator):</bold></p>
<fig id="f001" orientation="portrait" position="float">
	<label>그림 1.</label>
	<caption>
		<title>니드햄-슈뢰더 공개키 개시자 프로토콜</title>
		<p>Figure 1. Needham-Schroeder public key initiator protocol</p>
	</caption>
	<graphic xlink:href="../ingestImageView?artiId=ART002537526&amp;imageName=jkits_2019_14_06_711_f001.jpg" position="float" orientation="portrait" xlink:type="simple"></graphic>
</fig>
	<p>&#x2713; 역할 <italic>I</italic>가 자신이 생성한 메시지 <italic>N</italic><sub>i</sub>와 자신의 역할 이름 <italic>I</italic>를 <italic>R</italic> 의 공개키를 이용하여 암호화한 후에 <italic>R</italic> 에게 송신.</p>
	<p>&#x2713; 역할 <italic>I</italic>가 <italic>R</italic>로부터 <italic>I</italic> 자신이 <italic>R</italic>에게 보낸 메시지 <italic>N</italic><sub>i</sub>와 함께 <italic>R</italic>이 임의로 생성한 메시지 <italic>x</italic>를 <italic>I</italic> 자신의 공개키를 이용하여 암호화하여 보내진 메시지 수신.</p>
	<p>&#x2713; <italic>R</italic>에게서 수신하여 해독한 메시지 <italic>x</italic>를 <italic>R</italic>의 공개키를 이용하여 암호화한 후에 <italic>R</italic>에게 다시 송신.</p>
	<p>• <bold>반응자(responder):</bold></p>
<fig id="f002" orientation="portrait" position="float">
	<label>그림 2.</label>
	<caption>
		<title>니드햄-슈뢰더 공개키 반응자 프로토콜</title>
		<p>Figure 2. Needham-Schroeder public key responder protocol</p>
	</caption>
	<graphic xlink:href="../ingestImageView?artiId=ART002537526&amp;imageName=jkits_2019_14_06_711_f002.jpg" position="float" orientation="portrait" xlink:type="simple"></graphic>
</fig>
	<p>&#x2713; 역할 <italic>I</italic>가 생성한 임의의 메시지 <italic>y</italic>와 <italic>I</italic> 자신의 역할을 <italic>R</italic>의 공개키를 이용하여 암호화하여 보내진 메시지를 <italic>R</italic> 이 수신.</p>
	<p>&#x2713; <italic>R</italic>이 <italic>I</italic>로부터 수신한 메시지로부터 해독한메시지 <italic>y</italic>와 함께 <italic>R</italic> 자신이 임의로 생성한 메시지 <italic>N</italic><sub>r</sub>을 <italic>I</italic>의 공개키를 이용하여 암호화한 후 <italic>I</italic>에게 송신.</p>
	<p>&#x2713; <italic>I</italic>로부터 <italic>R</italic> 자신이 보낸 메시지 <italic>N</italic><sub>r</sub>를 <italic>R</italic>자신의 공개키를 이용하여 암호화한 후에 보내진 메시지 수신.</p>
	<p><bold>계산(computation)</bold> : 각 역할을 담당하는 에이전트(agent)는 어떤 이벤트를 발생시키기 전에 항상 특정 계산을 먼저 실행한다. 반면에 이벤트가 발생한 후에는 각 에이전트의 지식 상태(knowledge state)가 변할 수 있으며 추가되는 지식은 특정 계산을 통해 얻어진다. 계산 내용은 사용하는 모델에 따라 다르며, 일반적으로 아래의 두 계산을 수행한다.</p>
	<p>• 패턴 매칭: 모든 에이전트는 다루는 메시지의 패턴을 바로 알아챌 수 있다고 가정한다. 즉, 일화성 난수(nonce), 상대 에이전트 이름, 세션키, 순서쌍, 암호화 메시지 등등을 식별할 수 있다. 알려진 패턴에 어긋나는 메시지는 기본적으로 무시된다.</p>
	<p>• 지식 추론: 공격자를 포함한 모든 에이전트는 패턴 매칭을 통해 알아낸 정보를 바탕으로 새지식을 추론한다. 지식 추론은 에이전트의 기존 지식과 함께 합성, 분해, 암호화, 해독 등의 기능을 활용하여 이루어진다.</p>
</sec>
</sec>
<sec id="sec003">
<title>3. 지식상태 전이</title>
	<p>지식상태 전이가 발생하는 과정을 묘사한다. 여기서는 각 역할 당사자들이 이벤트를 동시에, 그리고 무한 반복해서 발생시킬 수 있다고 가정한다.</p>
<sec id="sec003-1">
<title>3.1 공격자 모델</title>
	<p>네트워크의 일부 또는 전체가 공격자에 의해 장악될 수 있다고 가정한다. 공격자의 지식상태에 따라 메시지를 낚아채거나 도청할 수 있으며, 가짜 메시지를 생성할 수도 있다. 또한 프로토콜 통신의 진행을 끊거나 교란할 수도 있다.</p>
	<p>에이전트 <italic>A</italic> 의 초기지식 <mml:math id="dm001"><mml:msup><mml:mi>K</mml:mi><mml:msub><mml:mn>0</mml:mn><mml:mi>A</mml:mi></mml:msub></mml:msup></mml:math>은 모든 통신 참가자들의 이름과 공개키, 그리고 자신의 개인키 등을 포함한다. 공격자 <italic>E</italic>의 초기지식 <mml:math id="dm002"><mml:msubsup><mml:mi>K</mml:mi><mml:mi>E</mml:mi><mml:mn>0</mml:mn></mml:msubsup></mml:math>는 신뢰할 수 없는 모든 에이전트들의 초기지식과 그들의 개인키를 포함한다. 공격자와 모든 에이전트들의 지식상태는 프로토콜 통신이 진행되는 과정에서 발생하는 메시지를 주고받는 이벤트를 통해 증가한다.</p>
</sec>
<sec id="sec003-2">
<title>3.2 지역 지식상태</title>
	<p>지역 지식상태(configuration state)는 프로토콜 통신과정 어느 순간에 관련된 모든 에이전트(agents)들의 지식상태 전체를 가리키며 다음과 같이 표기한다.</p>
<disp-formula-group>
	<disp-formula id="dm02">
<mml:math id="dm02-1"><mml:mfenced><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mi>E</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:mo>&lt;</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:msub><mml:mi>A</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mi>i</mml:mi></mml:msubsup><mml:msub><mml:mo>&gt;</mml:mo><mml:mi>n</mml:mi></mml:msub></mml:mrow></mml:mfenced></mml:math>
	</disp-formula>
</disp-formula-group>
	<p>여기서 <italic>i</italic>는 <italic>i</italic>번째 지역 지식상태를 의미한다. 공격자가 언제든지 새로운 이벤트 세션을 발생시켜 공격을 시도할 수 있기 때문에 에이전트의 수는 무한이라고 가정한다, 즉, <italic>n</italic>=0, 1, 2, 3, ...이다.</p>
	<p>프로토콜 <italic>P</italic>에 따라 통신이 진행될 때 지역 지식상태가 어떻게 변하는가를 상태전이(state transition) 규칙을 이용하여 명세할 수 있으며, 아래 세 규칙이 기본으로 사용된다.</p>
	<p>• 새 이벤트 생성: 특정 에이전트가 새 이벤트를 시작한다. 해당 에이전트는 이벤트와 관련된 에이전트들에 대한 지식을 자신의 지식상태에 추가한다. 만약에 해당 에이전트가 공격자와 연합하는 경우 공격자와 모든 지식을 공유한다.</p>
	<p>• 송신 이벤트: 에이전트가 메시지 <italic>m</italic>을 송신하면 모든 공격자에게 노출된다. 공격자는 자신의 컴퓨팅 능력을 활용하여 새 메시지로부터 새 정보를 획득한 후 다시 새 메시지 관련 이벤트를 발생시키거나 발생하기를 기다린다.</p>
	<p>• 수신 이벤트: 새 메시지를 수신한 에이전트는 자신의 컴퓨팅 능력을 활용하여 새 정보를 획득한 후 다시 새 메시지 관련 이벤트를 발생시키거나 발생하기를 기다린다. 수신자의 컴퓨팅 능력에는 메시지의 가독성 여부 판단능력 등이 포함된다. 수신된 메시지 <italic>m</italic>의 가독성이 인정되면 수신 에이전트의 지식에 추가된다.</p>
</sec>
<sec id="sec003-3">
<title>3.3 상태전이 궤적</title>
	<p>초기 지역 지식상태에서 시작하여 앞서 설명한 상태전이 규칙들을 적용하여 지역 지식상태가 변하는 것을 상태전이(state transition)라 부르며. 이런 상태전이의 변화과정을 모아놓은 것이 상태전이 궤적(trace)이다. 프로토콜 <italic>P</italic>가 주어졌을 때 상태전이 궤적은 상태전이의 연속으로 구성되며, 상태전이는 아래 모양을 갖는다.</p>
<disp-formula-group>
	<disp-formula id="dm03">
<mml:math id="dm03-1"><mml:mfenced><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mi>E</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:mo>&lt;</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:msub><mml:mi>A</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mi>i</mml:mi></mml:msubsup><mml:msub><mml:mo>&gt;</mml:mo><mml:mi>n</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>&#x2192;</mml:mo><mml:msub><mml:maction actiontype="argument"><mml:mrow/></mml:maction><mml:msub><mml:mi>m</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:msub><mml:mfenced><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mi>E</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:mo>&lt;</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:msub><mml:mi>A</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mrow><mml:mi>i</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:msub><mml:mo>&gt;</mml:mo><mml:mi>n</mml:mi></mml:msub></mml:mrow></mml:mfenced></mml:math>
	</disp-formula>
</disp-formula-group>
	<p>위 상태전이는 (<italic>i</italic>+1)-번째 상태전이를 가리키며 사용된 기호들의 의미는 다음과 같다.</p>
	<p>• <italic>A</italic><sub>n</sub> (<italic>n</italic>=0, 1, 2,...): 이벤트가 무한정 발생함을 가정하기 때문에 무한이 많은 에이전트가 관여함을 의미함.</p>
	<p>• <mml:math id="dm003"><mml:mfenced><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mi>E</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:mo>&lt;</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:msub><mml:mi>A</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mi>i</mml:mi></mml:msubsup><mml:msub><mml:mo>&gt;</mml:mo><mml:mi>n</mml:mi></mml:msub></mml:mrow></mml:mfenced></mml:math>: <italic>i</italic>번째 지역 지식상태</p>
	<p>• <italic>m</italic><sub><italic>i</italic></sub>: <italic>i</italic>번째 이벤트에서 송신된 메시지</p>
</sec>
</sec>
<sec id="sec004">
<title>4. 상태전이 궤적 관련 성질</title>
	<p>상태전이 궤적과 관련된 성질 두 개를 살펴본다.</p>
<sec id="sec004-1">
<title>4.1 기밀성</title>
	<p>기밀성(secrecy)은 특정 정보가 프로토콜 통신에 관여한 에이전트 이외의 어느 누구에게도 노출되지 않는 성질을 의미하며, 이는 신뢰할 수 없는 네트워크 상에서 통신이 이루어지는 경우도 포함한다. 예를 들어, <mml:math id="dm004"><mml:msub><mml:mi>A</mml:mi><mml:msub><mml:mi>n</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x2026;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:msub><mml:mi>n</mml:mi><mml:mi>p</mml:mi></mml:msub></mml:msub></mml:math>만 정보 <italic>m</italic>을 공유하고자 할 때 이들을 제외한 공격자나 다른 에이전트가 해당 정보를 어떤 식으로든 공유할 수 없어야 한다.</p>
	<p>니드햄-슈뢰더 공개키 프로토콜의 경우 기밀성이 보장되지 못한다. Lowe가 1995년에 발견한 중간자 공격 (Man-in-the-middle attack)<xref ref-type="bibr" rid="B012">[12]</xref>에 의해 공격자가 다른 에이전트들 사이에 주고받는 정보를 획득할 수 있기 때문이다.</p>
	<p>예를 들어, 아래 그림은 니드햄-슈뢰더 공개키 프로토콜의 통신과정을 보여주는 예제이다. 예제에서 B 에이전트가 생성한 기밀 <italic>N</italic><sub><italic>b</italic></sub>가 공격자 E에게 노출될 수 있음을 알 수 있다.</p>
<fig id="f003" orientation="portrait" position="float">
	<label>그림 3.</label>
	<caption>
		<title>중간자 공격</title>
		<p>Figure 3. Man-in-the-middle attack</p>
	</caption>
	<graphic xlink:href="../ingestImageView?artiId=ART002537526&amp;imageName=jkits_2019_14_06_711_f003.jpg" position="float" orientation="portrait" xlink:type="simple"></graphic>
</fig>
</sec>
<sec id="sec004-2">
<title>4.2 인증(Authentication)</title>
	<p>인증은 관련 성질에 따라 서로 다른 수준으로 구분한다. 예를 들어, Lowe[<xref ref-type="bibr" rid="B013">13</xref>,<xref ref-type="bibr" rid="B014">14</xref>]는 aliveness, recentness, (non-)injective agreement, (non-)injective synchronization 등으로 인증 관련 성질을 구분할 수 있다고 주장한다. 예를 들어, non-injective agreement는 다음과 같이 설명된다.</p>
	<p>개시자 <italic>i</italic>와 반응자 <italic>r</italic>이 서로 동일한 프로토콜을 이용하여 통신하며, 사용되는 데이터 변수에 대해 양쪽 모두 동의한다.</p>
	<p>injective agreement는 이에 더하여 개시자 <italic>i</italic>가 발생시키는 모든 이벤트에 반응자 <italic>r</italic>이 딱 한 번 반응함을 의미한다.</p>
	<p>인증의 정형명세는 조금 더 복잡하며, 심지어 사용하는 명세언어에 따라 미세하게 달라진다. 여기서는 직관적인 이해를 돕기 위해 (non-)injective agreement를 상태전이 궤적을 이용하여 설명한다. 이를 위해, 아래 Claim 서술자(binary predicate)를 사용한다.</p>
	<p>• Claim(<italic>r</italic>, NI-Agree) : non-injective agreement가 <italic>r</italic> 역할 수행자에게 적용됨을 의미한다.</p>
	<p>모든 상태전이 궤적에는 여러 개의 Claim 이벤트가 포함될 수 있다. <italic>r</italic> 역할에 대해 non-injective agreement가 성립하려면 다음이 성립해야 한다.</p>
	<p>상태전이 궤적의 ℓ 번째 단계에서 Claim 이벤트가 정직한 <italic>A</italic> 에이전트에 의해 실행되고 해당 에이전트가 정직한 에이전트들과만 통신 하였다면 그때까지 교신된 모든 메시지는 오직 정직한 에이전트들에 의해서만 생성되었다.</p>
	<p>&#x003C;<xref ref-type="fig" rid="f003">그림 3</xref>&#x003E;이 보여주듯이 니드햄-슈뢰더 공개키 프로토콜의 경우 non-injective agreement가 성립하지 않는다. 정직한 <italic>B</italic> 에이전트는 정직한 <italic>A</italic> 에이전트와 교신한다고 믿지만 실제로는 중간에 공격자 <italic>E</italic> 가 <italic>A</italic> 에이전트의 역할을 수행하는 것처럼 속이고 있기 때문이다.</p>
</sec>
</sec>
<sec id="sec005" sec-type="conclusions">
<title>5. 결 론</title>
	<p>암호화 보안 프로토콜의 정형명세를 소개하였다. 또한 정형명세를 이용하여 보안과 관련된 성질들을 어떻게 다룰 수 있는지도 살펴보았다. 이를 위해 기밀성과 인증의 예를 사용하였으며, 사용되는 언어와 대상 성질에 따라 다양한 정의와 접근법이 있음을 니드햄-슈뢰더 공개키 프로토콜을 이용하여 설명하였다. 암호화 보안 프로토콜의 정형명세는 보안 프로토콜 자동검증을 위한 기초를 제공한다<xref ref-type="bibr" rid="B015">[15]</xref>. 따라서 이에 대한 연구가 진행되어 오고 있으며 산업체의 요구 또한 증가하고 있다. 관련 연구에 대한 보다 많은 관심이 중요하다.</p>
</sec>
</body>
<back>
<ref-list>
<title>References</title>
<!--[1] C. Cremers, The Scyther tool: verification, falsification, and analysis of security protocols, Conference on Computer-Aided Verification (CAV), 2008.-->
<ref id="B001">
<label>[1]</label>
<element-citation publication-type="other">
<person-group>
<name><surname>Cremers</surname><given-names>C.</given-names></name>
</person-group>
<year>2008</year>
<source>The Scyther tool: verification, falsification, and analysis of security protocols</source>
<publisher-name>Conference on Computer-Aided Verification (CAV)</publisher-name>
<pub-id pub-id-type="doi">10.1007/978-3-540-70545-1_38</pub-id>
</element-citation>
</ref>
<!--[2] C. Cremers and S. Mauw, Operational semantics and verification of security protocols, Information Security and Cryptography, Springer, pp. 1-155 2012.-->
<ref id="B002">
<label>[2]</label>
<element-citation publication-type="book">
<person-group>
<name><surname>Cremers</surname><given-names>C.</given-names></name>
<name><surname>Mauw</surname><given-names>S.</given-names></name>
</person-group>
<year>2012</year>
<source>Operational semantics and verification of security protocols, Information Security and Cryptography</source>
<publisher-name>Springer</publisher-name>
<fpage>1</fpage><lpage>155</lpage>
<pub-id pub-id-type="doi">10.1007/978-3-540-78636-8_8</pub-id>
</element-citation>
</ref>
<!--[3] B. T. Nguyen, C. Sprenger, and C. Cremers, Abstraction for security protocol verification, Journal of Computer Security, Vol. 26, No. 4, pp. 459-508, 2018.-->
<ref id="B003">
<label>[3]</label>
<element-citation publication-type="journal">
<person-group>
<name><surname>Nguyen</surname><given-names>B. T.</given-names></name>
<name><surname>Sprenger</surname><given-names>C.</given-names></name>
<name><surname>Cremers</surname><given-names>C.</given-names></name>
</person-group>
<year>2018</year>
<article-title>Abstraction for security protocol verification</article-title>
<source>Journal of Computer Security</source>
<volume>26</volume><issue>4</issue>
<fpage>459</fpage><lpage>508</lpage>
<pub-id pub-id-type="doi">10.3233/jcs-15769</pub-id>
</element-citation>
</ref>
<!--[4] B. Blanchet, Automatic verification of correspondences for security protocols, Journal of Computer Security, Vol. 17, No. 4, pp. 363-434, 2009.-->
<ref id="B004">
<label>[4]</label>
<element-citation publication-type="journal">
<person-group>
<name><surname>Blanchet</surname><given-names>B.</given-names></name>
</person-group>
<year>2009</year>
<article-title>Automatic verification of correspondences for security protocols</article-title>
<source>Journal of Computer Security</source>
<volume>17</volume><issue>4</issue>
<fpage>363</fpage><lpage>434</lpage>
<pub-id pub-id-type="doi">10.3233/jcs-2009-0339</pub-id>
</element-citation>
</ref>
<!--[5] B. Blanchet, Automatic verification of security protocols in the symbolic model: the verifier ProVerif, Foundations of Security Analysis and Design (FOSAD), pp. 54-87, 2013.-->
<ref id="B005">
<label>[5]</label>
<element-citation publication-type="other">
<person-group>
<name><surname>Blanchet</surname><given-names>B.</given-names></name>
</person-group>
<year>2013</year>
<source>Automatic verification of security protocols in the symbolic model: the verifier ProVerif</source>
<publisher-name>Foundations of Security Analysis and Design (FOSAD)</publisher-name>
<fpage>54</fpage><lpage>87</lpage>
<pub-id pub-id-type="doi">10.1007/978-3-319-10082-1_3</pub-id>
</element-citation>
</ref>
<!--[6] N. Kobeissi, K. Bhargavan, and B. Blanchet, Automatic verification for secure messaging protocols and their implementations: a symbolic and computational approach, EuroS&#x0026;P 2017, pp. 435-450, 2017.-->
<ref id="B006">
<label>[6]</label>
<element-citation publication-type="paper">
<person-group>
<name><surname>Kobeissi</surname><given-names>N.</given-names></name>
<name><surname>Bhargavan</surname><given-names>K.</given-names></name>
<name><surname>Blanchet</surname><given-names>B.</given-names></name>
</person-group>
<year>2017</year>
<article-title>Automatic verification for secure messaging protocols and their implementations: a symbolic and computational approach</article-title>
<conf-name>EuroS&#x0026;P</conf-name>
<fpage>435</fpage><lpage>450</lpage>
<pub-id pub-id-type="doi">10.1109/EuroSP.2017.38</pub-id>
</element-citation>
</ref>
<!--[7] H. Oguma, A. Yoshioka, M. Nishikawa, R. Shigetomi, A. Otsuka, and H. Imai, New attestation based security architecture for in-vehicle communication, GLOBECOM, pp. 1909-1914, 2008.-->
<ref id="B007">
<label>[7]</label>
<element-citation publication-type="paper">
<person-group>
<name><surname>Oguma</surname><given-names>H.</given-names></name>
<name><surname>Yoshioka</surname><given-names>A.</given-names></name>
<name><surname>Nishikawa</surname><given-names>M.</given-names></name>
<name><surname>Shigetomi</surname><given-names>R.</given-names></name>
<name><surname>Otsuka</surname><given-names>A.</given-names></name>
<name><surname>Imai</surname><given-names>H.</given-names></name>
</person-group>
<year>2008</year>
<article-title>New attestation based security architecture for in-vehicle communication</article-title>
<conf-name>GLOBECOM</conf-name>
<fpage>1909</fpage><lpage>1914</lpage>
<pub-id pub-id-type="doi">10.1109/glocom.2008.ecp.369</pub-id>
</element-citation>
</ref>
<!--[8] G. Lee, H. Oguma, A. Yoshioka, R. Shigetomi, A. Otsuka, and H. Imai, Formally verifiable features in embedded vehicular security systems, IEEE Vehicular Networking Conference (VNC), pp. 1-7, 2009.-->
<ref id="B008">
<label>[8]</label>
<element-citation publication-type="paper">
<person-group>
<name><surname>Lee</surname><given-names>G.</given-names></name>
<name><surname>Oguma</surname><given-names>H.</given-names></name>
<name><surname>Yoshioka</surname><given-names>A.</given-names></name>
<name><surname>Shigetomi</surname><given-names>R.</given-names></name>
<name><surname>Otsuka</surname><given-names>A.</given-names></name>
<name><surname>Imai</surname><given-names>H.</given-names></name>
</person-group>
<year>2009</year>
<article-title>Formally verifiable features in embedded vehicular security systems, IEEE Vehicular Networking Conference (VNC)</article-title>
<conf-name>IEEE Vehicular Networking Conference (VNC)</conf-name>
<fpage>1</fpage><lpage>7</lpage>
<pub-id pub-id-type="doi">10.1109/vnc.2009.5416378</pub-id>
</element-citation>
</ref>
<!--[9] T. Ohki, and A. Otsuka, Theoretical vulnerabilities in map speaker adaptation, ICASSP, pp. 2042-2046, 2017.-->
<ref id="B009">
<label>[9]</label>
<element-citation publication-type="paper">
<person-group>
<name><surname>Ohki</surname><given-names>T.</given-names></name>
<name><surname>Otsuka</surname><given-names>A.</given-names></name>
</person-group>
<year>2017</year>
<article-title>Theoretical vulnerabilities in map speaker adaptation</article-title>
<conf-name>ICASSP</conf-name>
<fpage>2042</fpage><lpage>2046</lpage>
</element-citation>
</ref>
<!--[10] S. Delaune, P. Lafourcade, D. Lugiez, and R. Treinen, Symbolic protocol analysis for monoidal equational theories, Information and Computation, Vol. 206, No. 2-4, pp. 312-351, 2008.-->
<ref id="B010">
<label>[10]</label>
<element-citation publication-type="journal">
<person-group>
<name><surname>Delaune</surname><given-names>S.</given-names></name>
<name><surname>Lafourcade</surname><given-names>P.</given-names></name>
<name><surname>Lugiez</surname><given-names>D.</given-names></name>
<name><surname>Treinen</surname><given-names>R.</given-names></name>
</person-group>
<year>2008</year>
<article-title>Symbolic protocol analysis for monoidal equational theories</article-title>
<source>Information and Computation</source>
<volume>206</volume><issue>2-4</issue>
<fpage>312</fpage><lpage>351</lpage>
<pub-id pub-id-type="doi">10.1016/j.ic.2007.07.005</pub-id>
</element-citation>
</ref>
<!--[11] R. Küsters, and T. Truderung, Reducing protocol analysis with XOR to the XOR-free case in the horn theory based approach, ACM Conference on Computer and Communications Security, pp. 129-138, 2008.-->
<ref id="B011">
<label>[11]</label>
<element-citation publication-type="paper">
<person-group>
<name><surname>Küsters</surname><given-names>R.</given-names></name>
<name><surname>Truderung</surname><given-names>T.</given-names></name>
</person-group>
<year>2008</year>
<article-title>Reducing protocol analysis with XOR to the XOR-free case in the horn theory based approach</article-title>
<conf-name>ACM Conference on Computer and Communications Security</conf-name>
<fpage>129</fpage><lpage>138</lpage>
<pub-id pub-id-type="doi">10.1145/1455770.1455788</pub-id>
</element-citation>
</ref>
<!--[12] G. Lowe, An attack on the Needham-Schroeder public key authentication protocol, Information Processing Letters, Vol. 56, No. 3, pp. 131-136, 1995.-->
<ref id="B012">
<label>[12]</label>
<element-citation publication-type="journal">
<person-group>
<name><surname>Lowe</surname><given-names>G.</given-names></name>
</person-group>
<year>1995</year>
<article-title>An attack on the Needham-Schroeder public key authentication protocol</article-title>
<source>Information Processing Letters</source>
<volume>56</volume><issue>3</issue>
<fpage>131</fpage><lpage>136</lpage>
<pub-id pub-id-type="doi">10.1016/0020-0190(95)00144-2</pub-id>
</element-citation>
</ref>
<!--[13] G. Lowe, A hierarchy of authentication specifications, IEEE Computer Security Foundations Workshop, pp. 31-44, 1997.-->
<ref id="B013">
<label>[13]</label>
<element-citation publication-type="paper">
<person-group>
<name><surname>Lowe</surname><given-names>G.</given-names></name>
</person-group>
<year>1997</year>
<article-title>A hierarchy of authentication specifications</article-title>
<conf-name>IEEE Computer Security Foundations Workshop</conf-name>
<fpage>31</fpage><lpage>44</lpage>
</element-citation>
</ref>
<!--[14] P. J. Hopcroft, and G. Lowe, Analysing a stream authentication protocol using model checking, International Journal of Information Security, Vol. 3, No. 1, pp. 2-13, 2004.-->
<ref id="B014">
<label>[14]</label>
<element-citation publication-type="journal">
<person-group>
<name><surname>Hopcroft</surname><given-names>P. J.</given-names></name>
<name><surname>Lowe</surname><given-names>G.</given-names></name>
</person-group>
<year>2004</year>
<article-title>Analysing a stream authentication protocol using model checking</article-title>
<source>International Journal of Information Security</source>
<volume>3</volume><issue>1</issue>
<fpage>2</fpage><lpage>13</lpage>
<pub-id pub-id-type="doi">10.1007/s10207-004-0040-1</pub-id>
</element-citation>
</ref>
<!--[15] M. Avalle, A. Pironti, and R. Sisto, Formal verification of security protocol implementations: a survey, Formal Aspects of Computing, Vol. 26, No. 1, pp. 99-123, 2014.-->
<ref id="B015">
<label>[15]</label>
<element-citation publication-type="journal">
<person-group>
<name><surname>Avalle</surname><given-names>M.</given-names></name>
<name><surname>Pironti</surname><given-names>A.</given-names></name>
<name><surname>Sisto</surname><given-names>R.</given-names></name>
</person-group>
<year>2014</year>
<article-title>Formal verification of security protocol implementations: a survey</article-title>
<source>Formal Aspects of Computing</source>
<volume>26</volume><issue>1</issue>
<fpage>99</fpage><lpage>123</lpage>
<pub-id pub-id-type="doi">10.1007/s00165-012-0269-9</pub-id>
</element-citation>
</ref>
</ref-list>
<ack>
<title>감사의 글</title>
<p>본 논문은 2017학년도 정부(교육부)의 재원으로 한국연구재단의 지원을 받아 수행된 연구임(No. NRF-2017R1D1A1B05031658).</p>
</ack>
<bio>
	<p><graphic xlink:href="../ingestImageView?artiId=ART002537526&amp;imageName=jkits_2019_14_06_711_f004.jpg"></graphic><bold>Gyesik Lee</bold> received the bachelor’s degree in the Department of Mathematics from Seoul National University in 1992. He received the M.S. degree and the Ph.D. degree in the Department of Mathematics and Computer Science from University of Muenster in 1996 and 2005, respectively. From 2005.12 to 2011.02, he had research positions at INRIA, AIST, and Seoul National University. He is an associate professor in the Department of Computer Science and Engineering at Hankyong National University since 2011. His current research interests include logic in computer science, data analysis, programming education through game programming. He is a member of the KKITS.</p>
	<p><italic>E-mail address</italic>: <email>gslee@hknu.ac.kr</email></p>
</bio>
</back>
</article>
