Skip to content

CyberFM

  • Home
  • FileMaker Security
  • Disclaimer
  • Privacy Policy
  • Home
  • Valentin Vollmer
  • Let’s Hash This Out
  • Valentin Vollmer

Let’s Hash This Out

Dimitris Kokoutsidis 2 years ago3 months ago13 mins0

An In-Depth Look at Hashing and Encryption for FileMaker Developers

Valentin Vollmer, March 2023, FileMaker STL Meetup

In March 2023, Valentin Vollmer delivered an insightful presentation to the FileMaker STL Meetup, demystifying the concepts of hashing and encryption. This post expands on that discussion, exploring the distinctions between hashing and encryption, practical applications in FileMaker, and essential security best practices. Whether you’re working on a small FileMaker solution or managing large-scale deployments, understanding these concepts can be a game-changer for data security and integrity.

Table of Contents

  1. Introduction: Why Hashing and Encryption Matter
  2. The Fundamentals of Hashing
  3. Understanding Encryption: A Two-Way Street
  4. FileMaker Hashing Functions and Algorithms
  5. Hashing in Practice: Real-World Use Cases
    • Data Validation with Hashing
    • Detecting Duplicates Using Hashes
    • Change Monitoring with Hashes
  6. Advanced Hashing Techniques
    • Managing Large Data Sets with Hashing
    • Handling Related Records
  7. Best Practices for Encryption in FileMaker
  8. Technical Deep Dive: Hashing and Encryption in Action
    • Using CryptDigest with Examples
    • Container Attributes and Legacy Support
  9. Performance Considerations and Optimizations
  10. Conclusion: Integrating Hashing and Encryption into FileMaker Development

Introduction: Why Hashing and Encryption Matter

To top

In today’s digital landscape, data security is a top priority for any developer. Hashing and encryption are two critical techniques that protect data from unauthorized access and ensure its integrity. However, each serves distinct purposes, and understanding when and how to use them effectively is crucial for creating secure and reliable FileMaker solutions.

The Fundamentals of Hashing

To top

Hashing involves converting data into a unique, fixed-length string through a mathematical algorithm. This process is irreversible, meaning that once data is hashed, it cannot be reverted to its original form. Hashing is particularly useful for data integrity checks and is commonly applied in scenarios like password verification, data validation, and detecting changes in data.

Properties of Hashes:

  • Consistency: The same input will always yield the same output.
  • Uniqueness: Even a slight change in input will result in a vastly different hash.
  • Fixed Length: Regardless of input size, hashes produce a string of fixed length, making them efficient for storage and comparison.

Common hashing algorithms include SHA-256, SHA-512, and MD5, though MD5 is no longer considered secure due to vulnerabilities in its structure.

Understanding Encryption: A Two-Way Street

To top

Encryption is a process that encodes data in such a way that it can only be decoded, or decrypted, by someone with the correct key. Unlike hashing, which is a one-way function, encryption is reversible, allowing data to be securely stored or transmitted and later retrieved in its original form.

Key Characteristics of Encryption:

  • Two-Way Process: Data can be encrypted and later decrypted using a specific key.
  • Confidentiality: Encryption protects data from unauthorized access, ensuring only those with the key can read it.
  • Algorithm Flexibility: Encryption algorithms include AES, RSA, and others, each offering various levels of security based on key length and complexity.

FileMaker Hashing Functions and Algorithms

To top

FileMaker provides several built-in functions for hashing and encryption, including CryptDigest, which allows developers to generate hashes using various algorithms like SHA-512. Choosing the right algorithm depends on your specific requirements for speed, security, and compatibility with other systems.

# Basic CryptDigest example for hashing in FileMaker
Set Variable [ $hash ; Value: CryptDigest ( "MySampleData" ; "SHA512" ) ]

This function generates a SHA-512 hash of the string “MySampleData.” You can replace “SHA512” with other algorithms like “SHA256” or “MD5” depending on your needs.

Hashing in Practice: Real-World Use Cases

To top

Data Validation with Hashing

One of the primary applications of hashing in FileMaker is data validation. By hashing sensitive fields like passwords, you avoid storing them in plaintext, enhancing security. The user’s input can be hashed during login and compared to the stored hash, ensuring secure and efficient password management.

# Hash comparison for password validation
If [ CryptDigest ( table::input_password ; "SHA512" ) = table::stored_password_hash ]
# Authentication successful
Else
# Authentication failed
End If

