대칭키/비대칭키 암호화 알고리즘, 해싱

2023. 1. 13. 17:21카테고리 없음

양방향 알고리즘 

:  암호화와 복호화가 가능하다.

 예시로는 대칭키 알고리즘과 비대칭키 알고리즘이 여기서 속한다.

대칭키: 

클라이언트와 서버가 서로 키를 공유하고 있고 그 키로 암호화 , 복호화가가능합니다.

비대칭키 :

클라이언트는 공개키를 가지고 서버는 개인키를가지고 있어서 클라이언트가 암호화한것을 개인키를 가진 서버만이 복호화할수있습니다, 또한 그반대로 서버에서 암호화하여 보낸것을 클라이언트가 공개키를 가지고 내용을 확인할수 있는데 

이것은 다른 공개키를 가진 사용자도 볼수있는 단점이 있으니 여기서 핵심은 누가 보낸것인가 ? (수신자무결성) 을 증명 하는데 사용합니다.

 

양뱡향 알고리즘은 보안 적인 측면을 강화하기 위해 만들어졌습니다.

 

단방향 알고리즘

:암호화는 가능하지만 복호화는 할수 없는 단방향 알고리즘입니다, 암호화된 텍스트를 다시 복호화를 절대로 할수가 없습니다. 이는 비밀번호같은 경우  사용자의 비밀번호를 저장시 그 누구도 알수 없게 하기 위해서 존재하는 알고리즘으로 

비밀번호 무결성 부분이 핵심입니다.

 

비밀번호  해싱 과정을 보면 

 

먼저 클라이언트가  비밀번호를 키로 암호화 해서 보냅니다 그러면 서버는 그 암호를 복호화를 시킵니다, 

그리고 클라이언트에게 해당 비밀번호가 맞는 지 확인을 하는 절차를 걸친 후 클라이언트는 해당 비밀번호를 해싱해서 

보내면 서버가 해당 해싱값과 클라이언트의 원래 비밀번호를 가지고 그것을 똑같이 해싱 알고리즘에 넣어 나온 

해싱 값이 같은지 판단합니다.

 

이 방식은 클라이언트 측에서 해싱을 하고 서버쪽에서도 해싱을 하는 방식입니다.

하지만 절대로 클라이언트에서만 해싱을 하게 하면 안됩니다 왜냐면 클라이언트 측에서 해싱을 해서 보낸 값 자체가 비밀번호 값으로 지정이 되기에 해킹이 될 우려가 큽니다.

 

그래서 서버에서 해싱을 진행하는데 이럴경우는 클라이언트가 서버에 비밀번호를 보내면 그 비밀번호를 서버가 해싱함수

를돌려 나온 값을 디비에 저장을 합니다, 그래서  아무리 db가 털린다고 하더라도  그 해킹하는 사람은 클라이언트의 

원래 비밀번호를 알수 없기에 보안에 유리합니다.

 

단점은 레인보우 테이블이나 , 크래커 같은 공격으로 부터 위험하다는 것입니다.

레인버우 테이블은 해당 문자에 대한 해시값을 찾아낸 테이블인데 , cpu가 연산 처리 속도가 빠른 만큼 그 속도로 크래커 공격을 통해서 해당 비밀 번호값을 유츄해 낼수가 있습니다.

 

해시값의 단점은  해당 문자를 넣게 되면 항상 똑같은 해시값을 내기 때문입니다.

그래서 사용하는 방식이 솔트라는 것이고  그것은 클라이언트가  비밀번호를 서버에 보낼때 , 임의의 솔트값을 같이 넣어서  해시 함수에 돌려서 나온 값을 가지는 것입니다. 그렇게 되면  같은 비밀번호를 쓰는 사용자라고 할지라도 

서로 솔트값은 다르기에 다른 해시값을 가지게 됩니다.

 

이때는 사용자가 패스워드를 보내면 서버는 해당 패스워드를 보면 솔트값과 , 해시값을 비교하여 패스워드가 

맞는지 확인합니다.

 

 

또한 키스트레칭이라는 것이 있는데 어쨌거나 cpu가 속도가 어마 무시 하다 보니 크래커 같은 공격을 당해내기 힘들수 있다. 그렇기에 키스트레칭이라고 하여 cpu의 성능을 낮추는 알고리즘이다 ,, 그래서 시간이 오래걸릴수 있게 하되 사용자가 느리다고 인식하지 않는 선에서 지연시키는 것이다

 

 https://crackstation.net/hashing-security.htm#javasourcecode

 

Secure Salted Password Hashing - How to do it Properly

Salted Password Hashing - Doing it Right If you're a web developer, you've probably had to make a user account system. The most important aspect of a user account system is how user passwords are protected. User account databases are hacked frequently, so

crackstation.net

패스워드 암호화/인증(해싱) 과정 & 중간 패킷 탈취에 대한 오해 (tistory.com)

 

패스워드 암호화/인증(해싱) 과정 & 중간 패킷 탈취에 대한 오해

사전 참고: https://asung123456.tistory.com/55 [컴퓨터 보안] 해싱과 암호화 해싱이란? input으로 들어온 값이 해싱 함수를 거쳐 일정한 길이의 output으로 나오게 됩니다. 일정한 길이의 output이기 때문에 해

asung123456.tistory.com

Clean Code that Works. :: 비밀번호 해시에 소금치기 - 바르게 쓰기 (tistory.com)

 

비밀번호 해시에 소금치기 - 바르게 쓰기

웹 서핑중에 비밀번호 암호화 관련해서 좋은 글이 있어서 번역해 봤습니다. 개인 프로젝트를 하던 다른 서비스 프로젝트들 하던 사용자의 비밀번호를 암호화하는것은 중요한데요. 암호화 하기

starplatina.tistory.com

해시(hash) 솔트(salt) 암호화 기법 (tistory.com)

 

해시(hash) 솔트(salt) 암호화 기법

해시(Hash)는 어떻게 암호화? 예시로 설명하면 평문의 비밀번호 "hansol1234"를 해시함수(해시 알고리즘)를 이용하여 고정된 길이의 암호화된 문자열로 바꿔 버리는 것이 해시를 이용한 암호화 기법

hansoul.tistory.com

https://raonctf.com/essential/study/web/cryptography