디톡스 해커톤

Siders·2023년 4월 30일
1

f-lab 디톡스 해커톤 후기

해커톤이라고 하면 보통 무박 2일해서 체력에 부담이 되는데 하루동안 진행되는 것이라서 가벼운 마음으로 참가했다.

개발자이기에 디지털 기기와 떨어져 산다는 것은 있을 수 없는 일이다.
그러다보니 항상 휴대폰으로 SNS 또는 유튜브 쇼츠를 보게 되는데 이런것들이 가벼운 전환이 되지만 눈을 떼는 순간 이미 몇 시간이 지나간다.

이러한 삶을 계속 살다보니 어느 순간 하루동안 무언가를 했지만 아무 것도 남지 않는 삶이 되었다.

디지털 디톡스 라고 하루종일 휴대폰 및 인터넷을 멀리하고 책과 함께 하는 시간을 보내게 되었다.

실제로 해보니 한~두 시간정도는 괜찮았으나 그 이상으로 지나가니 음악을 듣고 싶어졌다.
그러한 기분이 들때 차라리 바깥 공기나 관심이 가는 책들 잠시 보는 것으로 분위기 전환했다.

그리고 진행하는 중간마다 참여자끼리 얼마큼 했는지 공유하는 시간을 가져서 생각보다 버틸만 했다.

결론적으로 내가 원하는 목표를 채우지는 못했지만 디지털 디톡스를 함으로 얻을수 있는게 무언인지는 잘 알게 되었다.

앞으로도 종종 디지털과 멀리 지내는 삶을 보내야 겠다는 마인드를 얻었다.

공부한 내용

암호학은 프로토콜을 보호한다

암호학은 방해 행위로부터 프로토콜을 방어하는 것을 목표로 하는 과학

신뢰할 수 있는 사람과 기밀 정보를 공유할 방법을 찾는 것이 중요

대칭 암호학: 대칭 암호화란?

암호학의 기본 개념 중 하나는 대칭 암호학이다.

중개인 없이 상대방에게 메세지를 전달하는 행위가 필요하다

그걸 해결하기위해 발명된 암호학적 알고리즘이 대칭 암호화 알고리즘

  • ENCRYPT
    • 비밀 키와 메세지를 받아서 동작 > 무작위로 보이는 일련의 숫자 출력
  • DECRYPT
    • 동일한 비밀 키와 ENCRYPT된 메세지 받아서 동작 > 원본 메세지 출력

이러한 프리미티브를 사용하려면 상대방과 내가 어떤 비밀 키를 사용할지 정해야 한다

비밀 키를 사용하여 메세지를 노이즈로 만들어 무작위와 구별할 수 없도록 만드는 과정은 암호학에서 프로토콜을 보호하는 일반적인 방법

대칭 암호화는 대칭 암호학 또는 비밀 키 암호학이라는 더 큰 범주의 암호학 알고리즘의 일부

케르크호프스의 원칙: 키만은 비밀로 지키자

프로미티브의 보안성에 대한 확신을 얻으러면 프리미티브를 전문가가 공개적으로 분석해야 한다

모호함을 바탕으로 한 보안을 신뢰했기에 문제

공개된 암호화 표준을 구착하는 것은 케르크호프스의 원칙이라는 개념과 관련

가장 많이 사용하는 알고리즘을 적이 발견하지 못하리라고 기대하는 건 어리석은 일이다. 차라리 적에게 공개적으로 개방하자

메세지를 암호화 하는 방법을 정확하게 알고 있다면 암호화 알고리즘을 안전하게 할 수 있는 방법은 비밀키 이다.

키의 비밀은 알고리즘 자체가 아니라 프로토콜을 안전하게 만드는 것

비대칭 암호학: 키 두개가 하나보단 낫지

상대방과 내가 대칭 키를 결정하기 위해 한 번 만났다고 가정할 수 있으나 이러한 방식은 참가자가 많은 프로토콜에서 실용적이지 않음

수십 억개의 웹사이트를 안전하기 접근하기 위해 웹 브라우저가 미리 이러한 사이트를 한번 만나야 하기 떄문

이러한 문제를 키 배포 라고 한다.

비대칭 암호학 또는 공개 키 암호학 이라는 암호학 알고리즘이 개발될 떄까지 난제였음

비대칭 암호학은 일반적으로 서로 다른 함수에 서로 다른 키를 사용하거나, 서로 다른 참가자에게 서로 다른 관점을 제공한다.

비밀을 공유한느 방법, 키 교환

비대칭 암호학 프리미티브는 키 교환이다.

최초로 발표된 공개 키 알고리즘은 DH 키 교환 알고리즘이다

