내가 인터넷 회원가입을 시작한지 12년이나 되었다.
1. 내는 개발자 입장에서 모든 사이트마다 동일한 아이디 패스워드를 사용하는 것의 위험성을 무지 크게 느끼고 있다. 하나의 아이디 패스워드가 노출되면 모든 사이트에대해서 같이 노출될 가능성이 높아지는 것이다.
2. 허접한 사이트의 경우는 패스워드가 노출되도록 저장된다. 예를들어 패스워드 찾기를 하면 친철하게 패스워드를 알려주는 것이다. 원칙적으로 패스워드는 해싱절차를 거쳐서 복호화를 할 수 없도록 저장해야 하는데, 패스워드 분실시 새 패스워드를 지정하지 않고, 옛날 패스워드를 그대로 알려주는 방식은 결국은 사이트 해킹시에 내 패스워드도 같이 해킹된다는 것과 같은 의미다.
3. 도대체 얼마나 많은 사이트에 가입되어 있는지 알 수가 없다. 내 개인정보는 나도 모르는 곳에 혹은 내가 잊어 버린 곳에 흩어져 있는 셈이다.
4. 해결책은 아이디와 패스워드를 사이트마다 다르게 지정하는 것이다. 그리고 패스워드도 자동 생성되는 임의의 문자를 사용하게 되면 어느정도 보완이 될 것이다. 사실상 아이디는 매번 다르게 하기어려운 점이 있고, 문자제한도 많기 때문에 동일하게 쓴다고 하더라도 패스워드는 사이트마다 특수문자를 많이 섞어서 사용할 필요가 있다.
자동로그인은 웹마를 통해서 한다고 치더라도, 기본적으로 만약을 위해서 정보를 어딘가에 백업해둘 필요가 있겠다 싶다. 이런 이유로 패스워드 사이트 관리 프로그램이 필요하다. 사이트마다 다르게 생성된 패스워드를 어떻게 기억한단 말인가? 검색을 좀 해 보니 많은 프로그램이 있었다. 하지만 내가 궁극적으로 원하는 프로그램은 없었고, 뿐만 아니라 내가 기술적으로 안심이 되는 방식으로 패스워드가 암호화되어서 저장된다고 납득이 되지 않았다. 해서 내가 사용할 목적으로 프로그램을 만들게 되었는데 아래와 같은 프로그램이다.
이 프로그램은 기본적으로 네트웍 프로그램이다. 다시 말해서 아이디 패스워드를 서버에 저장을 한다. 서버에 저장하는 이유는 회원가입하는 사이트가 특정 한 PC에서만 이루어 진다는 보장이 없다. 게임방이나 회사나 집이나 , 친구집이나 모든 경우에 임의 생성된 패스워드를 안전하게 저장할 필요가 있는셈이다. 예외없이 안전하게 저장해야한다. 그래서 서버에 저장을 하는것이고, 그래서 보안이 더욱 중요한 것이다.
간단히 이 프로그램의 구조를 보면 아래와 같다.
로컬PC 인터넷 서버
[LoginManager.exe(Openssl] <----------<http>---------->[PHP <==> Mysql]
LoginManager.exe는 Http프로토콜을 통해서 정보를 주고 받는데 php가 그 역할을 한다. php는 exe가 던지는 정보를 DB에 저장하고 보내는 역할만한다. 연산기능은 모두 exe가 한다. 새로운 사용자를 만들게 되면 LoginManager.exe가 랜덤으로 256비트 암호화키와 2048비트 RSA공개키,비밀키를 만든다. 256비트 암호화키는 패스워드로 다시 암호화해서 RSA공개키와 함께 서버에 저장한다. 그리고 비밀키는 파일로 저장해서 내가 따로 간직하고 있는 것이다. 마치 공인인증서와 비슷한 파일이다. 이 비밀키 파일이 없다면 저장해 놓은 데이타를 복호화할 수 없다. 따라서 어디에도 공개해서는 안되는 아주 중요한 파일이다.
이 시스템의 장점은 RSA비밀키가 없더라도 데이타 암호화 저장은 가능하다는 것이다. 다시 말해서 네트웍에서 실행화일 하나만 다운받아서 서버에 저장된 공개키로 정보를 암호화해서 저장하는 것이 가능하다는 것이다. 물론 복호화 RSA비밀키 파일은 집 PC에만 있기 때문에 한 번 저장해 놓은 정보를 외부에서 확인하는 것은 나도 불가능하다. 서버가 해킹되더라도 결코 내 계정정보를 가져갈 수 없다고 이론적으로 안심할 수 있다. 뿐만 아니라 서버에 저당되는 아이디와 패스정보는 256비트 비밀키로 다시 암호화되어 저장되므로 이론적으로는 해킹을 위해서는 256bit x 2048bit 만큼의 사용가능한 키 조합이 필요한 샘이다. 이 조합은 내가 생각해도 우주의 모래알만큼의 수라고 느껴진다.
이 프로그램의 개발기간은 2일이었다.
1. 내는 개발자 입장에서 모든 사이트마다 동일한 아이디 패스워드를 사용하는 것의 위험성을 무지 크게 느끼고 있다. 하나의 아이디 패스워드가 노출되면 모든 사이트에대해서 같이 노출될 가능성이 높아지는 것이다.
2. 허접한 사이트의 경우는 패스워드가 노출되도록 저장된다. 예를들어 패스워드 찾기를 하면 친철하게 패스워드를 알려주는 것이다. 원칙적으로 패스워드는 해싱절차를 거쳐서 복호화를 할 수 없도록 저장해야 하는데, 패스워드 분실시 새 패스워드를 지정하지 않고, 옛날 패스워드를 그대로 알려주는 방식은 결국은 사이트 해킹시에 내 패스워드도 같이 해킹된다는 것과 같은 의미다.
3. 도대체 얼마나 많은 사이트에 가입되어 있는지 알 수가 없다. 내 개인정보는 나도 모르는 곳에 혹은 내가 잊어 버린 곳에 흩어져 있는 셈이다.
4. 해결책은 아이디와 패스워드를 사이트마다 다르게 지정하는 것이다. 그리고 패스워드도 자동 생성되는 임의의 문자를 사용하게 되면 어느정도 보완이 될 것이다. 사실상 아이디는 매번 다르게 하기어려운 점이 있고, 문자제한도 많기 때문에 동일하게 쓴다고 하더라도 패스워드는 사이트마다 특수문자를 많이 섞어서 사용할 필요가 있다.
자동로그인은 웹마를 통해서 한다고 치더라도, 기본적으로 만약을 위해서 정보를 어딘가에 백업해둘 필요가 있겠다 싶다. 이런 이유로 패스워드 사이트 관리 프로그램이 필요하다. 사이트마다 다르게 생성된 패스워드를 어떻게 기억한단 말인가? 검색을 좀 해 보니 많은 프로그램이 있었다. 하지만 내가 궁극적으로 원하는 프로그램은 없었고, 뿐만 아니라 내가 기술적으로 안심이 되는 방식으로 패스워드가 암호화되어서 저장된다고 납득이 되지 않았다. 해서 내가 사용할 목적으로 프로그램을 만들게 되었는데 아래와 같은 프로그램이다.
이 프로그램은 기본적으로 네트웍 프로그램이다. 다시 말해서 아이디 패스워드를 서버에 저장을 한다. 서버에 저장하는 이유는 회원가입하는 사이트가 특정 한 PC에서만 이루어 진다는 보장이 없다. 게임방이나 회사나 집이나 , 친구집이나 모든 경우에 임의 생성된 패스워드를 안전하게 저장할 필요가 있는셈이다. 예외없이 안전하게 저장해야한다. 그래서 서버에 저장을 하는것이고, 그래서 보안이 더욱 중요한 것이다.
간단히 이 프로그램의 구조를 보면 아래와 같다.
로컬PC 인터넷 서버
[LoginManager.exe(Openssl] <----------<http>---------->[PHP <==> Mysql]
LoginManager.exe는 Http프로토콜을 통해서 정보를 주고 받는데 php가 그 역할을 한다. php는 exe가 던지는 정보를 DB에 저장하고 보내는 역할만한다. 연산기능은 모두 exe가 한다. 새로운 사용자를 만들게 되면 LoginManager.exe가 랜덤으로 256비트 암호화키와 2048비트 RSA공개키,비밀키를 만든다. 256비트 암호화키는 패스워드로 다시 암호화해서 RSA공개키와 함께 서버에 저장한다. 그리고 비밀키는 파일로 저장해서 내가 따로 간직하고 있는 것이다. 마치 공인인증서와 비슷한 파일이다. 이 비밀키 파일이 없다면 저장해 놓은 데이타를 복호화할 수 없다. 따라서 어디에도 공개해서는 안되는 아주 중요한 파일이다.
이 시스템의 장점은 RSA비밀키가 없더라도 데이타 암호화 저장은 가능하다는 것이다. 다시 말해서 네트웍에서 실행화일 하나만 다운받아서 서버에 저장된 공개키로 정보를 암호화해서 저장하는 것이 가능하다는 것이다. 물론 복호화 RSA비밀키 파일은 집 PC에만 있기 때문에 한 번 저장해 놓은 정보를 외부에서 확인하는 것은 나도 불가능하다. 서버가 해킹되더라도 결코 내 계정정보를 가져갈 수 없다고 이론적으로 안심할 수 있다. 뿐만 아니라 서버에 저당되는 아이디와 패스정보는 256비트 비밀키로 다시 암호화되어 저장되므로 이론적으로는 해킹을 위해서는 256bit x 2048bit 만큼의 사용가능한 키 조합이 필요한 샘이다. 이 조합은 내가 생각해도 우주의 모래알만큼의 수라고 느껴진다.
이 프로그램의 개발기간은 2일이었다.