웹 사이트 및 비밀번호가 안전한지 사용자에게 확인하는 방법 [닫기]


15

신뢰할 수있는 웹 사이트에서는 항상 "모든 데이터가 암호화 됨"또는 "모든 암호가 128 비트 암호화를 사용하여 암호화됩니다"등과 같은 클레임을 볼 수 있지만 "모든 암호가 해시됩니다"와 같은 클레임을 발견 한 적이 없습니다.

내 웹 사이트에서 임의의 소금으로 SHA-512 (대부분의 가능성이 있음) 해싱을 사용한 후 모든 사용자 암호를 데이터베이스에 저장합니다. 비밀번호가 필요하기 때문에 웹 사이트 사용을 방해하지 않도록 비밀번호가 안전하다는 스 니펫을 추가하고 싶습니다. 사용자가 안전하다고 느끼기를 원하지만 모든 사람이 해싱이 무엇인지 알고 있다고 생각하지 않습니다.

내 질문 : 일반 사용자가 해싱과 암호화의 차이점을 알지 못한다고 생각하기 때문에 "모든 암호가 암호화되어 안전합니다"라는 메시지를 제공해도 괜찮습니다. 위로 단어 "암호화"? 아니면 대체 메시지를 제공해야합니까?

참고로, 암호화 및 암호 해싱을 처음 접했고 내 사이트를 시작할 때 이것이 충분히 안전한지 궁금합니다. 안전하지 않다면 사용자에게 안전하다고 말하고 싶지 않습니다. 모든 정보는 대단히 감사하겠습니다. 감사.


7
개인적으로 나는 의사 소통에 대해 너무 걱정하지 않을 것입니다 : 당신이하는 일에 대한 기술적 인 설명을 작성하십시오. 다른 사람은 어쨌든 실제로 신경 쓰지 않습니다. 더 중요한 것은 : 올바른 일을해야한다는 것입니다. (만약 처음에는 힘들지만 최소한 노력하고 있습니다!) 자신 만의 해싱을 만들지 말고 bcrypt 와 같은 것을 사용 하십시오 .
Joachim Sauer

4
올바른 로그인은 다른 사용자 이름과 비밀번호로 사용자를 방해하지 않고 로그인을 연합하는 것입니다.
Jan Hudec

1
OpenID는 좋지만 사용자 이름 / 암호도 괜찮습니다. 귀하의 문제는 사이트가 안전하다고 사용자를 설득하는 것이라고 생각하지 않습니다. 당신이 경험이 없기 때문에, 당신이 가지고 있지 않은 것을 약속하는 것과 같습니다. 일반적인 표준을 적용하십시오-전문 해커가 오는 것을 막을 수는 없지만 아무도 당신을 비난 할 수는 없습니다.
Hoàng Long

3
@coredump 참으로. 암호 해싱에 SHA-512를 사용하는 것은 좋지 않습니다. "확인"이 아닙니다.
토마스

3
정보 보안 에 대한 후속 질문 을 통해 최상의 최신 조언을 얻을 수 있습니다. (그렇다고해서 여기에서 나쁜 조언을 받고 있다는 것은 아닙니다. 단지 보안 전문가 일 필요는 없습니다).
ChrisF

답변:


22
  1. 사용자는 신경 쓰지 않습니다.

    그들이 돌보는 유일한 시간은 누군가가 자신의 은행 계좌에서 돈을 인출 할 때이며 며칠 전에 연결되어있는 것으로 보이며 누군가가 데이터베이스에 완전히 액세스 할 수있는 것으로 보입니다.

  2. 거의 모든 경우에 그러한 메시지를 보았을 때 오해의 소지가있었습니다. 가장 재미있는 것은 모든 페이지에 "군사 수준의 보안"스타일 레이블이있는 웹 사이트였습니다. HTTP 인증서가 유효하지 않다는 경고가있었습니다. 로그온 양식에 SQL 삽입이있었습니다. 몇 주 후 웹 사이트가 해킹 된 후 영원히 사라졌습니다.

    "암호 복구"양식을 사용하면서 실제로 전자 메일을 통해 원래 암호를 보내는 웹 사이트의 수를 세지 않습니다.

    "W3C 유효한 XHTML"레이블과 같습니다. 일반적으로 홈페이지에도 수십 개의 오류와 코드가 포함 된 웹 사이트에 게재되는 이유는 무엇입니까?<DIV COLOR='red'> 되는가?

여전히 사용자를 안심 시키려면 다음과 같이 입력하십시오.

비밀번호는 안전하게 유지됩니다. 암호를 볼 수 없으며 암호를 입력하라는 전자 메일을 보내지 않습니다.

