
안녕하십니까 코딩 파인애플입니다
이번 시간에는 OTP 암호에 관해 알아보겠습니다.
OTL OTP 암호, One-Time Pad 암호라 불리는 암호는 평문과 같은 길이의 완전한 무작위 키를 딱 한 번만 사용하는 암호 방식을 일컫습니다
위 암호의 주 특징은
키가 무작위.
키 길이가 평문 길이와 동일.
한 번 쓴 키는 재사용 불가.
적인 특징이 존재합니다
컴퓨터에서는 보통 ❌⭕R로 표현합니다
암호문 = 평문 xor 키
❓❓❓ : 아니 그럼 그냥 베타적 논리합 암호 아님 ❓+‼️+🤔+🤔
예...사실상 OTP암호가 XOR과 거의 비슷하나 한 가지 차이점이 있다면
XOR 암호는 키가 평문에 비해 짧아 키를 여러 번 돌려쓰는 반면에
OTP 암호는 키의 길이가 평문의 길이와 완전히 동일하다는 점이 있습니다
XOR
평문 : 10110110 00101101 11101010
키 : 01101101 #돌려써야함
OTP
평문 : 10110110 00101101 11101010
키 : 01101101 11001010 00110111 #깔끔
XOR는 키가 짧아 돌려쓰는 특징이 있으며 그 과정에 패턴이 생기는 취약점이 존재하지만
OTP는 완전히 평문과 암호문의 길이가 동일해 정보이론적으로 완전한 보안이 증명된 암호 체계입니다
...예...그냥 XOR의 좀 특별한 변형입니다.

살짝 번외로 One-Time Password도 존재합니다
위에서 설명한 One-Time Pad와 완전히 다른 개념인데
One-Time Password는 은행 앱이나 2단계 인증에서 보는 6자리 숫자 같은 건데,
예를 들어 197211이라는 코드가 생성되면, 일정 시간이 지나거나 한 번 사용한 뒤에는 유효하지 않게 됩니다
카운터 값을 이용해 OTP를 생성합니다
로그인할 때마다 카운터가 증가하고, 비밀키와 카운터를 이용해 새로운 코드가 만들어집니다
OTP = f ( K, Counter )
현재 시간을 바탕으로 1회용 인증 번호를 생성합니다
특정한 시간마다 (30~60초) 1회용 인증 코드를 생성합니다
OTP = f ( K, Time )
대표적으로 Google Authenticator 와 2FA가 있습니다
이상으로 글을 마치겠습니다 감사합니다.
