데이터 - from 1일 1로그

Ik·2022년 9월 19일
0

CS

목록 보기
3/27

데이터

  • 데이터가 급증하며 메타데이터에 관한 여러 문제들 발생
    • 개인의 프라이버시를 지킬 권리와 대중의 알권리의 충돌, 불안정한 절충안들 대두
  • 쿼리 로그에는 사업 운영과 서비스 향상에 필요한 귀중한 정보는 물론 잠재적으로 민감한 개인정보도 분명히 포함
    • 일부 데이터만으로도 사용자를 식별할 수 있는 재식별화(re-identification) 문제 대두

검색 엔진

  • 검색 엔진에는 단순한 검색, 정렬 알고리즘 사용 불가
    • 충분히 빠르게 작동 불가하기에
  • 검색 엔진을 운용하는데 있어 프로세서, 메모리, 저장 장치, 대역폭, 전력, 인력 등 많은 것들이 막대하게 필요한데 광고 비용으로 이를 충당
    • 광고 회사는 페이지 뷰, 페이지 전환 등의 측면에서 광고의 가치(=비용)를 결정하며 색 엔진 회사는 검색어에 따른 광고에 대해 실시간 경매를 실시
      • 구글과 페이스북 모두 대부분의 매출을 광고
        • 만약 많은 사람들이 광고를 보지 않는다면 웹의 작동이 멈출 것인가, 아니면 구글, 페이스북, 트위터를 지원하기 위한 대안적인 비즈니스 모델이 발명될까

사용자 <-> 서버

사용자

  • 웹페이지 form에 query를 입력해 server로 전달
    • 거의 즉시 링크와 텍스트 조각의 목록이 반환

서버

  • query 단어들을 포함하는 페이지 목록을 생성, 관련도 순으로 정렬한 후 페이지 텍스트 조각을 HTML로 감싼 다음 사용자에게 보낸다

Web Crawling

  • 사용자 쿼리마다 웹 전체를 새로 검색하기에 웹은 너무 크기에 검색 엔진의 주된 작업은 페이지 정보를 미리 서버에 저장하고 구조화하여 쿼리에 답할 준비를 하는 작업
  • 웹 크롤링은 페이지를 훑어보면서 관련 있는 내용을 데이터 베이스에 저장하고 이후 들어오는 쿼리에 신속하게 응답할 수 있도록 함

Crawling

  • 캐싱이 거대 규모로 이루어지는 사례
  • 검색 결과는 인터넷 페이지의 실시간 검색이 아니라 캐싱된 페이지 정보의 미리 계산된 인덱스에 기반을 둔다

Caching

  • 명렁어와 데이터를 캐시 기억 장치 또는 디스크 캐시에 일시적으로 저장하는 것
  • 중앙 처리 장치(CPU)가 주기억 장치 또는 디스크로부터 데이터를 빠르게 읽어 사용

Crawler

  • 한 사이트의 너무 자주 방문할 수 없음
    • 사이트의 트랙픽 부담이 상당히 늘어나서 골칫거리가 될 수 있기 때문





추적 메커니즘

  • 인터넷을 사용하는 동안 정보가 수집되는 것은 불가피
  • 추적에 이미지 URL, 컴퓨터나 휴대전화의 쿠키 등 이용
    • 이미지 URL의 경우 사용자가 요청을 하지 않아도 이미 도메인의 로드되어 인코딩되어 있기에 내가 어느 페이지에 접근했는지 알 수 있다
    • ex) Web bug, web beacon : 특정 회사와 연결되어 너비 높이 각 1픽셀인 투명 이미지를 가져오는 것

추적 관련 기술들

Geo Tagging

  • 일부 디지털카메라에도 GPS가 포함되어 있어서 찍은 사진 각각에 지리적 위치를 인코딩하는 것
  • 광고를 목적으로 여러 출처에서 우리의 흔적들을 수집해 정보를 파악하지만 정보가 광고 외에 불순한 목적으로 사용될 수 있다

