우분투 리눅스에서 ‘페이스 아이디(face id)’처럼 로그인 해보자
아이폰으로 얼굴 인식을 하다 문득 생각이 들었다. ‘우분투’에서는 얼굴 인식으로 로그인을 할 수 없을까?
찾아보니 있더라. https://github.com/boltgolt/howdy 라는 패키지이다.
오늘날의 핸드폰에서 경험해볼 수 있는 ‘얼굴 인증(face authrization)’을 통한 로그인 및 패스워드 입력을 우분투에서도 경험해볼 수 있다. 설치도 간단하다. 얼굴 인증에 필요한 웹캠 하나만 있으면 된다.
먼저 저장소를 추가한 뒤 업데이트를 하고 howdy를 설치한다.
sudo add-apt-repository ppa:boltgolt/howdy
sudo apt update
sudo apt install howdy설치를 하다 보면 [f/b/s]중 하나를 선택하라고 한다. 빠른(Fast) 인증을 원하는지, 보안상 엄격한(Secured) 인증을 원하는지, 아니면 이 둘의 균형(Balanced)을 원하는지를 묻는 것이다. (필자는 무난하게 b를 했다).
설치는 간단하지만 설치 용량은 재법 된다(500메가 이상). 인증 과정에서 다양한 패키지를 설치하고 컴파일한다.
설치가 되고 나면 howdy에서 어느 카메라 디바이스를 사용할 것인지를 정확히 설정 파일에 기재를 해야 한다.
카메라 디바이스를 찾기 위해서는 다음의 패키지가 필요하다.
sudo apt install v4l-utils설치를 했으면 운영체제에서 사용할 수 있는 디바이스 리스트를 조회해보자.
$ v4l2-ctl --list-devices
Microsoft® LifeCam HD-3000: Mi (usb-0000:02:00.0-1.2):
/dev/video0
/dev/video1
/dev/media0필자에게 설치되어 있는 웹캠은 한 대 뿐이다. 그런데 디바이스를 조회하니 웹캠 안에 세 개의 미디어 디바이스가 조회가 된다. 하지만 이 모든 디바이스가 ‘카메라’ 디바이스는 아니다. 이 중 카메라 디바이스를 찾아야 한다.
$ v4l2-ctl --device=/dev/video0 --all
...
Crop Capability Video Capture:
Bounds : Left 0, Top 0, Width 640, Height 480
Default : Left 0, Top 0, Width 640, Height 480
Pixel Aspect: 1/1조회를 해보면 ‘Capability’가 포함되어 있는 디바이스가 있다. 이 디바이스가 카메라 디바이스다. 필자의 경우 video1 은 케퍼빌리티가 없다. media0은 목록에서는 조회가 되지만, 실제로 디바이스 조회를 해보면 존재하지 않는 디바이스라고 나온다.
정확한 카메라 디바이스를 찾았으면, 설정 파일에 기재를 해보자.
$ sudo howdy config
....
[video]
# The certainty of the detected face belonging to the user of the account
# On a scale from 1 to 10, values above 5 are not recommended
# Lower is better
certainty = 2.8
# The number of seconds to search before timing out
timeout = 4
# The path of the device to capture frames from
# Should be set automatically by an installer if your distro has one
#device_path = /dev/v4l/by-path/none
device_path = /dev/video0
sudo howdy config명령어를 입력하면 터미널에서 편집기가 뜬다. 여기에 아까 찾은 디바이스 주소를 기재를 한다.
저장을 하였으면 이제 사진을 추가해보자. 그런데 howdy 모든 과정이 다 명령어로 이루어진다. 실제로 어떻게 사진이 찍히는지 알 수가 없다. 그러므로 사진을 추가하기 전에 먼저 카메라 앵글을 확인해보자.
sudo howdy test 명령어를 실행하면 howdy에서 유일하게(?) gui 창이 나온다. 얼굴이 인식되는 경우 빨간 원으로 얼굴의 윤곽을 보여주므로 참고하여 앵글을 잡는다.
그럼 이제 사진을 추가하자.
$ sudo howdy add
Adding face model for the user $USER
Enter a label for this new model [Model #3] (max 24 characters): 모델 이름은 적어줘도 되고, 그냥 애터를 눌러도 된다. 이는 추후 ‘삭제’ 등 모델을 관리할 때 사용하는 라벨이다.
Please look straight into the camera
Scan complete
Added a new model to $USER앤터를 누르고 나면 카메라를 바로 응시하라고 하고, 간단히 사진 캡쳐를 한다.
모델이 추가가 되었으면 사용자 이름으로 모델이 추가되었다고 한다. 추가 된 모델 리스트는 아래의 명령어로 조회가 가능하다.
sudo howdy list인증을 해보니 카메라 컨디션(?)에 따라 인증이 잘 안될 때도 있다. 그래서 안될 때 마다 모델을 하나씩 추가해주니, 잘 되는 듯 하다. 어제는 되었는데 오늘은 인증이 안된다면, 별 고민 없이 오늘자 모델을 하나 더 추가하자;)
그럼 이제 인증이 되는지 확인해보자. 화면 잠그기를 통해 화면을 잠근 후, 로그인을 해보자.

인증이 된다면, 잠근 화면을 풀기 위해 ‘클릭’을 하자 마자 바로 화면이 열릴 것이다.
터미널에서 명령어를 칠 때도 적용된다.
sungyo@sungyobuntu:~$ sudo su
Identified face as $USER
root@sungyobuntu:/home/$USER#이제까지 howdy를 사용하여 ‘페이스 아이디’ 구성을 해보았다. howdy를 사용하면 USB와 같은 별도의 추가적인 인증 장치 없이도, 바로 인증과 사용이 가능한 환경을 구성할 수 있다.
얼굴 인증은 매우 간단한 방법이다. 하지만 여기에는 치명적인 ‘보안 문제(?)’가 있다. 무슨 문제인지는 언급하지 않겠다. 편하면서도 안전한 ‘인증 환경’을 구현하기 위해서는 2 Factor나 howdy의 인증 범위를 좁히는 식의 관리가 필요하다. 이는 pam 인증 설정을 통해 가능하다. 자세한 내용은 howdy깃헙의 위키를 참고하자.