글쓴이가 근무하는 곳에서 작년쯤 Yubikey라고 하는 USB 형태의 키를 주문했다.
이게 무슨 물건이냐하면, 가운데에 있는 동그란 센서에 손가락을 잠시 갖다대면 AES 알고리즘에 의한 알파벳 30자리를 무작위로 생성해준다. OTP라고 부르는데, 일명 One-TIme Password, 그러니까 1회용 비밀번호라는 의미. 심지어, 저 안에 펌웨어가 들어있어서 어떠한 방식으로 어떻게 암호화된 문자열을 생성할건지 직접 프로그래밍도 가능한데다, 2개의 메모리가 있어서 살짝 터치하는 것과, 약 2-3초간 터치하는 것에 따라서 다른 암호를 생성하게 할 수 있다. 이 패스워드를 생성해내는 구조와 알고리즘은 이미 오픈소스로 공개가 되어있으며, 파이썬/루비/PHP등 여러 언어에서 사용할 수 있도록 각종 예제와 프로그램 등을 무상으로 제공해준다. 관심이 있으신 분은 여길 보시면 되겠다.
http://www.yubico.com/products/yubikey-hardware/yubikey/technical-description/
많은 소프트웨어들이 이 Yubikey를 지원하고있는데, 특히 각종 웹사이트의 비밀번호를 저장해주는 인기 앱인 LastPass의 경우 프리미엄 회원은 Yubikey를 쓸 수 있게 해준다. 하지만, 여기서는 우분투가 설치된 컴퓨터에서 이 Yubikey로 로그인하는 것을 다뤄본다. 물론 당연하지만, Yubikey를 구매해야하며, 키가 없더라도 한 번쯤 포스팅을 읽어보면서 이게 대충 뭐하는 건지는 알 수 있도록 간단하게 설명하도록 했다.
관련 라이브러리를 설치한다.
$ sudo apt-get install libpam-yubico
이제 키를 USB에 꼽고 내 키가 가진 ModHex값(키 ID)을 알아내야한다. 두 가지 방법이 있는데, 가장 쉬운건 http://demo.yubico.com/php-yubico/Modhex_Calculator.php 사이트에 가서 Source Format에 OTP를 선택하고 String에는 키를 터치해서 패스워드를 입력해넣는 방법이다. 그러면 대략 14자리의 ModHex값을 보여준다. 또 다른 방법으로는 텍스트 편집기 하나를 열고 키의 센서를 터치해서 대략 3-4개 정도의 OTP를 생성하면, 맨앞 대략 14자리 정도의 문자열이 일치하는 것을 알 수 있는데, 이것이 바로 이 키의 ModHex 값이다.
예)
vvfvegvbtudalvegfjhtcdrghbljrhccuttgetifjgvr
vvfvegvbtudalcjcvhlcnutdgtcejftudbjdfrjbhfkh
vvfvegvbtudallilgekrilhnnekibdbrjhurbfgjrldd