JS

  • 자바스크립트 코드는 자신이 왔던 사이트에서 온 쿠키를 설정하고 가져오며, 브라우저의 방문 페이지 기록 같은 다른 정보에 접근
  • 마우스 위치를 지속적으로 모니터링하여 서버에 보고하고, 서버는 웹페이지의 어느 부분이 사용자의 관심을 끄는지 그렇지 않은지 추측
    • 클릭하거나 강조 표시한 텍스트 블록 등의 위치도 모니터링

Browser Fingerprinting

  • 브라우저의 개별 특성을 사용하여 쿠키 없이도 사용자를 식별하는 기법
    • 개인을 고유하게 식별 가능

Canvas Fingerprinting

  • HTML5의 새로운 기능을 사용
  • 개별 브라우저가 특정 문자 시퀀스를 어떻게 렌더링하는지 확인가능
    • 쿠키 설정과 무관하게 몇몇 특별 신호만을 이용해 개별 사용자를 구별하고 인식 가능

추적 방지 기술

Opt Out

  • 당사자가 자신의 데이터 수집을 허용하지 않는다고 명시할 때 정보 수집이 금지되는 제도

private browsing(비공개 브라우징), incognito mode(익명 모드)

  • 브라우저 세션이 종료되면 브라우저가 방문 기록, 쿠키, 기타 브라우징 데이터를 지우도록 지시하는 클라이언트 측 메커니즘
  • 같은 컴퓨터를 쓰는 다른 사용자가 우리의 활동을 알 수 없지만, 우리가 방문한 사이트에 기억된 내용을 지워 주지는 않는다

Blacklight

  • 무방비 상태의 브라우저를 시뮬레이션하며, 트래커, 제3자 쿠키, 마우스와 키보드 모니터링, 다른 의심스러운 행태를 알려 준다
    • 브라우저에 국한되지 않으며, 메일 프로그램이나 다른 시스템에서도 사용된다



Cloud Computing

  • 사용자와 관련된 여러 모든 정보들이 사용자의 개인 기기에 저장되는 것이 아닌 해당 프로그램 회사의 서버에 저장되어 물리적인 위치의 영향을 받지 않는 시스템
    • 어느 곳에서나 데이터에 접근 가능

Server <-> Client, Trade-Off

  • JS가 특정 브라우저에 얽매이지 않는 경우
    • 코드의 부피가 커지며 프로그램을 클라이언트에 보내는 데 더 많은 대역폭 필요, 추가 검사로 인해 브라우저가 더 느려질 수도 있다
      • 서버가 클라이언트가 어떤 브라우저를 사용하는지 확인하고 특정 브라우저에 맞춰진 코드를 보내는 방법 존재
  • 데이터 압축되지 않은 상태로 전송하는 경우
    • 서버와 클라이언트에서 처리할 일은 줄어들지만 대역폭이 더 많이 필요
    • 반대로 압축을 한다면 대역폭은 적게 사용하지만 서버와 클라이언트 모두에서 처리(압축하고 풀고)가 필요

관련 여러 문제

  • 데이터의 소유, 문제 발생에서의 책임, 국가와 개인의 사이에서 발생할 수 있는 마찰 등
  • 특히 국가와 기업간의 마찰 수준이 가장 크다고 봄



AI, Artificial Intelligence

  • 보통 인간만 할 수 있다고 생각하는 일을 컴퓨터를 사용해서 하는 것을 포괄하는 개념

ML, Machine Learning

  • 인공지능의 부분 집합, 알고리즘을 훈련하는 데 사용되는 광범위한 기술군
    • 이러한 훈련을 통해 알고리즘이 자체적으로 결정을 내려서 AI라 불리는 과제를 수행하도록 함
  • 기본 아이디어는 특정 문제 해결을 위해 미리 규칙을 제공하거나 명시적으로 프로그래밍하지 않은 상태에서 알고리즘에 많은 예를 주고 스스로 '학습'하도록 하는 것
  • Labeling이 되어있는 Training Set을 프로그램에 제공해 훈련이 끝나면 머신러닝 알고리즘은 훈련 집합에서 학습한 내용을 기반으로 새로운 대상을 분류하거나 대상의 값을 예측
  • 알고리즘은 훈련 데이터의 성공과 실패 결과를 활용하여 최선의 결과를 얻기 위해 훈련 데이터의 특징을 조합하는 방법을 학습
    • 머신러닝 알고리즘은 좋은 결과를 얻을 확률을 높이는 시도일 뿐 완벽을 보장하지는 않는다

