How Cryptography Fortifies Your Server: In today’s digital landscape, server security is paramount. Cyberattacks are relentless, targeting vulnerabilities to steal data, disrupt services, or inflict financial damage. This comprehensive guide explores how cryptography, the art of secure communication, acts as a formidable shield, protecting your server from a wide range of threats, from data breaches to denial-of-service attacks.
We’ll delve into encryption techniques, key management strategies, and the implementation of robust security protocols to ensure your server remains a secure fortress.
We will examine various cryptographic methods, including symmetric and asymmetric encryption, and how they are applied to secure data at rest and in transit. We’ll explore the crucial role of digital signatures in ensuring data integrity and authentication, and discuss practical implementations such as TLS/SSL for secure communication and SSH for secure remote access. Beyond encryption, we will cover essential aspects like secure key management, database encryption, firewall configuration, and multi-factor authentication to build a truly fortified server environment.
Introduction
Server security is paramount in today’s digital landscape. A compromised server can lead to significant financial losses, reputational damage, and legal repercussions. Understanding the vulnerabilities that servers face is the first step in implementing effective security measures, including the crucial role of cryptography. This section will explore common server security threats and illustrate their potential impact.
Servers are constantly under attack from various sources, each employing different methods to gain unauthorized access or disrupt services. These attacks range from relatively simple attempts to exploit known vulnerabilities to highly sophisticated, targeted campaigns. The consequences of a successful attack can be devastating, leading to data breaches, service outages, and financial losses that can cripple a business.
Common Server Security Threats
Servers are vulnerable to a wide range of attacks, each exploiting different weaknesses in their security posture. These threats necessitate a multi-layered approach to security, with cryptography playing a critical role in strengthening several layers of defense.
The following are some of the most prevalent types of attacks against servers:
- Distributed Denial-of-Service (DDoS) Attacks: These attacks flood a server with traffic from multiple sources, overwhelming its resources and making it unavailable to legitimate users. A large-scale DDoS attack can bring down even the most robust servers, resulting in significant downtime and financial losses.
- SQL Injection Attacks: These attacks exploit vulnerabilities in database applications to inject malicious SQL code, potentially allowing attackers to access, modify, or delete sensitive data. Successful SQL injection attacks can lead to data breaches, exposing confidential customer information or intellectual property.
- Malware Infections: Malware, including viruses, worms, and Trojans, can infect servers through various means, such as phishing emails, malicious downloads, or exploits of known vulnerabilities. Malware can steal data, disrupt services, or use the server as a launching point for further attacks.
- Brute-Force Attacks: These attacks involve trying numerous password combinations until the correct one is found. While brute-force attacks can be mitigated with strong password policies and rate limiting, they remain a persistent threat.
- Man-in-the-Middle (MitM) Attacks: These attacks involve intercepting communication between a server and its clients, allowing the attacker to eavesdrop on, modify, or even inject malicious data into the communication stream. This is particularly dangerous for applications handling sensitive data like financial transactions.
Examples of Real-World Server Breaches
Numerous high-profile server breaches have highlighted the devastating consequences of inadequate security. These breaches serve as stark reminders of the importance of robust security measures, including the strategic use of cryptography.
For example, the 2017 Equifax data breach exposed the personal information of over 147 million people. This breach, caused by an unpatched vulnerability in the Apache Struts framework, resulted in significant financial losses for Equifax and eroded public trust. Similarly, the 2013 Target data breach compromised the credit card information of millions of customers, demonstrating the potential for significant financial and reputational damage from server compromises.
These incidents underscore the need for proactive security measures and highlight the critical role of cryptography in protecting sensitive data.
Cryptography’s Role in Server Protection: How Cryptography Fortifies Your Server
Cryptography is the cornerstone of modern server security, providing a robust defense against data breaches and unauthorized access. By employing various cryptographic techniques, servers can safeguard sensitive information both while it’s stored (data at rest) and while it’s being transmitted (data in transit). This protection extends to ensuring the authenticity and integrity of data, crucial aspects for maintaining trust and reliability in online systems.
Data Protection at Rest and in Transit, How Cryptography Fortifies Your Server
Encryption is the primary method for protecting data at rest and in transit. Data at rest refers to data stored on a server’s hard drive or other storage media. Encryption transforms this data into an unreadable format, rendering it inaccessible to unauthorized individuals even if they gain physical access to the server. Data in transit, on the other hand, refers to data transmitted over a network, such as during communication between a client and a server.
Encryption during transit ensures that the data remains confidential even if intercepted by malicious actors. Common encryption protocols like TLS/SSL (Transport Layer Security/Secure Sockets Layer) secure web traffic, while VPNs (Virtual Private Networks) encrypt all network traffic from a device. Strong encryption algorithms, coupled with secure key management practices, are vital for effective data protection.
Digital Signatures for Authentication and Integrity
Digital signatures provide a mechanism to verify the authenticity and integrity of data. They use asymmetric cryptography to create a unique digital fingerprint of a message or file. This fingerprint is cryptographically linked to the sender’s identity, confirming that the data originated from the claimed source and hasn’t been tampered with. If someone tries to alter the data, the digital signature will no longer be valid, thus revealing any unauthorized modifications.
This is crucial for secure software updates, code signing, and verifying the authenticity of transactions in various online systems. Digital signatures ensure trust and prevent malicious actors from forging or altering data.
Comparison of Symmetric and Asymmetric Encryption Algorithms
Symmetric and asymmetric encryption algorithms differ significantly in their key management and computational efficiency. Symmetric encryption uses the same key for both encryption and decryption, while asymmetric encryption employs separate keys for these processes – a public key for encryption and a private key for decryption.
Algorithm | Type | Strengths | Weaknesses |
---|---|---|---|
AES (Advanced Encryption Standard) | Symmetric | Fast, efficient, widely used and considered secure | Requires secure key exchange; key distribution can be challenging |
RSA (Rivest–Shamir–Adleman) | Asymmetric | Secure key exchange; suitable for digital signatures and authentication | Computationally slower than symmetric algorithms; key management complexity |
ECC (Elliptic Curve Cryptography) | Asymmetric | Stronger security with shorter key lengths compared to RSA, efficient for resource-constrained devices | Relatively newer technology, less widely deployed than RSA |
ChaCha20 | Symmetric | Fast, resistant to timing attacks, suitable for high-performance applications | Relatively newer than AES, less widely adopted |
Implementing Encryption Protocols

