짤막한 이야기
-
[2021/02/09][짤막한 이야기 - 개체 인증]짤막한 이야기 2021. 2. 9. 11:53
[2021/02/09][짤막한 이야기 - 개체 인증] “개체 인증”이란 개체의 신원을 증명하기 위한 일련의 과정이다. 인증을 위한 수단으로는 “너는 무엇인가”, “너는 무엇을 가지고있는가”, “너는 무엇을 알고있는가”의 3종류로 분류된다. “너는 무엇인가”는 개체의 고유 특성으로 인증을 수행하며, 지문, 홍채 등을 이용한 인증이 이에 해당한다. “너는 무엇을 가지고있는가”는 개체의 소유물로 인증을 수행하며, 인증서, 보안카드 등을 이용한 인증이 이에 해당한다. “너는 무엇을 알고있는가”는 개체의 지식으로 인증을 수행하며, 패스워드, 질의응답 등을 이용한 인증이 이에 해당한다. 아이디와 패스워드를 이용한 인증이 가장 잘 알려진 인증 수단이며, 당신도 인스타그램에 로그인을 할 때 패스워드를 입력했을 것이다...
-
[2021/02/08][짤막한 이야기 - 해쉬 함수의 저항성]짤막한 이야기 2021. 2. 8. 18:01
[2021/02/08][짤막한 이야기 - 해쉬 함수의 저항성] “역상 저항성”이란 특정 해쉬 함수(Y = H(X))의 해쉬값(Y)이 주어졌을 때, 해당 해쉬값을 생성하는 입력값(X)을 알기 어려운 성질이다. “제2역상 저항성”이란 특정 해쉬 함수(Y = H(X))의 해쉬값(Y)과 입력값(X)이 주어졌을 때, 해당 해쉬값을 생성하는 또 다른 입력값(X’, 단, X’ != X)을 알기 어려운 성질이다. “충돌 저항성”이란 특정 해쉬 함수(Y = H(X))에 관련한 정보가 주어지지 않았을 때, 동일한 해쉬값(Y)을 생성하는 두 입력값(X & X’, 단, X’ != X)을 알기 어려운 성질이다. “생일 문제”의 이야기로 돌아가보면 생일이 동일한 두 사람을 찾는 것은 의외로 쉬운 일(충돌 저항성)이라고 하였지만,..
-
[2021/02/07][짤막한 이야기 - 생일 문제]짤막한 이야기 2021. 2. 7. 10:16
[2021/02/07][짤막한 이야기 - 생일 문제] “생일 문제”는 임의의 수의 사람이 모였을 때 생일이 같은 두 명이 존재할 확률에 대한 이야기이며, “생일 역설”이라고도 알려져 있다. 상상하는 것과는 달리 “23명”의 사람이 모여있다면, 그 중 생일이 같은 사람이 존재할 확률이 50%를 넘어간다(=50.73%). 생일이란 365일(윤년 제외) 중 하나에 들어가기 때문에 366명이 모이면 100% 확률로 생일이 겹치는 사람이 존재한다. 이는 앞선 “비둘기집의 원리”에서도 확인하였다. 그러나 366명이 아니라 23명만 모여도 생일이 겹치는 사람이 50% 확률이 넘게 존재하게되는데, 이는 중요한 문제를 시사하게 된다. “생일 문제”를 다시 잘 상상해보면 해쉬 함수에서 “충돌쌍”(입력값이 다르지만 동일한 ..
-
[2021/02/05][짤막한 이야기 - 비둘기집의 원리]짤막한 이야기 2021. 2. 5. 14:27
[2021/02/05][짤막한 이야기 - 비둘기집의 원리] “비둘기집의 원리”는 N+1마리의 비둘기를 N개의 집에 넣는 경우 최소한 한 집에는 비둘기가 두 마리 이상 들어가게 된다는 원리이다. 해당 원리는 귀류법으로 쉽게 증명할 수 있으며, 암호학에서는 매우 기본적이며 중요한 원리에 해당한다. 특히, 손실 압축(Lossy Compression)과 비손실 압축(Lossless Compression)에 대한 이야기에서 매우 중요하게 다루어진다. 앞선 포스팅에서의 해쉬 함수는 대표적인 손실 압축 함수에 해당하는데, 손실된 부분은 복원이 되지 않기 때문이다. 임의 길이의 입력값으로부터 고정 길이의 출력값을 출력하는 것이 해쉬 함수인데, 이 고정 길이가 N개의 비둘기집이 되는 것이다. 임의 길이의 입력값이라는 것..
-
[2021/02/04][짤막한 이야기 - 해쉬 함수]짤막한 이야기 2021. 2. 5. 14:26
[2021/02/04][짤막한 이야기 - 해쉬 함수] “해쉬 함수”는 임의의 길이의 데이터를 입력으로 하여 고정된 길이의 데이터(=”해쉬 값”)를 출력하는 함수이다. 해쉬 값을 획득하더라도 입력 값(원본 데이터)을 알 수는 없기 때문에 해쉬 함수는 일방향 함수의 일종이다. 암호학에서는 해쉬 함수를 주로 “무결성”을 보장하기 위하여 사용한다. “앨리스(Alice)”가 “밥(Bob)”에게 특정한 메시지를 보내고자 할 때, 해당 메시지의 해쉬 값도 별도로 전송하는 것이다. 해당 메시지는 “이브(Eve)”에게 내용이 노출되어도 무방하지만, 내용이 변경되면 안되는 메시지이다. 메시지의 해쉬 값은 메시지마다 거의 고유하다고 생각할 수 있으며, 메시지가 변조되었을 경우 그 메시지의 해쉬 값도 다르게 계산되기 때문에,..
-
[2021/02/03][짤막한 이야기 - 일방향 함수]짤막한 이야기 2021. 2. 5. 14:24
[2021/02/03][짤막한 이야기 - 일방향 함수] “일방향 함수”는 함수 중에서도 “역연산이 어려운 함수”를 의미한다. 즉 역함수의 계산이 어렵다는 의미이며, 이는 추후 포스팅할 “공개키 암호”에서의 기본 설계 원리에 해당한다. 대표적으로 “이산대수 문제”와 “인수분해 문제”가 “일방향 함수”에 해당한다. 인수분해 문제는 “X*Y”를 연산하는 것은 쉽지만 “Z”가 무엇의 곱인지 알아내는 것은 어렵다는 문제이다. 만약 특정한 값이 추가로 주어진다면 “역연산도 쉽게 해결”할 수도 있는 경우가 있는데, 이러한 함수는 “트랩도어 일방향 함수”라고 칭한다. #이야기 #루니프 #일방향 #함수 #역연산 #공개키 #트랩도어 [2021/02/03][Short Story - One-Way Function] “One-..
-
[2021/02/02][짤막한 이야기 - 코드 가상화]짤막한 이야기 2021. 2. 5. 14:24
[2021/02/02][짤막한 이야기 - 코드 가상화] “코드 가상화”는 소프트웨어 보호 기술의 한 종류이다. 보호 대상이 되는 코드 영역에 변형을 가한다는 점에서는 “코드 패킹”과 유사하다. 그러나 “패킹된 코드”와는 달리 “가상화된 코드”는 다시 원본 코드로 복원될 필요가 없다. 패킹된 코드와 가상화된 코드 모두 CPU에서 올바르게 해석되지 않는다. 가상화된 코드의 경우 프로그램 내에 “가상CPU(VCPU)”가 코드 형태로 존재하고, 해당 가상CPU에서 코드를 해석한다. 즉, 가상화된 코드를 해석할 수 있는 VCPU와 해석 결과에 따라 실제로 기능을 실행하는 “핸들러 코드”가 존재하게 된다. 가상화된 코드를 에뮬레이션하는 형태의 보호기법이기 때문에, 원본 코드로 복원되지는 않지만 성능이 매우 크게 저..
-
[2021/01/30][짤막한 이야기 - 카이사르 암호]짤막한 이야기 2021. 2. 5. 14:23
[2021/01/30][짤막한 이야기 - 카이사르 암호] “카이사르 암호”는 대표적인 치환 암호이다. 위의 예시에서는 치환을 위한 키가 “1”이고 각 영문자에 1을 더하는 방식으로 암호문을 생성한다. 앞선 포스트에서 언급하였지만, 키로 사용할 수 있는 숫자는 26가지이다. 따라서 공격자는 26번의 시도만으로 올바른 키를 찾아낼 수 있다. (단, 평문이 “Hello”와 같은 의미있는 영문자가 아니라면, 올바른 평문을 선택하는 것은 또 다른 문제이다.) 카이사르 암호는 또 다른 의미가 있다. 이 암호는 특정한 조건하에서 완전 안전성(Perfect Secrecy)을 보장하는 암호이다. 이상한 말이 아닐 수 없다. 암호알고리즘 자체가 사용 가능한 키의 개수가 적어서 취약한데, 완전 안전성을 보장한다는 것이 말이..