Supervised Learning, 지도학습

  • 레이블이 붙은 데이터를 기반으로 학습하는 것
  • 대부분 올바른 범주로 레이블이 지정되거나 정확한 값이 주어진 많은 데이터를 처리하는 구조
  • 지도 학습 알고리즘은 이러한 훈련 집합을 바탕으로 최선의 분류 혹은 예측할 수 있게 하는 매개변수 값을 결정
  • 사실 이 알고리즘은 개별적인 사례를 일반화하는 방법을 학습한다고 볼 수 있다
    • 알고리즘에 어떤 '특징'이 올바른 결정을 내리는데 중요한 특징인지도 알려주어야 한다
      • 하지만 그런 특징 간에 어떻게 가중치를 둘지, 여러 특징을 어떻게 조합할지는 알려 주지 않는다
        => 일반화할 수 있는 model을 만들기 위한 Parameter를 선정하는 것이 point라 생각한다
  • 종류
    • 분류 - classification
      • 항목을 적합한 그룹으로 넣는 작업
    • 예측 - prediction
      • 특정 숫자 값을 예측하는데 사용
      • ex) 주택 가격, 스포츠 경기 결과 등

Over-fitting

  • 알고리즘이 훈련 데이터에는 좋은 성능을 보이지만, 새로운 데이터에는 훨씬 떨어지는 성능을 보이는 현상
  • 훈련 데이터가 충분하지 않았거나, 특정 집합을 잘못 골랐을 수도 있다
  • 알고리즘이 훈련 데이터에 있는 편향을 강화하는 결과를 낳기도 한다
  • 이 현상은 형을 선고하거나 재범 가능성을 예측하는 것처럼 형사 사법 제도에 적용될 때 특히 민감하며 신용 평가, 대출 심사, 이력서 검토 등에도 마찬가지

Unsupervised Learning

  • 레이블 없는 훈련 데이터, 어떤 이름이나 값으로 레이블이 지정되지 않은 데이터로 학습
  • 데이터에서 패턴이나 구조를 찾고, 도출한 특징을 바탕으로 항목을 그룹화
  • ex) k-평균 군집화 알고리즘(k-means clustering algorithm)
    • 같은 그룹 내의 항목 간 유사도는 객대화라는 동시에 다른 구룹과의 유사도는 최소화하는 방식으로 데이터를 k개의 그룹에 나눠서 할당
    • 데이터 중 이상치를 식별하는 데 유용
    • 대부분의 항목이 명백한 방식으로 군집화되는 와중에 그렇지 않은 항목이 몇개 있다면 해당 항목들은 조사가 더 필요한 데이터
    • 레이블이 지정된 훈련 데이터가 필요하지 않아 비용이 많이 들지 않는다는 장점이 있지만 모든 상황에 적용 가능하지는 않다
    • 군집을 이룰 만한 유용한 특징 집합을 파악해야 하고 군집이 몇 개 있을지도 잘 알고 있어야 한다

Natural Language Processing

  • 머신러닝의 하위 분야
  • 컴퓨터가 인간의 언어를 처리하는 방법을 다룬다
    • 어떤 텍스트가 주어졌을 때 그 의미가 무엇인지 이해하고, 내용을 요약하고, 다른 언어로 번역하고, 음성으로 변환
    • 심지어 사람이 작성한 것처럼 보이는 의미 있는 텍스트를 생성하기도 함
  • 음성을 인식하여 텍스트로 변환하며, 질문의 의미를 파악하고, 관련된 답을 검색한 다음, 자연스러운 음성 응답을 합성해서 출력한다

Eliza - 일라이자

  • 자연어를 이용해서 컴퓨터와 소통하려 했던 초기 시도 중 하나

Talk to Transformer - 노크 투 트랜스포머

  • 사용자가 어떤 문장을 제공하면 그럴듯하게 이어지는 문장을 생성
  • 웹페이지 8백만 개에서 비롯된 데이터베이슬르 기반으로 구현되었고, 이전에 나온 모든 단어에서 도출된 패턴을 바탕으로 다음에 나올 단어들을 예측