그러나 솔직히 말하면 "암호를 잊어 버렸습니다. 전자 메일로 보내십시오"라는 단어를 대체하는 "암호 재설정"양식은 어떤 단어보다 안심이됩니다.

다른 의견의 힌트 :

  • 바퀴를 재발 명하지 마십시오 : OpenID를 사용하십시오. 이렇게하면 해시도 저장하지 않습니다.

    출처 : 얀 허덱에 의해 코멘트 .

  • 학생이기 때문에 프로젝트를 오픈 소스하십시오. 귀하의 우려는 다음과 같습니다 . "학교의 일부 어린이가 비밀번호를 디자인했기 때문에 사용자가 비밀번호가 안전하지 않다고 생각하지 않기를 바랍니다.", 소스 코드를 읽음으로써 보안에 관심이있는 숙련 된 개발자가 작성한 것을 확인할 수 있다는 것이 더 안심이되지 않습니다.

    출처 : 월 Doggen에 의해 코멘트 .


입력 해 주셔서 감사합니다. 문제는 학생을위한 서비스를 디자인하는 학생입니다. 학교의 일부 어린이가 암호를 설계했기 때문에 사용자가 암호가 안전하지 않다고 생각하지 않기를 바랍니다. 나는 bcrypt를 포함하여 여러 가지 다른 방법을 살펴 보았으며 사용할 방법을 결정하지 않았습니다. 나는 그것이 지금 충분히 안전 할 것이라고 생각하고 많은 사람들이 그것을 사용하기 시작하면 필요한 경우 추가 할 수 있습니다. 나는 지금 당장 그것을 꺼내려고 노력하고 있습니다. 다시 감사합니다.
user2698818

3
@ user2698818 당신이해야 할 일은 보안을 설계 한 다음, 보안에 대해 자세히 설명하고 '이것이 안전하다'고 묻는 질문을 게시하는 것입니다. 좋은 보안은 완전히 공개 될 수 있습니다.
Jan Doggen

@ user2698818 : 알겠습니다. 내 답변을 수정했습니다.
Arseni Mourzenko

6
@JanDoggen : 글쎄, 그가 해야 할 일은 다른 사람이 설계하고 "충분히 안전 하냐" 는 기존 보안 시스템을 사용하는 입니다. 바람직하게는 그 질문이 꽤 동안 서서하고 ;-) 분야의 여러 전문가의 관심을 갖고 한
요아킴 사우어을

12

우선 비밀번호를 저장하지 마십시오! Stack Exchange의 예를 따르고 사용자가 OpenID 를 통해 인증을 제공하는 다른 사이트에서 자신의 ID로 로그인하게합니다 . 대부분의 일반적인 웹 프레임 워크에서 구현을 자유롭게 사용할 수 있습니다.

또는 다른 프로토콜 일 수도 있습니다. 일부 기관의 사내 프로젝트 인 경우 (다른 답변에 대한 의견에서 알 수 있듯이) LDAP, Kerberos (Windows Active Directory는이 두 가지를 기반으로합니다. 아파치는 HTTP 인증을 지원합니다) 또는 일부가 이미 있습니다 컴퓨터 로그인 서비스. 그것에 연결하십시오.

이렇게하면 민감한 정보를 저장하지 않아도되며 (여전히 권한을 저장해야하지만 그렇게 중요 하지는 않습니다 ) 사용자는 다른 사용자 이름과 암호를 기억하지 않아도되므로 전체적인 상생을 얻을 수 있습니다.


1
권한이 보안에 중요하지 않은 것으로 취급하는 경우 피할 수 있도록 어떤 사이트를 만들 었는지 알려주십시오.
orlp

1
암호를 저장해야하는 경우 어떻게해야합니까? 또한 질문은 구체적으로 저장에 대해 묻습니다.
Piotr Kula

3
@ppumkin : "X를 사용하여 Y를 수행하는 방법"에 대한 가장 좋은 대답은 "당신은 Z를 사용합니다"라는 많은 질문이 있습니다. 동의하지 않으면 더 나은 답변을 제공하십시오 ;-).
Jan Hudec

3
@ppumkin 유추를 사용하려면 : "나는 주먹으로 바위를 부수려고하는데 어떤 장갑을 사용해야합니까?" 19 기 독일 기병 건틀릿을 제공하기 전에 끌을 알고 있는지 확인하십시오.
deworde

