본문 바로가기
ОКБ (실험 설계국)/IT Project

4. [IDPW Project] - 4차 진행[2020.04.03 ~ 2020.04.11]

by Rosmary 2020. 4. 11.
728x90
반응형

필자가 이 프로젝트의 3차 작업을 마무리한 것이 3월 27일쯤이었다. 해당 차수의 작업을 마무리할때 즈음, 코로나의 여파 때문인지... 일감이 폭발적으로 몰려오는 바람에, 4차 진행 프로젝트는 5월 말이나 되어야 마무리가 될 것이라 생각했다. 하지만, 정말 다행스럽게도, 지난 포스팅을 작성한 바로 직후에, 이번 차수에 끝내야할 목표 대부분을 마무리한 덕에, 예상보다 매우 빠른 시점에, 4차 프로젝트를 종료할 수 있게 되었다. 

 

이번 차수의 작업에서 이루려 했던 목표는 아래와 같다.

1. 언어 설정 추가

2. 자동 로그인 및 인증키와의 연동

3. 각 함수별 인터럽트 신호에 대한 예외처리

4. 파일 암호화 방식 변경

 

이 중, 가장 단순한 노가다 작업인 3번을 제외한 나머지 목표는 모두 달성했다. 

 

1. 언어 설정 추가 

 

원래의 IDPW 프로그램은, 로그인 직전에 사용할 언어를 선택하는 화면이 반드시 나타났다. 하지만, 하나의 언어만 사용하는 사용자의 경우, 이 화면이 프로그램 실행 때마다 보인다면, 분명 사용함에 있어서 큰 불편함이 있을 것이라 판단했고, 언어 설정을 변경할 수 있도록 추가해주는 작업을 진행했다. 

 

 

설정과 관련된 항목을 보면, Language 필드가 존재하는 것을 볼 수 있는데, 현재 한국어와 영어, 그리고 설정되지 않음(Not fixed) 3 가지를 선택할 수 있다. 굳이 Not fixed를 넣은 이유는 다국적 사용자를 위함인데, Not fixed로 설정하면, 프로그램 실행 때마다 언어를 선택해주어야 하는 번거로움이 있더라도, 해당 프로그램 사용자가 여러 국적으로 구성된 경우라면 시작 전에 언어를 선택하는 것이 훨씬 효율적이기 때문이다.

 

 

이 때문에, 언어 설정을 진행하는 섹션도 추가했다. 단, 언어를 변경한 후, 변경 내용이 적용되기 위해서는, 현재 진행중인 IDPW를 종료하고 새로 실행해야 한다는 번거로움이 있다. 아직은 영어와 한국어 뿐이지만, 만약 IDPW 가이드에서 사용하는 문구를 제대로 번역하여 파일로 만들어놓는다면, 기타 언어도 추가가 가능하다. 이 작업은 추후에...

 

 

2. 자동 로그인 및 인증키를 이용한 타 계정의 로그인 진행

 

필자가 가장 공을 많이 들인 부분이다. 사용자가 등록한 계정을 Webdriver를 통해 자동으로 로그인 직전 상황까지 준비해 줄 수 있도록 만드는 부분 말이다. 

 

필자가 사용하는 IDPW 사용자로 로그인 후, 실제 등록되어 있는 티스토리 계정으로 자동 로그인을 하는 과정을 나타내면 다음과 같다.

 

(1) 티스토리 계정의 등록 및 확인

실제 필자가 사용하는 티스토리 계정의 ID와 비밀번호를 등록하고, 해당 계정이 제대로 IDPW에 등록되어 있는지 확인했다.

 

(2) 자동 로그인 시도

 

사용자 메뉴에 자동 로그인과 관련된 항목이 존재하는데, 이 항목을 선택하면, 위의 그림처럼 접속할 사이트의 주소와 계정 ID를 입력하는 란이 나온다. 이 접속 정보는 IDPW에 등록할 때 사용한 정보만 인식하기 때문에 필자가 사이트 이름을 www.tstory.com으 검색하게 되면, 해당 내용과 일치하는 정보가 없다는 경고 문구만 출력된다. 

 

