검수요청.png검수요청.png

데이터 토큰 (문자열)

위키원
이동: 둘러보기, 검색

데이터 토큰(data token)이란 분산 제어형 루프나 링에서 링크 접근 제어를 위해 사용되는 특별한 비트의 패턴을 말한다. 읽기와 쓰기 데이터 토큰이 있다.

개요

세션 계층에서는 두 응용 프로그램의 대화를 관리하려고 토큰(token)이라는 특수 메시지를 사용한다. 토큰이란 일련의 문자열을 구분할 수 있는 단위 또는 시스템에서 보안 객체의 접근 관리에 사용되는 객체 또는 장치를 말한다.[1] 토큰의 보유는 해당 토큰에 부여된 특정 권리를 배타적으로 소유한다는 의미를 갖는다. 세션 계층에서 제공하는 토큰의 종류 네 가지(해재 토큰, 동기 토큰, 데이터 토큰, 액티비티 토큰) 중에 데이터 토큰[2]이 포함된다. 데이터 토큰은 데이터를 전송할 수 있는 권리를 제공한다. 그러므로 세션 사용자가 데이터를 전송하려면 반드시 데이터 토큰을 먼저 획득해야 한다. 데이터 토큰을 하나만 사용하면 통신 양단 중 한쪽에만 데이터 전송을 할 수 있다. 따라서 데이터 토큰은 응용 프로그램간의 반이중 전송을 지원하는 목적을 가진다.[3]

특징

토큰

일련의 문자열을 구분할 수 있는 단위이다. 시스템에서 보안 객체의 접근 관리에 사용되는 객체 또는 장치. 토큰은 크게 접근(access) 토큰, 보안(security) 토큰, 세션(session) 토큰 등으로 분류할 수 있다. 접근 토큰(access token)이 가장 많이 사용되는 토큰 형식으로 시스템이나 소프트웨어에서 어떤 특정한 기능이나 데이터에 접근하는 대상에게 권한을 부여하는 데 사용된다. 통상 난수 형태의 문자열로 구성된다. 예를 들어, 웹 서비스 제공자는 사용자의 아이디, 패스워드 또는 신용카드 등의 정보를 사용해 만든 접근 허가 토큰을 사용자에게 발행하고 접속 시 사용하게 하여 개인정보 누출을 방지하고 안전한 서비스를 제공할 수 있다. 보안 토큰(security token)은 하드웨어 저장 장치로 특정 전자기기의 제한된 자원(리소스)의 사용 권한을 제어한다. 예로 유에스비(USB) 보안 토큰이 있다. 세션 토큰(session token)은 통신망에서 서버와 클라이언트 간 세션(논리적 연결) 후 사용된다. 인터넷 서버가 하이퍼텍스트 전송 규약(HTTP: Hypertext Transfer Protocol)을 통해 클라이언트와 연결된 후 상호간 데이터 교환을 위해 클라이언트에 부여하는 객체이다. 세션 식별자(Session ID)로 표현하기도 한다. 그리고 링 또는 버스 형태의 네트워크에서 장비 간 전송되는 신호의 순서이다.

특정 블록체인 플랫폼에서 동작하는 응용 서비스에서만 사용하는 암호화폐이다. 일반적으로 블록체인 플랫폼은 거래 수수료, 채굴 인센티브 등을 위한 자체 지불 수단을 가진다. 이를 코인이라 부른다. 이와 같은 블록체인 시스템에서 동작하는 응용 서비스는 지속적으로 성장하고 안정적으로 유지될 수 있도록 네트워크 참여자들을 새롭게 확보해야 한다. 이 응용 서비스만을 위한 별도의 지불 수단을 토큰이라 한다. 따라서 이 토큰은 기존 코인보다 더 많은 수수료와 인센티브를 제공하여 네트워크 참여자들을 더 많이 유도할 수 있다. 다시 말해, 토큰은 인센티브 형태로 제공되는 지불 수단으로 특정 커뮤니티 내에서 디지털 화폐로 사용할 수도 있다. 이후에 충분한 응용 서비스 사용자가 확보되면 이 응용 서비스를 위해 독립된 블록체인 플랫폼으로 발전하게 된다. 따라서 토큰은 독립적인 블록체인 플랫폼으로 성장할 수 있을지를 시험하는 테스트넷(testnet)에서의 지불 수단이라 할 수 있다. 일반적으로 토큰에서 코인으로 발전하며 테스트넷에서 토큰을, 메인넷에서 코인을 지불 수단으로 사용한다. 대표적인 토큰으로 이오스(EOS), 트론(TRX), 비체인(VeChain) 등이 있다.[3]

