단방향 암호화는 평문을 암호화할수는 있지만 암호화된 문자를 다시 평문으로 즉, 복호화가 불가능한 암호화 방법, 주로 해시 알고리즘을 통하여 단방향 암호화를 구현함, 단방향암호화를 사용하는 주된 이유는 메시지 또는 파일의 무결성을 보장하기위함, 원본의값이 1bit라도 달라지게되면 해시알고리즘을 통과한 후 해시값이 높은확률 로 달라짐, 이걸 통해 메세지나 파일이 원본인지 아닌지 확인
대표적인 해시 알고리즘은 MD5, SHA등이 있음
해시 알고리즘은 동일한 평문은 항상 동일한 해시값을 갖음, 따라서 특정 해시알고리즘에 대해서 어떤 평문이 어떤 해시값을 갖는지 알수 있음, 이런 특징을 통해 함수의 해시값을 대량으로 정리한 테이블이 존재하며, 이를 레인보우 테이블이라고 부름, 그리고 이테이블을 이용하여 사용자정보를 해킹하는 공격을 레인보우 공격이라고함
해시함수는 본래 데이터를 빠르게 검색하기위해 태어남, 이러한 특징은 공격자에 오히려 장점이 됨, 공격자는 매우 빠른 속도로 임의의 문자열의 해시값과 해킹할 대상의 해시값을 비교하여 공격가능함,
(MD5를 사용한 경우 일반장비를 이용하여 초당 56억개 해시값 비교가능)
솔팅은 단방향 해시함수를 통해 암호화 진행할때 본래 데이터에 랜덤 데이터를 더하여 암호를 진행하는 방식, 원래데이터에 추가 데이터를 더하므로 해시값이 달라짐,
단방향 해시값을 계산하고, 그 해시값을 또다시해시하고 이를 반복하는 방식, 최근엔 일반장비로 1초에 50억개 이상 해시값을 비교할수있지만, 키스트레치를 적용하여 동일한 장비에서 1초에 5번 정도만 비교가능, GPU를 사용하더라도 수백에서수천번 까지만 비교가능
단방향암호화와 달리 양방향 암호화는 암호화된 값을 다시 암호화하기전값으로 복호화가 가능, 양방향 암호화는 알고리즘과 키를 이용해 암호화를 하는데, 이 키를 통해 암호화된 값을 보호할수 있습니다.
대칭키 방식은 암호화할때 키와 암호화된 값을 복호화할때 사용하는키가 동일한 암호 시스템, 따라서 암호화할때 사용했던 키를 모른다면 해당 암호문을 다시 복호화 못함
대표적인 알고리즘으론 AES가 있는데 AES는 128, 192, 256비트의 정해진 길이의 키를 사용함, 암호화 진행시 키의 길이가 길어져 복잡할수록 암호화도 복잡하게되지만 그만큼 컴퓨터 자원이 많이필요하기때문에 적절한 길이의 키를 사용해야함
하나의키를 이용하므로 다른사람과 대칭키 기반으로 암호화 통신을 할경우 상대방도 사전에 키를 갖고있어야함,
이때 키를 주고받는과정에 키가 중간에 유출될 우려가 있음, 여러상대방과 통신 할경운 각각의 키를 관리하는게 더욱 어려워진다는 단점이있음
비대칭키 암호화또한 암호화와 복호화 모두 가능하며, 암호화 진행할때 키를 사용함, 하지만 대칭키 암호화랑 다르게 암호화때 사용하는키랑 복호화때 사용하는 키가 다름, 일반적으로 다른사람에게 공개하는 Public Key와 절때 노출하지않는 Private Key가 있으며, 이두개를 Key Pair라고 명칭함, 비대칭키 암호화는 암호화키와 복호화키를 따로 관리함으로써 대칭키 암호화의 고질적인 문제였던 키의 탈취 또는 관리의 단점을 보완함
비대칭키 암호화는 Key Pair를 쓰기때문에 키노출에 대한 문제를 해결할수있습니다.
전자서명은 종이문서의 서명과 같이 전자문서에 서명한사람이 누군지 확인하고 위변조사실을 알수있도록 전자문서에 부착하는 특수한형태의 디지털 정보를 말함, 전자서명은 비대칭키 암호화를 통해 구현할수 있음, 비대칭 암호화의 Key Pair가 종이문서의 인감도장과 인감증명의 역할을 하게됨, Private Key(인감도장)는 서명자만 보관해서 사용하고, 공개된 Public Key(인감증명) 통해 서명이 진짜인지 아닌지 판단가능