만약, IDPW에 등록한 계정 정보와 정확히 일치한다면, 다음과 같이 브라우저 웹 드라이버가 자동으로 해당 사이트의 로그인 화면을 띄우며, 미리 등록했던 계정 정보를 로그인 폼에 입력시켜준다.

 

그리고, 해당 계정 정보로 로그인을 진행하면, 

위의 그림처럼 무사히 로그인이 잘 된 것을 확인할 수 있다.

 

이 프로세스는 사실 손이 많이 간다. 왜냐하면, 각 로그인 폼의 CSS 이름이 제각각이기 때문... 아직까지는 필자가 주로 사용하는 사이트에 대해서만 정보가 정리된 상태라, 그 외의 사이트에 대해서는 추가 정보 기입이 필요한 상황이다. 따라서 필자가 베타 버전으로 사용 중에 추가로 업데이트 작업을 꾸준히 진행해 줄 예정이다.

 

다음으로, 타 계정이 만약, 내 계정을 일회성으로 로그인해야 하는 상황을 가정하여 만든 연동 키 기능을 테스트했다. 이 기능은 타 IDPW 계정 사용자가, 내가 등록한 계정 하나를 로그인해야 하는 상황일때 유용한데, 일반적으로 한 개의 비밀번호를 여러 사이트에 사용하고 있는 일반인들 입장에서는, 타인에게 암호를 알려주는 과정없이 일회성으로 로그인만 되도록 만들어주는 것이 효과적이기 때문이다(물론, 이 과정은 웹사이트 계정에 대해서만 유효하다...).

 

현재 필자의 IDPW 프로그램에는 testuser1과 testuser2가 있고, testuser2가 필자의 nav*r 계정에 로그인해야 한다고 가정해보자.

 

testuser1에서 필자의 naver 계정을 등록했다.

물론, testuser2 계정에는 필자의 nav*r계정이 등록되어 있지 않다. 

 

testuser2에서 na**r 계정을 검색하면 결과 없음으로 나온다.

testuser2가 필자의 nav*r 아이디로 로그인을 해야하나, 필자는 비밀번호 하나를 다른 사이트에서도 사용하고 있기 때문에 testuer2에게 비밀번호를 알려주기가 매우 껄끄러운 상황이다. 따라서, 필자는 testuser2가 필자의 nav*r 계정에 단 한 번 접속할 수 있도록 인증키를 생성해주는 작업을 진행한다.

 

두 번째에 사용자와 계정을 공유하는 항목이 있다.

 

계정 공유를 위한 입력란은 위의 그림과 같이 나타나며, 계정을 공유할 IDPW 사용자와, testuser1 계정에서 등록한 필자의 nav*r 계정 정보를 입력하고 엔터를 치면 testuser1과 testuser2 사이에 인증키 쌍이 생성된다(이 인증키는 프로그램 내에서는 확인할 수 없다).

 

이제 testuser2에서는 해당 인증키가 존재하는 한, 필자의 nav*r 계정으로 1회 로그인이 가능해진다. 만약 testuser2가 필자의 계정으로 단 한번이라도 로그인을 시도했다면, 양 계정 사이 생성된 인증키는 사라진다. 따라서 1회 이상 로그인은 불가능해진다.

 

testuser2에서 testuser1의 등록 계정 로그인 시도 화면 및 로그인 준비 완료 확인

 

2차 로그인 시도 시 실패 문구 출력

 

하나의 컴퓨터를 여러 사용자가 사용할 경우, 타인에게 나의 계정을 알려줘야 되는 상황에 매우 유용하게 사용될 수 있다. 만약 이 프로그램이 외부와의 통신을 통해서도 작동이 가능하다면, 원격지에 있는 누군가에게 내 계정 중 하나를 1회 로그인 할 수 있도록 만들수도 있을 것이다... 물론 이 과정에 도달하려면 필자가 배워야 할 것이 훨씬 많기 때문에 당장은 무리고...

 

 

4. 각 파일에 대한 암호화 방식 변경.

 

이전 차수에서 필자가 고안했던 파일의 암호화 방식은, 파일 몇 개를 대조해보거나 값 몇 개를 추가하면 금방 암호화 방식을 알아낼 수 있을 정도로 보안성이 낮았다. 이 때문에 필자는 없는 시간을 쪼개어 보안성을 조금이나마 향상시킬 수 있는 방법을 생각해냈고, 다행히 그 덕분에 이전 버전의 암호화방식보다 조금 더 향상된 암호화 방식으로 정보를 보관할 수 있게 되었다. 

 

