암호화 방식(단방향 암호화, 양방향 암호화)

cabbage·2023년 2월 4일
0

기타

목록 보기
4/26

암호화

암호화

  • 평문을 암호문으로 변환하는 것

복호화

  • 암호문을 평문으로 되돌리는 것

암호화 방식에는 2가지 방식이 있다.

  • 단방향 암호화
  • 양방향 암호화
    • 대칭키 방식
    • 비대칭키 방식

단방향 암호화

단방향 암호화는 복호화할 수 없는, 암호화만 가능한 암호화 방식을 말한다.

  • 단방향 암호화의 경우 한번 암호화한 경우 복호화할 수 없음
  • 정보의 '무결성(integrity)'에 초점이 맞춰진 암호화 방식
  • '해시(hash)': 단방향 암호화를 표현하는 다른 방법

해시

  • 사전적 의미: '다지다', '으깨다'
  • 어떤 데이터를 '해시'하면 해시 값이 나오는데, 해시 값을 사용해 원본 데이터로 되돌릴 수 없다.
  • 식재료를 다지거나 으깨면 원래 상태로 되돌릴 수 없는 상태가 되는 것과 같다고 볼 수 있다.

해시를 사용하는 가장 중요한 이유는 정보의 '무결성(integrity)' 때문이다.

  • 어떤 정보가 훼손되거나 조작되지 않았는지 확인하기 위해 해시를 사용한다.

해시 사용 사례(웹에서 파일을 다운로드하는 경우)

  • 다운로드 과정에서 파일이 조작되거나 훼손되었을 수도 있다.
    만약 다운로드한 파일이 조작되거나 훼손되었다면 그 파일은 신뢰할 수 없는 파일이다.
    다운로드한 파일이 원본 파일과 같다는 것을 확신하기 위해 해시를 사용한다.
    다운로드한 파일을 해시 알고리즘에 넣어 얻은 해시 값을 원본 파일의 해시 값과 비교하면 된다.
    • 같다: 다운로드한 파일이 원본 파일과 같은 파일이다.
    • 다르다: 다운로드한 파일이 조작되었거나 훼손되었다.

대표적인 해시 알고리즘

  • MD5
  • SHA-256
  • SHA-512

양방향 암호화

양방향 암호화는 암호화와 복호화 모두 가능한 암호화 방식을 말한다.

  • 정보의 '기밀성(confidentiality)'에 초점이 맞춰진 암호화 방식
  • 2가지 방식이 존재
    • 대칭키 방식
    • 비대칭키 방식

대칭키 방식

대칭키 방식은 암호화할 때 사용하는 키를 복호화할 때도 그대로 사용하는 방식을 말한다.

  • 대칭키를 사용해 암호화한 암호문과 암호화 시 사용한 대칭키를 전달한다.
  • 대칭키가 있어야 암호문을 복호화할 수 있는 방식이기 때문이다.
  • 비대칭형 방식에 비해 키 사이즈가 작고 알고리즘 구조가 간단하여 연산속도가 빨라 암호 시스템을 효율적으로 구축할 수 있다는 장점이 있다.
  • 대표적인 대칭키 방식의 암호 알고리즘
    • AES
    • SEED
    • DES

대칭키 방식의 문제점

대칭키 방식의 문제점은 대칭키가 제3자에 의해 탈취되었을 때 발생하는 보안 문제가 있다.

대칭키 방식의 보안 문제 시나리오

  • A가 B에게 대칭키로 암호화한 암호문을 대칭키와 함께 전달한다.
  • 전달 과정에서 제3자가 A가 전달한 암호문과 대칭키를 탈취한다.
  • 제3자는 A가 전달한 암호문을 대칭키를 사용해 복호화할 수 있다.

비대칭키 방식

비대칭키 방식은 암호화와 복호화에 서로 다른 키를 사용하는 방식이다.

  • '공개키 방식'이라고도 한다.
  • 비대칭키 방식의 키는 2개가 있다. 이 2개의 키를 '키 페어'라고 한다.
    • 공개키(public key)
    • 비공개키(private key)
  • 대칭키 방식에 비해 복잡한 방식이기 때문에 연산이 복잡해 속도가 느리다는 단점이 있다.
  • 대표적인 비대칭키 방식의 암호 알고리즘
    • RSA

공개키로 암호화하는 경우 비공개키를 사용해 복호화해야 한다.
비공개키로 암호화하는 경우 공개키를 사용해 복호화해야 한다.

  • 비공개키로도 암호화할 수 있지만 공개키를 공개해 비대칭키 방식의 암호화가 진행되기 때문에 공개키로 암호화한다.

비대칭키 방식으로 대칭키 방식 보완하기

비대칭키 방식을 사용하면 대칭키 방식의 문제점을 보완할 수 있다. 대칭키 방식의 보안 문제 시나리오를 비대칭키 방식으로 보완한다면 다음과 같다.

  • A가 공개키와 비공개키를 생성한다.
  • A가 공개키를 인터넷에 공개한다. 아무나 A의 공개키를 알 수 있다.
  • B가 A의 공개키를 얻는다. (제3자도 A의 공개키를 얻을 수 있다.)
  • B가 A의 공개키를 사용해 암호화한다.
  • B가 암호문을 A에게 전달한다.
    전달 과정에서 제3자가 B의 암호문을 탈취한다.
  • A는 B의 암호문을 전달 받고 자신의 비공개키를 사용해 B의 암호문을 복호화한다.
    제3자는 B의 암호문을 탈취했지만 A의 공개키로 암호화된 암호문을 복호화할 수 없다. A의 비공개키를 모르기 때문이다.

공개키로 암호화한 암호문은 비공개키로만 복호화할 수 있다. 비공개키를 알면 암호문을 복호화할 수 있기 때문에 비공개키가 탈취되지 않도록 신경써야 한다.

참고

profile
캐비지 개발 블로그입니다. :)

0개의 댓글