개인정보의 암호화 - f-lab-edu/myinsta GitHub Wiki
#개인정보 암호화
비밀번호 암호화의 필요성
- https://www.law.go.kr/%ED%96%89%EC%A0%95%EA%B7%9C%EC%B9%99/%EA%B0%9C%EC%9D%B8%EC%A0%95%EB%B3%B4%EC%9D%98%EC%95%88%EC%A0%84%EC%84%B1%ED%99%95%EB%B3%B4%EC%A1%B0%EC%B9%98%EA%B8%B0%EC%A4%80/(2017-1,20170726)/%EC%A0%9C13%EC%A1%B0
- 위 링크는 개인정보 보호법에 의거하여 개인 정보의 암호화가 필요한 상황을 정해둔 사이트이다
- 7조의 개인정보의 암호화 부분을 정리하면, 개인의 비밀번호관련 정보는 전송시 암호화 되어야 하며, 저장시 복호화 될수 없도록 단방향 암호화가 실행 되어야 하고, 암호화에는 안전한 알고리즘이 사용되어야 한다고 기준을 정하고 있다.
암호화 알고리즘의 종류
양방향 암호화 알고리즘
- 암호화후 복호화가 가능한 알고리즘
- 대표적으로 대칭키(비공개키)와 비대칭키(공개키) 알고리즘이 있다.
단방향 암호화 알고리즘
- 암호화후 복호화가 불가능한 알고리즘
- 대표적으로 Hash가 있다
대칭키 알고리즘
- 비공개키 알고리즘이라고도 하며 한개의키로 암호화 복호화를 할수있는 알고리즘이다
- 대표적으로 AES, DES가 있다.
- 문제점으로는 복호화를 위해 키를 상대에게 공유(전송)하여야 하는 문제점이있다. 중간에 키가 공격자가 가로챌수있다. 이점을 해결 하기위해 나온것이 비대칭키(공개키) 알고리즘
비대칭키 알고리즘
- 공개키 알고리즘이라고도 하며 두개의 키를 사용하여 각각 암호화 복호화에 사용한다.
- 각각의 키를 A, B 라고 할때 A로 암호화한 정보는 B로만 복호화가 가능하고 B로 암호화한 정보는 A로만 복호화가 가능하다.
- 둘중 한개의 키를 비밀키라고 하며 보관용으로 사용하고, 나머지 하나를 공개키라고 하며 상대방이 복호화에 사용할수있도록 전송된다.
- 대칭키 알고리즘에 비해 암호화와 복호화가 느리다는 단점이 있다.
- 중간자 공격법 ( 중간에서 상대방인척 키를 얻어내어 공격하는 공격법 )에 취약하다
단방향 알고리즘
- 해시를 사용한다
- 양방향과 다르게 한번 암호화 하면 복호화가 불가능하다
- 비밀번호 같은 공개 되어서는 안되는 개인정보 저장시에 사용하며 값을 비교할때는 해시의 결과가 항상 같은 점을 이용 변화 시킨 값을 비교하여 한다.
- 보통 SHA-2이상의 사용을 권고하며 MD5는 이미 쉽게 뚫린지 오래라고 한다.
비밀번호 암호화 알고리즘 종류
- 위 기준에서 언급되어있다 시피 개인정보를 암호화 하는데에 사용되는 암호화 방법은 단방향 암호화로, 암호화 되고 나면 다시 원상태로 돌릴수 없는 암호화 방법을 사용할것을 권고 하고 있다.
- 단방향 알고리즘의 종류로는 SHA(-1,-2,-3),BLAKE(2,3),WHIRPOOL,RIPEMD-160,MD5등이 있다.
- 이 들은 Cryptographic Hash Function인 해시 함수를 사용하여 문자열을, digest라는 Hexadecimal의 결과로 만들어 주는 암호화 방식이다. 즉, 엄밀히 말하자면 암호화라기 보다는 해싱이라고 하여야 할것이다.
- 개인정보 암호화에 Encryption이 아닌 hashing을 사용하는 이유는 '단방향'이어야 하기 때문이다. 변환후 복원이 될수 없는 해싱과 다르게 Encryption은 key를 사용하면 복호화가 되기 때문이다.
Hash
- 입력값에 따라 해싱의 결과값은 항상 일정하다.
- 해싱에 사용된 해시함수의 알고리즘을 모르는 이상 복호화가 불가능하다.
- 암호화가 빠르다.
무엇을 사용해야 하는가
- KISA(한국)에서는 SHA-2이상의 해시 함수를 권고 하고 있다.
- https://seed.kisa.or.kr/kisa/bbs/faq.do
- NIST(미국)에서는 SHA의 사용을 권고 하고 있다.
- https://csrc.nist.gov/projects/hash-functions
- CRYPTREC(일본)에서는 SHA의 사용을 권고 하고있다
- https://www.cryptrec.go.jp/en/method.html
- SHA계열의 해싱 알고리즘중 SHA-2이상의 버전을 사용해야 할것으로 결론지었다.