DH 키 교환 알고리즘의 주 목적은 두 당사자 간의 공통 비밀을 설정

키 교환은 참여자가 공통으로 사용하는 파라미터 세트를 가지고 시작

  1. 엘리스 여왕과 밥 경이 정사각형 모양을 파라미터로 사용하기로 동의
  2. 각자 사용할 임의 모양을 선택
    1. 엘리스와 밥이 선택한 모양은 반드시 비밀로 유지
    2. 여기서 선택한 모양이 비밀키에 해당
  3. 두 사람이 비밀키를 선택한 후, 사용하기로 한 공통 모양과 개별적으로 결합
    1. 이 결합으로 고유한 모양이 만들어지는데 이는 공개 키가 된다.
    2. 공개 키는 공개 정보로 간주되므로 엘리스와 밥은 이제 공개 키를 교환
    3. 이 알고리즘을 공개 키 알고리즘이라 부르는 이유는 비밀 키와 공개 키로 구성된 키 쌍(key pair)이 필요하기 떄문
  4. 엘리스는 밥의 공개 키를 가져와 엘리스의 비밀 키와 결합, 밥은 엘리스의 공개 키를 가져와서 자신의 비밀키와 결합, 이제 양쪽의 결과가 동일

공유된 비밀의 사용은 프로토콜 참여자에게 달림

  1. 엘리스와 밥은 각자 비밀 키를 가리는 공개 키를 교환
  2. 다른 참가자의 공개 키와 각자의 비밀 키를 사용하여 공유된 비밀 생성
  3. 공개 키 교환을 관찰자로서는 정보 탈취를 위해 공유된 비밀을 계산하기에 정보가 충분하지 않음

실제로 DH 키 교환은 안전하지 않음

  1. 엘리스는 자신이 받는 모든 공개 키를 밥의 공개 키로 받아들임 > 교환을 가로채서 공개 키를 공격자의 것으로 변경가능
  2. 공격자는 이를 통해 엘리스에게 밥 행사를 할 수 있다.
    1. 이러한 상환을 중간자(man-in-the-middle)가 프로토콜을 성공적으로 공격했다고 말함

이러한 문제를 해결하려면 프로토콜을 다른 암호학 프리미티브로 보강하거나 밥의 공개 키가 무었인지 알아야 한다.
하지만 이러면 원점으로 돌아간것과 같다.

이전에는 엘리스와 밥의 공유된 비밀을 알아야 했다. 이제 엘리스와 밥은 각자의 공개 키를 알아야 한다.
어떻게 알 수 있을까 미리 만나서? 이런게 닭과 달걀의 문제가 다시 반복된다.
실제로 공개 키 암호학은 신뢰 문제를 해결하지는 못한다. 다만 참가자가 많으 때 절차를 단순화하는 효과는 있다.

비대칭 암호화, 대칭 암호화와는 다르다

DH 키 교환 알고리즘 발명이후 후속 발명들이 이루어졌다.

RSA 알고리즘이 그중 하나이다. RSA는 공개 키 암호화 알리즘과 서명 체계라는 두 가지 프리미티브를 포함

두 프리미티브는 모두 비대칭 암호학 이라는 더 큰 암호학 알고리즘의 일부

비대칭 암호학은 대칭 암호화 알고리즘과 유사한 목적을 가짐, 기밀성을 확보하기 위해 메세지를 암호화
그러나 두 참가자가 동일한 대칭 키를 사용하여 메세지를 암호화하고 해독하는 대칭 암호화와 비대칭 암호화는 매우 다르다

  • 두 가지 키, 공개 키와 비밀 키로 동작한다
  • 비대칭적 관점을 제공, 즉 누구나 공개 키로 암호화할 수 있지만 비밀 키의 소유자만 메세지를 해독
  1. 비대칭 암호화를 사용하려면 엘리스가 먼저 공개 키를 공개
  2. 이제 누구나 공개 키를 사용하여 엘리스에게 보내는 메세지 암호화 할 수 있음
  3. 엘리스는 비밀 키를 사용하여 암호를 해독

공개 키를 사용하려 메세지를 암호화 > 암호화하면 비밀키를 가진 사람만이 열 수 있다.

디지털 서명: 펜과 종이의 서명은 그리 다르지 않다

RSA는 비대칭 암호화 알고리즘과 더불어 디지털 서명 알고리즘도 제공

현실 세계의 서명은 그리 철저한 보안을 제공하지 못한다.