기계 번역

  • 컴퓨터로 한 언어를 다른 언어로 번역하는 것
  • 50년대에는 60년대에, 60년에는 70년대에 해결될 문제라 여겼지만 사실 현재까지 그 수준에 도달하지 못했다
  • 컴퓨팅 성능이 좋아졌고, 머신러닝 알고리즘을 훈련하는 데 사용하는 대량의 텍스트가 마련된 덕분
  • 오늘날 기계 번역은 어떤 텍스트가 무슨 내용인지 개략적으로 파악하는데 도움이 된다
    • 특히 여러분이 전혀 모르는 언어나 문자로 구성된 텍스트일 때 유용

Sentiment Analysis - 감성 분석

  • 어떤 텍스트가 기본적으로 긍정적인지 부정적인지를 판별하려고 한다
  • 고객 의견과 사용 후기, 설문조사 응답, 뉴스 기사 등을 평가하는 데 이용

Side Effect

  • 인공지능과 머신러닝은 컴퓨터 비전, 음성 인식과 생성, 자연어 처리, 로봇 공학, 이외 다른 많은 영역에서 획기적인 발전을 가져왔다
  • 동시에 공정성, 편향성, 책임 소재, 적절한 윤리적 사용 문제애 관한 심각한 우려를 불러 일으킨다
  • 가장 중요한 문제는 머신러닝 시스템이 내놓는 답이 '맞아 보일'수 있지만 이것이 학습한 데이터에 내재한 편향성을 반영하고 있다는 점
  • 훈련 데이터에 존재하는 부수적 요소 때문에 머신러닝 알고리즘이 잘못된 방향으로 학습할 가능성이 있다
    • 인공지능이나 머신러닝 시스템도 입력 데이터보다 나을 수 없고, 시스템이 데이터에 내재된 편향성을 강화하는 방향으로 학습할 확률이 심각할 정도로 높다
    • ex) Amazon Ring, 유색 인종 차별을 기계화 하는 것처럼 보일 수 있다
  • 자율주행 자동차, 오토파일럿, 산업용 제어 시스템 등 그 외 다수의 안전 필수 시스템(safety-critical system)에서 머신러닝을 어떻게 다룰지 확실한 방식이 보장되지 않는다

DL, Deep Learning

  • 머신러닝의 특정한 형태
    • 우리 뇌에 있는 신경망과 유사한 계산 모델(인공 신경망)을 사용
  • 어떤 뉴런 집합이 저수준 특징을 검출하면, 이 출력이 다른 뉴런 집합에 입력되어 저수준 특징을 기반으로 더 높은 수준의 특징을 인식하는 과정이 이루어지며 이와 같은 과정이 다음 뉴런 집합으로 계속 이어짐
  • 시스템이 학습하며 어떤 뉴런 집합 간의 연결은 강화되고 다른 연결은 약화
  • 컴퓨터 비전 분야에서 뛰어난 성과 보임
  • 뉴런의 개층이 여러 개인 경우
    • 컴퓨터 비전과 관련된 과제에 특히 성공적
  • 많은 로봇 공학 응용 분야의 핵심 기술
    • 특히 자율주행 자동차에서 중요
    • 주변의 환경을 해석하고 빠르게 처리할 수 있어야 하기 때문
  • 극적인 성공 사례 중 하나는 체스와 바둑처럼 난이도가 매우 높은 게임 분야
    • 프로 선수보다 더 잘하는 알고리즘을 만든 것
    • ex) AlphaGo

Computer vision

  • 컴퓨터가 영상에 있는 물체를 식별하거나 사람 얼굴 같은 특정 개체를 인식하도록 하는 기술
    • 얼굴 인식 기술은 각종 우려를 불러 일으키고 있다
    • 가장 명백한 문제는 정교해진 기술이 감시를 강화하는데 기여할 수 있다는 점이지만 얼굴 인식은 미묘한 차별도 가능하게 한다
  • 대부분의 얼굴 인식 시스템은 유색 인종을 대상으로는 정확도가 떨어진다
    • 이는 훈련용 이미지에 인종적 다양성이 부족하기 때문
    • 때문에 2020년 전 세계적으로 인종 차별에 반대하는 시위가 진행되는 동안 주요 기업에서는 얼굴 인식 관련 사업에서 한발 물러나는 움직임을 보였다
    • 효과가 굉장히 거대하진 않지만 상징적인 움직임

