bcrypt 【비망록】BCrypt를 사용한 Rails+MongoDB에서의 패스워드 암호화 비밀번호를 암호화 할 때 BCrypt가 좋기 때문에 Rails+MongoDB의 도입 방법부터 사용 방법까지 Rails + MongoDB의 암호 필드 (RDB의 속성, 열) 원시 저장하지 않으려는 데이터를 암호화하고 싶을 때 인증에 사용할 암호를 안전하게 해시하는 알고리즘입니다. SHA256 등에서는 암호화로 부족하기 때문에 (아래 참조), 레인보우 테이블 (해시 값에 대한 총당으로 평문을 얻... bcryptMongoDBRails Creating Account #03 절대 DB에 password를 저장하면 안된다. 어떤 회사든지 해킹 당하면 이런 식으로 DB에 password를 저장한걸 후회하게 된다. 그리고 보통 사람들은 같은 password를 여러 사이트에서 사용하기에 대부분의 사람들은 같은 password를 사용하기 때문이다. 만약 서비스에서 password를 관리하는 사람이라면 이런식으로 DB에 password를 저장하지 않으면 된다. 그래서 pa... hashmongoosemongodbnode.jssaltRoundsJavaScriptpre("save")bcryptHashingpasswordHashing Login #02 보다시피 이 모든걸 같이 구현하게 되면 정말 멋진 기능을 만들어 낼수 있다. 이런 것들을 다 쓰고 있다. DB를 보면 해싱된 패스워드가 있다. 그래서 DB에 있는 패스워드를 해석할 수 없다. 그런데 그 패스워드의 해시값을 알고 있다. 뭘 하면 되냐면 로그인할 때 유저가 입력한 패스워드를 가져다가 해싱을 하면 되는거다. 그러면 패스워드를 해싱하고 나온 해시값을 비교하면 되는거다. 그리고 만약 ... mongoosemongodbnode.jsJavaScriptComparebcryptCompare [HTTP] http에 대하여 - 인증/인가 (1) 마침 오늘 오전 인증/인가 관련 세션이 진행되어 이어서 내용 정리해본다. 로그인을 하면, 나는 상품을 구매할 수 있다. 내 비밀번호는 중요한 개인정보이기 때문에 서버는 그대로 저장하지 않고 암호화 작업을 거친 후 저장한다. 이 때 hash 함수가 사용된다. 원본 메세지를 알면 digest는 알 수 있음 하지만 digest를 알아도 원본 메세지는 알 수 없음 하지만 hash 함수도 결국 dig... 인가bcryptBackendPayloadJWT인증TokenhttpBackend 암호화 - 단방향 사용자의 비밀번호를 암호화할 때는 단방향 해시 함수(one-way hash function)가 일반적으로 쓰인다. 이름에서 알 수 있듯이 단방향 해시 함수는 복호화를 할 수 없는 암호화 알고리즘이다. test password 라는 값을 hash256 단방향 해시 함수를 사용하면 0b47c68b1.....094e 값이 나온다. 그리고 이 해시 값(암호화된 값)은 원본 비밀번호 값인 test p... bcrypthash256단방향암호화SHA256해시함수비밀번호SHA256 인증인가 #2 #인증인가 다시보기 인증? 로그인할 때 정확하게 아이디/비밀번호 입력했는지 확인하는 과정 인증은 왜 필요한가? 서비스를 누가 어떻게 사용하는지 추적할 수 있다. 가장 중요한 것은 당연히 비밀번호 개인정보 보호를 위한 암호화는? 단방향 해쉬로 hash? 원래 자료를 빠르게 탐색하기 위한 자료구조, 빠르게 i/o 가능해서 암호화에 사용하게 되었다. input => hash 함수 => output... 인가인증hashbcryptbcrypt IL - Bcrypt & JWT 해쉬 함수는 해쉬화된 결과값으로는 원래의 값(원본 데이터)을 유추할 수 없다는 특징이 있다(단방향 해쉬 함수). encrypt와는 다르게 해쉬는 단뱡향이기 때문에 키의 여부와 상관 없이 해싱된 값을 복호화해서 원래의 값을 알 수 없고, 해쉬 함수를 통해 해싱된 값을 다이제스트(digest - 원래의 값을 알 수 없도록 소화되었다고 해서 이렇게 부른다)라고 한다. 바로 레인보우 테이블의 존재 ... JWTbcryptJWT [Boiler Plate] (4) 비밀번호 암호화 앞서 회원가입에서 비밀번호를 입력하고 서버에 보내면 비밀번호가 다음과 같이 그대로 노출된다. 보안에 취약하다...! 비밀번호만 암호화하는 기능을 추가할 것이다!🌷 User 정보를 client에서 받아오고 user.save로 데이터베이스에 넣어준다. user 정보를 client에서 받아오면 데이터베이스에 저장하기 전에! 비밀번호를 암호화해서 데이터베이스에 넘겨줄 것이다.✨🐰 User.js 파일... serverexpressjsnodejsmongodbBoilerplatebcryptBoilerplate [python][django]bcrypt & jwt 실습 비밀번호 해쉬에 관한 부분 👶 Work Factor 👶 bcrypt pyjwt 요 두개를 pip로 다운받습니다. 설치가 완료되었다면 Ipython을 실행시키고 'bcrypt'를 임포트할게요. 그리고 비밀번호를 해쉬해주는 hashpwd() 함수를 사용하고 rainbow table attack을 막기위해서 salt값을 추가하도록 할게요. 아래 형식의 메소드를 구현해줘야!! bcrypt.hashp... djangobcryptJWTJWT encoding & decoding, bcrypt - 비밀번호 암호화! 지금까지의 작업에서 유저들의 비밀번호를 string으로 받아 곧바로 DB에 저장해왔다. 이런식으로...! 이렇게되면, DB에는 비밀번호가 직접적으로 저장이되고, DB관리자나 DB에 접근할 수 있는 사람들은 유저들의 정보에 접근할 수 있는 위험이 있는 것이다. 이러한 이유로! 비밀번호를 꼭 암호화시켜서 다루는데, 비밀번호를 암호화하는 과정에서 "bcrypt"를 사용해 볼 수 있다! 비밀번호 h... westagramdjango암호화hashpw파이썬비밀번호WeCodeTILpythonbcryptTIL bcrypt로 패스워드 암호화 및 확인 user와 관련된 db에 패스워드를 그대로 저장하게 되면 db가 해킹 당했을때 아주 치명적인 결과가 될 수 있다. 따라서 암호화를 진행하여야 한다. bcrypt는 암호화를 아주 쉽게 도와주는 모듈이다. 워낙 간단하긴 하지만 회고를 목적으로 작성해보고자 한다. 우선 bcrypt가 설치되있지 않다면 pip install bcrypt로 설치를 해주자. 그 후에 다음과 같이 해쉬값을 생성해 줄 수 ... bcryptbcrypt
【비망록】BCrypt를 사용한 Rails+MongoDB에서의 패스워드 암호화 비밀번호를 암호화 할 때 BCrypt가 좋기 때문에 Rails+MongoDB의 도입 방법부터 사용 방법까지 Rails + MongoDB의 암호 필드 (RDB의 속성, 열) 원시 저장하지 않으려는 데이터를 암호화하고 싶을 때 인증에 사용할 암호를 안전하게 해시하는 알고리즘입니다. SHA256 등에서는 암호화로 부족하기 때문에 (아래 참조), 레인보우 테이블 (해시 값에 대한 총당으로 평문을 얻... bcryptMongoDBRails Creating Account #03 절대 DB에 password를 저장하면 안된다. 어떤 회사든지 해킹 당하면 이런 식으로 DB에 password를 저장한걸 후회하게 된다. 그리고 보통 사람들은 같은 password를 여러 사이트에서 사용하기에 대부분의 사람들은 같은 password를 사용하기 때문이다. 만약 서비스에서 password를 관리하는 사람이라면 이런식으로 DB에 password를 저장하지 않으면 된다. 그래서 pa... hashmongoosemongodbnode.jssaltRoundsJavaScriptpre("save")bcryptHashingpasswordHashing Login #02 보다시피 이 모든걸 같이 구현하게 되면 정말 멋진 기능을 만들어 낼수 있다. 이런 것들을 다 쓰고 있다. DB를 보면 해싱된 패스워드가 있다. 그래서 DB에 있는 패스워드를 해석할 수 없다. 그런데 그 패스워드의 해시값을 알고 있다. 뭘 하면 되냐면 로그인할 때 유저가 입력한 패스워드를 가져다가 해싱을 하면 되는거다. 그러면 패스워드를 해싱하고 나온 해시값을 비교하면 되는거다. 그리고 만약 ... mongoosemongodbnode.jsJavaScriptComparebcryptCompare [HTTP] http에 대하여 - 인증/인가 (1) 마침 오늘 오전 인증/인가 관련 세션이 진행되어 이어서 내용 정리해본다. 로그인을 하면, 나는 상품을 구매할 수 있다. 내 비밀번호는 중요한 개인정보이기 때문에 서버는 그대로 저장하지 않고 암호화 작업을 거친 후 저장한다. 이 때 hash 함수가 사용된다. 원본 메세지를 알면 digest는 알 수 있음 하지만 digest를 알아도 원본 메세지는 알 수 없음 하지만 hash 함수도 결국 dig... 인가bcryptBackendPayloadJWT인증TokenhttpBackend 암호화 - 단방향 사용자의 비밀번호를 암호화할 때는 단방향 해시 함수(one-way hash function)가 일반적으로 쓰인다. 이름에서 알 수 있듯이 단방향 해시 함수는 복호화를 할 수 없는 암호화 알고리즘이다. test password 라는 값을 hash256 단방향 해시 함수를 사용하면 0b47c68b1.....094e 값이 나온다. 그리고 이 해시 값(암호화된 값)은 원본 비밀번호 값인 test p... bcrypthash256단방향암호화SHA256해시함수비밀번호SHA256 인증인가 #2 #인증인가 다시보기 인증? 로그인할 때 정확하게 아이디/비밀번호 입력했는지 확인하는 과정 인증은 왜 필요한가? 서비스를 누가 어떻게 사용하는지 추적할 수 있다. 가장 중요한 것은 당연히 비밀번호 개인정보 보호를 위한 암호화는? 단방향 해쉬로 hash? 원래 자료를 빠르게 탐색하기 위한 자료구조, 빠르게 i/o 가능해서 암호화에 사용하게 되었다. input => hash 함수 => output... 인가인증hashbcryptbcrypt IL - Bcrypt & JWT 해쉬 함수는 해쉬화된 결과값으로는 원래의 값(원본 데이터)을 유추할 수 없다는 특징이 있다(단방향 해쉬 함수). encrypt와는 다르게 해쉬는 단뱡향이기 때문에 키의 여부와 상관 없이 해싱된 값을 복호화해서 원래의 값을 알 수 없고, 해쉬 함수를 통해 해싱된 값을 다이제스트(digest - 원래의 값을 알 수 없도록 소화되었다고 해서 이렇게 부른다)라고 한다. 바로 레인보우 테이블의 존재 ... JWTbcryptJWT [Boiler Plate] (4) 비밀번호 암호화 앞서 회원가입에서 비밀번호를 입력하고 서버에 보내면 비밀번호가 다음과 같이 그대로 노출된다. 보안에 취약하다...! 비밀번호만 암호화하는 기능을 추가할 것이다!🌷 User 정보를 client에서 받아오고 user.save로 데이터베이스에 넣어준다. user 정보를 client에서 받아오면 데이터베이스에 저장하기 전에! 비밀번호를 암호화해서 데이터베이스에 넘겨줄 것이다.✨🐰 User.js 파일... serverexpressjsnodejsmongodbBoilerplatebcryptBoilerplate [python][django]bcrypt & jwt 실습 비밀번호 해쉬에 관한 부분 👶 Work Factor 👶 bcrypt pyjwt 요 두개를 pip로 다운받습니다. 설치가 완료되었다면 Ipython을 실행시키고 'bcrypt'를 임포트할게요. 그리고 비밀번호를 해쉬해주는 hashpwd() 함수를 사용하고 rainbow table attack을 막기위해서 salt값을 추가하도록 할게요. 아래 형식의 메소드를 구현해줘야!! bcrypt.hashp... djangobcryptJWTJWT encoding & decoding, bcrypt - 비밀번호 암호화! 지금까지의 작업에서 유저들의 비밀번호를 string으로 받아 곧바로 DB에 저장해왔다. 이런식으로...! 이렇게되면, DB에는 비밀번호가 직접적으로 저장이되고, DB관리자나 DB에 접근할 수 있는 사람들은 유저들의 정보에 접근할 수 있는 위험이 있는 것이다. 이러한 이유로! 비밀번호를 꼭 암호화시켜서 다루는데, 비밀번호를 암호화하는 과정에서 "bcrypt"를 사용해 볼 수 있다! 비밀번호 h... westagramdjango암호화hashpw파이썬비밀번호WeCodeTILpythonbcryptTIL bcrypt로 패스워드 암호화 및 확인 user와 관련된 db에 패스워드를 그대로 저장하게 되면 db가 해킹 당했을때 아주 치명적인 결과가 될 수 있다. 따라서 암호화를 진행하여야 한다. bcrypt는 암호화를 아주 쉽게 도와주는 모듈이다. 워낙 간단하긴 하지만 회고를 목적으로 작성해보고자 한다. 우선 bcrypt가 설치되있지 않다면 pip install bcrypt로 설치를 해주자. 그 후에 다음과 같이 해쉬값을 생성해 줄 수 ... bcryptbcrypt