반명 암호화 서명은 동일한 방식임에도 사용자의 이름이 담긴 암호화 인증서를 제공, 암호화 서명은 위조가 불가능하며 다른 사람이 쉽게 확인할 수 있다.

  1. 엘리스가 밥을 신뢰한다는 것을 데이비드에게 전달하고 싶은 상황
    1. 다중 참여 환경에서 신뢰를 구축하는 방법, 비대칭 암호화를 사용하는 밥에 대한 전형적인 예
  2. 엘리스는 밥을 신뢰한다는 종이에 서명함으로써 데이비드에게 밥을 신뢰해야한다고 알릴 수 있음
  3. 데이비드는 엘리스와 엘리스 서명 알고리즘을 신뢰한다면 밥을 신뢰 할 수 있다.

엘리스는 RSA 서명 체계와 비밀 키를 사용하여 "엘리스는 밥을 신뢰한다" 메세지에 서명할 수 있다.
이는 무작위 노이즈처럼 보이는 서명을 생성한다.

  1. 엘리스는 메세지를 서명하기 위해 자신의 비밀 키를 사용하고 서명을 생성한다.
    1. 메세지 > 서명 함수 + 비밀키 > 서명
  2. 누구나 다음을 결합하면 서명을 확인 할수 있다.
    1. 엘리스의 공개 키
    2. 서명된 메세지
    3. 서명
  3. 결과가 참 또는 거짓 중 하나가 된다.
    1. 서명 + 서명된 메세지 > 검증, 공개키 > 참 또는 거짓
    2. 엘리스의 서명을 확인하려면 서명된 메세지와 엘리스의 공개키가 필요, 결과는 서명의 유효성을 검사하거나 무효화하는 것

지금까지 세 가지 서로 다른 비대칭 프리미티브를 배웠다

  • DH 키 교환
  • 비대칭 암호화
  • RSA를 사용한 디지털 서명

암호확의 분류

  • 대칭 암호확
    • 비밀 하나가 사용된다. 여러 참가자가 비밀을 알고 있는 경우 이를 공유된 비밀이라고 한다.
  • 비대칭 암호학
    • 참가자들은 비밀에 비대칭적인 관점을 가지고 있다. 예를 들면 일부는 공개 키를 알고 있고,일부는 공개 키와 비밀 키 모두를 알고 있다.

암호학을 나누는 다른 방법은 다음과 같다

  • 수학 기반 구성
    • 인수 분해와 같은 수학적 문제의 의존(디지털 서명 및 비대칭 암호화를 위한 RSA 알고리즘)
  • 휴리스틱 기반 구성
    • 암호 분석가의 관찰 및 통계 분석에 의존(대칭 암호화를 위한 AES)

보통 수학 기반 구성이 휴리스틱 기반 구성보다 훨씬 느리기 때문에 이 범주로 나누면 속도라는 요소도 들어간다.
보통 대칭 구성은 휴리스틱(효과가 있는 것으로 보이는 방법)을 바탕으로 하는 반면, 대부분의 비대칭 구성은 수학 문제를 바탕으로 한다.

암호화가 어떻게 도움이 될 수 있는지 정확히 이해하려면 이러한 프로토콜이 달성하고자 이해해야 한다.

  • 기밀성
    • 정보를 보면 안 될 사람에 대해 일부 정보를 마스킹하고 보호하는 속성이다(예를 들어 암호화는 전송 중인 메세지를 마스킹한다)
  • 인증
    • 대화 상대를 식별하는 것, 예를 들어 메시지가 실제로 엘리스에게온 것인지 확인

요약

  1. 프로토콜은 여러 참가자가 기밀 메시지 교환과 같은 일을 하기 위한 단계별 절차
  2. 암호학은 적대적인 환경에서 프로토콜을 보호하기 위한 것이다. 보통 비밀을 필요로 한다
  3. 암호학 프리미티브는 암호학 알고리즘의 종류다. 예를 들어 대칭 암호화는 암호학 프리미티브며, AES는 특정한 대칭 암호화 알고리즘이다.
  4. 서로 다른 암호학 프리미티브를 분류하는 방법 중 하나는 대칭 및 비대칭 암호학의 두 가지 유형으로 나누는 것이다. 대칭 암호학은 하나의 키를 사용하는 반면 비대칭 암호학은 두 개의 키를 사용한다
  5. 암호학의 속성은 분류하기 어렵지만ㄴ 대부분 인증 또는 기밀성이라는 두 가지 속성 중 하나를 제공하는 것을 목표로 한다. 인증은 무언가 또는 누군가의 진위 여부를 확인하는 것이고, 기밀성은 데이터 또는 ID의 프라이버시에 관한 것이다.

에프랩(f-lab) 멘토링 과정에서 진행한 프로그램 후기입니다.

profile
Frontend engineer

0개의 댓글