Reinforcement Learning, RL

  • 강화학습, 딥 러닝의 한 형태에 기반
  • 외부 환경에서 오는 피드백을 통해 계속해서 자신의 성능을 개선
    • ex) 게임의 승 패 등

인공신경망

  • 컴퓨터 신경망이라고도 부름
  • 뉴런의 연결 구조를 단순화한 버전
  • 일정한 패턴으로 연결된 인공 뉴런을 기초로 한다
    • 각 뉴런에는 입력을 조합하는 방식에 대한 규칙이 있으며 각 간선에는 그 간선을 따라 전달되는 데이터에 적용되는 가중치가 있다

핵심 아이디어

  • 초기 계층이 저수준 특징을 식별
  • 이후 계층은 물체나 색상 영역 같은 고수준 특징을 식별
  • 마지막 최종 계층은 고양이, 얼굴 같은 객체를 식별
  • 신경망에서 정보는 순방향(forward)뿐만 아니라 역방향(backward)으로도 흘러 신경망은 처리를 반복하고 각 노드에서 가중치를 업데이트함으로써 각 계층의 인식 성능을 개선
  • 신경망은 계속해서 입력을 처리하고 출력을 생성함으로써 학습하는데 매우 많은 횟수로 반복
    • 반복할 때마다 알고리즘은 신경망이 처리를 수행한 결과와 우리가 원하는 결과 사이의 오차를 측정하고 다음 반복 시 오차를 줄이고자 가중치를 조정
    • 훈련 시간이 끝나거나 가중치가 크게 바뀌지 않으면 작동을 중지
  • 결정적으로 중요한 점은 찾아야 할 특징 집합이 주어지지 않아도 된다는 것
    • 뭐가 됐든 알아서 특징들을 찾으며 이 과정도 학습의 일부로 이루어짐
    • 이는 신경망의 잠재적인 단점으로 이어짐
    • 신경망은 자신이 식별한 '특징'들이 무엇인지 설명하지 않으며, 따라서 결과에 대해 구체적인 설명이나 근거를 제공하지 않음
    • 신경망을 맹목적으로 신뢰하기보다는 신중해야 하는 이유 중 하나

ML vs 통계

  • 통계와 겹치는 부분이 있기는 하지만 같지는 않다
    • 통계분석의 경우 어떤 데이터를 마든 메커니즘을 설명하는 모델을 가정하고, 데이터에 가장 적합한 모델에 대한 매개변수를 찾음
    • 머신러닝 시스템은 모델을 가정하지 않고, 데이터에서 나타나는 관계를 찾음
    • 일반적으로 머신러닝 시스템은 통계보다 더 큰 데이터셋에 적용
    • 둘 다 확률적인 것은 맞다



