전체 글 4

TLS (2) : 디지털 서명

암호학적 해시 함수암호학적 해시 함수(cryptographic hash function)는 일반적인 해시 함수처럼 임의의 입력을 범위 안의 수로 변환하는 함수이지만, 몇 가지 특징이 더 요구된다.단방향 함수(one-way function) : 입력에서 해시값을 만들어내기는 쉬워도, 해시에서 입력을 만들어내는 것이 불가능하거나 매우 어려워야 한다.쇄도 효과(avalanche effect) : 차이가 조금 있는 여러 입력 데이터에 대한 해시 결과값은 서로 연관관계가 있어서는 안 된다.디지털 서명디지털 서명(digital signature)은 네트워크에서 송신자의 신원을 증명하는 방법이다. 디지털 서명은 송신자가 자신이 보내려는 데이터의 암호학적 해시값을 계산한 뒤, 그 해시된 값을 자신의 개인키로 암호화한 ..

CS 2025.11.26

TLS (1) : 암호화 메커니즘

암호화(encryption)란, 특별한 지식을 소유한 사람들을 제외하고 그 누구든 읽을 수 없도록 알고리즘을 이용하여 정보를 전달하는 과정을 일컫는다. 암호화되기 전의 정보를 평문(plaintext), 암호화된 정보를 암호문(ciphertext)이라 부른다. 암호화에 역행하는 과정, 즉 암호문을 보고 평문을 얻는 과정을 복호화(decryption)이라 부른다.대칭 키 암호대칭 키 암호(symmetric-key algorithm)란, 암호화와 복호화에 똑같은 키(Key)를 사용하는 방식을 말한다. 키는 암호 알고리즘을 작동시키기 위한 일종의 '비밀번호'와 같다. 자물쇠를 잠글 때 사용한 열쇠가 있어야만 다시 열 수 있는 것처럼, 대칭 암호는 송신자와 수신자가 동일한 키를 공유하고 있어야 한다는 특징이 있다..

CS 2025.11.24

blobnom Kotlin+Spring으로 다시 짜기 (1) - Member 애그리거트 (작성 중)

class Member(TimestampMixin, Base): __tablename__ = "members" id = Column(Integer, primary_key=True) handle = Column(String, index=True) role = Column(Enum(Role), nullable=False, default=Role.MEMBER) email = Column(String) password = Column(String, nullable=False) rating = Column(Integer, default=1200) users = relationship("User", back_populates="member") owned_rooms =..

blobnom Kotlin+Spring으로 다시 짜기 (0)

https://blobnom.xyz/ BlobnomBlobnom에서 알고리즘 문제를 해결하고 친구들이나 전국의 유저들과 경쟁해보세요!blobnom.xyz 필자가 운영 중인 서비스로, SW마에스트로 활동으로 인해 1년이 넘게 관리를 하지 못하고 있었다. 이용 중인 유저들에게는 굉장히 죄송하게 생각한다. 이제 SW마에스트로도 끝을 앞두고 있어, 다시 운영에 집중하려 한다. 하지만 기능 개발을 재개하기 전에, 프로젝트 경험이 처음이었기에 서툴게 작성했던 그때의 FastAPI 코드를 조금 더 체계적으로 다시 작성해보고자 한다. 나의 백엔드 주 프레임워크를 Kotlin+Spring으로 결정한 지금, blobnom 서버를 Kotlin과 Spring으로 처음부터 다시 짜보는 경험은 내게 큰 도움이 될 것 같다. 아..