
자, 술잔 잠깐 내려놓고 형 얘기 좀 들어보세요.
오늘 안주는 좀 독특한 걸로 가져왔습니다.
맨날 "로그인 구현 어떻게 해요?", "JWT가 답인가요, 세션이 답인가요?" 이런 거 물어보는 주니어들 있죠?
솔직히 말해서, 지겹습니다.
네카라쿠배 갈 거 아니면 그냥 대세 따르라고 말해주고 싶은데, 오늘은 좀 다른 차원의 이야기를 해볼까 합니다.
최근에 IEEE(전기전자공학자협회)에 꽤 재미있는 논문이 하나 올라왔거든요.
제목부터가 골 때립니다.
"From Puzzle to Passkey: Physical Authentication Through Rubik’s Cube Scrambles"
해석하자면, 루빅스 큐브를 섞어서 물리적인 인증 키로 쓰겠다는 겁니다.
황당하죠?
저도 처음에 보고 "어떤 미친 X이 이런 걸 논문이라고 썼나" 싶었습니다.
청주에서 국비 학원 다닐 때, 강사님이 "비밀번호는 무조건 복잡하게"라고 가르쳤지만, 장난감을 들고 올 줄은 몰랐으니까요.
근데 이거, 자세히 뜯어보면 '진짜 보안'이 뭔지 보여주는 아주 훌륭한 사례입니다.
원리는 간단해요.
사용자가 루빅스 큐브를 특정 패턴으로 섞습니다(Scramble).
그리고 그 큐브의 면을 카메라로 찍거나 상태를 입력하면, 그게 바로 패스키(Passkey)가 되는 겁니다.
우리가 흔히 쓰는 OTP나 생체 인식과는 결이 다릅니다.
물리적인 객체(큐브)와 사용자의 기억(패턴)이 결합된 형태니까요.

생각해 보세요.
루빅스 큐브 하나가 가질 수 있는 경우의 수가 몇 개인지 아십니까?
약 4,300,000,000,000,000,000개입니다. 4300경(京)이에요.
이걸 무차별 대입(Brute Force)으로 뚫는다?
슈퍼컴퓨터 할아버지가 와도 불가능합니다.
게다가 이건 '디지털 해킹'이 원천적으로 불가능한 영역에 걸쳐 있습니다. 해커가 내 DB를 털어도, 내 책상 위에 있는 큐브가 섞인 상태를 모르면 로그인을 못 한다는 소리죠.
자, 여기서 "와 신기하다" 하고 끝내면 그냥 코딩 좀 하는 대학생 수준인 겁니다.
우리는 밥 벌어 먹고사는 프로잖아요.
이걸 현업에 어떻게 갖다 쓸지 고민해야죠.
제가 야놀자 레거시 청산할 때 뼈저리게 느낀 게 있습니다.
"보안이 강할수록 UX(사용자 경험)는 지옥으로 간다."
여러분이 만드는 서비스에 이거 넣으면 어떻게 될까요?
로그인하려고 가방에서 큐브 꺼내서 돌리고 앉아 있으면, 고객센터 전화기 불납니다. "로그인이 안 돼서 앱 지웠습니다"라는 리뷰가 앱스토어를 도배하겠죠.
하지만 관점을 살짝 비틀어봅시다. 일반 유저가 아니라, '최고 관리자(Root Admin)'라면 어떨까요? 서버 전체를 날릴 수 있는 권한을 가진 계정이라면요.
OTP 해킹당하고, 문자로 오는 인증번호 탈취당하는 세상입니다. 이런 상황에서 사무실 금고에 넣어둔 루빅스 큐브 하나가, 수십억 원짜리 보안 솔루션보다 더 강력한 물리적 방화벽이 될 수 있다는 겁니다.
제가 이 이야기를 왜 하냐면요. 요즘 주니어들, 너무 뻔한 길로만 가려고 합니다. 남들이 다 쓰는 라이브러리, 남들이 다 쓰는 OAuth 붙여놓고 "구현 끝났습니다"라고 하죠. 그건 코더(Coder)지, 엔지니어(Engineer)가 아닙니다.
이 논문을 쓴 사람처럼, "주변에 굴러다니는 장난감으로 4300경의 엔트로피를 만들어낼 수 없을까?" 같은 엉뚱한 상상을 해야 합니다.
SI 프로젝트 파견 가서 밤새우며 느낀 건데, 결국 문제를 해결하는 건 화려한 코드가 아니라 '맥락에 맞는 더러운 해결책'일 때가 많습니다.
코드 좀 지저분하면 어떻습니까. 카메라 라이브러리 갖다 써서 큐브 색깔 인식하는 코드가 '클린 코드' 책에 나오는 예제랑 달라도 상관없습니다. 중요한 건, 그게 비즈니스의 치명적인 구멍을 막아낼 수 있다는 사실이죠.
오늘 집에 가서 책장에 굴러다니는 루빅스 큐브 한번 찾아보세요. 그리고 한번 돌려보세요.
그 작은 장난감 안에, 우리가 맨날 머리 싸매고 고민하는 암호학의 정수가 들어있습니다.
개발은 모니터 안에서만 하는 게 아닙니다. 세상 모든 게 여러분의 코드가 될 수 있습니다. 쫄지 말고, 이것저것 다 갖다 붙여 보세요. 그게 진짜 실력입니다.