Cryptography - 암호

  • 남이 모르게 쓰는(secret writing) 기술
    • 프라이버시 침해 공격에 대한 최선의 방어책
    • ex) 카이사르 암호 - Caesar cipher, 메시지의 글자 세 자리씩 옮기는 간단한 암호화 방식
  • 암호화의 불안정성과 관련된 사례들을 나열하던 중 영국군이 앨런 튜링의 컴퓨팅 기술과 전문 지식을 사용하여 에니그마(Enigma) 기계로 암호화된 독일 군용 통신을 해독할 수 있어 2차 대전 기간이 크게 단축됐다는 주장 존재하다는 것을 보며 많은 사람들이 모인 국가 간의 전쟁에서도 한 국가가 모든 분야를 통달해 혼자만의 완벽한 승리를 쟁취할 수 없다고 생각했다. 우크라이나 러시아 사태를 보면서도 특정 유럽국가가 비교적 작지만 살아남을 수 있는데는 각 나라마다 특수 산업이 있으며 결국 여러 국가들이 굉장히 복잡한 이해관계로 얽혀있다 생각든다. 결국 사람이라는 것도 완벽할 수 없고 아주 작은 도움, 자극이라도 서로 받으며 지내는 사회적 동물이라는 생각이 든다
  • 키, key
    • 알고리즘에 사용되는 큰 비밀 수
    • 키를 알아야 인코딩, 디코딩 가능
    • ex) 카이사르 암호의 경우 키는 3
  • 모호함에 의한 보안 - security by obscurity
    • 암호 기법을 사용할 땐 암호 체계가 이미 알려져 있고 적수가 이를 완벽하게 이해하고 있어 모든 보안은 키에 달려 있다고 가정해야 하는데 그렇지 않고 어떤 암호 체계가 사용되었고 어떤 원리로 작동하는지 적수가 이해하고 있지 않다고 가정하는 것을 말함
    • 이는 작동하더라도 결코 오래가지 못한다
      • 누군가가 자신의 암호 체계가 완벽하게 안전하다고 말하면서 어떻게 작동하는지 알려 주지 않는다면, 그 체계는 안전하지 않다고 확신해도 된다
    • 검색해봤는데 책에 내용은 정확히 이해는 되지 않지만 검색을 통해 알 수 있는 것은 정보 전달의 오류가 발생하는 것을 말하는 것 같다. 압축을 해서 정보를 전송해도 상대방에서 압축을 풀지 못한다면 의미가 없는 인코딩이므로
  • 암호 체계는 개방형 환경에서 개발하는 것이 필수적
    • 취약점을 찾아내려면 가능한 많은 전문가의 경험이 필요
      • 그래도 체계가 제대로 작동할지 확신하기 어렵다
    • 코드에는 버그가 있을 수 있는데, 실수로 또는 악의적으로 삽입된다
      • 의도적으로 암호체계를 약화하려는 시도도 있다
      • ex) NSA가 중요한 암호 표준에 사용하는 난수 발생기

기법

비밀 키 암호 기법(secret key cryptography)

  • 같은 비밀 키를 사용하여 메시지를 암호화하고 복호화
    • 이 비밀 키는 메시지를 교환하고자 하는 모든 당사자에게 공유
    • 모두 알고리즘을 완전히 이해하고 있고 알고리즘에 결함이나 약점이 없다고 가정하면, 메시지 암호를 해독하는 유일한 방법은 무차별 대입 공격(brute force attack)
    • 모든 비밀 키를 시도해 암호화에 사용된 키를 찾는 방법, 시간 오래 걸림
  • 문제점
    • 키 분배(key distribution)
      • 통신 중인 각 당사자가 키를 알아야 하므로 키를 각자에게 전달할 안저한 방법이 있어야만 한다
    • 키 확산(key proliferation)
      • 서로 관련 없는 여러 당사자들과 각각 은밀한 대화를 하려면 각 그룹에 별도의 키가 필요하므로 키 분배 문제가 더 어려워진다
    • 이런 까다로움 때문에 공개 키 암호 기법이 개발됨