1
OpenID를 제안하기에는 너무 빠르지 않습니다. 예, 훌륭하지만 일반적으로 여러 OpenID / OAuth 공급자를 지원하는 경우 가장 효과적입니다. Facebook의 OID 공급자를 통해 로그인해야하며 다른 기술을 사용할 수없는 기술 포럼, 블로그, Q & A 등이 많이 있습니다. Facebook 도메인 도매를 차단하는 업무용 네트워크를 사용하고 있으므로 해당 사이트로 작업 할 수 없습니다. 당신은 지원 OID에가는거야, 단지 귀하의 타겟 고객에게 인기입니다 공급자 선택, 지금은 하나를 사용하려는 경우 은 sysadmin에 의해 차단 될 가능성이 있습니다. Google과 Windows Live는 좋은 선택입니다.
KeithS

2

속담:

"이것은 안전하다."

는 특정 기술적 사실이나 프로세스에 대한 개인적인 판단이며,이 판단은 당시 보안에 대해 알고있는 것에 의해 제한됩니다. 그러나 암호화, 저장 방법 등이 알지 못하거나 아직 알지 못하는 공격을 포함하여 어떤 종류의 공격에도 견딜 수 있다는 것을 의심 할 여지가 없습니까?

의미 : 이 진술은 아마도 귀하가 알지 못하는 경우에도 구식이 될 위험이 있습니다.

그래서 저는 @JoachimSauer에 의해 위의 의견에 동의하는 경향이 : 그냥 당신이 무엇을 설명, 방법을 사용자 정보를 저장하고이이 방법을 사용자에게 가정 서비스가 보호합니다. 그런 다음 사용자가 스스로 판단하도록하십시오.


에, "꽤있다"와 같은 아니, 그것은되지 않는다 "이것은 안전하다"는 "개인"또는 주관적인 문이 아닌 . 실제로 "무엇과 관련하여"또는 "무엇으로부터 공격으로부터 보안"또는 "어떤 컨텍스트에서 어떤 수준으로"를 지정하지 않고 의미 적으로 문장입니다. 전체 설명이 "이 보안"으로 구성되어 있으면 입력을 마치기 전에 날짜가 지났으므로 알지 못할 가능성이 높습니다. 나는 마지막 부분에 동의하지만 세부 사항에 관한 것입니다.
AviD

@AviD : 아마도 당신은 내가 선택한 단어를 너무 많이 읽었을 것입니다. 그렇습니다. 더 자세한 내용을 제공하지 않고 "안전한"것을 말하는 것은 의미가 없습니다. 그러나 나는 그것이 모두 "보안"에 대한 동일한 감각과 요구를 가지고있는 것은 아니기 때문에 그것이 개인적인 판단 이기도 하다는 것을 확신한다 . 진술을하는 사람은 "안전하다고 판단한다". 그리고 그것은 누군가에게 관련 사실을 알려주고 그들 자신의 결론을 도출하게하는 것과 같은 무게를 가진 주장이 아닙니다.
stakx

맞습니다. "무엇과 관련하여"어떤 요구 사항, 보안 프로필, 위험 등을 의미했습니다. 여전히 개인적인 판단은 아니지만 "개인"이라는 의미는 "컨텍스트"라는 의미입니다. "보안" 어려운 과학적 지표이며 부드럽고 소박한 "느낌"이 아닙니다. 하지만 네가 말한 것처럼 "안전하다"고 말하지 말고 어떻게했는지 말 해주세요.
AviD

@AviD : OK. 나는 안보 또한 소름 끼치는 느낌이라는 말을 제외하고는 더 이상 논증을하지 않을 것이다 . 물론 그 이상이지만, 사용자를 "보장"하는 것에 관한 질문 (질문 제목 참조) 일 때, 소원 한 느낌이 결국에는 중요합니다.
stakx

1

실제로 특정 웹 사이트의 컨텍스트에 따라 다릅니다.

예를 들어, 이것이 소비자 웹 사이트 인 경우, 대부분은 비밀번호 (아마도), 재무 / 건강 정보 (의존) 및 사진과 같은 개인 정보 (하하하, 예) ... .

이것이 비즈니스 응용 프로그램 인 경우 암호뿐만 아니라 전체 사이트의 보안 수준이 관련됩니다. 마찬가지로, 그것은 당신의 타겟 사용자가 누구인지에 달려 있습니다-고도의 기술 / 그렇지 않은 기술 등

이 모든 상황은 크게 정의 무엇을 당신이 의사 소통되어야하고, 보증의 수준이 무엇을 필요합니다.

예를 들어, 비 기술적 소비자의 경우 다음과 같은 일반적인 간단한 의견을 갖는 것으로 충분합니다.