Detecting Duplicates Using Hashes

To top

FileMaker developers often need to find duplicates within large data sets. Instead of directly comparing multiple fields across records, you can hash these fields and compare the resulting hashes. This method reduces the processing load and speeds up duplicate detection.

# Duplicate detection with hash comparison
Set Variable [ $dup_hash ; Value: CryptDigest ( lower ( table::first_name & table::last_name & table::dob ) ; "SHA256" ) ]
If [ $dup_hash = table::stored_dup_hash ]
Show Custom Dialog [ "Duplicate record detected!" ]
End If

Change Monitoring with Hashes

To top

Another powerful use of hashes is monitoring data changes. By storing a hash of a record’s fields, you can detect if any of the fields have been altered since the last save, which is useful for audit logs, syncing, and other integrity checks.

# Example script to monitor changes in a record
Set Variable [ $new_hash ; Value: CryptDigest ( List ( table::field1 ; table::field2 ; table::field3 ) ; "SHA512" ) ]
If [ $new_hash ≠ table::previous_hash ]
# Record has been modified
End If

Advanced Hashing Techniques

To top

Managing Large Data Sets with Hashing

When dealing with large volumes of data, using hashes for change detection can drastically reduce processing time. Instead of performing field-by-field comparisons, a single hash comparison can determine whether any data has changed, making it ideal for large imports or batch updates.

Handling Related Records

To top

Hashing can also extend to related records, allowing you to monitor changes across entire data structures. This is especially useful in complex systems where updates in related tables need to be tracked efficiently.

# Hashing related data for change detection
Set Variable [ $related_hash ; Value: CryptDigest ( List ( related::field1 ; related::field2 ) ; "SHA512" ) ]
If [ $related_hash ≠ table::stored_related_hash ]
# Changes detected in related records
End If

Best Practices for Encryption in FileMaker

To top

Algorithm Selection

While FileMaker supports several algorithms, SHA-512 is recommended for its balance of speed and security. However, avoid MD5 for sensitive data due to known vulnerabilities.

Storage Recommendations

  • Avoid Storing Plaintext: Use encryption wherever sensitive data is stored.
  • Implement Key Management: Ensure encryption keys are stored securely and access is limited.

Encryption in Transport

Ensure data is encrypted during transport, especially when transmitted over networks, by using SSL/TLS protocols to prevent interception.

Technical Deep Dive: Hashing and Encryption in Action

To top

Using CryptDigest with Examples

CryptDigest is the core hashing function in FileMaker, enabling you to hash text, container data, and even perform operations on binary data for security checks.

# File-level hash check for integrity validation
Set Variable [ $hash ; Value: CryptDigest ( container_field ; "SHA512" ) ]

Container Attributes and Legacy Support

To top

For legacy systems, FileMaker’s GetContainerAttribute function provides MD5 hashing for container fields, offering backward compatibility for older solutions that predate the introduction of the CryptDigest function.

# Using GetContainerAttribute for legacy hashing
GetContainerAttribute ( container_field ; "MD5" )

Performance Considerations and Optimizations

Hashing algorithms vary in speed, with MD5 being the fastest but least secure, while SHA-512 offers the most robust security at a slightly higher processing cost. For most applications, SHA-256 provides a good balance between speed and security.

Conclusion: Integrating Hashing and Encryption into FileMaker Development

To top

Valentin Vollmer’s insights emphasize the versatility of hashing and encryption in FileMaker. Whether for data validation, duplicate detection, or integrity monitoring, hashes can streamline your workflow and improve data security. Encryption, on the other hand, remains a cornerstone for data confidentiality, particularly for sensitive data like personal information and financial records. By incorporating these techniques, FileMaker developers can build more resilient and secure applications.

We hope this deep dive has enriched your understanding of hashing and encryption. As always, feel free to experiment with these techniques in your own projects and explore the vast possibilities they unlock for data security in FileMaker.

Tagged: Audit Log Authentication Balance Best Confidentiality Container Deployment Encryption FileMaker Pro FM STL Meetup Good Integrity LLM Load Login Management Monitoring Network Practice Scenario SSL Storing Test Update Vulnerabilities YouTube

Dimitris Kokoutsidis

Post navigation

March 9, 2023
FileMaker Audit Logging with JSON
March 9, 2023
Disaster Recovery, Business Continuity, and Resilience for FileMaker Solutions