Securing server communication is paramount for maintaining data integrity and user privacy. This involves implementing robust encryption protocols at various layers of the server infrastructure. The most common methods involve using TLS/SSL for web traffic and SSH for remote administration. Proper configuration of these protocols is crucial for effective server security.
TLS/SSL Implementation for Secure Communication
Transport Layer Security (TLS) and its predecessor, Secure Sockets Layer (SSL), are cryptographic protocols designed to provide secure communication over a network. They establish an encrypted link between a client (like a web browser) and a server, protecting sensitive data exchanged during the session. This encryption prevents eavesdropping and tampering with the communication. The process involves a handshake where both parties authenticate each other and agree on a cipher suite—a combination of encryption algorithms and hashing functions—before data transmission begins.
Modern web browsers prioritize strong cipher suites, ensuring robust security. The implementation requires obtaining an SSL/TLS certificate from a trusted Certificate Authority (CA), which verifies the server’s identity.
HTTPS Configuration for a Web Server
Configuring HTTPS for a web server involves several steps. First, an SSL/TLS certificate must be obtained from a trusted Certificate Authority (CA). This certificate binds a public key to the server’s domain name, verifying its identity. Next, the certificate and its corresponding private key must be installed on the web server. The server software (e.g., Apache, Nginx) needs to be configured to use the certificate and listen on port 443, the standard port for HTTPS.
This often involves editing the server’s configuration files to specify the path to the certificate and key files. Finally, the server should be restarted to apply the changes. Testing the configuration is essential using tools like OpenSSL or online SSL checkers to ensure the certificate is correctly installed and the connection is secure. Misconfigurations can lead to vulnerabilities, so careful attention to detail is crucial.
Enabling SSH Access with Strong Encryption
Secure Shell (SSH) is a cryptographic network protocol used for secure remote login and other secure network services over an unsecured network. Enabling SSH access with strong encryption involves several steps. First, the SSH server software (usually OpenSSH) must be installed and configured on the server. Then, the SSH configuration file (typically `/etc/ssh/sshd_config`) needs to be modified to enable strong encryption ciphers and authentication methods.
This often involves specifying permitted cipher suites and disabling weaker algorithms. For instance, Ciphers chacha20-poly1305@openssh.com,aes128-gcm@openssh.com,aes256-gcm@openssh.com
specifies strong cipher options. Furthermore, key-based authentication should be preferred over password-based authentication for enhanced security. Generating a strong SSH key pair and adding the public key to the authorized_keys file on the server eliminates the risk of password breaches. Finally, the SSH server should be restarted to apply the configuration changes.
Regularly updating the SSH server software is essential to benefit from security patches and improvements.
Secure Key Management
Robust key management is paramount for the effectiveness of any cryptographic system protecting your server. Weak key management practices can negate the security benefits of even the strongest encryption algorithms, leaving your server vulnerable to attacks. This section details best practices for generating, storing, and rotating cryptographic keys, as well as common vulnerabilities and their mitigation strategies.The security of your server hinges on the secure management of cryptographic keys.
These keys are the foundation of encryption and decryption processes, and their compromise directly compromises the confidentiality and integrity of your data. Effective key management involves a multi-faceted approach encompassing key generation, storage, rotation, and access control. Neglecting any of these aspects significantly increases the risk of data breaches and other security incidents.
Key Generation Best Practices
Strong cryptographic keys must be generated using cryptographically secure random number generators (CSPRNGs). These generators produce unpredictable and statistically random sequences of bits, ensuring that keys are not susceptible to predictable patterns that could be exploited by attackers. The length of the key should also be appropriate for the chosen algorithm and the sensitivity of the data being protected.
For example, AES-256 requires a 256-bit key, offering significantly higher security than AES-128. Keys generated using weak or predictable methods are easily compromised, rendering your encryption useless. Therefore, reliance on operating system-provided CSPRNGs or dedicated cryptographic libraries is crucial.
Key Storage and Protection
Secure storage of cryptographic keys is critical. Keys should never be stored in plain text or in easily accessible locations. Instead, they should be stored using hardware security modules (HSMs) or encrypted using strong encryption algorithms with a separate, well-protected key. Access to these keys should be strictly controlled, limited to authorized personnel only, and tracked diligently.
Regular audits of key access logs are essential to detect any unauthorized attempts. Storing keys directly within the application or on easily accessible file systems represents a significant security risk. Consider using key management systems (KMS) that provide robust key lifecycle management capabilities, including key rotation and access control features.
Key Rotation and Lifecycle Management
Regular key rotation is a vital security practice. This involves periodically replacing cryptographic keys with new ones, reducing the window of vulnerability in case a key is compromised. The frequency of rotation depends on several factors, including the sensitivity of the data and the potential risk of compromise. A well-defined key lifecycle policy should be implemented, specifying the generation, storage, use, and retirement of keys.
This policy should also define the procedures for key revocation and emergency key recovery. Without a systematic approach to key rotation, even keys initially generated securely become increasingly vulnerable over time.
Key Management Vulnerabilities and Mitigation Strategies
The following table Artikels potential key management vulnerabilities and their corresponding mitigation strategies:
Vulnerability | Mitigation Strategy |
---|---|
Weak key generation methods | Use CSPRNGs and appropriate key lengths. |
Insecure key storage | Use HSMs or encrypted storage with strong encryption and access controls. |
Lack of key rotation | Implement a regular key rotation policy. |
Unauthorized key access | Implement strong access controls and regular audits of key access logs. |
Insufficient key lifecycle management | Develop and enforce a comprehensive key lifecycle policy. |
Compromised key management system | Employ redundancy and failover mechanisms; regularly update and patch the KMS. |
Database Security with Cryptography
Protecting sensitive data stored within databases is paramount for any organization. A robust security strategy necessitates the implementation of strong cryptographic techniques to ensure confidentiality, integrity, and availability of this critical information. Failure to adequately protect database contents can lead to severe consequences, including data breaches, financial losses, reputational damage, and legal repercussions. This section details various methods for securing databases using cryptography.Database encryption techniques involve transforming sensitive data into an unreadable format, rendering it inaccessible to unauthorized individuals.
This process relies on cryptographic keys—secret values used to encrypt and decrypt the data. The security of the entire system hinges on the strength of these keys and the methods used to manage them. Effective database encryption requires careful consideration of several factors, including the type of encryption used, the key management strategy, and the overall database architecture.
Transparent Data Encryption (TDE)
Transparent Data Encryption (TDE) is a database-level encryption technique that encrypts the entire database file. This means that the data is encrypted at rest, protecting it from unauthorized access even if the database server is compromised. TDE is often implemented using symmetric encryption algorithms, such as AES (Advanced Encryption Standard), with the encryption key being protected by a master key.
The master key is typically stored separately and protected with additional security measures, such as hardware security modules (HSMs). The advantage of TDE is its ease of implementation and its comprehensive protection of the database. However, it can impact performance, especially for read-heavy applications. TDE is applicable to various database systems, including SQL Server, Oracle, and MySQL.
Column-Level Encryption
Column-level encryption focuses on encrypting only specific columns within a database table containing sensitive data, such as credit card numbers or social security numbers. This approach offers a more granular level of control compared to TDE, allowing organizations to selectively protect sensitive data while leaving other less sensitive data unencrypted. This method can improve performance compared to TDE as only specific columns are encrypted, reducing the computational overhead.
However, it requires careful planning and management of encryption keys for each column. Column-level encryption is particularly suitable for databases where only specific columns need strong protection.
Row-Level Encryption
Row-level encryption encrypts entire rows within a database table, offering a balance between the comprehensive protection of TDE and the granular control of column-level encryption. This approach is useful when the entire record associated with a specific user or transaction needs to be protected. Similar to column-level encryption, it requires careful key management for each row. Row-level encryption offers a good compromise between security and performance, suitable for scenarios where entire rows contain sensitive information requiring protection.
Comparison of Database Encryption Methods
The choice of encryption method depends on various factors, including security requirements, performance considerations, and the specific database system used. The following table summarizes the pros, cons, and applicability of the discussed methods:
Method | Pros | Cons | Applicability |
---|---|---|---|
Transparent Data Encryption (TDE) | Comprehensive data protection, ease of implementation | Potential performance impact, less granular control | Suitable for all databases requiring complete data protection at rest. |
Column-Level Encryption | Granular control, improved performance compared to TDE | More complex implementation, requires careful key management | Ideal for databases where only specific columns contain sensitive data. |
Row-Level Encryption | Balance between comprehensive protection and granular control, good performance | Moderate complexity, requires careful key management | Suitable for scenarios where entire rows contain sensitive information requiring protection. |
Firewall and Network Security with Cryptography
Firewalls and cryptography are powerful allies in securing server networks. Cryptography provides the essential tools for firewalls to effectively control access and prevent unauthorized intrusions, while firewalls provide the structural framework for enforcing these cryptographic controls. This combination creates a robust defense against a wide range of cyber threats.
Firewall Access Control with Cryptography
Firewalls use cryptography in several ways to manage access. Digital certificates, for instance, verify the authenticity of incoming connections. A server might only accept connections from clients presenting valid certificates, effectively authenticating them before granting access. This process relies on public key cryptography, where a public key is used for verification and a private key is held securely by the authorized client.
Furthermore, firewalls often inspect encrypted traffic using techniques like deep packet inspection (DPI) to identify malicious patterns even within encrypted data streams, though this is increasingly challenged by strong encryption methods. The firewall’s rule set, which dictates which traffic is allowed or denied, is itself often protected using encryption to prevent tampering.
How Cryptography Fortifies Your Server hinges on its ability to protect data at rest and in transit. Understanding the various encryption methods and their implementation is crucial, and for a deeper dive into the subject, check out this excellent resource on The Power of Cryptography in Server Security. Ultimately, robust cryptographic practices are the bedrock of a secure server environment, safeguarding sensitive information from unauthorized access.
VPN Security for Server-Client Communication
Virtual Private Networks (VPNs) are crucial for securing communication between servers and clients, especially across untrusted networks like the public internet. VPNs establish encrypted tunnels using cryptographic protocols, ensuring confidentiality and integrity of data transmitted between the server and the client. Data is encrypted at the source and decrypted only at the destination, rendering it unreadable to any eavesdropper.
This is particularly important for sensitive data like financial transactions or personal information. The establishment and management of these encrypted tunnels relies on key exchange algorithms and other cryptographic techniques to ensure secure communication.
IPsec and Other Protocols Enhancing Server Network Security
IPsec (Internet Protocol Security) is a widely used suite of protocols that provides authentication, integrity, and confidentiality for IP communications. It uses various cryptographic algorithms to achieve this, including AES (Advanced Encryption Standard) for data encryption and SHA (Secure Hash Algorithm) for data integrity verification. IPsec is frequently deployed in VPNs and can be configured to secure server-to-server, server-to-client, and even client-to-client communication.
Other protocols like TLS/SSL (Transport Layer Security/Secure Sockets Layer) also play a vital role, particularly in securing web traffic to and from servers. TLS/SSL uses public key cryptography for secure key exchange and symmetric encryption for protecting the data payload. These protocols work in conjunction with firewalls to provide a multi-layered approach to server network security, bolstering defenses against various threats.
Authentication and Authorization Mechanisms
Securing a server involves not only protecting its data but also controlling who can access it and what actions they can perform. Authentication verifies the identity of users or processes attempting to access the server, while authorization determines what resources they are permitted to access and what operations they are allowed to execute. Robust authentication and authorization mechanisms are critical components of a comprehensive server security strategy.
Digital Certificates for Server Authentication
Digital certificates provide a reliable method for verifying the identity of a server. These certificates, issued by trusted Certificate Authorities (CAs), bind a public key to a server’s identity. Clients connecting to the server can verify the certificate’s authenticity by checking its chain of trust back to a root CA. This process ensures that the client is communicating with the legitimate server and not an imposter.
For example, HTTPS uses SSL/TLS certificates to authenticate web servers, allowing browsers to verify the website’s identity before transmitting sensitive data. The certificate contains information like the server’s domain name, the public key, and the validity period. If the certificate is valid and trusted, the client can confidently establish a secure connection.
Multi-Factor Authentication (MFA) for Server Access
Multi-factor authentication (MFA) significantly enhances server security by requiring users to provide multiple forms of authentication before granting access. Instead of relying solely on a password (something you know), MFA typically combines this with a second factor, such as a one-time code from an authenticator app (something you have) or a biometric scan (something you are). This layered approach makes it much harder for attackers to gain unauthorized access, even if they obtain a password.
For instance, a server administrator might need to enter their password and then verify a code sent to their registered mobile phone before logging in. The added layer of security provided by MFA drastically reduces the risk of successful attacks.
Role-Based Access Control (RBAC) for Server Access Restriction
Role-Based Access Control (RBAC) is a powerful mechanism for managing user access to server resources. Instead of granting individual permissions to each user, RBAC assigns users to roles, and roles are assigned specific permissions. This simplifies access management, especially in environments with numerous users and resources. For example, a “database administrator” role might have permissions to manage the database, while a “web developer” role might only have read-only access to certain database tables.
This granular control ensures that users only have the access they need to perform their jobs, minimizing the potential impact of compromised accounts. RBAC facilitates efficient management and reduces the risk of accidental or malicious data breaches.
Regular Security Audits and Updates
Maintaining a secure server requires a proactive approach that extends beyond initial setup and configuration. Regular security audits and timely software updates are crucial for mitigating vulnerabilities and preventing breaches. Neglecting these aspects significantly increases the risk of compromise, leading to data loss, financial damage, and reputational harm.Regular security audits and penetration testing provide a comprehensive assessment of your server’s security posture.
These audits identify existing weaknesses and potential vulnerabilities before malicious actors can exploit them. Penetration testing simulates real-world attacks to pinpoint exploitable flaws, offering a realistic evaluation of your defenses. This proactive approach is far more effective and cost-efficient than reacting to a security incident after it occurs.
Security Audit Process
A typical security audit involves a systematic review of your server’s configuration, software, and network infrastructure. This includes analyzing system logs for suspicious activity, assessing access control mechanisms, and verifying the integrity of security protocols. Penetration testing, often a part of a comprehensive audit, uses various techniques to attempt to breach your server’s defenses, revealing vulnerabilities that automated scans might miss.
The results of the audit and penetration testing provide actionable insights to guide remediation efforts. A detailed report Artikels identified vulnerabilities, their severity, and recommended solutions.
Software Updates and Patch Management
Promptly applying software updates and security patches is paramount to maintaining a secure server. Outdated software is a prime target for attackers, as known vulnerabilities are often readily available. A robust patch management system should be in place to automatically download and install updates, minimizing the window of vulnerability. Regularly scheduled updates should be implemented, with critical security patches applied immediately upon release.
Before deploying updates, testing in a staging environment is highly recommended to ensure compatibility and prevent unintended disruptions.
Best Practices for Maintaining Server Security
Maintaining server security is an ongoing process requiring a multi-faceted approach. Implementing a strong password policy, regularly reviewing user access permissions, and utilizing multi-factor authentication significantly enhance security. Employing intrusion detection and prevention systems (IDPS) provides real-time monitoring and protection against malicious activities. Regular backups are essential to enable data recovery in case of a security incident.
Finally, keeping abreast of emerging threats and vulnerabilities through industry publications and security advisories is crucial for staying ahead of potential attacks. Investing in employee security awareness training is also essential, as human error is often a major factor in security breaches.
Illustrative Example: Securing a Web Server
Securing a web server involves implementing various cryptographic techniques to protect sensitive data and maintain user trust. This example demonstrates a practical approach using HTTPS, digital certificates, and a web application firewall (WAF). We’ll Artikel the steps involved in securing a typical web server environment.
This example focuses on a common scenario: securing a web server hosting an e-commerce application. The security measures implemented aim to protect customer data during transactions and prevent unauthorized access to the server’s resources.
HTTPS Implementation with Digital Certificates
Implementing HTTPS is crucial for encrypting communication between the web server and clients. This involves obtaining a digital certificate from a trusted Certificate Authority (CA). The certificate binds the server’s identity to a public key, allowing clients to verify the server’s authenticity and establish a secure connection. The process involves generating a private key on the server, creating a Certificate Signing Request (CSR) based on the public key, submitting the CSR to the CA, receiving the signed certificate, and configuring the web server (e.g., Apache or Nginx) to use the certificate.
This ensures all communication is encrypted using TLS/SSL, protecting sensitive data like passwords and credit card information.
Web Application Firewall (WAF) Configuration
A WAF acts as a security layer in front of the web application, filtering malicious traffic and preventing common web attacks like SQL injection and cross-site scripting (XSS). The WAF examines incoming requests, comparing them against a set of rules. These rules can be customized to address specific threats, allowing legitimate traffic while blocking malicious attempts. Effective WAF configuration requires careful consideration of the application’s functionality and potential vulnerabilities.
A properly configured WAF can significantly reduce the risk of web application attacks.
Data Flow Visualization
Imagine a diagram showing the data flow. First, a client (e.g., a web browser) initiates a connection to the web server. The request travels through the internet. The WAF intercepts the request and inspects it for malicious content or patterns. If the request is deemed safe, it’s forwarded to the web server.
The server, secured with an HTTPS certificate, responds with an encrypted message. The encrypted response travels back through the WAF and internet to the client. The client’s browser decrypts the response, displaying the web page securely. This visual representation highlights the role of the WAF in protecting the web server and the importance of HTTPS in securing the communication channel.
The entire process is protected through encryption and filtering, enhancing the overall security of the web server and its application.
Last Word
Securing your server against the ever-evolving threat landscape requires a multi-layered approach, and cryptography forms the bedrock of this defense. By implementing robust encryption protocols, practicing diligent key management, and leveraging advanced authentication methods, you significantly reduce your vulnerability to attacks. This guide has provided a foundational understanding of how cryptography fortifies your server. Remember that ongoing vigilance, regular security audits, and prompt updates are essential to maintain a strong security posture and protect your valuable data and resources.
Proactive security is not just an investment; it’s a necessity in today’s interconnected world.
FAQ Overview
What is the difference between symmetric and asymmetric encryption?
Symmetric encryption uses the same key for both encryption and decryption, while asymmetric encryption uses a pair of keys – a public key for encryption and a private key for decryption.
How often should I rotate my cryptographic keys?
Key rotation frequency depends on the sensitivity of the data and the risk profile. Best practices recommend regular rotation, at least annually, or even more frequently for highly sensitive data.
What is a digital certificate and why is it important?
A digital certificate is an electronic document that verifies the identity of a website or server. It’s crucial for secure communication, enabling HTTPS and ensuring that you’re connecting to the legitimate server.
Can I encrypt my entire server?
While full disk encryption is possible and recommended for sensitive data, it’s not always practical for the entire server due to performance overhead. Selective encryption of critical data is a more balanced approach.