본문 바로가기
아두이노

2단계 인증(2FA) 핸드폰 잠금: 도어락 보안 강화

by 모빌리티키즈 2025. 2. 3.
728x90
반응형

우리의 일상 생활에서 휴대폰은 매우 중요한 역할을 합니다. 여기에는 우리의 가장 중요한 비밀들이 담겨 있으며, 은행 업무, 메시지 전송, 업무 수행 및 본인 인증 등에 사용됩니다.

많은 응용 프로그램이 2단계 인증(2FA)을 사용합니다. 이는 훌륭한 보안 조치입니다. 이제 비밀번호만 필요한 것이 아니라 휴대폰의 인증 앱에서 일회용 비밀번호도 필요합니다. 그러나 가장 중요한 비밀이 담긴 휴대폰에는 한 가지 유형의 인증만 필요합니다.

사용자를 인증하는 일반적인 방법에는 세 가지 유형이 있습니다:

  1. 사용자가 알고 있는 것 (예: 비밀번호)
  2. 사용자인 것 (예: 얼굴 인식 또는 지문 스캐너)
  3. 가지고 있는 것 (예: 키 또는 인증 앱이 있는 휴대폰)

우리 휴대폰은 이 중 두 가지 방법을 사용합니다. 비밀번호, PIN 또는 패턴과 같은 사용자가 알고 있는 것을 사용합니다. 최신 휴대폰에는 얼굴 인식 또는 지문 스캐너와 같은 사용자인 것에 대한 옵션도 있습니다.

문제는 두 가지 방법을 모두 활성화한 경우에도 전화기에 둘 중 하나만 필요하다는 것입니다. 이는 우리가 사용하는 가장 중요한 장치 중 하나의 보안을 저하시킵니다.

이 프로젝트는 전화기에 추가 보안 계층을 추가합니다. 저는 세 번째 유형의 인증인 가지고 있는 것을 사용했습니다. 이는 이미 우리 전화기에서 사용된 방법과 겹치지 않기 때문입니다.

저는 내 휴대폰의 Google OTP 앱에서 찾을 수 있는 시간 기반 일회용 비밀번호(TOTP)를 사용하는 플립 폰에 대한 케이스를 만들었습니다. 다음은 작동 방식입니다:

  1. 단계 1: 설정 - 스마트폰에 Google OTP 앱을 설치하고 구성합니다.
  2. 단계 2: OTP 생성 - 앱을 열면 30초마다 변경되는 TOTP가 생성됩니다.
  3. 단계 3: OTP 입력 - 플립 폰을 잠금 해제할 때 TOTP를 입력하라는 메시지가 나타나며, 추가 인증 계층이 추가됩니다.

이 접근 방식은 비밀번호나 생체 인식 데이터에 접근할 수 있는 사람이 있더라도 TOTP가 없으면 기기를 잠금 해제할 수 없도록 보장합니다. 이 추가 보안 계층은 개인 정보 보호를 대폭 향상시킬 수 있습니다.

TOTP 기능을 활용하여 다양한 응용 프로그램에서 이미 널리 사용되는 보안 조치를 모바일 보안의 최전선으로 가져옵니다.

 

공급

  1. 아두이노 우노
  2. 4x3 키패드 (4x4가 제가 사용한 것입니다)
  3. 2 sg90 마이크로 서보
  4. 일부 전선
  5. 레이저 절단기에 대한 접근
  6. 삼성 Galazy Z Flip 5 (다른 Galaxy Z Flip 휴대폰에서도 작동할 것으로 예상합니다)

1단계: 구성 요소 배선

이 잠금이 작동하려면 3가지 구성 요소가 필요합니다. 먼저 4x3 키패드가 필요합니다. 나는 완벽하게 작동하는 4x4 키패드를 사용했습니다. 4x4 키패드를 사용하는 경우 키패드의 가장 오른쪽 와이어로 아무 작업도 수행할 필요가 없습니다. 왼쪽에서 오른쪽으로 작동하는 핀 2-8, 핀 2의 키패드에서 첫 번째 케이블, 핀 3의 두 번째 케이블 등을 사용했습니다. 4x3 키패드를 사용했기 때문에 가장 올바른 케이블을 사용하지 않았습니다.

다른 2 개의 구성 요소는 2 개의 서보 모터입니다. 5V, 접지 및 하나의 출력 핀을 모두 제공합니다. 나는 핀 9와 10을 사용했다. 내가 사용한 서보 모터를 사용하면 갈색 선을 접지에 연결하고 빨간색 선을 5V에 연결하고, 주황색 선을 핀 중 하나에 연결해야 합니다. 왼쪽 모터는 핀 9를 사용하고 오른쪽 모터는 핀 10을 사용합니다.