공개 키 암호 기법

  • 사람마다 공개 키와 개인 키로 구성된 키 쌍(key pair) 갖고 있다
  • 쌍으로 된 키는 수학적으로 연관성이 있고 들 중 하나의 키로 암호화된 메시지는 다른 하나의 키로만 해독할 수 있으며 그 반대도 마찬가지
    • 암호화된 메시지를 주고 받기 위해서는 메시지 수신자의 공개 키를 사용하여 메시지를 따로따로 암호화해야 한다
    • 발신자가 수신자의 공개 키로 압축을 해서 암호화된 메시지를 보낸다면 수신자는 압축을 풀 수 있는 유일한 방법인 개인 키를 사용해 압축을 풀 수 있는 구조
  • 키가 충분히 길다면 공격자가 비밀 메시지를 해독하거나 공개 키에서 개인 키를 추론하는 것은 계산상 불가능
    • 공격자가 알려진 알고리즘 중에서 최상의 알고리즘을 사용할 수 있더라도, 실행 시간이 키 길이에 따라 지수적으로 증가
  • 실제 사용될 때 공개 키는 정말로 공개
    • 개인 키는 엄격히 비밀로 유지되어야 하며, 이 키 쌍의 소유자만 아는 비밀
  • 디지털 서명(digital signature)방식을 구현하는데도 사용되어짐
  • 순방향 비밀성(forward secrecy) 기법
    • 만약 발신자의 개인 키가 공개되면 이전에 발신자가 공개되면 이전에 그녀에게 전송된 모든 메시지를 해독할 수 있으며, 과거에 발신자가 했던 서명은 신뢰할 수 없어지는데 이를 도와주는 기법 중에 하나
    • 일회용 비밀번호로 암호화되고 비밀번호는 폐기시킨다
      • 일회용 비밀번호 생성 방식이 적수가 다시 만들 수 없는 방식이라면 개인 키가 해킹되더라도 한 메시지에 대한 비밀번호 하나를 아는 것만으로는 이전 또는 이후 메시지를 해독하기 어렵다
  • 종류
    • RSA
      • 가장 널리 사용되는 공개 키 알고리즘
      • 매우 큰 합성수는 인수분해하기 어렵다는 점에 기반을 두고 있으며 인수를 알고 있는 사람의 경우 암호화된 메시지를 빠르게 해독할 수 있지만 그 밖의 모든 사람은 사실상 큰 정수를 인수분해해야 하는데 계산적으로 실행이 불가능
  • 다이제스트(message digest) 또는 암호 해시(cryptographic hash)
    • 공개 키 알고리즘은 속도가 느리기 때문에 문서에는 간접적으로 서명할 때가 많은데 이 때 사용되는 위조할 수 없는 방식으로 원본에서 도출한 훨씬 작은 값

대칭 키 암호 기법(symmetric key cryptography)

암호 공격

  • 암호 기법 알고리즘은 다양한 방법으로 공격받을 수 있다
  • 빈도 분석 - frequency analysis
    • 각 기호의 출현 횟수를 분석
    • 간단한 대체 암호를 풀 때 잘 통한다
    • 이를 피하기 위해서는 모든 기호가 유사한 비율로 사용되도록 하고 암호화된 형태에서 분석해 낼 패턴이 없도록 만드는 알고리즘을 마련해야 한다
  • 기지 평문 - known plaintext
    • 이전에 사용된 평문과 암호 메시지 쌍을 입수하여 키를 추측하는 방식
  • 선택 평문 - chosen plaintext
    • 임의의 평문을 선택해 그 평문을 암호화한 메시지를 입수하여 키를 추측하는 방법
  • 좋은 알고리즘은 이러한 모든 공격을 견딜 수 있어야 한다

정보 보호

Tor

  • 암호 기법을 사용하여 연결의 최종 수신자가 연결이 시작된 위치를 알 수 없을 정도로 대화를 감추는 시스템
  • 인터넷 트래픽을 일련의 중계 노드를 통해 전송하고자 암호 기법을 사용
  • 각 중계 노드는 본인과 경로상의 인접한 중계 노드의 정체만 알고 나머지 중계 노드의 정체는 모른다
    • 경로상의 첫 번째 중계 노드는 발신자가 누구인지 알고 있지만, 최종 목적지는 알지 못한다
    • 마지막 중계 노드는 목적지를 알고 있지만, 누가 연결을 시작했는지 알지 못한다
    • 중간에 있는 중계 노드는 자신에게 정보를 제공한 중계 노드와 자신이 정보를 보내는 중계 노드만 안다
    • 중계 노드마다 한 겹씩 암호화돼 있다
      • 각 중계 노드는 메시지를 다음 노드로 전송하면서 한 겹의 암호화를 제거
      • 일반적으로 세개의 중계 노드가 사용됨
  • Tor 브라우저 이용해 사용
    • 파이어폭스의 수정버전
    • 브라우저의 사용성은 파이어폭스와 거의 같지만 몇 겹의 암호화를 통과하는데 시간이 걸리므로 기본 브라우저보다 약간 느릴 수 있다

