'패스워드 유출 방지'에 해당되는 글 1건

  1. 내 비밀번호, 안전하게 관리하고 있나요? 9 2008.02.16

최근 옥션에서 해킹으로 인해 개인정보 일부가 유출되었다는 기사가 나왔습니다.

옥션에서는 다수 회원의 개인정보와 일부 회원의 환불 정보가 유출되었다고 설명하며,

패스워드의 경우 암호화 되어 안전하다고 설명했습니다. (아래 그림의 붉은 박스)

사용자 삽입 이미지

과연 안전할까? 궁금해 하실 분들을 위해서 웹사이트 제작 경험을 바탕으로 간단한 글을 적어보았습니다.






일반적으로 웹 사이트에서 아이디와 비밀번호는 Database에 저장됩니다.

하지만 이 DB라는 것은 관리자가 열람할 수 있는 정보입니다. (도의적으로는 그러지 않아야겠죠.)

사용자 삽입 이미지

관리자라면 데이터베이스를 명령어 한 줄로 열람할 수 있습니다.


뭐 상용사이트에서 mysql을 쓰고 있지는 않겠지만 오라클이라고 크게 다르지는 않을 것 같습니다.

위 그림은 제가 만든 간단한 사이트의 유저 테이블 정보입니다. (다 제가 그냥 만들어 넣은 거에요 ^^;)

일반적으로 위의 그림에서 passwd를 제외한 나머지 값들처럼, DB에 들어있는 값은 사람이 읽을 수 있는 값입니다.

id도 읽을 수 있는 값이고, 로그인 시간 정보도 마찬가지입니다.

관리자인 저는 raz라는 회원이 2008년 2월 9일에 마지막으로 로그인을 했다는 것을 확인할 수가 있네요.

그렇지만 raz 회원의 비밀번호는? 알 수가 없습니다!

비밀번호를 읽을 수 있는 값으로 만들어 넣으면 관리자가 다 볼 수 있겠죠.

혹은 이번의 옥션과 같은 사태로 개인정보가 유출되면, 비밀번호와 아이디가 함께 유출되겠죠.

보통의 경우 아이디와 비밀번호는 여러 사이트에 통일해서 쓰잖아요? ^^; 따라서 유출되면 매우 곤란합니다.

그래서 관리자는 패스워드를 DB에 보낼 때, 웹에서 암호화하여 보냅니다. 따라서 위처럼 이상하고 긴 값이 저장되어 있는 것입니다.

이럴 경우는 DB에 접근해도, 유저의 패스워드를 알 방법이 없습니다.








아니 그러면 이 사이트가 암호화를 제대로 했는지 아닌지 어떻게 알 수 있는 것인가?

  • 비밀번호 찾기를 했을 때, 처음에 썼던 비밀번호를 그냥 보여주거나 메일로 보내주는 사이트
  • 가입할 때 가입 정보를 확인하라면서 비밀번호를 그냥 보여주는 사이트
  • 메일로 비밀번호를 보내주는 사이트

이런 사이트들은 암호화 되어 있지 않을 가능성이 높습니다. 비밀번호를 그냥 보여주면 다 신뢰할 수 없다고 보시면 됩니다. -_-

왜냐하면, 애초에 위의 표의 방식으로 암호화를 하면, 비밀번호를 찾을 방법이 없기 때문입니다.

위의 보호 방식은 복호(암호를 다시 원래의 키로 되돌리는 방법)가 존재하지 않습니다.

(따라서 안전합니다. 위에 있는 값을 가져다 복호 프로그램에 넣었더니 원래 암호가 튀어나온다면, 암호화한 보람이 없겠죠?)

로그인 할 때마다 사용자가 넣는 비밀번호를 매번 암호화 함수를 이용해 암호화 해 보고, 그 결과를

DB에 저장된 값과 같은 지 비교할 뿐이기 때문에, 비밀번호를 다시 되살릴 방법이 없습니다.

사용자 삽입 이미지

2311..어쩌구에는 아무 의미도 없습니다.저는 abcd라는 암호를 쓰지도 않습니다-_-;;;


따라서 제대로 암호화하여 비밀번호를 저장한 사이트는 다음과 같은 방법을 사용합니다.

     1. 처음 가입시에 등록한 메일을 이용하여 임시 비밀번호를 보내준다.

     2. 비밀번호 찾기 힌트를 사용한 후 새로운 비밀번호를 발급한다.

이 방법을 사용했다고 다 안전한 것은 아니지만, 적어도 안전한 암호화를 한 경우는 위의 방법 외의 방법으로 비밀번호를 찾을 수가 없습니다.

비밀번호 찾기 힌트를 사용했더니 기존의 비밀번호를 보내주더라? 절대로 암호화 한 것이 아닙니다.

별표로 보여준다고 DB에 암호화 되어 있는 것이 아닙니다. 애초에 비밀번호는 어떤 방법으로든 열람할 수 없어야 합니다.





제가 제안하는 비밀번호 보호 방법은 다음과 같습니다.

대부분의 사이트에서 비밀번호 찾기 방법을 제공하기 때문에,

자주 안 가는 사이트는 아무거나 아주 이상한 비밀번호를 넣고 가입합니다. (매번 다르게 합시다.)

대신 e-mail은 자주 사용하는 곳을 기입합니다.

다음에 기억이 안나면? 그냥 아이디/비밀번호 찾기를 이용합니다. ^^;;;

이 경우에 임시로 발급하는 비밀번호는 랜덤하게 즉시로 생성된 것일 가능성이 높기 때문에,

한 번 쓰고 비밀번호를 다시 변경하면 안전합니다.

고로 이것이 현재 최선입니다.

다만... 이 이메일 비밀번호만은 머릿속에 넣고 잘 지키셔야겠죠 -_-; 자주 바꿔주기도 해야겠구요.

그래도 여러 개 관리하느니 이메일-비밀번호 한 개만 관리하는 게 제일 낫겠죠? ^^;





덧. 옥션의 경우.

회원정보 관리 화면에서 회원 정보를 바꾸면 새로 넣은 비밀번호의 앞 2글자를 보여주네요.

약~간 수상하지만 그 뒤로는 매번 회원 정보를 바꿀 때마다 비밀번호도 같이 변경하게 되어 있습니다. -_-;;;

고로 위의 정보는 DB에 넣기 전에 한 순간만 보여지는 데이터일 가능성이 높겠죠.

고로 안전할 지도 모르고 안전하지 않을 지도 모릅니다만,

저 정도로 고민을 했다면 아마도 안전한 쪽일 거라고 생각합니다. ^^

,