첨부 파일

2단계: 코드 프로그래밍

코드의 경우 다음 라이브러리가 필요합니다.

Servo 라이브러리: https://docs.arduino.cc/libraries/servo/

키패드 라이브러리: https://docs.arduino.cc/libraries/keypad/

leomil72의 swRTC 라이브러리 : https://github.com/leomil72/swRTC (clock module을 사용하지 않는 경우)

루카 덴텔라(Luca Dentella)의 TOTP 라이브러리: https://www.lucadentella.it/en/totp-libreria-per-arduino/

 

내가 사용한 코드는 Luca Dentella가 만든 예제 코드의 수정 버전입니다 https://github.com/lucadentella/Lego_OTPDoorLock

3단계: 사례

케이스는 레이저 커터를 사용했습니다.

첫 번째 이미지에는 전화기 홀더와 서보 홀더가 있습니다.

두 번째 이미지는 조립된 케이스의 나머지 부분을 보여줍니다.

이 부분과 뚜껑은 모두 첨부된 dxf 파일에 있습니다.

서보가 4 위치에 있을 때 이미지 0에서 볼 수 있는 위치에 있는 서보에 서보 혼을 추가합니다.

3mm 두께의 mdf를 사용했습니다.

상자는 86mm x 106mm x 15mm입니다.

돌출된 서보 홀더는 15.5mm, 길이 35mm, 두께 3mm입니다.

상자 내부는 80mm x 100mm x 12mm입니다.

4 단계 : 뚜껑

첫 번째 이미지는 뚜껑 부분을 보여줍니다.

두 번째 이미지는 조립된 뚜껑을 보여줍니다.

뚜껑은 기본적으로 서보 혼을 위한 2개의 구멍이 있는 작은 상자입니다.

상자는 122.1mm x 96.95mm x 9mm입니다.

3mm 두께의 mdf를 사용했습니다.

5단계: 인증자 구성

TOTP 장치를 구성하려면 arduino용 hmac 키와 Google Authenticator 앱용 base32 인코딩 키가 필요합니다.

TOTP 라이브러리를 만든 Luca Dentella는 다음과 같은 매우 유용한 사이트를 만들었습니다 https://www.lucadentella.it/OTP/

추가해야 할 유일한 것은 비밀 섹션에 10자 길이의 암호입니다.

이 사이트는 이미지 2에서 볼 수 있듯이 코드에 넣어야 하는 Arduino HEX 어레이를 생성합니다.

base32로 인코딩된 키는 이미지 3과 같이 Google OTP 앱에 추가해야 합니다.

6단계: 시간 구성

마지막 단계는 시간과 날짜를 구성하는 것입니다. TOTP는 시간과 날짜를 사용하여 암호를 생성합니다. 동기화되지 않으면 암호가 작동하지 않습니다.

나는 clock module을 사용하는 것이 좋습니다, 당신이 나와 같은 것을 가지고 있지 않다면 괜찮습니다.

swRTC 라이브러리를 사용하여 시간을 설정할 수 있으며, 라이브러리는 해당 초기 시간을 사용하여 Arduino가 켜져 있는 시간을 기준으로 현재 시간을 계산합니다. Arduino에서 전원을 분리하면 시간이 재설정되어 더 이상 동기화되지 않습니다.

Google OTP가 사용하는 시간대는 GMT입니다. GMT로 시간을 추가해야 합니다. 코드를 업로드 할 때 1 분 후에 시간을 추가하는 것이 좋습니다. 그런 다음 코드의 시간이 현재 GMT 시간과 일치할 때 Arduino에 전원을 추가할 수 있습니다.

GMT의 현재 시간은 여기에서 확인할 수 있습니다 https://greenwichmeantime.com/current-time/

7단계: 휴대전화가 안전하다는 사실을 알고 안심하세요.

이제 휴대 전화를 케이스에 넣고 상단에 뚜껑을 추가 한 다음 * 버튼을 눌러 장치를 닫을 수 있습니다.

이제 휴대 전화에 2 단계 인증이 있습니다!

8 단계 : 휴대 전화의 열쇠를 휴대 전화로 만들었다는 것을 깨달으십시오.

키패드에 코드를 입력할 때 먼저 # 버튼을 눌러 실수로 누른 버튼을 지웁니다.

이제 휴대전화가 안전해졌으므로 휴대전화의 Google 인증 앱에서 찾은 코드를 사용하여 잠금을 해제할 수 있습니다...

728x90
반응형