프로그래밍 언어에서 말하는 토큰이란 언어가 사용하는 기본'단어'를 말한다. 토큰은 구문적으로 의미를 갖는 최소의 단위이며 우리가 작성하는 프로그램은 모두 이러한 토큰으로 이루어진다. public static void main(String[] agrs) 이 문장에서 토큰은 public, static, void, main, (, String, [, ], args, ) 등이며 이러한 토큰을 제외한 공백문자(스페이스, 탭 문자, 개행 문자 등)는 문자열 내에서 사용되는 경우가 아닌 이상은 모두 아무런 의미를 가지지 않는다. 토큰은 키워드(keyword)나 연산자, 또는 ‘,’, ‘;’, ‘(‘ 등의 구분자(delimiter)와 같은 특수한 형태의 토큰과 명칭(identifier)이나 리터럴(literal)과 같은 일반적인 형태의 토큰으로 나눌 수 있다.[4]

문자열

문자열이란 말그대로, 문자들의 모임이다. 예를 들면 , A는 문자이고 B도 문자이다. 하지만 A와B가 모여 AB가 된다면, 문자가 모였으므로 문자열이 된다. 이처럼, C에서는, 문자열을 문자를 저장하는 변수의 모임은 char 형 배열로 표현한다. 선언은 다음과 같다. char arr[10] = "abcd"; 또는 char arr[10] = {'a', 'b', 'c', 'd', '\0'}; 으로 표현한다. 다만, "abcd" 와 달리, 밑의 방법은 \0 이라는 문자또한 추가시켜주었는데 이를 (NULL) 문자 라고 한다.[5]

컴퓨터 프로그래밍과 형식 언어 이론에서 문자열(文字列)은 기호의 순차 수열을 말한다. 스트링(string)이라고도 한다. 이러한 기호는 미리 정의된 집합이나 음소 문자에서 선택한다. 프로그래밍에서 문자열은 일반적으로, 요소가 문자 인코딩과 관련된 문자를 대표하는 일련의 자료값을 저장하고 있는 자료형으로 이해할 수 있다. 여기서 문자 인코딩의 경우 더 일반적인 배열 자료형과 차이가 있다. 이러한 환경에서 이진 문자열(binary string)과 바이트 문자열(byte string)이라는 용어는 저장된 자료가 반드시 텍스트를 표시하지 않아도 되는 문자열을 표시하는데 사용된다. 문자열 자료형으로 선언된 변수의 경우, 미리 정의된 어느 정도의 기호를 소유할 수 있는 메모리에 기억 자료를 할당하는 것이 보통이다. 문자열이 소스 코드에 보이면 그 문자열을 리터럴 문자열(string literal)이라고 일컫는다. [6]

C언어에서는 큰따옴표("")를 사용해 표현되는 문자열을 문자열 상수(string constant)라고 한다. 상수라고 표현하는 이유는 해당 문자열이 이름을 가지고 있지 않으며, 문자열의 내용 또한 변경할 수 없기 때문이다. C언어에서 문자열은 메모리에 저장된 일련의 연속된 문자(character)들의 집합을 의미한다. 따라서 문자형 배열을 선언하면 이 배열이 곧 문자열 변수가 된다. 문자상수는 'A'와 같이 작은 따옴표(') 두 개로 표현한다. 상수라고 해서 숫자만 있는것이 아닌 것이 아니다. 예를 들어 'A'라고 하면 이 A는 문자값이다. 하지만 char A;라고 하면 이 A는 문자 값이 아니라 문자를 저장하기 위한 변수다. A라고 하는 이름은 변하지 않지만 그 안에 들어가는 문자 상수(값)은 언제든 변할 수 있기 때문이다.[7]

토큰화

토큰화는 데이터 보안에 적용될 때 중요한 데이터 요소를 암호화 또는 악용 가능한 의미 나 값이 없는 토큰이라고하는 중요한 동등한 것으로 대체하는 프로세스를 말한다. 토큰은 토큰화 시스템을 통해 중요한 데이터를 다시 매핑하는 것이다. 원본 데이터에서 토큰으로 매핑하는 방법은 토큰이 토큰화 시스템이 없는 경우 반대로 되돌릴 수 없는 메서드를 사용한다. 토큰화 시스템은 중요한 데이터 보호, 보안 스토리지, 감사, 인증 및 권한 부여에 적용되는 보안 모범 사례를 이용하여 보안 및 검증되어야 한다. 토큰화 시스템은 토큰을 요청하거나 중요한 데이터로 다시 토큰화할 수 있는 권한 및 인터페이스를 사용하여 데이터 처리 응용 프로그램을 제공한다. 토큰화의 보안 및 위험 감소 이점은 토큰화 시스템이 논리적으로 격리되고 이전에 토큰으로 대체된 중요한 데이터를 처리하거나 저장한 데이터 처리 시스템 및 응용 프로그램에서 분할해야 한다. 토큰화 시스템만 데이터를 토큰화하여 토큰을 만들거나 엄격한 보안 컨트롤에서 중요한 데이터를 사용할 수 있도록 토큰화할 수 있다.

토큰 생성 방법은 직접 공격, 암호 분석,측면 채널 분석, 토큰 매핑 테이블 노출 또는 무차별 암호 기술을 통해 생성한다. 라이브 데이터를 시스템의 토큰으로 대체하는 것은 이러한 애플리케이션, 매장, 사람 및 프로세스에 민감한 데이터의 노출을 최소화하여 손상 또는 우발적 노출 의 위험을 줄이고 중요한 데이터에 대한 무단 액세스를 줄이기 위한 것이다. 응용 프로그램은 승인된 비즈니스 목적을 위해 엄격하게 필요한 경우 명시적으로 토큰을 해제할 수 있는 소수의 신뢰할 수 있는 응용 프로그램을 제외하고 라이브 데이터 대신 토큰을 사용하여 작동할 수 있다. 토큰화 시스템은 데이터 센터의 보안 격리 세그먼트 내에서 또는 보안 서비스 공급자의 서비스로 사내에서 운영될 수 있다. 토큰화는 은행 계좌, 재무 제표, 의료 기록,범죄 기록, 운전 면허증, 대출 신청, 주식 거래, 유권자 등록 및 기타 유형의 개인 식별 정보(PII)와 관련된 민감한 데이터를 보호하는 데 사용할 수 있다. 토큰화는 종종 신용 카드 처리에 사용된다. PCI 위원회는 토큰화를 "기본 계정 번호(PAN)가 토큰이라는 대리 값으로 대체되는 프로세스로 정의한다. 암호화와 같은 다른 기술에 대한 대안으로 토큰화의 선택은 각 감사 또는 평가 기관의 다양한 규제 요구 사항, 해석 및 수용에 따라 달라진다. 이는 토큰화가 실질적으로 부과하는 기술적, 건축적 또는 운영상의 제약에 추가된다.[8]

  • 결제보안 토큰화 : 모바일 결제 시스템에서, 신용카드와 같은 개인 정보를 보호하기 위해 관련 정보를 토큰으로 변환하여 사용하는 방식이다. 금융 보안 분야에서 개인 정보를 보호하기 위해 보호되어야 할 신용카드나 개인 정보를 토큰화 하여 결제 시 원본 데이터 대신 토큰 데이터를 사용한다. 토큰화 기술이 적용된 상점의 판매 시점 관리(POS) 결제 단말은 고객의 신용카드 정보 대신 정보를 변환한 토큰 데이터만 저장한다. 대신 토큰 서버(token server)가 신용카드 정보와 토큰 데이터를 저장하고 관리한다. 토큰화 기술은 토큰 데이터가 저장 장소나 전송 과정에서 유출되어도 원본 데이터가 아니기 때문에 도용될 가능성이 적다. 그러나 토큰의 생성 알고리즘이나 토큰 서버의 보안 강화가 요구된다. 토큰화 기술은 2014년 EMV 카드 표준으로 제정되었다.[9]
  • 블록체인 토큰화 : 제 자산을 블록체인 위에 올리고 적게는 수 개부터 많게는 수십만, 수억 개의 토큰과 연결함으로써 잘게 쪼개는 것을 의미한다. 예를 들어 시가 100억의 빌딩을 블록체인 위에서 1만개로 나눈 경우 토큰 하나당 1백만원의 가치를 가질 수 있는 분산소유 기반을 마련하는 것이다. 분할의 대상이 ‘회사’라면 사실상 회사의 지분인 ‘주식’을 보유하는 것과 유사한 효과를 가지게 되는데, 기술을 이용하여 그 대상을 비단 회사뿐만 아니라 빌딩, 고가의 미술품, 저작권 등 유무형의 다양한 자산과 연결하고자 하는 것이 곧 ‘블록체인을 이용한 자산의 토큰화’이다. 분산소유 증명 징표가 토큰 형태로 블록체인 위에 올려지면 매매 과정 속 중개를 비롯한 여러 거래 비용을 절감할 수 있다. 이는 블록체인이 기존 시스템과 확연하게 차별되는 특성을 가지고 있기 때문에 가능한 일이다. 블록체인은 위·변조가 불가능하고 참가 주체에게 거래 정보가 실시간 투명하게 공개된다는 특성이 있다. 분산소유 증명 징표가 토큰 형태로 블록체인 위에 올려지면 매매 과정 속 중개를 비롯한 여러 거래 비용을 절감할 수 있다. 이는 블록체인이 기존 시스템과 확연하게 차별되는 특성을 가지고 있기 때문에 가능한 일이다.[10]

작동 원리

토큰화 원리

그림의 t는 토큰을 의미한다. "See the quick red fox"라는 문자열 s를 공백 기준으로 잘랐을 때 과정을 보여주는 그림이다. (a)는 문자열s 그대로를 보여주고 (b)는 strtok(문자열 토큰화 string tokenize)를 한 번 수행했을 때, (c)는 두 번 수행했을 때, (d)는 세 번 시행했을 때 어떻게 진행되는지 과정을 나타내고 있다. 인자로 받은 문자열에서 구분자가 있는 위치를 널 포인트로 치환해 줌으로써, 문자열을 끊기게 만든다.[11]

토큰화를 하기전에 우선 텍스트 전처리(Text preprocessing)를 해야한다. 첫 번째로 클렌징(cleansing) 작업을 한다. 이는 텍스트에서 분석에 오히려 방해가 되는 불필요한 문자, 기호 등을 사전에 제거하는 작업이다. 예를 들어 HTML, XML 태그 같은 것을 말한다. 그리고 텍스트 토큰화에 들어간다. 문서에서 문장을 분리하는 문장 토큰화와 문장에서 단어를 토큰으로 분리하는 단어 토큰화로 나눈다. 그 후 스톱워드(stop word) 분석에 큰 의미가 없는 단어(is, a, the 등) 문장을 구성하는 필수 문법 요소지만 문맥정으로 큰의미가 없는 단어를 제외한다. 마지막으로 원형 단어를 찾는 작업을 한다.

어간 추출(stemming)은 원형 단어로 변환 시 일반적인 방법을 적용하거나 더 단순화 된 방법을 적용해 원래 단어에서 일부 철자가 훼손된 어근 단어를 추출하는 것을 말한다. 또 표제어 추출(Lemmatization)은 품사와 같은 문법적인 요소와 더 의미적인 부분을 감안해 정확한 철자로 된 어근 단어를 찾아준다. 생각보다 더 오랜 시간이 소모된다. 이와 같이 문자열에서 단어로 분시리시키는 토큰화 단계를 거처 전치사, 관사 등 너무 많이 등장하는 단어 등 문장이나 문서의 특징을 표현하는데 불필요한 단어를 삭제하는 불용어 제거(stop word elimination) 단계, 단어의 기본 형태를 추출하는 어간추출 단계, 주어진 문서나 문장을 하나의 벡터로 표현하는 문서표현(Representation) 단계를 거치면 데이터 전처리(Preprocessing step)가 완료된다.[12]

종류

  • 단어 토큰화(word tokenization) : 토큰의 기준을 단어(word)로 하는 경우, 단어 토큰화라고 한다. 예를들어, 아래의 입력으로부터 구두점(punctuation)과 같은 문자는 제외시키는 간단한 단어 토큰화 작업을 할때 구두점이란, 온점(.), 컴마(,), 물음표(?), 세미콜론(;), 느낌표(!)등과 같은 기호를 말한다. 입력값에 Time is an illusion. Lunchtime double so!라는 입력으로부터 구두점을 제외시킨 토큰화 작업의 결과는 "Time", "is", "an", "illustion", "Lunchtime", "double", "so"로 출력된다. 구두점을 지운 뒤에 띄어쓰기(whitespace)를 기준으로 잘라냈다.보통 토큰화 작업은 단순히 구두점이나 특수문자를 전부 제거하는 정제(cleaning) 작업을 수행하는 것만으로 해결되지 않는다. 구두점이나 특수문자를 전부 제거하면 토큰이 의미를 잃어버리는 경우가 발생하기도 한다. 심지어 띄어쓰기 단위로 자르면 사실상 단어 토큰이 구분되는 영어와 달리, 한국어는 띄어쓰기만으로는 단어 토큰을 구분하기 어렵다.
  • 문장 토큰화(sentence segmentation) : 토큰의 단위가 문장(sentence)일 때, 토큰화 수행 방법이다. 이 작업은 갖고있는 말뭉치 내에서 문장 단위로 구분하는 작업으로 문장 분류라고도 부른다. 말뭉치(corpus)로 부터 문장 단위로 분류할 수 있는 방법을 직관적으로 생각해보면, 물음표(?)나 온점(.)이나 느낌표(!)기준으로 문장을 잘라낼 수 있다고도 할 수 있지만, 느낌표나 물음표는 문장의 구분을 위한 꽤 명확한 구분자 역할을 하지만 온점은 문장의 끝이 아니더라도 등장할 수 있다. 예를 들어 Since I'm actively looking for Ph.D. students, I get the same question a dozen times every year.라는 문장을 보면 단순히 온점(.)으로 문장을 구분짓는다고 가정하면, 문장의 끝이 나오기 전에 이미 온점이 여러번 등장하여 예상한 결과가 나오지 않게 된다. 그렇기 때문에 사용하는 말뭉치가 어떤 국적의 언어인지, 또는 해당 코퍼스 내에서 특수문자들이 어떻게 사용되고 있는지에 따라서 직접 규칙들을 정의해 볼 수 있다.
  • 이진 분류기(binary classifier) : 문장 토큰화에서의 예외 사항을 발생시키는 온점의 처리를 위해서 입력에 따라 두 개의 클래스로 분류하는 것을 이진 분류기라고 한다. 여기서 말하는 두 개의 클래스는 첫 번째로 온점(.)이 단어의 일부분일 경우. 즉, 온점이 약어(abbreivation)로 쓰이는 경우, 두 번째로 온점(.)이 정말로 문장의 구분자일 경우이다. 온점(.)이 어떤 클래스에 속하는지 결정을 위해서는 어떤 온점이 주로 약어으로 쓰이는지 알아야한다. 그렇기 때문에, 이진 분류기 구현에서 약어 사전(abbreviations dictionary)은 유용하게 쓰인다. 이러한 문장 토큰화를 수행하는 오픈 소스로는 NLTK, OpenNLP, 스탠포드 CoreNLP, splitta, LingPipe 등이 있다. [13]
  • 유틸리티 토큰(utility token) : 어떤 서비스나 시스템을 사용하는 목적으로 사용되는 토큰을 말하며 독립적인 블록체인이 존재하지 않으며, 특정 플랫폼 블록체인상의 스마트 계약으로 생성·관리되는 암호화폐를 의미한다. 예를 들어 이더리움 스마트 계약을 이동하기 위하여 지불되는 수수료를 예로 들 수 있다. 지불 통화로 사용되기 때문에 유틸리티 토큰으로 간주 된다. 일반적으로 플랫폼 코인 위에서 작동하는 디앱(DApp) 방식으로 개발한다. 유틸리티 토큰은 회사의 제품이나 서비스에 대한 미래의 활용권한을 나타내고 있기 때문에 지분이나 배당의 기능은 전혀 없다. 다만 제품, 서비스, 네트워크 내에서 사용가능하도록 효용성을 제공할 목적만 가지고 있는 토큰을 말한다.
  • 시큐리티 토큰(security token) : 증권으로서의 성질을 가진 토큰이다. 법정 통화 등으로 가치를 뒷받침하고, 그 교환이나 투자 목적이 된 토큰을 말한다. 보안 토큰은 전자적으로 제한된 리소스에 액세스하는 데 사용되는 주변 장치다. 토큰은 암호와 함께 또는 암호 대신 사용된다. 전자 키처럼 작동하여 무언가에 연결하여 사용하며 일반적으로 유통되고 있는 주식이나 채권과 같은 성질을 가지고 있기 때문에 투자자 보호의 관점에서 규제가 걸린다는 것이 미국 증권거래위원회(SEC)의 이야기다.[14]

주의사항

  • 구두점이나 특수문자를 단순히 제거하면 안된다. 가진 말뭉치에서 단어들을 걸러낼 때, 구두점이나 특수 문자를 단순히 제외하는 것은 옳지 않다. 말뭉치에 대한 정제 작업을 진행하다 보면, 구두점조차도 하나의 토큰으로 분류하기도 한다. 가장 기본적인 예를 들자면, 온점(.)과 같은 경우는 문장의 경계를 알 수 있는데 도움이 되므로 단어를 뽑아낼 때, 온점(.)을 제외하지 않을 수 있다. 또 다른 예로, 단어 자체에서 구두점을 갖고 있는 경우도 있는데, m.p.h나 Ph.D나 AT&T 같은 경우가 있다. 또 특수 문자의 달러($)나 슬래시(/)로 예를 들어보면, $45.55와 같은 가격을 의미 하기도 하고, 01/02/06은 날짜를 의미하기도 한다. 이러한 구두점이나 특수문자를 제거하면 단어나 문장 자체의 의미를 잃어버릴 수 있다.
  • 줄임말과 단어 내에 띄어쓰기가 있는 경우도 있다. 영어권에서는 보통 아포스트로피(')로 줄임말을 표현한다. (예시로 what+are=what're 등이 있다.) 여기서 re를 접어(clitic) 이라고 한다. 비슷하게 I'm에서는 m이 접어 이다. New York와 같이 한 단어에 띄어쓰기가 존재할 수도 있다. 필요에 따라 이런 경우에서 묶어서 한 단어로 토큰화할지, 아니면 따로 토큰화할지 기준을 정할 필요가 있다.
  • 표준 토큰화의 예제다. 표준 토큰화는 두 가지의 규칙이 있다. 첫 번째로 하이픈으로 구성된 단어는 하나로 유지한다. 두 번째로 아포스트로피로 '접어'가 함께하는 단어는 분리한다.
  • 영어에서는 띄어쓰기를 나누어도 단어 토큰화가 가능하다. 영어는 한 단어를 쓰면 보통 띄기 때문에 띄어쓰기 토큰화와 단어 토큰화가 거의 같을 수 있다. 하지만 한국어는 어절 단위로 띄어쓰기를 하는데 어절 토큰화는 단어 토큰화와 같지 않다. 첫 번째로 한국어는 단어에 조사, 어미 등을 붙인다. 영어에서 'he is'는 띄어서 두 의미가 분리되지만 한국어에서는 '그는' 이렇게 붙게 된다. 이렇게 단어에 무언가 계속 붙어서 말이 형성되는 한국어의 특성 상 띄어쓰기로 토큰화를 하는 것은 무리가 있다. 두 번째로 한국어는 영어에 비해 띄어쓰기가 매우 어렵다. 그래서 잘 지켜지지 않는 경향이 있다. 띄어쓰기가 없더라도 글을 쉽게 이해할 수 있기 때문이라는 이유도 있다. 따라서 단순히 띄어쓰기로 단어 토큰화를 하면 정확도가 떨어질 수밖에 없다.
  • 단어 표기는 같지만 품사에 따라 의미가 다른 경우도 있다. 예를 들어 영어에서 fly는 '날다'라는 의미도 있지만 '파리'라는 의미도 있다. 이처럼 단어의 의미를 파악하기 위해 단어가 어떤 품사로 쓰였는지가 중요한 정보가 될 수 있다. 이런 이유로 단어 토큰화를 할 때 각 단어가 어떤 품사로 쓰였는지 구분한다. (이것을 품사 태킹이라고 한다.)[13]
  • 토큰화 기술의 보안성은 크게 3가지 측면에서 주장된다. 첫 번째로 토큰화 기술이 지불 카드 산업 데이터 보안 표준(PCI-DSS)가 명시한 보안 요구사항에 부합하는 기술이기 때문에 안전하다는 주장이다. 지불 카드 산업 데이터 보안 표준은 신용카드 등의 금융 카드 이용에 관한 최소한의 보안 요구사항만을 정한 것이기 때문에 지불 카드 산업 데이터 보안 표준에 부합한다고 안전성을 보장받을 수 있는 것은 아니다. 두 번째로 개인정보는 토큰 서버에서 안전하게 보관되고 관리되기 때문에 안전하다는 주장이다. 이것은 개인정보를 저장하는 저장소의 안전성에 대한 논의일 뿐, 토큰화 기술 자체에 대한 보안성을 설명하지는 못한다. 마지막으로, 토큰이 난수로 얻어지는 값이기 때문에 토큰으로부터 노출되는 개인정보가 없음으로 안전하다는 주장이다. 이 주장은 이론상으로 옳은 말이지만 현실에서 옳지 않을 수도 있다. 전자서명, 암호화, 키 교환 등의 많은 보안 기술들이 안전한 암호학적 알고리즘에 기반하기 때문에 안전한 것처럼 인식된다. 그러나 현실에서의 취약점은 암호에 쓰이는 키와 난수에서 발생하는 경우가 많다. 안전한 암호 알고리즘을 채용하더라도 키 관리에서 문제가 있거나, 난수를 쓰더라도 안전하지 않은 난수를 쓰는 것은 심각한 보안 위협을 야기시킨다. 이와 마찬가지로 토큰이 난수로 얻어지더라도 어떠한 방법으로 얻어진 난수를 채용하느냐에 따라 토큰화 기술은 안전할 수도 있고, 보안에 취약할 수도 있다.[15]

각주

  1. IT용어사전, 〈토큰〉, 《네이버지식백과》
  2. 용어해설, 〈데이터 토큰〉, 《네이버지식백과》
  3. 3.0 3.1 데이터 통신과 컴퓨터 네트워크, 〈토큰〉, 《네이버지식백과》
  4. 이성원, 〈JAVA 정리〉, 《네이버 블로그》, 2011-05-24
  5. stdlib.h, 〈문자열(string)〉, 《티스토리》, 2020-01-10
  6. 문자열 위키백과 - https://ko.wikipedia.org/wiki/%EB%AC%B8%EC%9E%90%EC%97%B4
  7. SLL, 〈C언어 문자열(string) 기본개념〉, 《네이버 블로그》, 2015-09-22
  8. 토큰화(데이터 보안) 위키백과 - https://en.wikipedia.org/wiki/Tokenization_(data_security)
  9. TTA 신규용어 소개 한국정보통신기술협회 - http://www.tta.or.kr/data/weeklyNoticeView.jsp?pk_num=4929
  10. 박재원 코드체인 사업개발팀장, 〈(디지털자산 시대의 도래)②자산토큰화(Asset Tokenization)의 의미와 기술적 장점〉, 《디센터》, 2019-03-27
  11. IT 양햄찌(jhnyang), 〈(C언어)(string.h)문자열 관련 함수 strtok, strtok_s 문자열 파싱, 분리하기, 자르기〉, 《티스토리》, 2019-11-04
  12. Ailyn Ailyn, 〈2단계) 데이터 전처리(Preprocessing 및 파이썬 자연어처리 라이브러리 정리)〉, 《티스토리》, 2017-12-08
  13. 13.0 13.1 ukairia777, 〈토큰화(Tokenization)〉, 《위키독스》, 2020-06-13
  14. 야옹메롱, 〈(블록체인)토큰(Token)의 개념과 종류〉, 《네이버 블로그》, 2019-01-12
  15. 심상규, 〈(기고) 토큰화 기술에 대한 보안성 고려①〉, 《보안뉴스》, 2012-05-25

참고자료

같이 보기


  검수요청.png검수요청.png 이 데이터 토큰 (문자열) 문서는 데이터에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.