Tails - The Amnesic Incognito Live System

  • DVD, USB 드라이브, SD 카드 같은 부팅 간으한 장치에서 실행되는 특별한 리눅스 배포판
  • 토어와 토어 브라우저를 실행하며, 실행되는 컴퓨터에 흔적을 남기지 않는다
    • 테일즈에서 실행되는 소프트웨어는 인터넷 연결 시 토어를 사용하므로 여러분은 익명으로 유지
  • 로컬 저장 장치에는 아무것도 저장하지 않고 주기억 장치에만 데이터를 저장, 테일즈 세션 후에 컴퓨터가 종료되면 메모리 내용은 지워짐
  • 오픈 소스이며 웹에서 다운로드 가능

Bitcoin

  • 익명 화폐를 만드는 암호 기법, 암호 화폐(cryptocurrency)
  • 정부나 다른 기관에서 발행하거나 통제하지 않으며, 전통적인 화폐인 지폐나 동전과 달리 물리적 형태가 없다
  • 그 가치는 정부가 발행하는 돈처럼 명령에 의해 정해지거나, 금 같은 어떤 희소한 천연자원에 기반을 두지도 않는다. 그러나 금과 유사하게 사용자들이 상품과 서비스에 얼마만큼 비트코인을 지불하고 받으려고 하는지에 따라 그 가치가 결정
  • 두 당사자가 중개인이나 신뢰할 수 있는 제3의 기관을 거치지 않고 '비트코인' 그 자체를 교환할 수 있도록 하는 P2P 프로토콜을 사용
  • 현금을 모방한 방식으로 이용
  • 비트코인은 교환(소유권 이전)되며 거래 과정에서 만들어지거나 없어지지 않으며, 거래를 뒤집을 수 없도록 보장한다
    • 그 과정에서 거래 당사자는 서로에게, 그리고 외부 세상에도 모두 익명으로 남는다
  • 모든 거래는 공개 장부(public ledger)를 유지
    • 이는 블록체인(blockchain)이라 한다
    • 하지만 거래 배후에 있는 당사자들은 익명이고 사실상 암호 기법에서 공개 키에 해당하는 주소로만 식별된다
    • 비트코인은 지불 정보를 검증하고 공개 장부에 저장하기 위한 계산적으로 어려운 작업을 일정량 수행함으로써 생성된다(채굴된다)
    • 블록체인의 블록들은 디지털 서명되고 이전 블록들을 참조하게 되어 있어서, 블록들을 만들기 위해 원래 했던 작업을 다시 수행하지 않고서는 이전 거래를 수정할 수 없다
    • 맨 처음부터 이루어진 모든 거래 상태가 블록체인에 함축되어 있으며, 이론상으로는 다시 생성할 수 있다
    • 하지만 그 모든 작업을 다시 수행하지 않고서는 아무도 새로운 블록체인을 위조할 수 없기 때문에 이 일은 계산적으로 실행 불가능하다
  • 블록체인이 완전히 공개되어 있다는 점에서 비트코인은 익명성(anonymity)은 가명성(pseudonymity)에 더 가깝다
    • 모든 사람이 특정 주소와 연관된 모든 거래의 모든 정보를 알 수 있지만, 그 주소가 여러분의 것인지는 모른다
    • 하지만 주소를 적절히 관리하지 않으면 우리가 했던 거래와 연결되어 익명성을 잃을 수 있으며 또한 개인 키를 잃어버리면 비트코인을 영원히 잃게 될 수도 있다
    • 거래 배후의 당사자들이 주의하면 익명을 유지할 수 있으므로 비트코인은 마약 거래, 랜섬웨어 데이터 값 지불이나 다른 불법 행위용으로 인기 있는 화폐

암호 기법에 대한 정리

  • 최신 기술에서 필수적인 부분
    • 우리가 인터넷을 사용할 때 프라이버시를 보호하고 보안을 유지하는 기본 메커니즘이다
    • 하지만 이는 선한 사람, 악한 사람을 막론하고 모두에게 도움이 된다
  • 세계적 수준의 암호학자는 소수에 불과하며 지리적으로 멀리 흩어져 있어, 어떤 국가도 암호학자를 독점할 수는 없다
    • 더욱이 암호 기법 코드는 대부분 오픈소스이므로 누구나 구한다
    • 따라서 특정 국가에서 강력한 암호 기법을 불법화하려고 시도하더라도 다른 나라에서 암호 기법이 사용되는 것을 막지 못한다

0개의 댓글