이와 더불어, 기존의 암호화 방식과 달리, 암호화에 사용하는 코드도 기존 파일에 변경내용이 발생하면 모두 바뀐다. 따라서, 인위적으로 계정 정보를 등록하여 해당 파일을 암호화하는 코드를 얻기가 매우 어렵다.

 

몰론... 필자는 암호화와 관련된 부분이라면 조금 더 업그레이드를 진행할 예정이다. 아무래도 IDPW 프로그램이 저장하고 있는 정보가 민감정보이기도 하기 때문에, 아무나 손쉽게 파훼할 수 없는 암호화 방식을 마련하는 것이 당연하기 때문이다.

 


이제... 마지막 5차 진행이다. 지난 12월부터 진행한 프로젝트가 무려 반년 가까운 시간이 지나서야 끝이 보이기 시작한다. 마지막 진행 차수에서 고려해야 할 사항은 다음과 같다.

 

1. 암호화 방식의 업그레이드

 

말해 무엇할까... 더 업그레이드 해야한다. 이번에는, 업그레이드 된 글자수에 상관없이 항상 동일한 길이의 암호화 문자열이 저장될 수 있도록 만들어보려고 한다. 지금까지는 입력한 글자 수에 따라 암호화된 문자열의 길이도 비례해서 달라졌기 때문에, 아무래도 보안 부분에서 취약하기 때문이다.

 

더불어 각 계정이 가지고 있는 정보를 저장하는 파일 역시 조금 더 업그레이드를 진행할 예정이다. 필자가 테스트하던 중 취약점이 발견되어서 말이다...

 

 

2. 디버그 확인 및 개선

 

필자가 테스트하던 중, 간간히 암호화 파일이 잘못된 방식으로 writing 되는 경우가 있었다. 아직 원인 파악이 완전하게 이루어진 것이 아니라, 언제 이 부분을 개선할 수 있을지는 모르겠지만, 최대한 빨리 해당 오류의 원인을 밝혀 개선하려고 한다.

 

 

3. 각 함수의 인터럽트 예외처리

 

이건 노가다라... 사실상 쓸 말이 없다.

 

 

4. 웹 페이지 접속 정보 모음 및 IDPW 적용.

 

언급했듯이, 필자가 주로 사용하는 사이트 외의 로그인 폼은 아직 정보를 많이 얻지 못한 상태다. 또한, 해당 사이트에 대한 정보가 없는 경우, 예외처리 할 수 있도록 코드를 수정해야 한다. 사이트에 대한 정보가 없을 때, IDPW가 튕겨버리는 현상이 발생했기 때문이다.

 

 

5. 프로그램 가이드 작성 

 

프로그램 항목에 보면 도움말이 있다. 하지만 현재 상태에서 이 도움말을 선택해도 유의미한 정보를 얻기는 어렵다. 따라서 이 프로그램을 사용함에 있어 조금이라도 도움이 될 수 있도록 프로그램 가이드를 문서화하여 IDPW 프로그램에 적용할 예정이다. 생각보다 많은 시간이 걸릴 것이라 예상하는 작업이다.

 

 

6. 라이선스 화.

 

필자가 마지막 진행 차수를 마무리하고나면, 베타 테스트를 위해 주변인들에게 이 프로그램을 뿌릴 예정이다. 그리고 이 베타 프로그램을 통해 디버그와 오류를 수집하고 나면, 해당 프로그램을 일정 기간만 사용할 수 있도록(아무나 사용할 수 없도록) 라이선스를 적용할 예정이다(운이 좋으면 판매 수익을 기대할 수도 있을까...).

 

 

프로젝트의 끝이 보이니 뭔가 후련해지는듯 하면서도, 마지막 마무리를 완벽하게 해야한다는 부담감도 어느정도 마음속에 자리잡고 있다. 앞으로도 직장일로 인해 바쁘겠지만, 자투리 시간을 내어 종종 이 프로젝트를 진행하여 마무리 할 예정이다. 진전 사항이 있다면 다음 포스팅에서 언급하려고 한다.

 

Fin.

반응형

댓글