DB 의 field 값 암호화
갑자기 서버가 사용하는 DB 에 user 의 어떤 key 를 저장할 때(예를 들면 특정사이트의 password 같은) 어떤 식으로 저장하는 것이 해킹에 안전할까에 대한 궁금증이 들었다.그래서 조금 찾아보니 아래에 어느정도 잘 답변해준 자료가 있었다.
여기서 이야기 하려고 하는 것은 당연히 crypt/decrypt 가 되는 암호화를 이야기 하려 한다. hash 같은 방식은 여기서 사용하지 않는다. 왜냐하면 암호화 한 내용을 다시 복호화해서 사용해야 하는 상황이기 때문이다.
여하튼 짧은 보안에 대한 지식을 가지고, 어떤 식으로 key 를 관리하는 것이 좋은 지에 대해 한 번 생각해 보자.
키 관리 key management
symmetric / asymmetirc
개인적으로 symmetric 을 쓰려고 한다. asymmetric 은 key 를 주고받아야 하는 경우가 아니라면 굳이 사용할 이유는 없다고 생각된다. 암호화 수준도 대체로 symmetric 이 우수하다고 하며, key 를 따로 관리해야 하는 것도 부담이다.(혹시 이밖의 의견이 있다면 댓글을 부탁합니다.)
key 관리 key management
결국 이 암호화의 핵심은 key 를 hacker 에게 어떻게 노출시키지 않을 수 있는가 인 듯 하다. 그러기 위해서는 일단 key 를 어디에 숨겨야 한다. 그럼 key 를 숨기기위해 또 암호화를 할까? 그것은 그냥 절차(process)만 길게 만드는 것일 뿐, 보안에 더 도움이 되지 않는다.
보통은 이 key 를 hacker 가 알아내기 힘든 어떤 값으로 정하는 쪽을 택하는 듯 하다.
hacker 가 가져가기 힘든 것
hacker 가 알아내기 힘든 곳이란 것은 자신의 컴퓨터가 hacking 되었을 때를 가정하면 파악할 수 있다.
보통 자신의 server 의 admin 계정이 hacking 당하는 등의 일이 발생하면, hacker 는 계속 그 컴퓨터를 사용하기 보다는 서버의 정보를 자신의 local 로 옮기는 행위를 할 가능성이 크다.
왜냐하면 hacking 이 발각되면, admin 비밀번호를 당연히 바꿀 것이고, 다시 hacking 을 해서 정보를 가져오려면 또 오랜 수고가 필요할 테니 말이다.
그래서 결국 여기서 "hacker 가 알아내기 힘든 곳"이란 결국 hacker 가 가져갈 수 없는 어떤 것이 된다. 대부분은 network를 통해 가져갈 수 있으니, 그 이외의 것을 고려하면 된다.
Hardware
그래서 가장 좋은 것은 encryption key 로 h/w 정보를 이용하는 것이다. 물론 쉽게 알아낼 수 있는 것은 좋은 생각이 아니다.(예를 들면 mac address)
그래서 ref. 1 에서 이야기하는 것처럼 외부에 장착된 security module 같은 것은 더없이 좋다. 아니면 TPM chip 같은 것을 이용하는 것도 좋다.
물론 여기에도 한계는 있을 수 있다. hacker 들이 이것을 이미 알고 들어왔다면, security module 을 hacking 하는 시도를 하던지 TPM chip 의 정보등은 해킹을 시도할 수 있다.
login 정보
os 의 login 정보를 key 로 이용할 수 있다. 하지만 이것은 linux 에서 어떤 식으로 가능한지는 잘 모르겠다. windows 는 이런 API 를 제공한다. 이것을 활용한 예는 chrome 에서 볼 수 있다. 아래 글을 참고하자.
server 시작시 key 입력
개인적으로는 이녀석이 쉽게 구현해서 사용할 수 있고 꽤 괜찮은 안전 수준을 제공해 줄 듯 하다. ref. 1 에서 memory dump 로 가져갈 수 있다고 하지만, 입력한 key 의 hash 값을 사용한다면 더욱 안전한 상태가 가능할 듯 싶다.
하지만 관리자가 계속 머리에 key를 가지고 있어야 하는 것은 부담이다.
다른 서버에 저장
개인적으로 이것도 나쁜 생각은 아니라고 생각된다. 하지만, 그 key 를 저장하는 서버가 충분히 secure 할 필요는 있다. 쉽게 뚤리는 곳이라면 hacking 도 쉽게 이뤄질 수 있으니, 순간적으로 key 가 탈취당하지 않았다고 생각할 수 있지만, 바로 hacking 해서 가져갈 수도 있다.
하지만 일단 또다른 hacking 을 해야 한다는 부담감이 있어서 단념하게 될 가능성도 크다.
같은 서버에 다른 곳에 저장
가장 쉽게 생각할 수 있는 부분인 듯 하다. 그저 network 로 정보만 가져가는 경우라면 다행이겠지만, admin 계정등을 해킹해서 들어온 경우라면, 큰 의미없는 보관이 될 듯 하다.
개인적은 결론
일단 개인적으로 자금이나 machine 의 상황으로 h/w 를 이용하는 것은 쉬운일이 아니라고 생각된다. 그런면에서는 조금 번거롭지만, 암호를 잘 기억해서 server 를 띄울때 typing 하는 것이 가장 합리적인 방법이 아닐까 생각된다.
댓글 없음:
댓글 쓰기