티스토리 뷰

728x90
반응형

목차

     

    Two Way Encryption

     

    양방향 암호화는 다른 말로 Symmetric-Key(대칭키)/Public-Key(공개키) 암호화라고 불린다.

     

    HTTPS가 기본적으로 지원하는 암호화이며, 시간 순으로는 연산속도가 빠르지만 암호화/복호화 알고리즘을 전달하기 어려운

     

    대칭키 방식을 보완하기 위해 공개키, 혹은 비공개 키가 도입되었다고 할 수 있다.

     

    공개키는 대칭키와 달리 암호화와 복호화에 서로 다른 키를 사용하는 알고리즘이며,

     

    복호화 키가 공유되지 않기 때문에 비교적 안전하지만 연산에 시간이 많이 소요된다는 단점이 있다.

     

    따라서 HTTPS에서는 두 방식을 적절히 섞어서 사용하는데,

     

    구체적으로는 대칭키를 공개키 방식으로 교환, 이후의 데이터 교환은 대칭키 방식으로 하는 식이다.

     

    추가로 이는 HTTP의 3-Way Handshake를 보완하는 식으로 작동한다.

     

     

    One Way Encryption

     

    단방향 암호화란 한 마디로 말하면 암호화는 가능하지만 복호화는 불가능한 암호체계를 가리킨다.

     

    일반적으로 해시 암호화 체계를 말하며, 여기서 해시 암호화란 특정 대상에게 해시 함수를 적용하는 암호화를 말한다.

     

    조금 더 구체적으로 해시 함수란 임의의 데이터를 받아 고정된 길이를 반환하는 단방향 함수이며,

     

    아주 간단하게는 자바에서 나머지를 구하는 연산도 해시 함수라 볼 수 있는 구석이 있다.

     

    계속해서 해시 함수의 특징은 아래와 같으며,

     

    • 비교적 간단한 알고리즘으로 시스템 자원을 덜 소모한다, 즉 해시값 생성에 많은 시간이 들지 않는다.
    • 해시값을 해독할 때는 많은 시간이 든다.
    • 같은 입력 값에 대해선 같은 출력 값이 보장되며, 출력 값은 고르게 분포한다.
    • 입력값이 아주 조금만 변해도(abcd1 → abcd2) 출력 값은 크게 달라진다(이를 눈사태 효과라 한다).

      • MD5("The quick brown fox jumps over the lazy dog") = 9e107d9d372bb6826bd81d3542a419d6
      • MD5("The quick brown fox jumps over the lazy dog.") = e4d909c290d0fb1ca068ffaddf22cbd0
    • 다른 입력 값에 대해서 같은 값이 출력될 확률(이를 충돌이라 부른다)은 0에 가깝다.
    • 충돌을 의도적으로 계산하는 방법은 존재하지 않는다.

    결과만 가지고는 원래 데이터가 무엇인지 추측조차 할 수 없다.

     

    따라서 보안이 중요한 비밀번호 등의 정보를 DB에 저장할 때 사용되며, SHA-256, SHA-3 등의 해시 함수가 있다.

     

    • SHA - Secure Hash Algorithm. 미 국가안보국(NSA)에서 개발하고 표준이 된 해시 함수

    계속해서 암호화 과정에서 입력값에 보안을 더하기 위해 별도의 값을 추가하는 것을 Salting이라고 하며,

     

    이는 복수의 클라이언트가 동일한 비밀번호를 사용하더라도 다른 해시값을 가지도록 도와준다.

     

    또한 완전 탐색이나 레인보우 테이블 전략, 혹은 알고리즘 노출의 위험에서 정보를 조금 더 안전하게 지켜주기도 한다.

     

    • 완전 탐색 - 가능한 모든 경우의 수를 다 시도하는 방법
    • 레인보우 테이블 - 해시함수의 결괏값을 가공해 저장한 테이블. 100GB를 우습게 넘는다.

    마지막으로 Salting에는 몇 가지 원칙이 있는데, 이는 아래와 같다.

     

    • Salt는 유저와 패스워드 별로 유일한 값을 가져야 한다.
    • 계정 생성 및 비밀번호 변경시마다 임의의 Salt를 새로 배정해야 한다.
    • Salt는 절대 재사용하지 않는다.
    • Salt는 DB의 유저 테이블에 함께 저장한다.
    반응형
    댓글
    공지사항
    최근에 올라온 글
    최근에 달린 댓글
    Total
    Today
    Yesterday
    링크
    «   2024/06   »
    1
    2 3 4 5 6 7 8
    9 10 11 12 13 14 15
    16 17 18 19 20 21 22
    23 24 25 26 27 28 29
    30
    글 보관함