이 사이트는 최신 보안 기술을 사용하여 구축되었습니다. 귀하의 비밀번호는 항상 암호화되며 NSA에 귀하의 사진을 보내지 않습니다.

(그리고 다른 사람들이 말했듯 암호를 전혀 사용 하지 않는 것이 좋습니다 . OpenId 또는 OAuth와 같은 표준을 사용하십시오.)

고도로 기술적 인 비즈니스의 경우 다음과 같은 기술 및 절차 세부 정보의 전체 페이지를 원합니다.

우리는 개발 및 배포 프로세스 전체에서 전체 SDL (보안 개발 수명주기)을 구현했습니다.
...
우리의 보안 아키텍처는
다음과 같은 이점을 제공합니다 . 우리는 다음과 같은 안전한 코딩을 보장합니다.
우리의 암호화에는 이러한 알고리즘이 포함되어 있습니다 ... 그리고 ... 우리는 당신이 필요로하는 산업 규정을 준수하고 인증을 받았습니다 ...
우리의 보안은이 독립적 인 제 3 자 컨설턴트에 의해 확인됩니다.
...
자세한 내용 및 정책을 검토하거나 독립적 인 감사를 주선하려면 마케팅 부서에 문의하십시오.

물론, 당신은 너무 많은 자세한 정보를 제공하고 싶지 않으며 , 암호 자체보다 프로세스에 대해 더 많은 정보를 제공해야합니다. 물론 실제로는 실제로 작성한 내용을 준수 해야한다는 것은 말할 것도 없습니다. , 처리중인 컨텍스트

언급 된 답변 중 하나로서, 대부분의 사용자는 신경 쓰지 않고, 당신이 말한 것을 이해하지 못하며, 사용자 데이터를 NSA에 보내라고 말하더라도 여전히 가입 할 것입니다.
이것은 그들을위한 것이 아닙니다.
비밀번호가없는 것만 큼 행복 할 것입니다. 목록에서 내 사용자 이름을 선택하고 자동으로 로그인하겠습니다.

분명히 이것은 소액의 관심을 끌기위한 것입니다. 현명한 사용자가 옳은 일을하고 필요한 정보를 제공하고 그들이 원하는 교육을받을 수 있도록해야합니다.
그렇지 않으면 잘못 될 때 다른 98 %가 갑자기 일어나 화를냅니다.
( "물론, 나는 내 사진을보기 위해 암호가 필요하지 않다는 것을 알았지 만 다른 사람 도 볼 수 있다고 생각하지 않았습니다 !!")


0

시스템을 안전하게 유지하려면 암호 알고리즘의 강도는 의미가 없습니다. 특히 선택한 암호가 작거나 해커가 이미 "크랙하고 저장 한 일반적인 단어로 구성된 경우 대부분의 해커가 다음에 암호를 해독 할 수 있습니다. "usiong 무지개 테이블과 유사한. 암호 해독에 관한 ArsTechnica의 기사 읽기 대한 많은 통찰력을 얻으십시오.

당신이해야 할 일은 나쁜 사람들이 처음부터 해시에 갈 수 없다는 것을 사용자에게 확신시키는 것입니다. 내가 일한 보안에 민감한 회사 중 하나는 웹 서버가 데이터베이스 서버에 물리적으로 연결되어 있지 않은 3 계층 웹 시스템이었습니다. 상사가 자신의 웹 사이트를 설치하고 DB에 직접 액세스하고 싶을 때 (불완전하게 설계된 코드, '너프') 그는 그것을 가질 수 없다고 들었고, 푸시했을 때 ... 그들 사이에 전선이 없다고 들었습니다. . 그는 중간 계층 서비스를 통해 모든 데이터 요청을 전달하도록 설계해야했습니다. 그리고 이러한 서비스는 보안뿐만 아니라 공격에 최소한의 노출로 노출되어 잠겼습니다. 그리고 DB는 테이블을 읽기 위해 노출하지 않았으며, 저장 프로 시저 만 잠겨서 관련 서비스 만 액세스 할 수있었습니다.

각 계층의 아키텍처와 분리를 알고 나면 코드 작성이 매우 쉽다고 생각하는 것처럼 코드를 작성하는 것은 나쁘지 않습니다.


0

지구상에서 가장 안전한 사이트를 개발할 수 있으며 실제로 사용자 경험이 좋지 않습니다. 사용자는 사이트가 안전하지 않다고 가정합니다.

지구상에서 가장 안전한 사이트를 구축하고 놀라운 사용자 경험을 가질 수 있습니다. 사용자는 사이트가 안전하다고 가정합니다. 저녁 뉴스에 나타날 때까지

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.