2009-07-29 9 views
40

I read 암호화를 수행하는 데이터 유형이 있으므로 데이터베이스에 비밀번호가 보안됩니다.PostgreSQL에서 암호의 데이터 유형은 무엇입니까?

지금 암호를 저장하려면 varchar을 사용합니다. 암호에 SHA-512 기능을 적용하고 일반 텍스트 암호가 제거되도록 해당 데이터를 어딘가에 배치해야한다는 생각이 들었습니다.

그러나 Perl의 데이터 유형은 PostgreSQL에서 varchar보다 더 나은 방법이 있음을 보여줍니다.

PostgreSQL의 암호 데이터 유형은 무엇입니까?

답변

42

제프는 You're Probably Storing Passwords Incorrectly이라는 좋은 기사를 갖고 있습니다. 이 기사에서는 데이터베이스에 암호를 저장하는 다양한 방법과 실행할 수있는 일반적인 함정에 대해 설명합니다. 특히 해시 알고리즘, 레인보우 테이블 및 손상된 암호 파일의 위험을 줄이기 위해 "소금"사용에 대해 설명합니다.

varchar 데이터 형식을 사용하면 적절하게 해시 된 암호를 저장하는 데 완벽하게 적합합니다.

이 경우
=> select account_id, email, salt, passhash from account where email = '[email protected]'; 
account_id |  email  |  salt  |     passhash     
------------+------------------+------------------+------------------------------------------ 
      1 | [email protected] | GFR9uT4N4Tzl3vnK | 2c2bf00079a6d49a8f7fb17cefb52fdb41a4b043 
(1 row) 

, passhash는 SHA-1 내 비밀번호와 연결 소금의의 진수 표현입니다 : 예를 들어, 다음 프로덕션 데이터베이스에서 내 실제 계정 기록의 일부입니다.

+0

하면 소금이어야한다 Accounts 테이블의 각 계정에 대해 다른가? –

+1

예, 다른 소금을 사용해야합니다. 그렇지 않으면 전혀 소금과 전혀 다릅니다. Jeff는이 기사에서이 내용을 다룹니다. –

+0

당신이 말하는 훌륭한 기사. 저자는 당신이 사용하는 것보다 더 많은 소금을 제안합니다. 훨씬 짧은 소금을 사용하는 이유는 무엇입니까? – mvexel

4

이 모듈은 암호화 된 패스워드를 저장하기 위해 설계 데이터 유형을 구현 chkpass "chkpass 모듈"을 설치한다. postgresql contrib 패키지를 설치하고 CREATE EXTENSION 명령을 실행하여 설치해야합니다.

sudo apt-get install postgresql-contrib 

다시 시작 PostgreSQL 서버 :

sudo /etc/init.d/postgresql restart 

가능한 모든 확장에 있습니다

/opt/PostgreSQL/9.5/share/postgresql/extension/ 

이제 실행할 수는 다음과 같이 갈 것 우분투 12.04에서

CREATE EXTENSION 명령.

예 :

CREATE EXTENSION chkpass; 

CREATE TABLE accounts (username varchar(100), password chkpass); 
INSERT INTO accounts(username, "password") VALUES ('user1', 'pass1'); 
INSERT INTO accounts(username, "password") VALUES ('user2', 'pass2'); 

select * from accounts where password='pass2'; 

반환

username | password 
--------------------------- 
"user2" | ":Sy8pO3795PW/k" 
+0

소금과 해시가있는 grep의 답변과 비교하여이 패키지의 이점은 무엇입니까? –

+1

chkpass는 암호 알고리즘을 사용합니다. 해시는 2012 년에 누출 된 암호가 여러 건있는 알고리즘입니다. 소금은 해시가 결합되어 보안을 강화한 조합입니다. chkpass를 사용하면 텍스트 비교가 쉽습니다. –

+0

관리자는 실제 비밀번호를 볼 수 있습니까? 나는 그들이해서는 안된다 고 생각한다. 암호 알고리즘은 무엇입니까? –

2

포스트 그레스 버전 9.4+이에 설명 된대로 pgcrypto 확장을 사용하여 스마트와 시큐어 방법으로 끝낼 수 있습니다 http://www.meetspaceapp.com/2016/04/12/passwords-postgresql-pgcrypto.html

+1

연장의 이점과 단점을보다 명확하게 설명해 주실 수 있습니까? 이제 귀하의 답변은 대부분 링크 전용 답변입니다. –

관련 문제